{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# DataFilterExtension\n", "\n", "The `DataFilterExtension` adds GPU-based data filtering functionalities to\n", "layers, allowing the layer to show/hide objects based on user-defined\n", "properties.\n", "\n", "In this demo we'll use the `DataFilterExtension` to filter millions of points based on three numeric attributes." ] }, { "attachments": { "e4426b37-c5a4-43ad-b3b7-8566f94c4be9.gif": { "image/gif": "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6Gmr2prWhhir9atAWPeXd2TM8rmgreBGizvb6E63utfNByGfm91i8ja8eXVQW8/73vjOt773ze9+j4Xc/lYUwANO8IIbXNryPnicCK3whjvcHgl/uMQnTnFrU465Zam4xjfO8Y5PLeJQALnHL8Nw7IycWrM+eYpSrvKWu/zlMI+5zPeNSpHPXDdwvTm9Wa7znvs8Ejz/uXxgJ/Si84NxpQ660ZfO9KY7/elQj7rUp071qlv96ljPuta3zv/1rnv962A3pwHCTvayg2HgZo9MmdMOG5uz/e1wj7vc5073utv97ngXNnjzjhjp8T3q9v674LGy9sHfPLdND7zhd7P42aC98X/ZVrUhvxieapHyrUE25p38WHxt/vOgD73oR096Rbi99IpxLOpXz/rWu/71SUM8aFiUO8XD/vbuaIHscY+V3fP+98APvvCHT/ziG//4yE++8pfP/OY7//nQT8Teo//z01P/+s18N/YTUvjte9/HM/m+QrrPBPJP3PfiTz9rm63+9rv//ViZPPxx8vj52//++Bc6+vPP//77//8AGIACOIAEWIAGeIAImIDTNn0K2IAO+IAQGIESOIH/FFiBFniBGJiBGriBHNiBHviBIBiCIjiCJFiCJniCKJiCKriCLNiCLviCMBiDMjiDNFiDNniDOJiDOriDPNiDPviDQBiEQjiERFiERniESJiESriETNiETviEUBiFUjiFVFiFVniFWJiFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiGbviGcBiHcjiHdFiHdniHrnYYASAAfNiHBnAADkABEvAAEgACIvABF4eHfTB2BrCHjmgAHcAAAzCJFhABChABFjCJA6AAEJA8iogHExCKHOCIAQAACzCJCUABB9CIpAgAJAABkjgAGJBxn1gHBNCHSCcCkwgCtDgE/6RYigCgASJwAgNwQbUYB60oBBOgAMU4dknwi0OgiydgecfYBskIAAcwABZAAk5wjcs4AA5QjWzgiERwAQPAAFJAjkNwiiIgjouzh+Uoi1SgjkJAAeDojmZAj654jlagjyowAB+Aj2OgjwCAiVgAj0QgiYkokFrgjwPAjVegjwYgjwy5Bfo4AcXYkAgpBB0AkBWpkVczAFywkUKgAAnwkQdJkhowABQwkiRpjtSIklNAkgAAAQOwkBFJkxbwADJZBTSpAOgIBjSp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cP0AYGe59AoIFgA0AIWGh4iJiouMjY6PkJGSk5SVlo41ACKXnJ2en6ChoqOkkTelqC0tiAuorq+wsbKztCuFJKyUA4attL6/wMHCw8TFxseSEMiKB8vOz9DRx6uPQCbS2Nna29zd3gDK35TUh2Li5+jpkQ+HDw3q8PHy8/TZIfWS7N7h+P2oLyBygerlr6DBgwgTKlzIsKGhe6EIOpxIsaLFi5//+GHcyLGdIwIdQ4ocSdKXRlESz5UoybKly5cwYy47gagEOZk4XU1xtSunz59Af264he9JUHQqwAE7ebSp06f+PCTSNwjADngpoUpTIYiWA61gw4rdt5DQ2JkstthgUxVRgU673jY7S7euXWI4GF5IcVehgb6AAwsG9XaTIwX4cA3GN2Gx48eQHaEZUwjMwZWRZ9nKzLmzZ0oejCIS/TlouL8DS6teXdeHQ8SsL51S6qhx7Nu4c+tuyKIRyN3Agwv3GmG48ePIk2eTqlyShObQo0uf/gki9evYs0cHYVu79+/gdRu59DW8+fPoI19Lz749ybnu48uf7yspfXQc7uvf/x9KwQva/G0TAydbBGjgflQdqOCCDDYI1VAORijhhMdsRuGF90GQIIYcduhhJbB9GMx/Ipb43WzioPaciSy2KCIKLsYo44SkzWjjjTjmqOOOpb3F449AZldekEQWaeSRSCap5JJMNsmeDE5GGd6KE6Im5ZVYZqnlllx26eWXYIYp5phklmnmmWim6dBvarbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvssf/IJqvsssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbDHCBUjBiwM+XiywARIMEDLIHv9bwAcAQEGEFSxDkcQHGQcQQMn4SpCFFQIY0rIVSgjgsxVZSCHzzDTHK0ESGAjABRUVUGmIBBVQwYUAGAAgwdBFuytE0lBsQPRhUFAtBNZZqxs2EQ4kMA4RArQh9Ndlk2sADAIEDfckQlBt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ELzT5Vw9xY2qAB7bB26zsncBoe3Iz90oa4hyqgQJ3p3giwQT6i21Fj5HydDa1ZLaG94c+e13ARziVZvVr2jiiKbi6c3iYHLTRFPiLo7/S6tUMzPOyBF343tT4C2s40cC2z4e5EI+5ESOFCDy1JcknRgx3kU+IiPE5E3eKDPsWm0YslFOQkuqHRWhr1eOHw0e4Zh0Ki6rN7bB211uNLmN2WfuKCM+fms+ukj+5kHytZyARf8t58RNfHgur2m+5yBjS7B2GkDu57ur24SO5SkwvYd+wotuNHVY4GzS6I5SzXittysq6S6MK4nwsJiOKczd6X/+2ZAwyqAO4cq8te0D36XO4cNNp59AQBm+6t1iMy9hIS0t648A5kKCJTe02fNF6qqJ62Cl5n4DF3G82sK+q0hsCC81UQub7CQkBBcL7R/D5dQ+PjnA4zxnX9to/ySDfedb0bHX3g7Z4+HjDjCfbpfnHg5xjhhpu+4xrq1WXBbSGzooLumRC++/QNp6LrvaO8X6/nAXUnoxBdRsw+nCkWZHdpkw7pHpHvDShIjVB/HxsH4gTvHQbu0C/jUejeuUjvHfcPE10e4gb1UWIxgJ8OAlLw6xvvJGouut7vIybyCD3gxzh70DL6UNP/M8XxoPf1K2Adc93yKI0/IIN/Rv4oj5jvRhwjn3zvRCcuz+Dhr8TiUfnyewDeU9IfXHMTtXAvXzixooeg3oHfBlD/bPYO1dIciicvYzT/Jh8u720ecx/+ZC/zVVL7uOJKZoj5Fc3/cEFfiAH8t7PfiKyP8i1m34IQL3uoDwiv/4kB/58+Kgho4aDV75kg8eNbL0qdHtJ5T5oB/6ou8OiQsNjj/6VXGFb2LuaM/2qI+wNf/6bnKvp2b0sn/7uH9Y3J37N6LyvP/7wB/8wm+zsjn8f9Lmxp/8yr/8zG+7zR8mIv/83IH80p8NMF/92F/9t5793J/7jN/9igf+4j/+5F/+yn/95p/+6r/+7N/+7v/+8L+F8T//9F//9n//+J//+r///N///v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////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tunSFGVXlcACIKovzWqroYuBFSnlPrOfkNz5frJouVWWOGc1NpPvq4/zLHAI300Xw42TZfDVIbqcjvBMVAMRgBssoACBEF3yEDwN9+mkbuemQMuDQDxPVQGdJDqhLvFADM7naBsF7mGi80AZl8kJqCTkU+z+zYBARVTr3h+kYZIil94PlBuhsO8dbyt/FgmvRAPb+wgLxGvkG4w2aO4nFz0sN0wY7jPvFr07SYLc7vL/b+NyUKkfFyDF0/seRX3mxvXxDBLZKBcMNw5r7Zjd9FMeHbdlNO9eGT6oES0IURFCcjQ7/1Gz8dVKuKXjgYAVOJglkfQe+f7AOw90Tct0tkqqQus58RuDc6rd4g2BTN3XfNbqUdeWxKMePQd17D11xRUDg00PDPvd4eN0TZervSY8nqgBJ0EQFGCSm8BEAvw/mmbeZDddDT1oDPQAD8jwXSc4a5QIMzTUGFi8aUfz9qSL1FPCZd32PhcPyRD3l2ZooKBzc3dqDNi8PKXNdT8qJoRqTMnfeH9ys773e+dzfR/p/NXeh0j1fucJUu9oYVbggY9rEmerawQuyVXzhIfp/6wm8JaOeM829qjgEaD+cY+2eDkLzvVoA3ifZKQ25h+Q9TalbSVXpjbL0QJMco8XMewWiRFBKF0fusKM+TmbAl+6b18nwDAg2dM92KB189zcLYDXeazBH1R1AK3t+ZFYeKVfkWyV2qQe2s5OiYCdegFxS4zYLKV1DYK+S3vn+gkpVWtt7n41e8T+SEZn+8eGeHDVWwCEe2FJb4e9NYHvZbtnkzkqKDuo+n2V+r6PGb6Rc5Hl98KHGRRf/MOm+Jtd9ltx/F6RdgAgH8o3bXSVkCDYIyf7SsTP/HW+g3MW/Zg5cxhxckjNDJGAWdM3qQNfgLFX9Nc/O7dOvJmvfbP7Q/+lFCFn1/2Clkfgt2zXH36uVnfjT37lNxu5X/6rxoOLdH7x9Vnq8LXKfGXpj5mkz37u736OLnvvD38QAmzxL3/zP3/0T3/1X3/2b3/3f3/4j3/5n3/6r3/7v39xv33833/+73//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vj8AS5CDKlgDhKgCOeCEAwiAAPj/VAaIH3IYCQAAao2khGtACRDASM6BAAEAUKxo8SLGjBo3cuzo8SPIkCJHkixp8iTKlCpXsmzp8iXMmDJn0qxp8ybOnDp3UlxBx6GiFQgmXoSwYqCANYSI8mzq9CnUqFKnUq1q9SrWrFq3ctVooIoAOiskflTzswoEpl3Xsm3r9i3cuHLn0q1rd6Mah2rIitRERsDYu4IHEy5s+DDixIoXa4QkQBJfkizAWlLL+DLmzJo3c+7sOa4iAZX5pHQMKfLn1KpX/7Nu7fo1Y8ecLJ/kJJo27Ny6d/Pu7ft3yLyVXToODPw48uTKlzOna6DggAEvwaZtbv069uzat5uswgg1SxZkqoDnbv48+vTqP68AjHul36Xr59Ovb/8+Wzp0os+ks6Y8fgEKOCCBBY60gHs05RWRgQ06+CCE9g3EH00PARghhhlquOFrZADwnksTgsghiSWaeKJdByRYU3tejBiVASjKOCONMtpWgHQ1QSDAbDX6+COQQdoEyoUvWTgXBEIquSSTx1Xx34srdbJGFW2IktwacngkxxoUaVmRIiZ1CWZGVTR5JppAWkJlAAeMdMkBhIg0iiRrdJIJd5CkuSeffa70A/8AkJHEB5wrhESnnZnguZqZGDXa1aN+SjqpgQgV6ZUipH0CyEeI3rloZmF6pKeXTpFKKaqpZvjkpRnt+KEogHDa0ShU3pmbqG1VcaqqvfpqHpFRWsQCAH9luumsG3UCihy3/vostNGuxkloAawQaUfE/gXAsbJyFAmPpP32aK4WiQpKRugaJBOv0rr7bm4ItkGIJMR+pG1B3F6CrEZ8tJjjcmNS1C5MX8J7MMK+eShsRfg2pC+/GYmYMMUVW9zVxCA5nK8kkUR8kYUMXzwyySW/JK/I+FJUhRyS/MBHJ6NgtCDAJtt8M84s6ddqw8XSEdppABAr7kX+8Zwz0kkrDUDNe3tpDAAdEIhHhgFeJJBkzQDEl/XSXXuNtHdH2+tluGNfJAB5In+9NtvSPvch1xhFJ8EBSYZ1CdEWURd323377a5wan+4hgAMXlSc4H8rvvieskVpLwIA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Te2nQLva2M72Ixas7W57+9vgDre4nzWDcZv73OhOt7rXze5xf7ndvJnAi+H9nDjT+974zre+983vfvv73wAPuMAHDsGHcpvgpzk4CRHO8IY7vC2cfrjEJ07xilv84qvDuMY3zvGOe/zjIK+0JENO8tZcu+QoT7nKV87ylrv85TCPucxnTvOa2/zmOM+5znfO8577/OdAD7rQh070ohsdglc+OlaUrfSmOz1sidXNyZ9O9apb/epYz7rWt871rnv96/9GMth7otexm/3saE+72tfO9ra7/e1wj7vc5073utv97njPu973zve++/3vgA+84AdP+P/CG/7wiE+84hfP+MY7/vGQj7zkJ0/5ylv+8pjPvOY3z/nOe/7zoA+96EdP+tKb/vSoT73qV8/61rv+9bCPvexnT/va2/72uM+97nfP+977/vfAD77wh0/84hv/+MhPvvKXz/zmO//50I++9KdP/epb//rYz772t8/97nv/++APv/j5hIL9AeAAMxDA+HExAxVs4AEDMMQJIhAE5K4fFgfYwAAGUAAKjOAAg3AANHABHbB/CzACAXB/rKABEcB/F1BuigACI1CABAABCaiApxAEAyABJHCBjnAABagA6oeBowACDegBHhgJS7CB9keCnAADEjAACHAJM0AAMuiCLwj/f39kCQ2IAjioCQUwABAIhEL4g5dgAgPwAaDwAAWQgkZ4QwNgBKHwAQOAgk8oCQ8QAU64CR5QhFf4CCpQJaRwAiWwhV+ICA9QhqSgAl54horwAkl4CR9AAoPABE4IAlVohm44CCVAACM4CR/AA4agBEVQCDEgAXq4hwBQhZXwAjowBIcwBHY4CBAQh4poCChgiZJwAI+YCENQiIIAA1EYDuUWTwIQAAmIADCQgKiYgCDggTQAAKiIiWI4CDAAAQeQAZQwhKHYdCwgiyZgAJEAAjwAiYrgAx5IACL4DRcwCMIYACCgAIJQAB0IjSbwABYIAL/Yh1ZICApQAAxQAPGE/wLgWAAm8IePcABpCAKCQAPKGAAWEAGDsAAxAI/CyHMUIIsUkI83pAONoASCEAU4EAEHAJC5oARH0AgwAIgEAIB1sT8UII8ZoAIFMI0mcIDw+AAAqI4+OAgXQADsqAAboIsRcI41KAOSwAAAMJIAEAQAEAMsSQgM0AQraQI8NwN9+AIbwI+PoATGuAhAIAg+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2+j5xtKaf036ueH1rzAAE2TeqO8hu4mHlP76bOLdtO8K6f4cH6Ck68PMty8oYUUJrv/7+XEAyXmINK065078i9LdzG/havz8db4cRf9tXPHpnCP9lVIBQ0DDGIDy2r8OR6DyQiv34T8Prn7+6r/+ApEunJnrXoHmjOLzsoH42iyg7F8Ia08hbT4VuZ//37CxD2+3+X8jej1rbT0U5J//7KAEBjJAcOHv+Z8NOQ+ZicD1+e8O6d/oc19elgLNRQLwQGFMfQ8IAABRgoWGh4iJiouMjY6PkJH/kpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4thq5vL2+v8DBwsPExcbHyMnKy58/zM/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo3AumDenu7/Dx8vP07PX3+Pn6ni/7/thB/gkcSDBfhYIIifnghENFwocQI0qciI4BpSONMFDcyLGjx48gQ0YrILKkyZPkIqBcybKly5eX2sGcSbPmpBw2JQ7IybOnz59AgwqTKVQelqJIpWmEpDJprV1Oo0rl+WESgkYWpmrdyrWrJgObbCCiccArK7Bmf0qRkrZtioxt48qd65Uk3bt4bRHIi9AD37+A/xG1aKHJ4iEadgMrXswY5oPG4fZCnkyZkeHKOUdg3lw0MefPoEOLHm1IAOnTqKH5IJT6E4jWsGOPSiK7tm2tJDvc3s27dyycvvXpDk684GVvposrX868kZAavSU0nz4T6jSM1LNr74h9ezcr3sNv1iwewMHy6NNTHq6+vfv38OPLn0+//qvu9vPr38+/v///AAbozWMCFmggREsdqOCCkIXA4IMQRijhhJudR+GFGGazToYcdujhhyCGKOKIJ7FA4okopqjiiiy26OKLMMYo44w01mjjjTjmqONyYu3o449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZv+p5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxirrrLTWauutuOaq66689urrr8AGK+ywxBZr7LHIJqvsssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivu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zZs4c+rcybOnz/+fQIMCcCC0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9ev0jyAHUu2rNmzaNOqXcu2rdu3DDvAnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDkxQQEbnGAuLH8OTWowe5suXLmDNrlsV4s+fPoEOLHk1aK+XSqFOrXs26tevXsGOTIiq7tu3buHPr3kV7t+/fwIMLH068uPHjyPeeTs68ufPnYx1Dn05KMvXr2LNr3869u/fv4MOLH0++vPnz6NOrX8++MoX28OPLn0+/vv37+PPr38+/v3860jHR238EFmjggQgmqOAYnS3oIBpVPCihFhVMaOGFGGaoYU3WbVj/xnKHieVhNg2OaOKJKKao4oosStVhizDGSMSAMtbIzns25iiGYjoehmOPQDryYpCFiUDkkUhmUWGSTDb14xAlNpmHiFJWaSUZVF5pUIBadunll2DysWSYZJbZSZRmpqnmmm88yeabSI7pUpZnQQDnnXgagWaefPbpJ1Vc/inooIQWauihZQSK6KKMNuroo5BGKumkdbhJ6aWD0onppjruyemnoIYqKhMgjmrqqaimquqqrLbq6qsglVqSp7DWauutuI6kaa689voqraHI6atfwA5r7LHIcrRAssw2G4yRzkYr7bRlFkvttdhmq+223JKmzxvWdstcuOKWa+656Kar/+667Lbr7rtfKArvvPTWa++9+Oar77789uvvv9oKC/DABBds8MEIJ6zwwgw37PDDEEcs8cQUV0zQtxZnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzrUKzPPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FS34nPVWONBbtZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333YDJivfefPft99+ABy744IQXfpC8hieu+OKMN+7445BHLvnklFdu+eWYZx7OkJp37vnnVV0N+uikP2xp6ainrvrqrLfu+uuwxy777LTXbv/77bjnrvvuvPfO7+m+By/88MQXb/zxyCev/PLMN+88txk8L/301Fdv/fXYZ6/99tx37/334Icv/vjko6Z3+einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jB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saPHjyBDihxJsqTJkyhT/6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4sfT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4P+CDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+3/tdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfMUwQ+tzCAAkGzsIACFRR9QgECIGAAA0qbwLQEARAAddQjTA1A1QJgPULTIlTttQhgB7A1AWODPYLYWJe9tgFtH7C12QQYgHbUA1AAQAMBPCDCAgAUoPQADiwgAAQBJFBAA213vQDaCIz9t+EIBGBA15IPkAAFcKcNwAJMS072DeeikyB46QAIgDnWIQAAIfkEBQMAAAAslgDRASoDjACEAAAA////AAAA9fP0ycnJr87u7e7sQkJCqcjovLy9GnDI3t/fwsDCEBARMTExtLS0qKiopKSkmpiZWVhZ5OTlb29vY5XF09PTJpbzAAAAAAAAAAAA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z59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLhw3AKGEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4sfT768eXYDzqtfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4P+CDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+3/tdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstptkAyI48IACACRAQgABuFuIAALIwK++iiAg8AIAF4LADOmNQHDBDK+TcMMQUwRBxHDYS28PE1PMRsZASKDxx/fAC3IZDxfB8chhHICyKyqv3MXJRLTs8hciz2zzQg7Ee/MgF+98xQM1UDCBzxvbwMDQRJ+Rcw5Ix2Bv0lMsjAQFUFdxMBIVRCBCBVV37Uu/KTTtdRsEjL1GzyuAjULJKABtNhhqv+3HAvmmwLbcY5RtQs14WwG0xzFkvDQAMvfNhsp1u224FlfDcLDUI/BNwuCLOwFzDAcDXrkWirOAb+SEb76FlduFo6D2wpI/LTrJjWsNgOarS9F4DP1SHjsZcd9eBtq6j1H6CZD3nvIBkgt/xeMiFG88zQInXPfyXfxOwN3QHw968skTXz0WDWiv9wnUbz/F93s7YIH4VfwOPvpUBKC+CeGzz4T2K8QvvxLv34+F8yo4wID+UWgZ+QC4P+yV7Xv0IyAUpDeA/CnQCbN73gOjILAJPiEEACH5BAUEAAAALIQAfwA8A+EBhgAAAP///wAAAKampo+Vl/Dz8zs7O0xMTL6+uvz9/a+vr3R0dLi6uREREcjJyXOgzp+foMDCw1tbW9/f3iCT74ODgwUGB1dXVzQ0NERERAdfvuTl42JiYo+PkPb6+sG7mR0cHc7GqMvQ1evt7ZqamtbY2CoqKomLjOnp6QoQJLCyj35+fhRrxtzUvujeyG1tbGSr3s3Qwpqsjmqz6O7s2Hu96o2hhp+nh6Wtlcauh7Pv/461xXuGh2yv4XiYwVeh30mS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam4MTnJ+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c7bDobOnz59AgwodytEG0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS9Zri7Jo06pdy7at27dw/+PKnUu3rt27ePPq3cu3r9+/gAMLHky4MEcXhhMrXsy4MTDEjiNLnky5suXLmDNr3sy5s+dURj+LHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27ZYzewIPfLCG8OKYPxpMrX858FPLm0KMXgiy9+tcc1rN7VaG9u8sR3sOLH884NPnzLbmjX8++vfv38Ceqxxcivv37+C3Xz8+/4Nn+AAYo4IC+bEDggQgm+IsM1VCn4IP9OAjhhBRWaOGFGILyXIYcduihcv99KOKIJJZo4lg0nKiiLAikuOKLMMa4zXwy1ljOhoRgZ+OOPPbo449ABinkkB56QiSGDB6p5P+STDbp5JNQWnVDlOxISOWVWGYpDQJadunll2CGKeaYZJZJJY5mpqlmk+at6eab04AH55y/FEBnlG3eqWd1v+2ZDY2UJennoIQWauihiCaq6KKMNvrefo5GKumklFYaF6SWZnonppp26umnoK4laKg7jkpqk5yequqqrHZk5aoGtrommpRMKeutuOaq66689urrr8AKZieTfZqSarBQmopshoAu62xftDJJ3CUMPGvttdhmq+223E4YbbdBKgsugBGMa+5axZ6r7roPHsvuu/DGK++89NZr77345quvYO7u6++/AAcs8MCR8kTwwQjD5+IgXCbs8MOMfNtNsxBHF2L/xVhRDI7BGBe3ocYdhyzyyCSX7NDCJqes8sost+zyyzDHLPPMNNds8804r9pwzjz37PPPQBOTbtBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGcN0sXH2Kr112CHLfbYZLPrddlop6322my37fbbcMct99xich223XTnrffefPft99+ABy744IQXbriuEh+u+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcuelX9jm766ainrvrqTA/N+uuwxy67JYnPrhMKtueu++689+7778AHL/zwxBdv/PHIJ6+8S0Yu7/zz+KIM/fTUV2/99dhnr/323Hc/Wu3ehy/+//gy403++einr/767Lfv/vuhgwy/jTvPb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghgsROlax7EMevCDILzSsELIjQGQ8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQh0jErRXxiEhMohKXyMQmOvGJUIyiFKdIxSpa8YpYzKIWt8jFLnrxi2AMoxjHSMYymvGMaEyjGtfIxja68Y1wjKMc50jHOtrxjnjMox73yMc++nF04EkACkSggEF0QAEOMJAH7rjIAEygAwZoACIagIEKECcAdAyACC4AAAFgYP8BDJgWAEZQAgaswACdPIAD5OhICQigAZZchCM7AAIBHKB5bAxAIQVAgEgEAAIN4GUbA7AAW8pJEgHggC3XmExhWuKXy0RjM02IiQAgIJplJKYAqJkJawqAA9lkgAAq8AloQoCMHqBkKJoZKzBqE5ebCEABLMBJd25AAAsYRQAIIAARuLOYuNNnA+rpxQAMtBTaPOYWvVkuUjhymwV9gSRNkQATHKCgGLgoRSVa0HGaIgIi4OcqFzoBiJqCAg+wAASAsFAHCKBakGABAGCgAUhQoAcpIMAPWtrPSLAABgl4QE0dcdOc7lSLDI2pBmbggBIIlagzMCpPYeoIFiyVByD/KMBTGVFUArAUqShwZlWXyk8DaHWoidCBDnbQTx1w0aD5fIRVa9BLT55VlvxUaBYDkAEMQEKodBWEXbeKCL6aoKAVEIBeFREAHwRWsGb1ZyIMCs4uPpSbjSiAB05ACLtO9pr1WygAUOkITO5zEK+k5yIPkUwQuBMCPW2EaTvgSQA0YAIeQMEICfFQcroTBBkoLQCICQJtkqAAI93tcJW52IUOwKSyHC5IPeBSE6xWuZoUqzszYIHmHmIEjoyABw7wUnkaIgEAOOwYH0raR+BWAcvE7gViu95rEnSygwDPCDigAPMOIgHFxOx6n3vf8/J2lPLE7X9foN1sPhcDAWVEYwEMRJxhjbfBZrRmJwVcWgYEs5C5LAB5DRBaxjqAuwaAJzMVYAJPdkDF/90ACTDwSg67UZfBfeUFVnBOBUCgAhI4rCdtHEdHkkACru0sCC5AAFHy0ZGCgPEfp0zlKlcCvXQMBAAh+QQFAwAAACyFAJ8AOwO9AYUAAAD///8BAQH9/f1eXl5OTk6lpaVWVlaanJ07OzskJCQzMzSDg4MsLCyNjY3r7Oytra32+PoaGhpwcXENDhJ5e3pGRkZmZmbd3uGUlJTW19izs7PQ0dK/wcIilfLk5ea4ubnJycnx8fIZc84KYsG3p3eYnHaNyPFtqt5olMOx3vfT+P+QrMtJgb12j3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/0CAcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdps0cb/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/gIGCg4SFhoeIiYqLjI1GXo6RkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSDBRiYIIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbJkyYMmU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz/+fQIMKHUq0aFFIRpMqXcpUJMqmUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3uJ7CnUu3rt27ePPq3cu3r9+/gAMLHky4sGG6cg8rXsy4sePHkCNLnky5suXLmDNr3sw5WuLOoEOLHk26tOnTqFMPQ6q6tevXsGPLnk27tu2vrG/r3s27t2/QuX8LH07cnoviyJMrX868ufPn0KNLn069uvXr2LNr3869u/cjx7+LH0++vPnz6NOrX8++vfv38OPLZxx8vv37+PnUzz98P///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGbIy2caduj/4YcghijiVxyOaOKJnJWI4oostujiizDGKOOMNNZo44045qjjjjz26OOPQPqhYpBEFsmWf0YmqSQsSC7p5JNQRinllFRWaeWVWCLSZJZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrHI0ZKuwxirrrLTWauutuOaq66689urrryu+CuywxBZr7LHgCIvsssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar/+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIb6tswgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjzrtGXPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoPP1wegDfBACBEI4kAEEIXwwQAShDxFBBBowsP8AAAIIAAAFFOAuAAUJOIBB6AEEEEIBuSdQAQgaCCHCBxqAUMECuR/AQefFY4C8BMIrkT0DEghwwAeaF4/A7whA8XoGuRuAefEE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yDbnrPPOPPfs889ABy300DhOS/TRSPcVc9JMN+3000FbAPXUVFc9krtFYG311lx37bWhxn4ttk35rjo2fBSf/ZfWRSytdnJs7+H223TXbbe/c9/N5MaUeeYlq3oHLjhh+8Y9+F8jH6744ow37nheaT8u+eSUV2755aQYjvnmnHf+q+aehy56KBaPbvrpqKcea96qt+7667DHbgxnoMtu//vtuMNBc+5cJA4137wHL/zwhBJv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323INSevfghy++rqyPb/7kBmDnsOJOnu/++8mXD//89APje/18tI//2ZHvT9T3/uMI8AL4leEQ8IAIrI78fNavBDrwVxTIAwA71L8HWvCCGMygBhOYvmz5bYMgDKEIR0jCEprwhCj0Es5SyMIWuvCFpfggDGf4r7LR8IY4zKEOd8jDHvrwhz3rIGAAB8QiGvGISEyiEt2xwCVqi4hOjKIUHzjAKVpxebu7IhZqp0Uahq2LyqsgGKFSxTGa8YxoTKMa18jGNlbBhm6M43XEKMc62v/xjnjM49voqMc++vGPgAykIGmkv0Ea8pCITKQi6bXIRoaiiY6MpCQnSclKWvKSmMzkOYalyU568ieQ/OQGGyjKUprylKhMpSpXyUrp8bGVsIzlo6Aoy1ra8pa4zKUud8nLXvryl8AMpjCHScxiGjMjXDymMpfJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376858ADahAB0rQghr0oAhNqEIXytB+NTACERiAAkhAgQxc4KIZeMAIEGCAQjIUChwVAkdTM9IAIMACDpCAAIRQAQAI4KX/ApCAAyIYgI+GwaQ4vQAEYuqAjH5AAUD9AAcYQICdSoBbNuUCTgPAgAoIgACcNMJSKUCAmEosqVdYqgoa8NT1AWAAIv3qAMY6ABAs4KkexaoSpiqACkQQpCYFgAbaukK1JgGnchVAA9KKBK0eQABRteta40qBp1oBrwDgqgwFK9W4kkCvWEBsAgRAS4RKVgJawKsCKtAAxva1pgDYgADqKgW8PkAAF/BsEfAKAgF04AtxDS1lVTuE2BaVWXFVgABCQFux1vSxSCUCa0lAxNiKtrICNe5sa2tSDegAACKILg1SANff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Fmvsscgmq+yyzDbr7LPQRivttNRWa21kcV6r7bbcduvtt+CGK+645JZr7rnopqv/7rrsqtpAu/DGK++89NZr77345qvvvvz2S1EF/gYs8MAEF2zwwQgnrPDCDDfs8MMQR1wJgBJXbPHFGGes8cYcd+zxxyCHLPIT2Y5s8skoE1Zyyiy37PLLMMcs88w012zzzThv/G7OPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwkwha3HTXbffdeF+y8tx59+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2451ytfrvnmnHe+X+aehy766KSXbvrpqKeu+upz5cr667DHLvvstNdu//vtuOfu98669+7778AHL/zwxBdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8hAAgFsAAiAQAGEcIEMWEACuRIUAr/wgA9YgAEHEIAAAEABCgBAhAIwwAIksMAAVEADJzQABjwAgSFEUAIZYEAMPXDAAARgASLUQA2VAEELOCCFLBxgACAwAQEsgG9I8KECDOBEAQbgAinkHRR8mIAUQvF+AehiB66wRAEcAGD8C2MVseDCEn5RfgHwwBqz4MIU6v+vjjrkQhlhCMYARMCE6MiAABQARgsMMgw+dMAE7OfDA0RgDGW0QP3ieMgk+NCHAAABBBqARiYk0gD0+6QlL3lFE5hgAxswQQhQ0ARKJjF+dczAEUi5xFMKgQAbIAAuQ+DJAFAAA/OjpBa9QMoKmKAIukwmL4k4AA4cAI7NXKQRBkBNaibgCMnUJSuJaEjXueEDAOAhADrgzQUwgAHX9EIOQRCAcDrAARxgpxAUEAF4IqCdNjQnABJAmwpwwAEAkAA+nYABDgghnuHMIwMu0E5/8nFricwjEWgJgQ1gM5vHTAIJNioAGsJBAge4QAPOKQQMOEABBVBhJv95AAjEMaT/EOiAA+7ZgAMkYKQcGOg4I4BSA/ATAOcEwQImUAGdfsanNtxnBMQpUADAc4ha42RNNQAaqXIyAxa9aDKVMIIRiIACCVhmEUawzTJcYAFCaIABAGaA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G5n1x4/8v1gGfJLwZEEtC+7awJbx1K+/HlvldtYpUf/95k9VqXv+bnn4TqrMEq/+CleK2kru8K9+1j6nMVjlwl//z1uJIc3/UAkajs3//E9kqi9//H/E9N/R/M+88s7//M///M///M///M//IlzT/M///F8Oiv/1/M//Eyr/C7fJ/wer+vzP//zP/4/N//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//zP//yvId6FNi1wZkOABHb5qv/P//yflYBgADBoUBgQYIKkxQVAMJj1mCVC9HQ4eImZqbnJ2en5CRoqOkpaanqKmqq6ytrq+gobKztL/1tre4ubq7vLq2t5iCBEQCAiVNUCsJDggaAz9DP8k9JLXW19jZ2tvc3d7f0NHi4+XhqAaQkQYCFMQLl5OBC/ANT4g0yOn6+/z9/v/w8woMCBp34F0JGFwBALoMylC1CFiUKCFCtavIgxo8aNHDuKcnhoCIEfJkahO0RkpMeVLFu6fAkzpkyLBlMSKWjuUApiCWb6/Ak0qNChRGOCNEcASSqDLYgVfQo1qtSpVKuyMohkoiqmKq16/Qo2rNixBLkKaWVw5xCybNu6fQs3rqmjhAKIEPGqJoF71wTI/Qs4sODB3LDuzXuUyY++hBs7fgw5ssmjWcLESktgWrWekjt7/v8Muq3hDZocnrO0oUVJTiftLt6cLrTs2bRrG02spaHONADW+E5jRsK7nAGAHPa0QFPyVT0F2X4OPbp0flyteIJnocyaQSsArFhBJs2O0iAXtOskAMHyS+mVqeI8Pb78+fR3GRS5nvwh7d67f/+/Qgz6xfNDFKcsM0AqzdXHYIMOPlhOAGIYiJ5O22Xi33e8ZXJfFvBhop4nIaLSXDAAaGGFQykUKMR6imhBRHIhaQEjIUBYFoYYVZxjhRhaCIFMPEpFsZZJ1g2iozpnnRjGAjp5AGGUUk6pT2tcLDncIRduAqAZmCyxxCUoWJGZJqr5RQtnUQCJBBM6ANACF0Mg8EP/GOa0aYUOWtgZABEipLCiEIeEYQwQQCDAXgpMIPGEEFEkUBwXVejARJG6CaEjAIciEoVShloQwDNUjkpqqdggOggCCGSxECeqIlDFlhj29x0AWwyyxa22bjFGFkhseAkJ8dSSHAJEOPTDEH1qYU6ciGqhrDlMOCkCPRCJIICEQcDjEKSYPsREOjUGgASFuoVxJCFP5MYeuVZ8aGq88s7bCqCDAOprJ4CmgMSF4AFHRne0CnxJrgaPIecYmajhAigWaKYvmpnAZ4EHVdgDQBjRDiANAIo8EYygy7awAaGDDoEpxOmsmEJJWoAaxZsBtCDCap8MehO6K4sxhBgxskdv/9BCD+3JmwDoYPTRCAHxBCdI69Cvf+EFYEbAA2dicK4IE6EwJgw7nDR6m8AHRBRZHHsiEPEE8INSJzLCRQuHJBAFE3YjwOkPQPi5Y11LZpGiCSIEKXjTyUg8CJR1RdHpEEyoTaYQQNDYHENEX445vRDvuy/gX3K+b9TehQdy1QASjGvWW3d9ydeghL0JXxPHtkAznaYNj94Zi7GBCX46+aOqJxbScjo9E/dMECaUXcmf6SBQMyGkXVLgPU/G9oM50xwSBT2xZQ5++FNytgx7Cfia4NjLoLDGf2SMYdwCpv+HSdZaywnsIMGZ1onNrHFSrKbNCABCWNICBmcAJsiNe//HmBa4thWEh1xscdaS0LF0dxBzoeMSqHqI4TJoAeFlS2MHUZz4TojCBrXmbBU6BG++874q8GR+avBaDQehBhJkZjwTE47YFPQwLmxrAT84y46Q4adsTSJbQIhbAiolJC6YQACLOsSPDpICCb0sg0jo06PYZplQcO9YA8hRpPBGqSqwTVApbKMb58O9MLLmEOyDIfyGUbOqeYlDxJHh9ErRwQMNwnFIghQAbgKAPzWrQFqolk4YV6AUXYuR4hIDIsRwokmkoyeQ9N/NgiACRk7Ri41cy8zeiMpU0sYgQgjXdQ7hJfDArxE8uYCA+PiQVvYPXhy0HIkeYgKZmeYJVfD/AP+eEEHzIRM+iEjBB91jCR3YTCdZLEcC7MWeFhyjXarspjchYxDjBDJLZlhDDB/BE/Isjl0ATIZymGOUb8pznn85iQe08soA7AA46cLjOKtzs3fC0zn0LKhBD0qIuojBleps1yG85wgujORDeuFlLhaE0IxqVJWY6dsrJUgMiSDDA75M3yazgKVeYHSjLG1p+FrDON08xDgGyMqxQLaao6RknLuwqEt/ClR5YcZtFfKg3FbFCHc+BJgESKlKvxfUqEqVSq0RRgf5d47DBVMAwvDeUh8CDYJSY6VTLatZ62Mlhib0ezmhWBCcstZ4pAR2Tz2rXe8aH668JjamaWvlq6YoOYcOQCSWuoYJWqCDdOF1sYz1DGb2+j9CKMMcJF3bYM+jjfI1drOcBSdxEKLA0mQVVFA609oagcjOqna1RGOKRAv71a9WjCHxACUBvMra3OrWVFUlhkfn6MEwEEN2uy2ucaOUFrNV6o91AebkhkHU40p3uir8rBiGwYUwEIEeVgACysxGjOhSd7zkzStxPAAEXV4CuzwjbnnfC9/oEMch6vFlfO+LX2oEAgAh+QQFAwAAACxtAGcAUwP1AYYAAAD///8AAACIsap5raWGq6VvqaBJjIKkvLhkl49traR9sqpmnZV5qKGRta+bwbtuo5t5t62mzMaVr6tgkoqvxcJOkYiGtq9RloxXmZD8/P1ZnZOjxb+YubOPu7WgtbFysqiMwblgo5l6optBhHqo1M2Qxb2RpqOCpaBmpZy91tOYyMCVvrddoJbC4NsWFxo0NDSZzsZkqZ9yn5eCurKIiIkKCgyGnZu0zsq4vLtISEhUg3smJibL6Ot1mZNoaGiw3dZeioOJvbWUlpSkpKTEzMwelvXQ0tF5kpDCxcRYWFg6e3Ha3Nvs7Ox3teV+wLbh6OaytLTX9/V5eXkYc8/u9fQGYsErjN0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpuJQZyfoKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4o9I4+bn6Onq6+ywBe3w8fLz9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMiwocOHEJGdiEixosWLGDNq3Mixo8dJR1x8HEmypMmTKFOqXPnvQ6YbLGPKnEmzps2bOHPq3Mmz584iPoMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1KtMdVrNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cP/jyp2bCQHdu3jz6t3LtyKFFH0DC/aIdbDhwxQRBMGAuLHjhCweS54s0Afly5gza94MbkJlT4dmcB5NepsBRB1Kq17drBzr17CfgT40oEGD2Lhz70oN4AZvQzsiHwHgWbfx48iTK//mYwCABIIkKFqwvLp1TSQOPD+96ML175xnp7KwSHEI1+DTq1fEgLujAgkKr5+ffgeF6IWWECo+iDz9/wAaIoR2ARYYIAMJ9WDgghs5dwJ1hECYHn8MWmdZhDuIFmF/zlXo4WqzDZCAEAAoYAgD4t2nywgftjjVEhD0ZwgQgtzm4o2wLZBBIRQOol83w2XSI45E/kMgcSwK4oD/hjLKV+STiKEAXYnvDKLAAYw9JwgFP0LppVg7OIkJdxakcCQEBC5hAY2GoJBPEl/GeY0HnxAIWIlYgrDlkTzK6adRGRrCxCkk6LeBAQRql92fjH5FgYqahACAmgQ8t4R+ErZZYqOcyrVoIziUKEOMnZZKlCddPjLRJx90gIICLfBp6qw9uScLBCKMGg1QtPYKDgZiLoIeOW4ycoCtxHDg67LnkLBjJChg+QhWZdbI7LWndvgInZWwWR4kSQqiArbkDgTpIXaVq+667LYbzJDaoPDArcG6a29no7BYrJbaKHvvv7vUe0+66AJs8EYVlOAKfMgSEsXBEP8i3jKrRmzx/1EDeHfxxhx3nNmdn8BECrIGKBwPBDZ6fG8FCG5SzpLPDpLDJ7jWPE6V3amsM7QOAFBtIYOCAiwoNhKciAZCA1ABJCFsEMPOHZ+7yZKimmKiIfBKcpsJnBjNiLeOPCFpMBdCHScFlfI7siRwPhIzAAqWR0BklLRt9t0LC0JCKfOeIgKwehISqiEIzI3u0vm4tB9xfeLd16NYHhouJyKozTgANFQicnFly7xJzaMGXleoWQvezhOON/YXsFyHEiMGlS8N37GW4DxeChFc3QLYlBSwQNo8Ij6J4qnb67ueIqVc5yAcEICBftL2ghWuosKqwAyTUzJu3INkXPz3qzj7HP/spSiPiX255qqm0t8i4oIUVhMzw7g3Cu8lfFIT0nnpn8/CayMPyl0GyEMA0dliAv56ztNYxbvhZQ98mTnBvLKUiCTlimhUes7EwPWbQtiJW46oAiMQlwEZCGEFtGsF8UTxP9o0TGsgW1bQCuQ1BrxtS4QwIeVaZ7lGjKBl0QHehnwUCfsxojkAMIHGVPEBJCJjXg2E4GUioKTxFcI3dPMBdLR1CbpRYgYJaEEijIYz83WxgiJZRecU0TNeeFGKmmEMYIB4xXn5zlr9w1oChygIGaTQGCuMUBThuLHCYW5vPnNhIbgmnTwmMhEXiJt3dDUl5lmpfWMahhGB4TVC7mX/kjISIiH6Rr5DWaBvl6CdBSJQSXB1r4q9yRQiRhAC+KHkh4PEz41SxaAgeC802wHWAIUkzEWQCpbPstMN97UIEaqEjsB0UZgqRL3tJCJXpezhdHrTx5YhqoTsmxEFjmVHSSCgkcUoANdASIkOAmONnkTMkqjzu2P2hzz3GZUp5bhERSDhUgTywAZakDlZupCKvWMVFy8hsoIpqZ/xhNgCrUghLRJiR2L8mwFnuaehHbIFICUOKhsxJcNZkp1JJIXdULOKwZmioZMgQkRZY4DMWZGZhHDWQIO5JTAuIno8VVUBHIBQAzAAhHnSln+UZsZTEIwDe8TEzMKxyZnGZSIp/2zZRGHJL2wyRphLzU8wD2ACaPqshPS7Jx6NqlGE4imMjNnoKip1AVlZ9RjwXA98JlWIDOSymzYEaQpieAgsWeCwVRMsWMNaplXWaH2V01MYqTPM7RC2LQNYgV514wEJsQCiJ3rWqCCrUUSEKTvZOawMSmhDEOATXTzU4F+uZikEGbWYG6iROyNSMWRUQLN3PQqCSMTRUalWS7Azk66A86lqDfCwiDUqL9lDMgJJVrSVa0VUTTHVivQ2uDfREXAJt6XclnagigVBGjF0ANR6NXKi9U/DYBoflLUMve6gzVYdgc5mBDK/4A3LdtnDWviK8XIejJWBNxA5JYHzkhwtRP/mKudR21ipYVXlBA7+GmBfCAxKgzVvSEtksnsK828Mbi8BLzDiy3m0j0TkYw7vuymEtLHDAaoWDTS63OggIQiLkoHetNPYMrWAthI+VgH7qCdRpi2wMirvJVr4CGfi+MqHOBSDs3tj5MJuyzjMXeTMFJqB3taKgBHgjr4J4xvSNmW7FUQAIrSC/2L5zo4I60hnSeQj5RaRaJ7jiQZ71quZCAPJtSJyYZzEcaZ0kYXorgJAQNxDpNUfnbwHFFSK53Dkz20qfqRbuxpOa/ILNGQN5hMsACP0UjiJNADBpBkd6aw94DT9XcR6a0FlXbh0IDDtyXfd5TvIsbbGM/5ymvH/WNiLOni1GK1chlybXe0B8By+EZKc7HxAe+JGSlH2diFwBay9Tdq4wEEUHqP3N58di9Dv5iEDRj21XH9DnZ2ej5ganEPgmFdjQMXTUnWUgROG8U5P5pOs74RKk43316DKt8S/mMyg2vCVlvVRDC/YvSerVW8ZxZOsPcDODJtu4sSY5sbgKz4dpbtqfRybVzPY7NNoGVa0LoR0bKdzTFgZ5amQK7a+60Qrpbiyfb3uc7wqa8yhOMtays7vYB3hnEL8EBq49MjsDXSPQWdvTdNOuCqw10agrqu4S2y1C8giERRKPzBiMRXp2qZRJ6EAEhg2eQmx61gCwJaDUMHPFyGB/xc2pqkVsWhCiaH3q/Z1lPBjwWzMm3PAXvC+FG7vIGKFQ0QXusWHWDjGOzBeh1q6EH0/p3EQbxGu+wpnF0p0x5VHR9dEYMyrNqB7j1pxMp916TtiJS1uMO+uE0roMmYU8e9zQ0tZiTyFEaXfzUwAwDyNVAmgtnLnvkD8jtWaR97OAr39wNOjhkkQtqTxhfbHuhSJ42slx1tBJuSLJopHhckVvQGjHVmaT4KG5wgIYAKAx1LrVydhxS4IIj5HklS0sUXHxHntRn89hWSGElqu1k2MsFCc4B1xdoC103zuAl159jqVglgq4naHYAIl1nnPlSXwNWuj9EZVZ1DgUnoQ0P+CUwN0Odg4j2ByqdBdpLE3grU4FRRlzmYtIWB48pVgBiCDzLNr9nNHmbBSJ+cNQuguNGgqefI0CwBoe6aBm9djsdZx5DNkv9cJ40NcXCdLH0g4rmeAfIF+RsGBv9B4U5RIYyMIhnRR+QdSFERU3rFmwTRrBxZtufVIbcZli7Rk76GDTIMJb9h1PGeE/FMPZlUVI7AAksItDZAhj+I8z1JPhbYpC7dwMIhDioY9pyF9i+McYcgqIJgvC0FBUvEXpLZ5/bdUuZVcrKVPldMeg2WIGZAdKpgo5nZEOIVgorBfs4gJP0aHEnEisnApVsFqJEAib3Qo49Neh2gigQOMwnT/NeKTYM+FZFHGQ1rnM1s4DjOkMhvEDGcojcZ0PsWHhK1EFSPAH3YhGt44bp93brByhpaTT6aWJznXZcmnCcQzL874jJUQj4Dkh3KIGFK3eXtXV1kFiNhESelzSWViU4ewPorIRxAICnQiHRJwAZWmDpd4IxIpEazmPrE4C6znE/yGbEk3biF2KOdWXiJ4RHeSAkHZWQ92RZeANirQAyjFVb4AhBCpCT8Dh6ooDNxmE3vYZdVUAKdUPSUib8BnTotoTFlSdJKYCBIUlefggT+lCNxjWnXxaU4hS7ZYRTq0iHpiV2YnKjBiCMPSADekkLUjCJsGW2oZCQ6wh6Lwlqcg/5fEkY+Q1gjWqDmx1RRp4xwasxiItEEtKIGK5kH+9Bct1l/6cgqVGCEi8JCY6JJQsYzIQB3tmGd7A5XUxRTOcS7FqCEmUo7IAols9YTUhjV9SRvT8wSXpX52+AmlZwiMqRYXx4xs1BMJSI3HkDCMo5e9QS1Vd0Q+4UuD0ESFAGQcRy0HVpLlCJl9lXsCeSJYkmnP50ZhGIe0cJXv0RE1qRGnOScnqD/AMUtS4wnOsTcfADzBVnk6YT4KQyqFQYRj1Yv15yPtBWiKEJID2Qlap5jM1guBZYO1MGBhg54WwQKVqTUrMYm14BwokyoFIKGLYaBStmM4tE4O5m838ZJCef9txjR3B2ZUoCVlPqhLoKkKvUaY23kM9KkTIJoWUiKKiaBTQYlxkJCkLPFhY/SjveGYjFBTqBOM2rSQcKku2VYQ5acN5dikdeml5CVEZVoTMTkJaNOlj1BARxZShIaWpzksNIdphykKP5SX+Uh5SJhToVEp2TcIN/BkRpWGNTGmlXCbqukIwjiQQnac9WgtgDGZT7mn1RBnBOcfSGQrRwlhHkobVlRxVeEqz2kJ+YRzOyZ6iHAuQrCbYmMdQWJptNkUWJoKCeCbfYWCwmQCnspckjA052lky8kSgAmdegOkhpp+uCiVIpA7KRACrVpt2zQ4lMZQgvmdSamppiCln5D/RlTac0x2JYJqaok0kxfYoxCGaO6Kk7klkmgaGtjZqNlFaCYkbtEEHfoaIa6YoaFwpLhwq3iTqyjpiF8kOpqXoWryj7P0WT7qfQeaoQ/jlHzKrhcmawW3HYKpH04Enj2VpxLgAtWCWlD6Hr01EWk5S5AIFvDhnlEyr2qYZQrAkkHaeXDaUe4GqBPLoaWGltuqjDFwQosgJdwoWfC3eYDnA9qpKT+ri9MJKp0Vp8nJE9wWm9FksWERcCR1rKEwpErCIsYpIz7VqxiAfCD3qz7RM6TYOA+atSSqrIjwO2eXcRU0TEGrCI/KkKD2C+tYFHhqErURCdnITapQSSsJZsjG/ydCkIlVibNCkT/MRJBEE4AVmadHWLQ4NAIEm5QpwGHsWBTPOhmOxremV5IudravI0YSapyGV1+JqKg+oXiBpz/nonXg2h2RZQm065enCbMTOpi0gbFKEap0kldRgYc72FpVSAmowh5V6nx+FrtBUbqSwLSZ5LWVWrQWhqOW8LdiQag18q9ymxSjawpEJZWIhzTbZGKa8gAT0JLdWJeUihObuAH09h6W60P1C73U26Q6aaWHh3Na4bi58D/6Un3GaHoFOkppW6T41GA2JxT5qTnDGrWQGjY1VRoKLKH9uRQnEB9ouzbQ+DyrJAQuoFREJgoMEDlbSgBXtxN/1MDRW/+vJJzB7evAOQsXpEKoBtyhDfEOUtJ+xZCCH+ym1TSzNWLD9mvBrlC2jTBB2RlNLUsKNvpoJBG4zjsMngHDCoHBc+JsLwa8FPloXpwVLFaeVvydthGr22t/0MtQltC5SIoyX7HCOwwMvSWN+/JDGuezLGWuWuFkT/o5lISigjCiiwA5E8oYKSyA9SkJ4BteGEKLoVDBB5EhG+CdkzCqoiCw/vSqgbqBoesoLbC3mqArA5m/mjAR9nafaUG80IvJjwcKWqwQYKQgPzwNuXtQHBIVuRPHqLBXRhYJyFuJ/SqA8lnCRdEAI9WjyCvKNKN+DBFDTakISdCmatQB9yGvcHv/upczA3k7yOi7yK6lNQaVad5MdV+DFlU7wo1QzPYbIh6cCH0XnR0ISUVqhMF7RESMFCD7wBz0tGxEvsu6xiIyY/m5nDTcNd+8qN+3xf2rv/jRQeM8EApZz7yMuvtxLllTtbbpWIiJoW5jk9f7DonZC4AMEQPQgMq6wW4qiZJCdtvBqEFMAhUcKLCAeevsNi1MQAlWY/TXNA+00kWhvOoQpqNAxwkx0eDizUV1s5B80JdA058IiBfhmulHCz1dy2XWb8LIPO5RcExaFQ9CEkpUEcsc04ygxvEMTQbtQyDp1Ahh07LQooiQhY6QKoiUWd0sfTE4FQ+Q1qoQA5TbL5DA/8RoTV07oDAmOgmKjS78YRvO87YUYRlvZIXCqwjAe76jzIzdawhlGTMp7WXZNU41u7+f5DfJIMsnQYOKQx0mAwF1JpWTUBuMJSqozFv1hs+QtMt4ItWvKllJCDjaZLBPMbXKIKOrfUX3WMssGQJVjKOFPKjV0zd2rdZ5TBwgbbo3Gs/UyB3rmimKbBhaPZ9rEQQ4V93lCwl2Mcm6lHYIsmat2BEJ/Ym6M924cAPTxZ8Cooj/63d8eLLJjRGe7AsXPQ0NxXpx3Qoeh6z4BHqukAO3HLf+jb0Z+oWUhiD+gtxHTSIlMLSC0JwFHB0swD1MTTHZfSsOqZiwTBLkU32hmf8sMDcCEdw4pDkVZ9zeS03LumCt3kAjZQi65kB6e9SOka0qfHICRG4SYbTIqP0SI6RInTyjqn3eSYHlJ4O5mwC2boSJO5fdvZxnPD4ThfvGpKB4rdgzB565VQQh94wCSK0Urs0OGg0O8rKav5QK5W0T2qxGX5XkaE7VhtDfM0HGB3ECd35vXrjW0wCz0TroU3PNOeEAC7QC2rjPmMBz2YedwN1sXykIPnCs9FgTj30QuRMC96wJXt4LS7gO2wo8IKCanw4m5YOwSbpHIFp4i6BE9sEVp84LOYDo/YPpo9Ddt1B+DVDn7CBE7A0VVyzXORzJISMWMXwymYMBq65GJs3/bHNjUu3wDsW41Ru76Q1uFFeZ4Lc91ZiVD+PqDc0zb8E8ItSq2u8iClF7cdDGUDfZF4uuz0q8bfAt0unQMmcXAVwza8TeCzYNymYHIX79WqMx5x5z4GWIDluKOiQytlCIDMNF4ElCywRQtcwts5Ox8AvZxdiD6A39JRpz7U4FDDJnIihacB1vDL1b0rpVIuiZqHxUt6PxrHf0LFuUGgv6qk8uwFmhvenwWdvu6qgwoC4nRGz37ZFuDCF8ypIAWkoUAf3U84IuT8DkUUtg6SIRHKb47CfCAkjHKDYLDxhr7Ik8jOkUiyPyg3UH0nSSURDg4YeR9AIHxoek7uvSSUMQ/wt/bpoV5PNeHzqWTTbxrUCZRFJG/fcB/oswbzEFyA6T/O1LSK3MVpic1KyHHcWJDfhtkfmDWZn9Piavtdse0wCPrwuiX7uDUO/B7PWxZu8rskQv2fp8Ji3J7Hje+wrt8WLgY+i2UOH+OvJLGK2sLPMoTDnq7vcAAqCMofyz4vCaKwxQtYFaSrdNt93ZMDml7dWkgfKY8Cib1+feepZf6YWhEx3wDQ0cIO8XzBk+PgrPDQgAgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZk0eanZ6FCoUeA4IcOJ+onqSOHQAUqbCxsrO0la2dSLWIQYUWur/AwcLDxMWTHCyIucaPQv+iK4MLpT0zQD23qR/MlAME29/g4eLbCYQp4+jp6uuzI8AIKAzsjBEhroIRABclz6WwFcVMzBtIsKDBSD7MyTvIsKHDh7Yg6jMA4AEHfOYuhHB2CAEAgJZKYPt0IprEkyhTDroojMRKlTBjyhS38CAKkyu9CTpAah+AGfYEOdB3wYCHRB6LUYB2T9zQmVBj6hx2QdCMqFizanX0atFQCBwHTu1o9apVgYe8PQEh4lEDfSi7bp2LMkfHsd/K0d3LV6KDBxjNqUh0dJDcXcVcFPK4SpFIQ1WjCbGHVtayWoAV1ezLmWARIIVKFuhMurTplppJHIB10+ugCXANZY4dLRT/oaMrRm0MG+xD0k6gEcH7ebq48UiHXx9fzvwXA7OKliQK0iICBmIPgn5s9NSxPQgxiAqDrivBAQjN06MCqb69e/cWkk2q0bpisMmGF0uSUruQhI+nKBLEb5dsVktyP6323oIMNuige+jNBkkQCgqCoCwN0PAWf7dIc4kEIfAziGL+jCgbLpGMZolLvQj14IswxiijOtpgoleBzkUAgQHBZcLEbWnJMEiADUnAy4xIJqnkksvh8Ap6snwQAghUqgUbbIIMFhJt+NgGRQEDaDlThUyWaeaZaK7zGwEGZtLhIDtqaJVQD/RICQ5gCmWANFSyoyKRO514oyEsptkeloYm/6roPPKR5EECBJgQgwsXabgnIRKMVhghJFISgggKRBDeODO8FaSFj/iAgYiLNkhgq7DGOotvqQAKVwTW2VaKB9rp06klodIgCBRA0hLelOYkq5wrKbCVqqzQRivtXiPgJRMCEzy3wEJV9pNJFXrSQMOoAGhwG3+fIIEocUhBeYiQkVA07aHm3jDvvelZGxNjHh4rLyNidtTdIXg6i8h/ZNmS2wLCMvIppsT1yhW+pZUkG6sUZ3xaPFmpMEBuJbYgCcIrmQCeZuRK4s4lGAir6y4qYlKjxn0FsSnNOBfXQAYikxkVpIEB8GvC+jGCMSQfZ9JaqIuQEFnOSiJaJyqDQv9tdaynBAXaAC3b+bTHZpGHjxDgGmKXPkdPEvMlCpxz6dVofryDTo2l1cnacOfNZBEjcSBCjw3reUjZ2ynyFzijYLBB23qf2dUGLnJJpya0Nm755TixpDYrRheQguKYnxkWlCJleHPoqOfcpk35OPxv6jICNPPYkokcdEOjJVAZ7PcCnRWizZYMCjN1E0KAh5chMoG+vDO5rclsbjJOns3P202hUT2ga68JzdP9OY1UW32aMXD0suQHnTx+tLkHDhUC8kAAuSImvFriMOLvTtgST9CzPoxVAUEJ3CWRCnQDRAOT0P9Ep5UceI5phyiMwcTRv8kloggXWmDOTtAD4nX/4IDGM8DimKfBGUUIK4AJnmGOVxYRZGARCZFYrSbSupEQhgHFKyGD2BORh5ACVEwhxNl0SMROoGdxEUKgqVy4gQ0ocE7jKZxCEkGyIrYqYFbM4uaicry30W4ioEpLfIixMn10yENS1OKLbGWcdakRQqdD4UtWWB22NIsFmjNGTVbAp+uAsVi64OEbU3KC7pltkIgUkPtm0ooVgGWR+JifAhQHuvPBwgQ11N/AAAACE7wwkbKaHSKSAMpSMnIVQ4McEMrHySmloILtAEHRlOU2WUYOkNl4oikhQqz77fKXOgNFC1KwgioywyhwykCw5BTBf6xgaMCMpjRRF5zowYld/+F4S+AgBS/0EPA2vFFF66bZlxPo0ibkNEgRXrRJ4YhHHCwMFwDOc0vIoNETmEynPvfJT0qALpJlceSO0nLPToDIIaLsp0IXShAbovGc4FicKyyAQ555g0r6EwUqWFBQhj7kP4Xp4LJOAk2P8s4sMsTjRMLBgqM0Swbw+k4a37ERO5l0XzfN6TFbCc89tW2cnIvnJxim05QktKhIBcYEwXGCnenIOq5wRkcNARRsGhRtSc2qVo9TyBbV5nURfaewjKm8HG71rGg1lDcSANNIBRFxUMxQSe15jbTa9a4yklfdOHA8aNhjrmSMJEVTlQ9T4ZU5pDysYgV3lIIWBajgEP9bn2Zpt8Ueh6yWTWs8QiAFVpkvHXmsJwBEI1O9xC+zqE1tcUjUDZjYkk3ymKpqyznbw+JqLbaUITsIV6EmcvKbtQ2ucGfi1CoJdLLgGKJXtgVQXw63M2I7RiE4sZ7n0mwDJSDZWtAR3UPYayEunCR2rJsXGg6kneRlX6O+mE1YEsYqg53feNGXXqWOsb4mfSxOWLodvO2Cov/EL2k8JjQBM7RPaDHrNtbLCNXY0sAQbo/9ppk8cjyCZxHOsIbh6TLdMiMpuHLYhkdMYmOEk7JKEUFGS5yodbJ4gRQwjzGSIhD3vvjGOM5LPo4KjDjm+MdANk3LcFefIBv5rlzjJE3/3vkL/yLtyAu2qyGLGgTIWpjJtCgylBFq05u6Uat5ki1VjJe2bGz5zJFwMZqNVhO2etgTJMvgmnNsMaLNORHWWgBE3XRn3GlJkH1OKlhuU7VAlwYBTJFAdw2d09aimNGkQRhgIX1gFRuPwbGwIaUXLFKIbVpRE26IB0JV5k/vhY2mZqgDgHs8Zqb61bDWxAWeumJKTDnWuIZyUliVoXyoGNO5xmmwkfqoYfID1cNO9rA5eg/0hk/Z85g0tHdZUu2xCbPKE+20t63rpnAFrJnmtrjPCujhoUPa4063utfNbR6/UQXIlgUW2c0NevMz3rIwl733rVgx3QTYZub3I6Ig//B+ulsl5S64mqx76/+FWuHTSkLCIf6eOlP84kF+GsY3zvGOe/zjm6YuyKfl5JFnzOImPwk2oDDvO6WcSSxY9MsLolxhEHzm72FAl4uqZZz7/Ocx+TPQMzbxoc+jl0bPmJqTzro9Uw7dTI+65SQgAahjAt9SP42zs87SpxSd64bqNNjRAb9XFnbsZyIc2hsqkGWOFSQTcMbU1o4kFyuY7tvw6U+JsiNJTeVweHcQ1gPPDCA8Nh/9u+1GRDVTwju+ekXG5FoWH6pRt/zxzREz5tURihiwRVSNGfzmR583IhXltxOh+khJz/rQYUsFAG+97GdP+9p3/PK2z31tra773v/7/vfAD77wTzT84ofS+MiHFgp09WXSLCX50IfVm6NPW+prAoLWz772t2+1AmCb++APv/jHT/7ym//86E+/+tf/8oaz//0dUyH8538QkS+ChPTP/0mIynv9pwnlPtd//vd/sKZp9DWACChqCRhoH4AuC/iAEBiB8Pd1EliBFniBXIWBGvhhnoUIPbeBIOgwVSYbARMwtbZ1UAaAIXg1DrBXxPdeKxiDrABgjIAleDF9P2YvMog5fLRW8OJc7NVnR7KDcPMBmiI8JYMC84YwKEiEMhhaREE92eaEDyKA64YDPNQAVwFStyMUXaGCVEiF44IPxxJVQkEyHLUBwoKDYfj/hBnyVRRRKqXAXELVhjuoGFi4LgXVVlblUfo2dtLxYgfXG8rQVjpih4j4ZLVhZYk4I2B4cSDTiPTngJ+gdlO4VT4miUlFgZqogc6mgygmZ524JAUwhLiGdNqWFuXgdAplO6OIV0/xVjn1OVjmaa/YaK4giwoFEGUjQgeIdiVHbwVQax6lAIn2eDuQgpk2AZQoFNWiix4FBD0idni3A6JoakdFACVVDtd4i5LoOd7oOIEIZbgXCZkYjrDiM9tGYASDjmmyOuRVc8RQaobljolYRjlVjqyHfwKmj7HwFgsBijrlj/aIOQTpJgWwGozjfpioEbFXkL8UHDKQT/0GjxA5/02Id5EauZEOUmHBdpAcqX4GFJKJWATD2EwkiYhSmJLAMDcs+ZIqwZDp9YGO8H0wWR6sly2W8HA3mWU5SRGN4gFQ2AwZpnGB90kbdnfS1ZO0YIp0sUnYE2EUoIXgE2HmNGcC2RnZcgDyNWJsOFwj4ESXaHvjqGETcGwzpFUpw5ShA5IqUx1sWTGpAFywxgBieU1xuRUuSTUlxoqTgIp52RldiSNQNGIIQI2BeYENYIUA8COJ+X7Q+JiSOZmzVxI8SZn+J3OYiYD/UY9puZmgGZrAYJHsdpmiqRUWQAKumIoO4ZIPeZoCR5qw6X9GiWM2OZtRg5W4uZu82Zu+6Rca1P98vzmcxFlwTVicyJmcyrmckLBz/3OczClNyWhFrxmdu9SM1pmd2rmd3Nmd3mldifWdM1KW4lme5nme6Jme6rme7Nmepeme8Bmf8jmf9Fmf9nmf+Nli+bmf/Nmf/vmfABqgAjqgBFqgBnqgCJqgCrqgDNqgDvqgEBqhEjqhFFqhFnqhGJqhGrqhHNqhHvqhIBqiIjqiJFqiJnqiKJqiKrqiLNqiLvqiMBqjMjqjNFqjNnqjOJqjOrqjPNqjPvqjQBqkQjqkC1UDSgADPPACSgoDOlADpPSHRPpj4BIARzAFACAAAMADOvADUzAFP6ADVyoAL/AD4RmlOEalSnClaQr/BQHQpm7apk2QAz9gAwKgA0tnpiQWADVwpTXQBIugAYCqAUTwAgLwA3iap1AAAwJgpZDgplf6AvZ3qAJGpXRapo1KpTwgAPIoqdZFqTzgp5XgpjqgqZxaX56aCaJKqqX6XG2apJYYqm2qqKC6qrXVplcaqZcApzYAprRaq0kgAHv6CW0aBQJABL2qWrHKA7DQpqN6rKkVADmgqqjQpkcgAEPgrJbFrMoaC9qKrYsVAFAArPkGrdLqrWnVpkMgAI65rG1qA4ZqrnbVpkqwreOqAzAAr/EaAGNKC+gqALM6DLy6CGDKqIMQsISQpoqAsIRwr5LAqwFrqGmqsPiaFQFQ/wXWSgsVUAREgKXzQK8IS7AA8K6PwLAA8AKUILITWxpMUATFCpiMcAVXAAkw6wQ2cAMxGwwgW7CTsK0GWwgoiwgk2wgSq7MpSxc5QKzG+ghUQAVO0ANU8AhGYARO8AJI4ATGELST8LNDmwhYCwlp+gMSy6s5W7QzcbQ2EAlL6wRU+rSNELVTWwNWOwxdiwgmiwj0ughzereX0LXuKghzS7YIh7RKSwVW4ARDUANO27ZSS7Vxmw5b6wg9S7J62wh/C7ic0QTVSgRQqghLW7jpSgSJuwhuW7M3yww/6wlBqwNj+wmPa7ko0a7B2gida7gCUKyIaQg9IAUDIABuCQvvWv+3IEuwdTsJPQsAINu6rrscrYq8hjC76Vq7RCAFr0oIbToFZ8sMCjsFkwsD9zq5iaADxGKwkwumlcsIQau9WZq8M9GmPzC8jOC8YVqsfxoA3Ku+OjWsvKu0nisItSu/iQCu4mq/N+WmfdsITnAFnsux/Ru7hWCr6irAOcW+1+sIPRAA13qlAFADGowIrVq8EKxQ1BrAjdCmNWCto/ojTZDChkCuN/fBJiWv/uoIJDwFAbCxSlAFpASYrVq+LqxPusq81AsuVXAETUCogmCJJJy/PTzANey/ihAAR3wER6ABJby65Lq6SwzCAaAE5XoItnrEmFunK8wEAsDDWezDsaqOxBwMxeUCAE2gAbiqAVCgpP96xn6Yxi38xGzsxusKxzbwAi5rxwyVqljcwG08qxYsAJ8qyEjlqIq8qYY8CFSqqKfLyBE8yWWcx/+bBKP6AppsyUXlpkSQqWNKBOsqRD9AyhcMymflpknQvv3LA9ybqfyrBJ/Mylv1pkdABDUAtkrApUmLy6j1pnsszFATCAAh+QQFAwAAACxqAGcAVgP1AYYAAAD///8CAgP+/v74+vm/1tT8/PvO4t+mx8LC3dkZdNHOz8/V6eayx8SiwLyZwLo1NTWy2tbw8vEnJyf19vWcurWWxr/t7u22zMmJubLm6ejO2ti0087X2Ne/0M2srKytwr4WFhh8qKKrzsl1o5zs9/WQtK6DrqeOjo6+492atbKGs6zf4+Lj8u+RvLZ1rqa5u7vs/vu+wcCIwLipu7nW8Oxen5aEhISSrKhHR0fEx8d7ta2mtrSj081rqqFXV1eLpaH2//6hy8Xb3t62trZ1dXWWzcWdrq1nZ2ehoqNkpJvF6+ZUl46Xl5eFnZ1RkIcTZLzi+vZnkIpgmZHF4vhum5VHiYAqlOx3mJJarezK9/SFvuhlptdBf8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpuMN5yfoKGio6SlpqeoqaqrrK2ur7CxsrOHMbS3uLm6u7y9vr/AwcLDwQShEsTJysvMzc7P0NHS09TV1tfY2drb3N2hMt7h4uPk5ebn6KjgiCyoUgnp8fLz9PX29480siL4/f7/AAMKHAigBMGDCBMqXMiwocOHECNKnMjIQyYDFDNq3Mixo8ePIEOKHHkQB8mTKFOqXMmypcuXMGM+GkLqgMybOHPqpFZhp8+fQIM6+2CywCULQpMqXcq0qdOnUKNS4iC1qtWrWEVRaLQhq9evYMOKHUu2bLqtGzGaXctWqtqOaP/byp1Lt67du3hlHQFQ49CCh8byCh7cTwPhw4gTj7uguLHjx4v6arQIa0A5ZJAzH8Y8aIXmz6AP/lVIIrTp02xpanKCurXrtTxey55Ne1IVQlRr697dNgPv38BXWjalpEeQ4MiTQ6XRU7nz50md8HvEGbr16/QatCCFJdFxTg4ASMFOvjwzg6BMIhCkj9BtUt/Ny2+8NyKIQUgBtDcpfr5/60lQxNoJ7Pxn4IEEgSCFCQCs4AKCEEYIDWuFeIBeKAwIsoJFnkno4YfCYLHChaRgMIhNgoymTH0gtujifYgA0YNfg6hACIqluajjjqYIYQmLhZjQ04yCYGCUITv0RRn/j0w2aUl37nRWoyAojmfCCBrZ4uSWL3lyinovPCEIkYY8IGYhOXKp5poabpeKDT4AQMIMMb6j4RQN7lKdafGx6acmDMo5g49T+jYIlr4p8QSe6cDjSFx/RtrSnqAMyBcAJg7SXX4m0FmhpKB+eBuKtXwChAgRICnImYOwKgiUDTHQJ0vDhXpgYLOc4MCpeWrowHo1VDCdORewgGtVgdqqLCSwLuIjgY3E1s2xy1YLk6OiPGBjf0wcWuaUG3Vg7bg5kWqFFfpF8ICGw+p3IkLUGvIWufQ6BGO8jwCxqApVPAgAugAIcQB/mBoFBHWifPDMEYTW6/BDIkIC6SE4KEFI/8UarsoebqcYhkimwMwr78MkK4Slu5wwwel4TAAs552HkKpIO/LgW0h4JecMkAg4G5JhJL4tOqaY6L5waHMbd7WKitdEofPT4TDaiL+aiAmnnD7wY0OrRW+MskJaHhQ21NXKfGQiIENiA55WrH2uxuuiOHCDZCpDM9l44zTejaVKEmarAcdoQZyTiPzKxKvYnPfi8SCggeGCkBgJE1svklvWlG2rieKMdy7V3oVYxlgiBy9CIaa0cJ7zrJ4LdXIilF89iOrJfpLjC1QjLIsHP7soc+tVNQDA2rYJH62Vi+yQ8deNiCw58NAnZajPXrv6CBNpO9IDtKX/WqQmGKwX/f/4Sq2riBTvTNGhIydkkJsjJJBghLusA6A0e2PHczb5/FODvpuQY4THKhGoZjUvFaoriCRg1L8GDkRckXjeAr91twMS430OzKA0CPaJ7PECCA/I3yo0p8ESUkR461tECTz2ukjYpHSaAl0+KhFAQdSKUjZU4MhMyEN/FJB5AqRGAqO1Q6R9wgEi7KESfbGkW/hAfBWJnOXIVMNQ8Gd6N1PE6PDxuyVCyIOlgOGXwCVFLRKgVqqJUQtN0S5CDEAf9fOiHFuhq+EJKhXb4gC2YFGde/WtVzrERa3mSEhXOMiKdiyE06woHa/pbnZ/tCD4EjG6PSJiiIXMpCRQZCNLZuL/dKAoQPygGKe6feJ+97vUKfZXCShq8pWbYGCPBuEmSXBmOrdDnSHCFwmcIY4QbQQPCIwYSIrRUhcQhCX/epYJk/zNEF2Jo20odzFVSvJiwZTlmAqCwycB0Y1ZpNLMJKPMckriYEYThRJ2wMxLACkF48naDrB4hAq8pxLyGxwj0AKCBDSREvdJlSQEiklM/NKc/DMMFggnim4pYl0HZQSvvgmPdWEQEjQhkD7tF8lN9EUypEriIe7TzVvIMIIIjdQLWHkJQ23tTEqT1qfyYTxdckIHgjgCDk5gMUl46maujFZQDbpBEzhqTwNMhCdT+hz0EQdPhNupFKyXSom2p0H3/5xSmgoHTCnlhxDPMyV+ikQVcn6sdwVBaziuqqGfMq+KHqplD2VKCAv0QAjBtAS0jrZXC0jNb4RKFkMzxEFvdoahjcBpjD6mgpoWkxE8kKAKeRFRW8lVjtNbaCmYidhWUu+ajqhcVy9RgBV00QWeXCERvQODS/ZCmkx9kSHGsx21rsaOok1kg9qJia/u83o9HURxFokIuhYiBZucBG+L9KCCWoJzyfzLRfHGA8eSz6locqUIuogJMRFpu0Faml4d8RdjWKaqm8AMfySgICEcR1wlLeNDOVqICsZ2cTgwk8oyhoMWliYDFhMoJoBQsXTqpwrW6+V707gugFHNY4qrLP/+XEBNcI6UtH3754WXwLFJYEt8tvVwJtPosK48gCojeI9vU9xTA2eCAZnClg18C4m9GPh3FfYOIpaKiH69y6AkIlEHVMSDiOn4m488RKpg2wjlQZOleZNs3hqgPAsAWGOa0o8JGIDgDKTwEkpgaAPOJkb35GgKsvtWkfNUg6wGkX0FEeWPtbhDHbB1prN1K+miAFdX1IDDF74vm2jgGYf+DYtK3oS6iksxEfUgAlsF5f0mSkZIXtMwIHOBwCwNWcu5dhL2/WCgBa2mCvjGM/NjFQiFO08AE65hBHxAnIqTp1TNs13o4nB4thZmNf/1Y0iOBD/Mp8hBFADWMwP1DEn/jVAedKrF//KMi/GTtdFmom2KcvIMkNsZLx/CaEbrgZUEemcSG7tBTlOduX2m4d8aYosIWzenUeoKmwl4l507FpMjFdPwrIsEe+viEdCcW91CgmcgcAKDHDqorVLpQYbqTvwc+gSX5ukFWEIAkOZcAD5PNrkfT8TGHxWL+E4wEvceX6gltZcUD88HaQZmbtHVrekGmjVoBmTGEo5npDiIH07u1gq2NrC9BjuHl5T3kUFhASvD2RAfyJ0v+qwIqncOypEKlLSxCuszBXdVRstAiBWhPOLRCebzgyYwtcBJgAu9QcMS03aMDlpbhs7CHS6Q1ENe41xUYI0Dgbc2tMls/2DQQAjqQgCeliAk9+D2XzbYwdcn8czl4dtBFuX6menm8+FtjxLJrIjNvYX3Ocv3VQ/QAnlPIeHSVzrJTJNLYwuvDCI9YaNaFcTaeD08Rk0ByvFsW9sINOsXVDkRDoABgRvkUGCKSaOrsmvAginlo9RIrmAUR3yde/RRGLclWJeI1T8ErfygWawNcEDZXQVzO+rZXc1vFczXSfcx8ZRKCtc9tGfwAkUB08BZ1W5ElWj4tjnDkFQdFU48ZEAP4wMzoD6T9zUU5nXChWWLcCbTZkdi8m+qVljdMn+9knO+4htqJVmD9G4IRAmCFzOu8H3MQGOfwH3B4YI7wjOBc3E3qP8pX5VjBudklNAyZzcjCOBtRIIlUqM+D8guxNN7ItBZz+VueCYxp3cJBtB6fGR4n+YIy0V7XqEer4IpXXQClUcIVnM9usc18XcxDYMDBdATT5BO8XNHL3eGN5iBHYQIMBhFJBdenzB2UjiFJwd6t5ByXBgWVSB582WBwdV83FYIafhtuAVVbVNXWtYyFnNPMLcoQjNjY+JmlNCIUHd3DAJoWohs5/RY4oWKs3BZWpEL+1aILnECDhWBcFIBzIQFLmOBlIiEnXcmHNA+jiSH/Sdc4hNmThiMQfSKJ2Mkd+d6xGZ3rgeL0qgI8JBjRlM5ueUEU9Uy8zV0WDN9OWIEiPj/dZpIf8TYKyaQJj74hwdHbn64dCIHVrKgLdOYCOvoOetUhnQ4iXr2hv5ncIAjjvroMktofEzQf1B1hjO2UUrgV+uUg4oQe0egWLvkWEF2gtrgGyLFVd5QfbEkG6EHKniSc3/1ROj4eJFIhvJ3CEvIfKyWSO33TEd4fN5GP4p0RlKCMiczcvHgkVAhgHJxUn+yjQGTAjgDeC+zj5XzBDQXc+73LwBJh/FXcLATMJ5CTtPVAl9mU98jJWr1jvVAeAgxdgrTW8R1F2eZdfnyjQCDLmGmbVaTY8TWa4WALklYld+CjDoAJI3nLnZFQsXEXuKEZNxlCtmXC4fJP2WmC4V1/yC102TQklthB5XTUZJYVXb/Mj+lwSqKAifIRk0F14RpN1RKhlo8FiR7JzHhVw7OxjgIqIBauAqL2SLtJjS6Z5dCQCgANzxIQZWt4inwVIHy9Day9oauwn5GkHa5c4I1JXaAyILx0Ji04h8OByKgtFizFjiAqTFW8F/AhGj+Qpca+IaqUm09oAUPIH1cKVGEWAJq4ZPjdw8++Q8ruBQHk5r1Ri78RyAV5oMmqXNSkyhSqVtQ5XuFEHTfCEhpF2x0RZpykpZJFBfopYr1WAx0hlmJkp2PmIPt54gd2kZak0ip9nI8eHauBngEEgQsJVYs6XpW+CdAWaEEIZ2HGAEjcP9/ZbJGD+g2KylQm/hE+mAxrPJ8nDiM4Tk/zKQPSBk6R+Kej2AUGRIAUUQCa2RyMopH7NgMsQcce9M27wcCxhM7kKeOWXWNMCmHPmeHBzqihfB5hAAOPlIAGWJWeWc/8IABYxNCO/QIpHilu7M31Vl1rniKk7CljtGQSCEFvKc8dBon3YIU1dlTkjoDZ2dtNDeeH9hWukQCOJpIAWAjttggjtIzTpOHhBgBB6A0NHOLFzoKMtgWhhOoKMEZDlABt6cKr9mVknIbAeVWM4InxLcDYsoxmOmAdLhVvGabnemETlYFlxg7b8l/tWNqWEIB8CZlx5aWjlCYfopMWzlvJjD/m+SDgYJiZQkJdpf5cCp5Pqpiefrnf5K6NeCWnP5yN6UxeqiDQR5AAshlAHDEh4RAp1DYrbNgXXPEKPcId8mmkMMjNMb3PlbgKT5gm4ADOHIZlVx5jAXSlbZ4lvq2TStHsIIElUS3pwerKbklVvVXscJ1kF+HjWNKPISThlBlinlJodQIbEbhXvN5GuswFiJIK0oXPFOgj3RYAFJwfF9IPEUbO5OogYhIehZbl995ktvkW6eWZaNGX4yARdwqsgVLCIa6CJ8qlgaoCPXRWn5xMCELC0JJFt1hPSIgGf2CXTDpKR8oWkpLJ8CogS+FNTzIUBaTmxwlHYA2twmXQqyh/wIBIqhRqKrp8LMwwZOZkJgPQUxJ+S2vuAp3Ey/4qYeicJpiYTz3yHj2Y7OKypSZ623ylCcP2az6Z4nrWiCl0yEVIFd7l3DIpqcAIKVkVKvh0bN/MqEOwRpBgANh2KqMxrmD6ap7OLBlAQJluD4Dow/tYiVxOazLM4aue42SagRikiaVw7eIkAGhCqYxQiBq9WVLup7yApQegLmNga9PoXyVGwyrebY95omeBRW+OQMc8CBpOIzNF2ZQFSfG54jU9KOaqoTVlpcCBaUC+z1fi5+xgQD+hB1WyhT8Cw0yFaNHhAhPOxjOyjdZtomQh65nCoDdMpUVK3kyK1oJAAIV5P8bI/Ag4rM3Mda8lbAB3gMQbasQNAgVrKK2rWgKBfSMgUgJy4exSRYWqXIfW+NYvPcyIzyLmXgn5BmXnZGsUGmVxtZufaLEIMdc+jHBzxkLxCsLIQkQdxYVivV+hPDGHAmNBzcLorWZD5kXQjM/Rhcsy2PABzmH1haVlumowumAqfKYdfU+B2A06LuwhaAwmkOPZAUAIze0YPsQTbhD22GwAFsJS9CnulpfctF82XSGXjeMAGmmaEKuhTyOUwAllpFfRxOV27ljh4DDiFIwhYwO0gk9nVQNK0CB6MbDXGHKsQm6efUVzcJTc0J2mXumYdZ8hNKaOqeA/scElgRj4en/lJdgvXKKWr6cAIC8yc0QxJpABJtQdgn7w/2BJqCADMzRTJ8jec/HlVhCp7dqR+G2aF/MzTcjruwxjsZ0ML94rpBgtt/DTFGclmj8HPEpE81MCkPcW1eSCFOFfO8oRsv1PO1UAjTwtmLhAsR1JojmBNMbjA5Jog37rUyAxnSMV5qyVyJQc6jSfZHAMH+GuQwdEHRsD5iEkfN2LTnZqjIoK6ajaK/nkp+lvJVG0vIlvxubFd4pqobQzwU9x+23oSpJ0O4BadL8MhjxrQTEtdo5bPYSlj3xqj/xjBupta7VvgmYzJjATmUCll84PKDcqocoF3S3m1VQAy00iVLzRPp6/4YA2HfNV5O4gcH5B5t3rQgj0KeYFNTkUNHkoKKJxIbPq8z0lhEgvFjApq3eh0+71aaI0p01wIpfvHpg0S7SQgNLYmpb+zLLGs+PZ1vRTIfZPHByqINAVEFUSkbqw3QJi4zH5AsR3WloHREbMAJxvbyXILlp0Q1yJQJZu6DLxzOO4oRG1h82AjpkLM9WYUqynScOe5tck5QLimWkjCaXeIaAF6g9kQIEkgAzBoeL4JtfsgJDtcawgACbW58RGBH0i3w4+xvxQrwWs7Ls13tyja4E19noKDyM+x6E6Bamd9WHQJ4MqNxI0iH+LbUafdSZO9qTFDNQokdOode+cNGe9v8RuXrHbZyCkUExv7YqBZepuKE0CB3MYIfBKxkViBYJFBmFi3BFECexvbfh7jvHUDJVsjoRgrfGHODaKOEAX+sSWr0MxpO/LeqIS5tgaEOJ+kFcRtATm1kV9FoJmHZYCY58rvzawKbbmnIy97cD0xbfAqECIuCkk0DXEOG7q+QRL9oLQ2AMHlQ7DtrCE+7S1mNjgoC1UD6HZt4UEfu1GlZScjzjZK57n94ZC1Ij1+nbO54K4hKyhv7T+5AS+9OGazHR9ojHWFTeRGMBGBDeEDlama7M/kk5DvYUVZ7a+VDsZz7HL4dYdT7WX3x2AWbiOO6um9G7xoZW2dTXibHBWXr/YbtZTV01ixT7xW9jEawRsdkMOz7+j5Uuuj9xkH2Z7pCIh11+MRP6VxJLa4k4AhVWz4Ug1XkN1VMRysPg1gpx5JlxTxNq8ND0HSXeY2QoWrJje1AJMMcdj7r4MqOuFCTwgbc+zf0NCmHaa3RJ1fyQX8X9jSzSIY4mqpRWyDaXy5Ld1OisC0mexr4g4L5N84AEnhkA6eOu89JDlVEX6Y8V4vfrAsy+NmpK7d/Z24827sDYKVoQBSWoKgRWT7u1as/9ejA+suxR7/JZCEb87w0SKJgdPFKk4sV186kuCk284OZtYgk6fS7DlNxo5+gYoil8qV9Rq/WVfiAPnZLw3oow/76r21XBsgL393aW8jLIlXJ6u3RoFcDKXj/OlsDKrs/CQNXh8BZspQJ0urka1sGySRI4sLnZUgoZMDbsznWOF4f8pYAMwg9vMxaAzufFNrsECFg6rbDh9sA2AHiADvCHoAE60C9XZgvm3GE1denK9eErS1nywOXO7QxiDxGeT3kLbbUby/AhGIcoqovf/KhSAuk8OudNwR9D6EgN8B5OVlWMfMfMYqz2N/gagDNbZUmlDghAACcuUwAADYeHFYcgQYqQkZKThyKKjJSZmpucmhqdoKGio6SlkBSKBplVpq2uja+xsrO0tbaHUk+3ko4ALIczkj5MioYALsUvAD4ARv+GlomTVrvU1dbXoaywiJBOzZRH4JWdGScFnQ0ZJMyRKZMOWCeHOIooPMeiJo0SlBudLZSQZcKA7d+pggitAYx0gZKUZdPwgbqXsKLFi63kXTQmy4OKT5t0SbPxwhmTiA4VeThkhZiNZSwxypw50xuTHhxAlVCExeEUYpwYMfMHap1EbkhzanKwCJKKUDEO1YDkYSVVmq0aMMAqk54tHlFEAR2kDBPXfl7PqkU4AlcnorwWhtI4C4Eob8ViLkO2Y8WlQxF4AnBpI9hgAIHXKl7sakdQEX4PHcikLzIouuRgCowEGRErI0cjZZjU4gFUxqhTY90JacULdi4sAKCourb/7VdTAj9RZmqqJEGUgIvSEfSoCgRMgbir9UQJpCWK7N6ejprE6FDurp+YIkSR8GwwR1VRokS2Jg4iQ7eTRCDTkNnU4zN+KEouJdaHFgCIusl8JPryBXgbRxUksJ8rqnQyHnScXJAgUjwRI9Jyk+nllGeApaCNNqCgJOCHNGBliSRPuXehFW1lRQo9Ly3VlmlWcPiOZYfwt8JWqZBYnyf9fOgjNY8wJMwLwRhjYCQ8pEVTipL9GB8OmB1YUQZMkkIAcXk1KckTLjhxHQ9SPLDEA86N09R9+gAwDTHXqefkm9jQwFQ+jslU5ibWkTCYjMIgBcImWCoSVo0QaqLkJhXC/6moLe+xNFZ8IES5aGqsvMZMNKRYlWksifA3CFmQ+HBnNwCM+ROSjVQgkKdA6DmJpJPGatFOftnQwzUqnIDpVaskAMQ0JR3GmauvLceJppwd9NaFfzE2gKyg7EpLTwX9eYtGxkK7mDy6vMCgltgMyiOqJoq2mZZK4KTIMK52wtsOoIWn7bym0BZQu8kWBNsho67SFH0ekvrOKDUw0JArbSFLb3wDhHPtYQxI62YoDodYy6ELM4axskHZh44rDmdicZWN6OkAjpB0Zxdvk6wkAySGnJvxYhIn5FuydSJpiBGJ7uIaTGwmllmX4213ZiRCLMEAXseIG9rNiyhM6LHUNP86c234hXeOYErJ8iubhcZy5NWM6TkmUh4b6k57PVYEoILjKhIxZJa5yifZeL9a8qfwqtUcv11vauZ9U2/ybDMnjEhJoKbcTQnUeafGtosRkODfKjPI/JuagNGSZuSK2Ss43KMQVDjpk+BLV5siRGCWSmk+kMHYfxkGOugrOPcCB3M6UKLeFrHcXSlbH43LS1WQTBosGj16zOvglsorp07fvhYBDxq/iUa3ShI41bO0Kb31H9JeXCTPTh59ZsY/IrXcwossCGgmeHqUUv2Sj/eRYFZRgQhTQIkU8jcw6YwCGT37C8uuMSh5tMtqySLKdwBwMEmk7Xs5Yh589EEtKen/7xZv844sOgiz8fBLCdkRDwFJYZ0azEkin/tg8PK1uNPN5HcjulwmskUjZiGth8mQIfnCNAgukcI0GfxY1WKBhZp5J1IFSZR1NgGSecAqb9YSRc4+lQl+aOIRqCDRNEYjO/o9zxTDWx8ogrErPXVGiBcBQlS0E720VM8iyXuOENKjvJSkjBuw2SJH4EjID5oGgqGwgF/stywlJgJy/enc7Ar5iiraUDT4sd+guuc9NYoMRUjkYj4A4I90ZAmDlFTU5MLIwhM2g3e0Q9nbFCeUFlnAKKnzAUrGIrRURg4I5pAFK4+lHD8KUTYbo8kwZza27C1FR8xCplNaFIqWJENx/6X4HStalEBfUsNxXUQYorJFKlt9CxFPySJVUmC+wWFoBqBxQHNc8JplwMtozfIm2Sx2kT2Sr0BiWYwXDdkPgWiucyOy2ARL58lRVsIHC4SLPgsyja0EACndVAQMaJC1gQGKn5HowBEeAk+nRIQQR/hfuaD3yufZDnC8YNpEyYaBgcKnE+pbUTUwUc8rbkJ0tjAdJ1aQxgbdVG63sCm0NGDJF4JrKpZE2myeYIRzhEOoZorhXCJhhQVeZjDSGREz4jVTayiOpMlBzE8XqqOkWXAeHixF2oSls3MGxi4cGI9zHqUndbilrDNzatisUbxq0IOTByQBEatFuMUANbCXWf+OyrJKrokNTU+DtKBQHSAIbAK2K5NpS1/3c465upMyrnBqCoIU2a0lALPuZIYJLMGOCD4UX5+92uGSKrDUsBQbEt0GV3LatF++tJo7MwxZC3XcfDgAlX8UDRPqJAQH5haPdoPJAVDWsqNaA6B4itt/qkCMFwBli89bDhCge104XbW9t1BnQ2dCXOlpFVq/I5EK/vcScn5VEQG7ljII5FP4FkQF5KUmeSYxOQPu4mWlIG7d+LU7R3k1WUzjroEnpS5EMACS1HAi6GrAyMqqhQhVKAskNjozZ8pLSIrYYmIEK75aWE4eMzAiPhxQ4g27jcK22p5OljfYuMrrsdHK0hP/0nPORuD1xT5+EwZwubIKL/Ev8p2OEyoqQ1PNIDANyeiH6tuKdexAVdI5Wze8ZIstOyYw6/VPYaOMkdx9wzR3pE9mk9zbScBlupuAM1KPeioAM4EZG1Kroi1LZwEpAb25XeGI8cFJMi+so0MlZVWEgcsRfuNGl2z0RSA8WuEKo5cPZkW3eiCCEiE2AQXYSnDz6b37DiKZovYRpHOLafJ5VlYuFuF5ztQCxyiSM/EqcKDPl2vF6OIBlWuGg2PMHmFewhBA2bNKGtnd5zR7LSfTFg1CuK2uYHUtHWSjka9mr9JC056mjrenTfttmoTS2K8SDqbDkbXf/mLbcEU00LrF/518/jYZ9EwZW+uNFfBqayFJGoWlwwcM/8ZCFe+bQo3BvQKDinhRIAhLr2Ew6EUbL1iKtgE1Y7GChTN8SeEUNow3QELg4To6f30Hjkw41zyu5+VAR5+JKQECkFojyz7Dmg9TcGy6jEDDZJtMVN3FDGCpPMhZQeL7gn6RdqJ22Mbc4fQ40WRva+IAfkEs18csZYwwweJHlwQWWCsTRmSur2RFuax+EUpN4OvgbDJBt1rChPLK4sJrvwjUDfXvdw+ZFtaas3B/nfgAnQOIRU4l7zaOkb7PYvEM0VQJ4LGuc/lgCb2eTrBvseTjfarQjK68rHTQ+G/WC7dZGp/s33RQQ//e/DBv9C7eOvV6vTkmRLsVUDovN3VQdLN1nKwuEp23+0XNujfV3MRDlA28Yti6+qqZ9cTZPRvEo4a9FYHaDpjhmNEUZi9ipg6C95xfuI6dnnQ5AD+RgYzAuN85AQZ+uTUy4xAPnZRISjFbpHQUuCeADtgKGsAUSnNuBYEl8qUfFcRAhpIeMwBRy8BqXvVlGLB11HFh0cB0IIY0w6BjgwBO4VFUD9hloEAffAETSuFgCRgellAky6By7EAX0NB6MbgtMOhLFDglr2AC8VcNRCI7BqQMiEd30/ESn6M4cNd9JHIAgeEbsDWEk6IfCoEPf2MCbXFez3F5DyU9DLCEybL/M174hqNAEXd0PfYGKt9QIe1SDi/IeahRITggO2REC55FTizyfnBYViMAe4PTXEjxbKUQgIcYiV9ncgCAAtwGeTmHFdCBAByQMC5QhTnDDloQBCXgD4hUG0lTXX+ichYwbaMwIlKYQ0Ekib70GYlSARzBXui3FCrHL7T4i28VNhTAOF+hccumIheHGExjOusHDLZDXZ8IerYhPjZQAJInC67YacAoH9Z4ETuwi7ixZMu1jZEoWF1XF9RABL02NkbwUscVARkYH5BRXT51bvT2c5PQYeRoPS6XEBxCffv4CtcIXz0WLvfAeWDIFS+TABdFCZunGTGmh8pnEJ10hFql/yQNGJCKwgFziFODNpDfpZF3sViJl3q7cHCrMVAwWHsIUCl9chg6xBgkh48UdECQ4A+zhSM0oA/iIiakJ5LycY/YqHvYQBhECZT+clpAdyUKc32iQATa8miHMI6wMAL8xA+rtxohdURk4Q6uGBAAiZSqcYRJ2A0k+V0tEnhiGYPLdA3B9QnN120VQWbRwFmy8Ylp2Cb0hGa+oHRYGIwyUBmmEYiRJG9r6VskKCCGUQjgeJi7FzJxuG6UcDhM0ZiM1VhyYZWEoDKuEk+vRkpsmISeNxyS+Zc06Zh7R4zB2FhSaBE4YIy+iJoO2Jqm8CwypUSviBCniDT+URi38makBP9tabIEBtIDockJLtZHVhKHMYmcFwCSsrl27LCK0bmPZDloM7lViKIYyGFAGfAAnGga7SgEOiQ7HJAAI4BVW1d/5GKVV1gu7ON3fJZ51Qktu0UA/TglLlifDOeUbeOQVVRzeGIBA/leWukd5qEMPZOeKzANKUBUwJAqUAIM38dPSaIqT5NNnEBECJREApkR/Klr5MGHTNhnIRqQqOA7JdM3ZXcKJcKIrtAB1ZBGZHgrVmEOO+gU5+I6JfQNHlWVpclQoRYJ0hgyd4Uj3URuotCcJ2pv9iEBKNmkUuqQtOlcMDR2ZZkQFDgC3xhdAIccOJcUsXGXlCYEiZF8RJmY2ED/XOGgk8EpYso5pZCCaspomVoqpyJpP0HCnpiklCv2EOlhEe84CNmSCLLhDl7pFGbKN6Z5YLTAD3RKQ3gqgL83qd/GXQ25mhtkWR83XoZJccBDngbEiUeyE93hG5AUAT2gBXaxXO8ZC3xKMIYzCq9qqTDXWLdBhj9qq4/JQiwoDpNwAwgKebIhOgnSeKmIGNBJI8RlH31ho9yAdMj4TDE3dJeQmLiYLgJjfrx6EeOXGjN5nN0KdLVHecGoDUzKCVYQSlIAnT5Tj/PJm8aphdEqGVBXhMipNykYHPMQBV3jlG0kDXQ1roqhpgR7sJThKiBgmQThG1EqVS+ppNa2Q6+j/6BaMQpDgKGzERixlnIHwpFYahH+Jjdbk0ZWMQLtZE1eh7AIwUqs5J9hyrIye5Rnl2opFqsU5xi1hQMAoSfd6EPVihicpKoKmAAt4Bu8MxMJKSVbgR+f0xYRMxvJRC3mNbMaaLVYi46ROQv+wK2p1YlAGEgk4CudUyhGy1ACsUAFIxnF05YgWklMIRLfo20V0BM5lpFZa1h5u7fTYRcdWQuyAxPxkkKTFLLVZn9ndCdnmyACqqmg4K6c4QK9BAMCQR4k4Sm75hY9gCJ8+xVH9JWdG7oe+hUrizARUADWkRg5U1WNEIgtsAH0ULpBCh8e+A0awDZ46bjMFl0iQFZKYf+3lYFbCLBA2toJhSdponsLBhtXV5K8zvt5IWYCMpKgMzAo5yAdlUpFkmAEt4I9n2AgLrCvQ4oWfEOgE5Mm+MIBXsF+AfW8M0F8wWiO7hudWhBhtsEDDrCwohQFZFJSjPazM4KvZdsMIAa6Rje+EEttYRkdpZG0XCSu2jW/1pAEyRQktVdyElydXvsjCoNyg1m/WnIu4RacKnG9JPAi21kKzEcK5eWBCzFLnyIIdprBjBGPLepQNDyEtHU1O2AIrxUMYiK7Z6Row6lpeoMBoRmPpPk4PQhXYDLAeJvDteEw/beAjicetCMnUix7IOBz9EKeUmkgQHG6LtWJvZRiyRL/BZb0CRwVcVmRQv8ZEM3ggZZLiVs8kVQBoZujwlQZqXf8x/TJRf7xGjM2NYnAXmmGjHZhAul6mmJodoAsIIdmjHg5AzugTt8HKAM8G70Xyd8mo34qc7ynbirRALtyJOL7G5dSDe3BfYDkyXCSOQ/FTiMwW2f2hbAMOgvMW3VGnIqQHZPVJPLLYOPQycvJC4TKI/pQW6kTp7k8E/qnXgq3xxRzFl40P8+MNzm6MIwcG0RXMEKwn3Esq0D7o0uDwQpSq9nsraIsCd9YDqAmIK68zoqCLaO7KMpQXXthNETCMYZ7YFjAvxBycEhGzfR8G30BbxTEyD9ClQcdKzjgx7FS/7HXak06iBEmSUYFwJ67UhnxRwAQ/NBcIZHoHAqqWYF7zNDoFMgiXYILA1KXI73acB3MvB/1BbNZQXdQqD0cU7gtHSBsxQA9dJexxjQxEAOpnH7NQgj58gL0EDLZ+dOqoaszExmZs6hnwgyG5xMn2X2NfCGYd2u10KlSrQkQ1hg0W84W0QH+sLIsA2teWtbhZ5X0gr8wMSpIRNJ+58zUgGoYqnIpkF8KmI9CLKRyTTz2mK9qeI5ceyRnfdi3gSzBx2FQNlr9rBn+Faht1pePtwIGggOYMpoh9qmQrclt6baCws2ljRovQ6IbyaU+UFWG8S7UVLWt6z8SXRcF0JxVMP+OfpGuYf1gq10K3wESSRCkV2KSZH2/w60WGKDZ85JGwYLCloJeO21YKwMdTL1ofoFvzpAh7mzMzX2rxyi1ad0I1zne1wUZVQrROAbXZwScd+IcamcLbbIc4Vt6v1wke9U3zBXcnCLa6v2UB1NFD5tBuzngyduqpLoIPu1OArymohGRwLcU4l0vw6zgGvqhGi6697AE1MWx1BYOCffgbhlo5VADTNN64hzS0XLfHX4LF7yrMT6/TZRXD9BqYsK2iyHbaajQInveNV4QaDrkWHscympFOGYdQuHaF8EIYMM3er3BQSXk4FrQoWvXVpzeH2KugHXARn4JKUJbPuC/LL3/EQ8lEs8wDhGwA9ABNQIuTmce5qTwm/NF53lrqAg1ld6sGN183cmQoGIHXHg+C1VRv3BBHPpb6Hme47eCr1HsjS/m5OZy2RfD6AWhVJg+s6JjGu+SiVyxUNpW3rugjybJFWAOyGzjBMu96ZOKxn8yJ9P1RpReEQAkCcZCQkqlgH3uazOcwTjN3JDs6l9+Aj3wib2bc/lc2Amxk7PhhlZObUx34bKA5cQuH8d97Q/oKhMqlRFpvtbsMASBPDA2CTsT6dpeSEgOmXyblQhbGd7Rz/TNGDC7aTtOFD585+mOGqB7tQC371wHF6wKV+0YezIxbe2UFt3tFnpS37UAuQAf//EL/p2lwsjW9dWh0w2igmiWHOQSrxrWPqWansu5okghGJT21/FxHYaRIAPB/vHYwOUwD34SAxrsC27idQiAtid6dw2Wkckzn2miVArqNACgLArf2sUYH/RCpA84AU9tbunyxwNOAKgrB6OucLtHL8dMn5sxmxBL2/XfxiTmwexTAsBEBzPc1E8+KvbgQVXSKHFu/4CmFCrtfEMO70eF5+KCOPeZogL06vey6VV/qNazsi67yO5YIVRxL/hf7z0yf8+OTwsvb1zpxfdxwopDtTOYP/lYcXOVf9BCiacekM/mJ60IceA6ehb5O+een/bJ+Pov9yKSi8yhfy2y4Yjy0f/vsl8NEN/7UZYIEkUf8nD7kNfbMAn8yj/kt87Td1rrGb/8bGG1M07PRrPLFaGiH6L40j+Uqo+J26jEcbHFxJDb+unfSLi7Cdz9WXfQ38rpn8L7eNSKF1HThs3+tWnH7ntfnQ8IAIKDhIWGh4iJiouMjY6PkJGSkzuTlosIAEoFAEcnHAeXjiaipaanqKmqq6ytrq+wsbKztKYGgyWQBLW8vb60maG/h5mCR7VCxsPLzM3Oz9DR0tOzQNTX2NnahUqCJBEAD7A7Ndvm5+jpp5+CIO3q8PHy8/Ij9IdBnfoJrST3/wADOusBjkQ5gQjvCUvIsKEhHoxYnDDkj5UFhxj/M2psJMRBgxQNNoocSbLkLBmEgCwc1K3YO2AmY8rEVoEBLkEc8s3cybNnKgcrsYUsxGlQBpw+lKhg57OpU4HinkqdSvWQh3sOBnmY+MKbjYtVw4qVRkOIzrFobaVdK2rEiq44C1U6hYWt3buHNOCMgbev37/rduzwcQoi4MNoNyBezHjxiAKcFAMIaYOQPUtFG2vueSDX5s+gq14Y5I6QOMIISEk6Bja0a40SCEl+Tbu2yAVaRyQzTXjyqBOlAUSxTRwj3+LIk/+jIajFcd/hnjBpZNiypCHKsy/D7lm79+/nPGotZOGty0RBBoBfz769oqDupYp4EPR8IwLqAdyK/8+fl5P+M52VDUp2YSAQZAb2wkEjswHooFETBdTdgwA1KEh+FJaSky+7ZOghdYQM9+GIJDKCwYJGhVMKBSCW+CERhHSYkU0u1ijSZRgFZ+OOPJY0miR19UiMfhvtJ+RdG6igY0IyDHVkOib08GQi8Mk25ZWKqGCSjFh2uU2CiQBx1CkhWejld0ueqaaDXJpS5ZremSmTlvnEBieHd4pi5yJy5qkcP88s0OcvHLQgyKB+JhoJlwdEaJUriCrCoqKUxhJppZNcdWUFz/0CA6agpjJpW6GWiog7nf5k5UMxmuqqL+Cwd+mrvdTAgWqE0qqrnrv2ykgUCEg5SwtysuCraP+HOXlsqeWkBsyEy0Yr7bS/ejOLltT2Vc6oAb2JiJGtZkurboDGAqa4Yk0aq0zgopttBSi6K+80NM4LZzfQGaKsvY3xYE2RF+q5ZyEiHmvoZAh46yVcRmXVsEea8ouYDiRlhplwJYB7lcW9QpsoCM4O0tXIFQHwQgblqSjxZh34lOq3GwNQ7spXguwwvpXMpbIRHdnTMs14/ZvvXRd4YB/QU1qI4wy9CeIC0oDFe5exPDxtBNRrYidzAU+bPIMgV5ucSUgexKs11nfh+FQS44GC9sfQnXb1V+O9DR5zTNpdqmJZLWjEEvXq7dSnhrzcVJt4C/6qwjLPqvhhbT4u+TD/kU9uUsSXcKtO5Za7y13nSYMueiI0nMD46OgkLhWBqK98euvxpBkTtyzqBfvtuH/Hee68934StjT5LvzweUoRFfHIJx9JA46K1C4iWykv/fSMqJ7QwJAM1TT13HNfAUC7o9f9+OSfKtXr5acvvQkHOxS++vDHbw728tcP//vaGGv//vxP8uOKvOqfAAeojGtgwGOFsJ34CMhA3jHnf69QWySaJy7DfauBGLSF5vCkCAV+JIMgHF/krNcKzBliCKqLAfpCyMJtAG90KTiF41oINCAcg38/kwTHWkGsOtGwe6OhYAN18kJe4OaHSIRStI6XCk40gIkIsMASHKHAQ+lq/wHfS+JiingmE8wsN8sQ0G60SEayvAR0ZxuETQ5SxjbeDoG1qOIC43ZCN9oRafjzhf7uiLsgsTCNsXjeIqTAx0KSLwCKKNsjKqMyQzoSeecij8keskNNbE9fAsQBIZUHAi6Oj3UdtBQhTtYJj5zgaRjom9QkOJmuPfKVvuPYE7zhjy9iCwemGeB/hBS4bPTSEtUB4R5dgQVcweUxCBsaLFvnxwb+8hIKe0sM7fG1BzgAZa0RGR1nKD0TLjN97SvELslDion0wAWXyQwDSFEanX3TbtwkHiBlkcVTIUAE4cCnNwZzxgo4TBBCe6dA30gKsOyAICbwwXRUJIQIfM+VF/9ZoXLkqMUcDpQWcOQFl6KyAm5MEgDC6qjXvrYsAV0UmurxpvQESYtQnAiXMfRGVPClCeEUYwmAkqh7KCqqk7bxCDpVBUQYwEqPyrSRvQKlT5dqCSPJsagJtJawpsUiXDJVFQGt375QEYPurEuNhphqBa8KSwQUTBVXwVAiGiqtJQVTZmQ15AhMGsCsoo2EzYlr5kBQMvvlMZeDyKFdUWiaTc7rhnDVK1ftaKxyebJumnDltKrIBBuAgzmKwZViy0g/c8UlqKUSYquatNlIVFKLu1DrIaIQCheI42/UQpUO/LFQs+ZlsxZ1xBeF91dXHMeC8rqmiuCVAtCWtoAffaT/wwwVHKsmdlp4feZxF1GCYSYxK85lRAL4ASarSsGdBpvuRWd1NEMYj4kS26B4bXEEKVQEveo7bVSplD139TWw681UTeW5DL6O7bFRlBYiGaETlub3EDcU6fCUCj0yIcKTAcjKC4y7psgFYHfgwuuBr/rQg5luWn064k3akV0axpOYouVvXCKB2PuQRp8oGpO4aLChDZdRvqZoQcgeIALp4AQLu32VepuzxkLcYgURtXGLKvqod4iAkXrzm5KXSiyCIdVu/5wyAKRrP56SL8ta/jKLTcEx4KItkmHGIAiEuNVQXlBxQX4cmtMsCTMf4pRbBiyd49fM6cV5uIXT554H/60mCC5CpdYRhV0J/Zkn0JQzfbbfYwvxAQ2Hi9GjY5jwSjyIAZ/wOQfQ0RhXZmlM02V9kdXvO3B1RIrNd4l0Ae/tuMyQeQqnCguV53xMsIJwEuU95LFzXqWVUTGDWSSaBVvy5pzI6xg5W1aVHfkiPZIWrFMQhlXehzVEJOFALWxW4QEoJ0JhwflaJtlW3q16aozyvusdz/HADeG73lLrsJsv6AFdS2EsKBcCqr2q54pNPYlJC28Jms7xeKbwXLEBR1yIJvirDTFF7wUQrAwwlK3+LfE4IZca94XEOAEghYo3HHlAkUWxO64rC5wVmgwnX0xhIWyWu6oANX+Eva9hcP8vCdzm6jsC2+LHAzYCfXyqafHJ5WFrLOHSn8C0RMKOjrV6Whce1F6YW2YOE6pL688ZeTqcjrCbr3p9eslOiIzVpD1VhE+1Z0cXw63waPiFLHM6j7u0FnDuSc7SBp3iNFbQhgMc6/1Y/1GoD2ag4KXH4wAPPbzkGfLP7GZg7eUbNbdPBfbJHyuYAJdQqZjt+fwauEeLLj2jmy6knqtey653kdJfT/va2/41NOr77XfvnZzz/vfTpTXwr5p6p+dm38O3nKAHryh6J/92eHtrOhrQ5jMZ/vmo8/I5Oov97nv/++APv/iTeunxm98uIg7Y+WG58vW7vyqCf7/850//+tv///74z7/Ur6///vv//wAYgAI4gARIG6RXgPYjbaAyZAiYgA34gCYGgRI4gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4giiYgiq4gizYgi74gjAYgzI4gzRYgzZ4gziYgzq4gzzYgz74g0AYhEI4hERYhEZ4hEiYhEq4hEzYhE74hFAYhVI4hVRYhVZ4hViYhVq4hVzYhV74hWAYhmI4hmRYhmZ4hmiYhnajAQQgATKAAjkAAYMwARCQAzcgAxdgAIamhofHIhTwhwGwAEgQAgAgABOQA0ggCEiQAxNQiCGABDpwYXyoeoH4A4X4A0TAUxcGA0ggAAKQA+k3/4l6FwBFAAAhgALcFyMGYABNEAICUIqiGHcBwAIQ8Ip1ZgA3YIi5FYsdF4im6Gq6cCEd4IoMxouYFogCAAGp+AgGUIuEY4ymhoxyyFU5IAChCI17ph4hwICTMAATsI3YSGgB8AMCwHpNpQGfGI7ZCAMC0AStEAAfIAAfoI5phkjT+I45QIj0OGXwKADPyArIOHT7uGEBAAGNeB8XdgEdICjL2GkG2Qt7OJBDNATtSGAJ6QRdAAUa2QVcIHz9eI2wEJESSUABgALlKCkXFmFQAAAKoAAsqQBQoAChJxwCcAOFowGA1IZD0Fu3NZIgFACMuAgpSQMrSQgteZRmZ2QQcP+PF6J9W3Z61OV2akFzPnknA3CVV/mI+ICVVzkEXVAILnmUCtAFuqcfuUg71HV1jzAabKgDloiJF9IEcVgEdoIbdfgpKQUAEPADLQMDOUAIAgkARbCUSSCJLPADd+lpEYEElggASCABAeCXjdkEF9YBP/CYVZkns1iR6HFhTlCUgyCWR8kF+kJ9BZAE1kgaG3B6cBeMADCMN7AARTABO4kCIQADOjABpYgdkIgCE0Axo4EEQ4CYr5kE85gEpzgIs7kAyAkDF5YDOTAEs8kCiplIE2CclfaHN5ADH8A2kagBEwCJTpmZT9IBMiCPXraQC/mVguCS7Sma7jkIV3AFgnD/BVwQAuN0BVSgcm94IdcZAEjANvAohygwjeNoiUkwjaMBI5IoA8o4h0SASIyJSLRpj91WPT8gicpJmbJRBBpKnmpCBCIqAMpEGiJ6BDHpklCwBVSQoqKZCFeQBfhJmgCQBfsZEYtABMDYKnoxixogl2yoHrtQBJaIAvohidOIBCn5A0aKHwMAAUZ6KBU6oFS6C0igpFBpDExqh2zomEXAmIXpaWoJolMiA8zpj4nQJDKAoi0JAFDABYGYoi8Zn4YQo6dIo1lgdN+yi5hkCP9TkhAQAgIqiR8QArixAKfohnQIAD/gofiBBI4KjxPwh+2gjFcJA5N6Axl6C9v5odbl/2kmWQQJmgN/yIgoYJsoIIma2pBkuiO4GY8fUIyTgZtH8JUtuaKn2qJh2aaIYKdOgKc3yic5CpJ/OgQoNAERugs6IKiINKB1WAR/mYhLapNXCaUaqgOWSqVyKYlEqqGDSQg3oKHmmZCNGJlE8gGTOmDm2Ko2cgHuSgELII/t8q70aqswuQUmSQS6epQwygUCAAT0CQD6eQoimVc/A6BYugD/iUh5+JoA0KlwOAgQ8AFXmQTpqq6/iUidSgSWyqjhqka55Wl8N2A5QJmRqB5DQJtDsAAfyq5dIgGc+S0XpgIpiquF+AH7ugWHQAVUoAUikJqDEKyvQABNUKEd8J9HG/+u7vqav+mwhYmoMOKO1NmMlFmxO/mXFJqq4JmqMmCo1ZkIN5CuhcqyEIClSAABiOS14+myJMKV3tiYRua2LWCrNnuzLXoFwEWK+jhiiVCwLqYfs8mIsEiOermUeTibggCLJXmQQ+eOgMgCzLoAS8mo+NEJjTgB4dqaiIAEh7iwkruUENABGnuQbNsl47i3MhuIXXCvUWq3QnshXHmIfmprA6CQvNKjQyADZ8MCxqqegfUB6ReIH7C7QdoclHoBOuqpwNuyDJKJnkYBuEmpzbGjpfskHymUF0YFGYmvhICm6MECMVt+hLC2Ubkl1fuy4Zu6iFQArSsI6RsjJjmm+KD/cOdbP6crlJ1mloOQnO2rlH+pUfVrv/Hav0KZi01Qi9T5lK3Sj7I6tAFsv+TIqp12A+HaBALwmDqgF7FhJAMQAkz5wAO1mYmIkBIgAXznil1aOEUAtCC8TNVZkvI4R07KkCtsk4XDjjbcwj41jizcmVvWlgIAt/uBjP/LQTp8P7UIkhd6pHloAHwHu/pBkZPKDCywAP94xEA0Ad77ZldJZMZ6pDogACFAvkPrt1i8UtWYw/N7pBjTsDD8oGdMVqRoiAzWxWwcI5J7wXGsWIGoxdx5HzJQjU27x5s1ABYrxgH6qSzwAYMoxu5IyNM1ADIwiO47h4MQxDACyaY3AMx5EgMjjAQ3kARKrMmRvIqkPD2BAAAh+QQFBAAAACxrAGcAVQP0AYYAAAD///8AAAH8/Pw6h33+/v5HiH5FkIYzgngzfXM/jII+g3lNl45Ni4ItenBclo5OlIp1q6Mpc2lkoJdgkIn6+vpQj4diqJ4ICAptmpRSnJJwoZpNg3tDfXWGradZoZcrLC2En5t5pJ6JpqG/wL+Nu7Rtpp6ctLGgvLduk46vx8SUlZVDdm/Gy8rQ09Idds6Ns65aiIGrra1fm5J5mZNdgnx8s6vY2to8OzyswLxvsqhESE/h4uGwtbRrioao0swQEBCYrapSfHfq6updXF2ayMJqa2ueo6M5bWa54+1KUVolZlzv8PC50s4cHByIiop7e3tju/p6u7PD4Ny41fHS6fQWasIel/WGsddOjs0ijOHc//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpuMKpyfoKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fKtJPP29/j5+vv8/f7/AAMKJIRioMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKTHWExsiTKFOqlOajxMqXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qVNmJp9KnUp1GIuqWLNqlTRiq9evYMOKHUsWnJCyaNOqXcu2rdu3cP/jyp1Lt67du3jz6t3Lty+ADn4DC84oAVGOwYgTK17MuLHjx5B3cohMubLly5hRPemqkELmz2QPgx5NGmyN0qhTq17NurXr17Bjyy79Y7bt25oWOBgEA7fv35w6WFg0HLjx44488D6EBLnzvKdTqRChqPnz6343rPKxSIIOQ5yxi59dcFCC8eiZhoBWnneG8evTI4+O6Oou5fLzV01hwMYhDwYE45l+BC61xCCe7XbIe4REVeCDjnWwgCT2QWghYw0A1ghg1l3o4WADBviXIAiQCEEhBy734YpZsVDhJwSYR4iCLNY42HkIMHAiABlqYMgJNgZZVIesFGbAAhYoqED/jOcJ6WRRMbi0SG9ncUIdEhoCsESKivh3wZNgGkXkJy9uqECYaAIVA5eyxHAAASWmKadOItKS4DQ3zKknN3WaMmB3ewYakoPVjZhIe4Rk2QiWNBaCn6CQggRkJtRlEkOkmGaq6aa2/LlJCpyGOhR3vYDaZpmipopOeJr4gKqqsDoUnzUtwJIDobHmqsusBhnAgK7AHnNVPapEEOyxE0nJy6TINjuPBUV8wqqz1O70QIMP7Fjttgg1gEpx4pi6yAzclgsJuMkw68uZ5iLbAbmh9AmKJ4b+182XjYgWy6XtvlZDAz6GYkKcsNRmKSQz+EdJD4PoC0AT0dDXL2sWeBtv/5LMxHjAB8oq8sAHiKg78cidnOVtjqoI0WglvIpSaY86WhyJw/7oSDJiEg4SrbibSNCkeT//AuBfF8TMLiYzTGDvzSMTKnGrPh5AiI8E+yIEBW8SwMAHb5aCayhTMC22lmfqFqMmBpMCGJNk9zo2ZU+7ougrDE9SdS8LdKxJpW8bB668hmQIoyCeVsLvITmrLSMpIqtCcyEfI61t35RFi8JkEwaO4OCWHE74IrpF0tskSrPiOeWcBnh2Ir62acvjsJCKeqi/DtjyKCUEWMTogoww7SHDoXsoMdfOTrkJgkhdL9KQC1L6IMgLQm/yS6cMAN+GdYzC9MZPrN3niEDwQf+OcC6PyZEjfrcI9pf0cLpIwtc4t3gcJJ0IAuWXeHQkhSN5SXGFw0attjE5GyEgbdcZztkAF4S/aM185/sfKxBlivgoTBs1QGD3BKOB0mVrBsojRAMcsCSpweluixDCgQpDugIOAn2bo54gvtYpvf3nV9u44AYzc0IHls8RiRNh1yYhs4DRbUq/gN1lfrdDWDiAhHBSwOQmU5/3PBGC10sEvBiBLinwiBYQy2ITx9Yk9v0IaAtcgNkUcQAIlMgGmEtU+H4GAx2ykRbzo0njMhM38biRi/gLpI7wxRyfJcBn4OMR/rQEPDn+ZWUvzBoAiheX540xKN9jhNYU4LMf4rD/EEdwESKlthtBagABJPxOA2wYuE+KqHg//KL07lKBRzzqkh+RWfjMU8JOru4Qp0lA5pYkTPwh8hNbW+RFlDiJJtzyFi2QHS5lskU29rCEPgwhIjSmgPEdsocyNJEjAmgBSrISE8QiRNgMYUdG0DAl3JvmTzKAJDj9KmuxLAQU/ffFXopoAfZbnBgdOckXthKdhuCBy9YpTyeeUz/rWRu7qFY+I5JokWUThASI6UXqee6P9CzEPw0quMD9co+cAFlDhRU9CzFIOBBQX/I2isPoRNGYhhzRKUXKIwp4sF7lTF7FtAkAQtrMee0MiAZXihsJqdQQmYRhIAOp0yuaL4S+//ol14r6ykGMz6vhhCpTx8qJFeQsfqD75uo2WbFdvgiGzkPckqCXPEsWIlpa1MDk4knWvgrBWJSYKwmBdzfleCuojrxA5jRKonopzKKNcFAEPmmMFqBUKH3s60EyqaBG6dKH9wMaJA0KWg5sTJkD/cQGWhouSmkWNVeRWQkqFDQCGImgpCXqjG6azF/eVbXloIFdXxubs4QRAKU0UxatittI8BOLhIgnE4hL3fNBYISRlOULhdm1U56HBc9MBGtF91C+VpcXSJDA+zi1AcSCdjfk0u1cJ3keyAJRi8NTxEPPS4vRUXFTVWIdVR9BTM1NTjlNoiRSDVG8Zz5tgI6g4P/B+PsICQvKPvYJ0HAvurIBDVa7GVKsImwqgSU8EaBF9SLgCuoxS2xYEtVUTAB0IgNj3I4uLoyrXLm4S0aisUQ4GjBBzAiuEOA1qSpaH4XHqkYt5nPHIUReTnk51QS4MWiaK0TR9pbCJSuuEdKsEakmo1KZLrafmmRxDNWcgAlsOZIPbOMoVMBM7a65d17OzWj1OYOlzsS8A5msWCMxAXxy4KwT0JcErFjS62EJzkAWKSEhkc5M8MyyeQ4srAJ0xSOJLxESO2EnraooNU7OxNxNlD11PIvfMTTT47Typn1MYA4bMknCnKRuPRon/SE3TnJGmCwzW4kYwxoaNU7ECt7/abWvhFQQETDbmxY9sKnZ1WIk3GecDTq0QviAQZN4Z7KP3cTP7hnPaKQsg1EGqhM3uT6LNcFnpxZdMzaId5fJoFHALQgLp2m0PKNeMX09w/cgKVsoKyBqRao83zLiocYmd1UqzRPAGoJ8DmSxpxNOPkmeLLtCBbmS3SlxazQQHFheytz+29hfk/Y995QixzeJSmWacIgAczj/Sn6Lqz3D4rVA9VOCyUKecnh5DNDfdfVX5ZYLFZUyO/N9ea4LFpwbGc9txdEesJugElsp/AbrRgkxsCiesoQ7LbrJVMc3ivIyyYoQjYIncdlBhODGVAfAyV+1jBxP0CuFtjOeAdbP/zbiU2Md5FGwxVkob+7PUaQdRcIGnXdt4GgS4aUEoKtHlJtHQgQV05hXf0VwdAMSm/gVBcvTRS1mS+MwyhICXucFnqwgudHWtjM3KfG9Ajs565V/yHFPg+QNFaLuaZF6yEP+w8eHFVCByyR0g9+LOlfd9HL09yPGzpYKWRLg1TwRqVMu+ErMvhU0CKA95s3z0HXuKCPwlMU9pSQhAu9Xer2yC/n+/EYA/Tmu5xMagnyu02X1MX2PoG8ycTssAG7xhyKaw09B03UftyAn8iVytnjbdQnTMQjHBQr/B3mCkCfUBw0uAEhdQn71QUVj8hOrV3uKJEvkl1H6xFynp3OJpP8MoHI4r9YMoFeChlB0FyUj+RRg4gRXxjcVLwgJI/BKxPQAOBgyWnaAvBBwvXByQCgJ8kIjHVAY+FMnepMCL5YIvaGCKsF/sFA0wRaFjDBmIggRFFd5PvVHkGMs4rdwmnBMM4GGriA+D8R4I9aDcId9WQgOEKYKILNr1CNJQQgAHQUA+uJnMmSDMaF+tqR612UiepUJBJNHhcgQpbcgMEJVDjB3L+F3lmCGhKYjUcMJklgaykcZjyMvmXdT1KMDsahR7Fc9H2QkNGIBxXcSuYiACMIg8JUbZqeGu8iEM/KJ+cCHadZcwvFr3BeCxahqbVZ+MvFh/zOMioB3M4VNJ5L/i0Zoid7mPNLXDifwgRChfWDhicGQXoiwBFcGPR3TG+2VayOEhzfhjaZwOWMoVEm3AMjjXgSVjjEEdMUxZaRDA10xbopwiM5oOM3WCBYTW0ZXKNToE/j2eRQJZvizNc0VWnZjAtZICJnnCCuAEyeYCjEQjFoBA4DBjqADk6BgAXnEWgHmIwoDjvMIFGO4NrPwaVSWhJ9QN6fAAVdXE9b3W2phitBnOo0Ebf2HRRLCdC7XE/CYPGy4ChsjRoUWkFqoX4hAk0CkbklxKQawXzcilp/wdY5iANwIOk+nJmTpiLWQAfHjjz2DlmWBkCOJFTIQZmozaVKZlS13deHxYUi4/x8tmHGS55dvCADntyuQ2BRohRXOBwxh51yRB2ZWyRNHsF5eqQCAeUddWZW5oFAtGXzLSAoBmIB6eAlPRhz1NBSt85GpCJVppYiukZq1sHkHsZSYQIDmd2hCSAgUUExc4QizOU8olF8ilZyosJUwBoN7kZnL8hDv4Rkrxgkd6ZWI9G1TaWCi2GM9oZ13+QpuEhxEZZygIIhCcZJKKGvVQIeUiThdR5/N03Kn6RTuWArX8maa9FTItUuoyBf25hRqZQk+CQwstJySQJ1ZgTKkcCk4lAF6eS7YyDptqENM1BMP+gg0EKCfkhMYJgxsMpZUyYnjxRAmigsK8IijIDWk5/+Ss0QJWBhh8EkRI+oILxoKLPBLIcqiEhFCbCkItYReqWdpgTlPDGagsdBeDiSZw5CSBlgUC2qRzwlcD5GJzZAA/NlA4QmkOYqSfHkT2kF4sLCl4cg/vMmfl5ifkBGdNHFmSxgOeQo5FnoUMWCOU4d592OlkgcJTwAK7uiQnSEKe1Roe5qACcplFAF8nKmFcqkIc1MbbnkUGtKZzrCjkoqIhrkQSSqoPzCqDeOZqeViTwoRj2qdXvmZkABJ0YFWahRtgIoUVtgONhCkuOCrC4F353eS76Kqj0mb+KkXjYlm96eaYOcRcPkSj6qbOrUJ4hcUPbpjhyCcAoZbpUZvVAH/rAYxAtzab7MZrR4hYSkAjZUAqwT2hxHBct85YTdJed8oQpOpas4xh+76CkXKapjEiRFnlClgpxCxq7fQlALldBy6QDn4sC7VFANrJUN5NEa4FVg6CdyRa4PqFtkKDbFZChApE2kaq85TNVT6ERqSm/HYYgf4WXP3sXQhn8NAmJ8gkTZRAjLVn6hAngyWElNFDea2UcpHof0KFDsLDyygnhNJRFTlm1r3mhQ5l/iIFQjrDqVYDhYgruTwJ+wjp5Z2tJKxrDUKnBY5Xj9zOSz0r0ghtWIxselwqi7LCUvgRZ5KE8SpjfHirONUOgj0PUxks0hRqutAoeIAtucAt2NR/3RECQvEZLicmAgr2hQyawoXews+ALkXqnmo0KvpYJNnJBZdMTrIg7iYmCOwVH9G2hvusylYQ6ihcDm/EFMmpxo1oLnNhAh2y7KaxgiXKycRgKreQEnP8wCgyw3/qRY/CrDAlKUNFQIaZrDlIG9KmyI/kzkEihd3y6GLsb3scBbRYrrYkC2HIKXucDhDCq+Y4KZ30ZFiK0/emwtKE7zQJpLR8IrARUVmu69Ne5ORCgxtVZqblBkNJC/omlpcwrYQ278wZl/E8C8O7LyGRbaEBbuQIS9EFRXWkSIfYwJ2NXdQqYpQEg+bGg7UIbVQuKrZUK7hM6+gQXBEcqw7R4wQ0v+EX8LC4BA5tvkNMbpN44h7cLOF/DiIgbUE4ksy7Cqjm5gxLhyqTbwYEtJOX8XAvqAD+dcNx/WvI4sahFkQvAkK+9ssFiwLWyyCSqMj31E09tsOXWohvsc0k4sL7HrGfrgx5osNJFiHRgkhwuFNcbyHl+FmXPMBRlQ/1xCHI8dqHXC8i1G5H/m/MhEEV4sYkeO5xICUliK8BToa/4KjUJuzjvE9HvwB6nPHPFxcr1AmYUzFMaa4FbRSutQfYiOGHonIwJCxeXc6T0zFGSlevPwXW0SasYLLIsTItnJniWAdyWt3c5pEhRoYhfaV1kM4uSoqX6ytfPIlg7wLCtsICgz/GSJwx5XpZYB6S7/bqsfQqxegA8bsC75DGihVwqnwvqLCcq2JfTLMI238CslLzL/cN5ArBG7bCj3MC8I8t0QUOEn8z3RRsqoQBO1Mz2SoZpRmBKE6z85HiQyNFn/6cPY3CUgw0LBJiPdgbPyRrHxR0CWYspEwzibrpYfgyLpALyHahRsNG9O6t+xbDhLmbz1y0zi9y5mQveEAO0HQngqdzEkL1A8iAmUyWWuMzHvTTRHcptbkl2PYyY5RptS109FwxxHQzhbZQQew1KVwzxRdOOGlNVvFvUx9IScHLy4BQlWtCZOyzposCilAuAjaTZBQm28dFsubD3OIDC4d2A19/w1HLAyHekdj3W+ILRj5kw0+5Sew0FHcFJCGfBtiHaiRrbF5u8DQxEZcIzUbFr+f8SJrym/L/Nkv3aKYYJazMMD6Ibiu3bkCegqTPJ0Q4mb8JdHG8Fe7gLMEMTf/es1+w7OTxNUNldM6eK/Vx3m9bBy3QnZRqrf/aCWLjR5rWg3hbGOyWiAjQLPgE9WaFbLVMKSivS+RkM+apdJjhNpbq2u2IM+CcM64hHcZUNqu/BzV7IPRiAsO9h95Ct+zQdyQfdulINIIbdXmiNxyYmQKrlpmDa6hsNspIBo7DQOtjR4IPuHPTOBJZzSs4M8aB9sgThoOnQxS69f4SgrhYcrjpP/cHwKqjFDGKV5scbU117XdkNA4HK6czIoIuMK169saPfDNz3DATLUBt+kKS7XUMFXhKA7TOS4k/HFQtfCSYoS+YHpDkGLbVw5WhgBoMu4KfkvkQj7mDG1XOhTlh30Jec3mLILDp8As/jNUHnmU2A0bG4C/xxDnV+5GGDgzJO1a4mHjdM4InV0KnPG6UUPUI2ffj6DDi+4kK56UiiRiKkyFlA6kZ37pF2KQedm4ZyrqzjJ3+fhC9FvfgHiZ43LoqA4pwsOmBq2vZ6kpdj7h6UfmxdDfomLg4El1G+rLzGCHs64q1MtOzYAvDeAlyW7N1LzEx2DrnxztmQIvILPONur/47IwK6W9ymlyS4qeHLKNTH2V5dJ9hfr07egR6theDEMc78Ey2LVQEDhy7fQOKcAeDF0ovfveFrs+vs4AvUId8Pxu5K5ALEx7H1WA8Mfhq//tNXrn3LkA6BD/Gwef8ZUXAt3M8ce2mfdw0CA/G/uMvA5a8iwuFjGgASau23HS4bPj1S8h7HdBy7uA2io/VgrbbTHION6+8633s6Og8Jsi00J/PeR0SR5wQROf9ET+WRvPNHwN9U420la/Q4kn1VmfZzu4VSLf9cQ1Xh4szWIvcR909sSOemqP9vNVCY3e9tXCSl8u9yFPAFVv9+mu9/xVOAPP94CvGrsd+IQPhBZf//iB/feI76qL3/jV8PGOH/kkQwK2LPm+8eG1a/mZBvma3/merxqZjkvMgvm6gPSff/qon/qqv/quyPqu//quoeSwP/uNAb2QTPveU1A8Pqq+rSs2z/q9oWCURcpVjvsjo1L2WzRUbvxz74hSYMXKf8a5IujvsPyZRh3Kj5dtrfPMXy5UGnjLTf3d3y40mggYP/7obxucn/7s3/7u//6osP6Bjckbjd7wf//4n//6v//83//+////////z3Pn/v////////////8pzjN5zAjRRPP/L+3//xs0rww4/v9OAuGn/v/////rQPOWkMf/HyZGLwmmjxV53PH///////////////9z/18ttv7/mNKvOkvR+Zoa6v7/Vp0fiv//mYAo52EAJF+WQf//D2KEn94aC50YYs4ipXOPXP//kAIkfDX4NP//K5LHNBy6/x8rgJChgABQCCDyc7gxcVAYYQgZKTlJWWl5iZmpucnZ6fkJGio6SlpqeoqaqrrK2ur6ChsrO0ub+Qg5oXGgIJmr+7BRKzxMXGx8jJysvMzc7PwMHW0oCHHx0Tg5Jb3N3e39DR7uyiJebp5M0w1B8KF7/g4fLz9PX29/j88ZBFqd70+c7p/AgQQLGjyI7ALChQwbOnwIMaLEiRQrWrworQfGjQ5PcPwIMqRITilGmtw2YhIJADn/MHE4CTOmTIgxZto0J+gmwnQJFuj8CTSo0KFBBxE9ijSp0kkvl9bzccBBCadUq1oVp/GqTQVStHoNJ+TrzwytPASUROGB2LVsk9Zoe7HFtglw69qV2eGu3ktN9/r9KzGsBMCECxs+XJDDYMRL9zF+DPlgFQANIq9Vazmz5s2cX5HtDDq06NGSGhggjTq16swaVid0DTs2RGqFpsq+jTs3UROtdfv+DTy48OHEixs/jjw5uLPKmzt/Phe69OFvp+O0jj1ehw/Zh3/uDr4WBwjhy5s/n4kc+qU117t/Hz5d5VIibsG/35YAflMU9vt/p95DSPzHHwMEHshNCkU4JB+C/w4KU4NPKj1oSggSJUBhMyJkyOFCKXVojlyQnAZiifK0l4oFNpioCWac3KCJaRsachoMJbGIIzQDrsLBgjlaYh8r2vxIpDQdSFikLB8myWSTSFngZJRSTkklgTdKAkOVWm7JZZdefrlJkGCO+aUH/+xIZppq1jPjmm5K+VJeb85JpzoWOKBfna1cqWef6RVioJ+CDkqLhZSpaRuhii76jQqMPgpppJJOSmmllpri2KWabsppp55+CmqdQ4ZKaqmmnopqqqqGEqBqS64Ka6yyzkprrbbeimuuuu7Ka6+EoulrsP4FI2yxnTJnbLLmBWGCss4+C2200k5LbbXWXotttv+bNKFtt95+C2644o5Lbrnmnotuuuquy2677r4Lb7zyzktvvfbei2+++u7Lb7/+/gtwwAIPTHDBBh+McMIKL8xwww4/DHHEEk9MccUWX4xxxhpvzHHHHn8Mcsgij0xyySafjHLKKq/McssuvwxzzDLPTHPNNt+Mc84678xzzz7/DHTQQg9NdNFGH4100pDx0IIMKzx9RAs8KO2xESAIgDUGWmstAAhGtFBBBVRTzMQKTgAgwA4rkODCDUMMcQMJK+wARNcrjB1xADLUvQMAYk8SQOB6o+1EVngvzMQOabuwSeAt4JD24QlX0ELdMnwygN4COAGj5ART3vUQoWTOgxP/AojoOcCg41BK2Fcznrq/A/AgAOumuI6B6LHzGwAIQKRSwRAY2L57vgNAcTrwoN9d/L2zCwDFKoETIYDuzdM7APWtPG/E9djT/sT2FSBvvffvjl+9K88zb767BfSuxCuB4wBC++ffIMARsIidvv3sDnAEAXROfS3In//+Z4Tf7S8AGIieMoiHifoZom+WgGAhJNgJIighfpDgIAUN0b0D3idwO8BgK1SgAheAgAgDzET5QOEEB0LibAAwoSFoWIgQWtATONSEDS0RQhHCx204UAITOPECAEShE1qIwg52gAVkBJESRDDEDzVRxUjs0BQyFCJ8WrBC2GXiBWTcAhWs/7CJKzgRB1jQAjF2OMVLcNAQFjQhHOMoRwAooYsAwKMX78O2MG7CCmQEQAvOqAk1KoGNbqyF7yaBwx6yLouUuKIVCzFHT2CgEMQjXg8BQMk/oscFRRQjJsj4gilggASIxIQioVgMG34SEqzzIyc9AYVQksKSojQPEyqgBBAUYJBkTILWWInGS6hxhVEkhi5FwUtMSiKTvYxSAKCgQE2g0pjHbCUlkgBODDzhiJsgpyp+GM1OzHIUOAyhEbZYTV/KIHnaLCbXTleFyVQiACSgpyNraAjt3RIAfNxENgFAP13C8xJEuCIOFhrP8qyPmKksRNZWYgn0mTOi33rfQynKTf8BoE0AhpNE4EDwQY6Ci38ttEQRspAFblr0mJQYQAEvp9JwFYAJGLAlJfJ5QZEGAG41VcJBc+qtwD2hf5kIHkldUDvKtc2kUA0fUnXKwJReIng9CBvkCrFRQxQAB+u8arYCN0/9bbUQjmPCPKv4N0hUYAUkNau4pufPtbqNCaYzJVv76VO7YitzV5ta4+ZqhLBWAH8QFexgh+AEILT0EoYtH+jS6djHmq6kGQXcPEEQ1syuNACKC6xYJcEE6lFTtHcNwFKBwL6mhk8AsWUtuUinBAEA4WuY6B4GWGhbdYXNBdTT2h6PIIMe9OAIT6Cbbo0w2eCeK3N6s9o9rWha6aINS3BDvUHbeBBX7UYqEAAh+QQFAwAAACxrAGQAVQP3AYYAAAD////6+vn9/fy2xsRMjoXk5+bEyMdMiYHW2Ng0gniTtK8CAgNAjILs7ey2uLi0zclGgnrw8vGkurZtm5U8h328v7/B0M319vWTu7VRkokre3FfoJeuvrzc4N85fXMZddKEsaufv7p6m5Zai4RgnJOhsrCpxMFkpJtxopuXq6glc2p9op1qk40ZGRpjmJBWmI8qKiqLrafI19RekYqmy8aen5/O391BQUF1sal5raVVnZM3dm16enq41dKOpaHO0M9MloyGnZuEtq9Vg36DqKNqa2p2p6FLe3SUlZXQ5uOnqKiZx8BpqqGHh4dFk4hgYGBblIxojYiwsrGQwb3u+vhjhoH1//1LS0vb7ux5lJA1NTUeamC/3tvl9fOk09BRUVF+vLNYWFh1joskabI1bWVuqtxejryGnrgbXVNEitMHX7wvovwrme0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpuXBJyfoKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwbomwsXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz6hb09/j5+vv69qAJkIjwG0iwoMGD9DwgXMiwocOHxU5AnEixosWL225g3Mixo0eLEyQJ+EiypMmTKFOqXMmyJbQBA1zKnEmzJjUMNnPq3MnzmqeeQIMKHQrKxgiiSJMqXVpIBQAIlqwwnUq1qlVhA2Zc3cq166CQXsOKHVsQbKwqZNOqXcu2rdu3cP/jyp1L19cFQSPr6t3L1+bPvoADP/whuLDhvgZ+3BWlEYCAmIcn5Y1MOTCJypgz15WgubPnylOkDDIQzsHn04CB5GPxYvFo1LBjVyXdiDYx2bhz697Nu3dCRZcLXfFNvPhMTw0AKDHOvLnODs6jS+cInZDW6dizx8O5SAgLACFU3dZOXu9wbn9BLXDFobz796o0ogV1FECGQzRKnQdnGr5/RQ9QowVh26QHChKIqCDFC6L95+Bn1XFTH32ClPDghbr1h+GGHFZGQBkWEhJeheAJcsAnk3Wo4oqlDJFIY4RMGIwNLNb4mUCfkFbEa46IcBBkNgbpUg2WjDeIgoN8kYj/RME9JeSTUBpyg0KGPHYIbY54oEUaIgIX5SIpfrmiA9dtUp+FBSzCw1frfSfmm3BqUkCaKVAhiFngFZFfnIfsx+efjrQHQJOCuIjIBy/wZiCgjBqSgion8qicU41WKiSVj/jJCAE+kpjmIFEUYgVUb0ZqiIaWuiXEKPOxYhZp63UKgBASFZLFoLiEWYoSrSrlZqrRXcGdKqMueogIKXDJCIGsyIAXsNCShWomouWggSYX+NCKFNpG661hRpKwZpJ2zuroN8N+q+5DZZbCbKgA8JCck8oVosWzYK6r73taVLDBIEIQAcOnJDT5K5H7JqzoJlI04CINFAjiryAraMBF/yLr0aNrIZwq7LGE52apSMCDfhBviAgAMK8gCBcCI0KmfiwzMsxyjEpyA1tYhsowUIzgfTHq0+vMRD+DpyUbL9JCGisQsoICTTcdqqFFV53ZAkQiOEi7kuw4CAo8NK0yIhpRQLVIzQBp9drqACQIC2lc23Kfj8xwb6IkMhKEfmz3PdTe9AIwrb3LWhcJF3gfjXQjSfvt+EYy7NhAz4Q0DgmpW+tdAa4us2L5kojE/Pjo4FAKIOeJuEZIyo+YgOOxX5Muu1ohRdC5I5gzwsXFQcsa+CWKb/K5sbMX/43vhoxhhdamWEFoKF189Uq6n3Bt/PW5SDWI2th3D5sU5Qritv+UnOFOiScyOgbM55l67/41DUqpiJGUiBC+0urDMu77/EODfNeCuNVT4vcIxVBCIzUTmfAOeImXAUN1/dPXXYj3CSPszBEBGAUKXOQPToguFKYjBAE88T9M3MBZEUyhLH4FizIdYW7bSwSWdFGBEAiwKSrMoYBMRDdNoDB2jGAfIbRnH1B8sBH006ESMxGTFhRxViVgISdM90NBdIsSqgFhI1hwBEnlKxJD09gSVTSEEABtioMKn6Ym0YEEDjF9qbiiKTI2RmQIMVqsiV4oBAUKvIHqWufLlSjgVcdCvoIIGxjRJwIEqgisDBOMbMQLztZDSMSEGKazns0SpUlChGj/FVk05LrOOIgx7BFRp8vE5tQjPYzJcVMiDB3zIJHI5cjQi+k4oigvVLuxGUIItgxgAVv5tjuJiJCX8GOVsvKVLkCwS/kzhC4bUYMmNAGJtYrFqHbZqEiSQiDXVMAjRVFCqMDQmI4oQsrAeYhQDgIBj5IEpox5nleCLkLczOchRjDLTQAtTeKsFzqfmIlF6aBydTuSOuOlAII6dHUoOIQbBbqITiKUGjMMmj4xFAEkNBR1BaWBSBswL4UQMHeQgI6bSICskFECLV5T2bwQQEphFkJJX1FNxJLEghvWwgu+kAHlTFRCFfm0eBag1AnW1NAh3A8UgMMVFzanTEi04JNf/8MqIsLYCASYLGdJusQINGC7jZq1FCTgYygW1ICKRUyoULtmJRawpwTRERN1JWnebJaJo+iRjdE0RAeCeVFIZJRVZ8WQsc7JCQoI6gk8w+EksMRYqOIKsrbg3i9SND6WJZZFYzWXAqkFAAo4EoiFeOqm8LTTPaIgCP+KLCPceYoB3WkFVFhjEEdmQi048bNfMplk8+REGbBOPa8TxQU1oavwBOEIQ+CdJSxqH8JOoqo8XEQSvxKFoZ6PCBH4K9ueWTQmFNFk5i3EB7QF1kwo4QRNUgEStKq044Lnky8rQXcnIQPxPgIF1kUFMv9xCu9uzZ4LBC5umPCdDSBuiIeQa/8mDCyi4CkvPB8YJ36GWNdLZHAEEslYmei7vWkSc0npAx8sj7FdBZNnnm66ZntXdScitoeTwANVeqEpIiIy1GQ0zi4UUyscUQB1i/tEAJHuutVIKOEGuq1FTF38pBwIt7ThS5OhAAnJ1c3voPB8io/ao9dC7KgDwZnyF29XOADdbwJMHih1mwmJHwSvFnNuhWapLJci6IDCNkUEwSA5ooENggo5EG888aPfHKAWLESi7YmPhNLOKgKlsx2Escp3OR9EWTKwEEBnG+Zm8fE5OulFlAPtozWSPm0DOwDgfcaQsQ0kEqSHBthRWHPeMIBUUCHOpiEQLInBUbQSSahoDCP/dmRH5PkWXBY00aQbLdGQALIlGCel4tfQ2H7KEZRCEAJeV4F5tdEQCBAbwryWgnHvFddOTuVu8VpMSUq0sLw4EYKffWrmxFhQO/i268oqMU+u0hEX44KMw0yJRCFSENf8c+g44Z32KYJ5+LQXDHCqqRkSu83y48RhiyzaGKrE0qoYyZ373QqwrIrg6cXScT9KogW0uBCvDl9sHW2+ETVsBwqIqCAAaV9YGMlyC5CjyxUZCg9kXBF7bgW/t8L0hlBvRRdI35Vd+k5xFh0RyYqXIRxdpyQD4OnHZJ6hPkBJWJQR07ecH+iOcUejs1wvEdtB2w2xgNfS3Ou6w5mXsRzP/w5D4FdaUiRJyz3gd/K8tIaLBdqPEWBFjJxxeIbWyjkUAQtZE/L7a2UIvu1lQAs6CN19wr9WMFVqOxFqLn0B66oOuE5V/nNTx/el8TLPSxg7s8pwgGNJUffDfJy3QnqU7CH/Sxak+qOPDALj+e401qNuZTzIQaMR0bKeYfaPsd3AoKsIiqhfqREmVoZ/Qa2Lqz+p2SxSQZwXMSeJjVP6h1iurWkO0S6ZjdJDV1oacARHMDA8h0qicgrHdwpuA0fRQH62kHW3YH53dxAEdG86wFS+tIHwVjKstzscuFf1N2mgV1bDBypdMgSVlVB8RS/rp2aBtU/jkHu5gDAUWIFqcf94OLeBDQBdhhB+tiZ2YnNcFrJ2Y0MA6ZMyQ0BIgrJ1QxdtgtVkA4VLlaApFLB+7TRvFFSDOBgnJuAmOyA2gGd/YfBe1ReEAbV6YYA3NVQog/AvbxUqLRABYZMymLVO87KEe0VJNNiCKIJEIVclpxACDqhgElY0UdBFT1huTwBZYiMI/VQIyfE0kyMIiCZ278Qz45ZtmphhWOZI89JuHMhz8zd33MdA0vAFXLVEq0Y6NRNRQOdLBKheseU0Asg7AKV9r/WDBRBOEhNrJOV3hhBrESVXIZIoPwEE2qI6HnAATBAFRYdTxwJ30jQN8Md+qFB85UAAnxYWy5FcX0JjjrT/Y4lgSi/wiPY3eJE1VF+lAVGFghQTcJjIgZfRhJYYQCcgEcRWbhJGANLIZjmyDZc3EEuQCRA4Ou6HEkJQBo5GBK3FW+oENU8jdp73hAwVbfJSMl8nV71okZP4BF8wBK8lj48AYm+jAL6GZCToCunXhTnkZ3XWYSgIk8X0bc8FedbEAdfyVDugkynTBETCiAenARmZNzoQQtr1j8BBerWgjZrwkPvQQU9yLyyyhRRDAkzHAgSHa6gHi+pVAP9CjIu2gei4jgGoXQADCaoFDmN1VJPQh+3wey65EeJIKhd4FGQFhWJjevo1j4sgirLViI14X6EDFgEiQJVXcrnmlHMp/wuY5GMY9R52Ung/6Ui4uINZFYAYFoxn2ZGlFTFbWQCJYmgcoFZvs5YFSUIx+G6NqQwB4g8MWUgy0G6QZS1vKFvcBXt/V4ljuZVCJ4mDUmZpsjdNMIDD5iYSASQ+kpiB1prakJDNMJCwQSquU2/xdDEK4IlY80eRFVC4WVbuiALmNXo4hyaHeF9O9Dx+mWeraHkBoQ6MyQ+tmBKiYVsR9HKjuZQJiCtpJlsmE1FaJk5UIxBahYsbJJOQBwOmOUmFmDqqeZIHBUbA6R5w+RD+4DwsOIWaIJ2RlwwwSBVU2ZnQFByb8wQPUyIl84YHF5xh44YiJV3J8QGPyIhyJZKfmf8CPvlJDKZI1MgIPhAFSnmKuvcSfDaWj3B5PQolDTIuQAaOBVdvO+KJ4MF/tngEttNtvNiIvwlI4geWCJADEUcINTWkWzMC12gds4Rygjgd0JkTGtICLACZfWNKLdqT52mLN4ofYVlznNN5iFIAiNOVdpIfmPUvqlcyPRmeaUSOnEEM2AUAkrY1BjNsWIkXknaDzllgfuhJNcCcKWclA2GVC/Ft5hUiCxBazAd2h/AEsSZsUJkn9od6tymrqXoq9RaFiyBsHJM7v0VU+cChlgJr9XIXZcJpGXoPwCoUQcl6pFcGW0k4qDWhGfZ9JqMDu9h/HYZtIcIEa4mrj+AJXkD/bD6QAod3H2f6GTEhlVXxEytqSaYQn/9BhxPphpl4COCJbuqVkgBzpRJjqOmGnXlIr0lSAobCGVSjR7/JY7jTd8+6CROFHS25D41nigqrCVNACBfbZA0KqRsbHUyJYmc5hLEDcALIoOMmpU5DlP4yJyRFnoFDQEXgllgGAAW5OqSCTxlLs2zaOqOAhWUxjHGHfKcAr7OwglwRerCzHlKgiDK5SlSTn/GSVoo4L16nAT6pokMJrYGjg0+kISZAQBkgAlU3tIVhtAxodYiwIxRQKyeyeanQOMm6pseaCElDY+2JfkNRK6ZpZopga5exa94XBVv3WPAifhXAAZP5WzAA/zVt+KEcAzSKo2Seqmy5ypyO6w1EWyBUkVSKaWZjGojtB6mxcBSdEmStYwFyyRMjQKXWyTrLRzHgd5YlMKOLGC/7dzKF1l0NlbBp2btk8260QmSK0AVmSw3q2j0PcIGiIASukbr1M1zPJCuYqkph9RbLVSIDmqpTtTnzin++hAAzVX3J0VaQJVxkVlrFyZpnF1NGqqEG+T9a0XuooQJF0I09gbRxm1DcWFtD162oQJVIQhdyeidm8XBj46W3OTGsW6/zuCa7OH3JEQaP9zvUZ0LHKbO90b5CESn6Oo3CILhSiHmB1JyEMLlhsbf5Z5FfqaJiJ2Hmm6qGpol5U4oXIP8a5qQcE9s6xNBsOtDBt5qpv6qn2ZnDuNB78lsVh3tjXKYttcJUTkgIVVuo3Pmxb5NXMpU+s+aiFHxsUBdKDzBlDAepd+FH5AXEpYC0xWBRIDhkkyYrSHl+eCu3ZZoWUjCtKNpSEyoIUvEpNCfFE5NaZqQ3kLhq7DU5UGhYsPOq8oYLN/dSDJG5OYGqs5Czo9ABujo3nzvCgvPDGjUWohGLEKaOAKA1NNBQ0udrIRBrHyCj7UoMl/tO3+ciE0ViPdId/5OkR2rG2KCmCfJb5oVSEDTBT5TJvque+OK72DgVSPtJWgl57MuPiEo50leWgBicD8Z8NxdTpbhIDyUOvAz/OwYxvSfhTauFWF3Qq/LEQ0ADATXguByEyOlIwCA3FxRAKIr8g7lZfUaqlcT8hCS5xXNjumaiiLEkyWhDDhPwdeNAjs4GFHcbnFCnBbq6ZnLsrr8EzmLauc2nvpGgwUQhqpBYRCnQoj5Vou4GFUE3poY8CNQ2CDvToKyjbROSdV0UoaHAAkNgT2p6R42ceRjND8porx3NXA/gthfRL7VsCnbWcLyVfaaAyzVRcdITMXeRQDWLzz0TKhFMqOW7AowFvosXq02xTsARawhqIoShVA37lK1oAobSBd/srbxwxLUK1CuSQaCLL1d1gqVUgL07puLCOeNxZviz1h9NCA5A/wBVVK31Cp5mPQmgmMf7SanK0ZHPFDFK4Moqw9CbMDiTcVUZkJFN4LNwDAxFqZDvaxUR+5YdGiMkeaczd5b4+n2HXFpXRhhWgMZBgV1VEEYQgM6qeghQ/QM8oHdDldWtwwLdoj0/sFD5xqnFoCsCPZ+YEKneMAPFeghXbR09jT8TgcGOYEpYRNEpRbF+qtAVsDM01y33YT0HCXEH52cEehV4AlNvc0UxkzFIsIDQ9B0IoNVjs8Bz3M0gpYinSq9nHcRAQd1f9NADYcxze8wYVCScLUnvWAiy91G6/W730c743LsoHBRAA94oaiszTMWLYEs/wGWqZ8qpA3n+xdzMd/9QTgGm/ODgY4Hj+lChvbAeixFnACV+jZSg7XoIKghhRssBTywUwWHCPy3KljCYe1PbAJNcP9CrvDZgFT4Pe5fiTNGmaJsJRQVuE22QNk2LekwoSnK4hEPLs5JNhEVAUpO39gUdxqqSpXVtkgBBCS3khcqqCn3RnCiw0gPSr3C8cGFL27y5m3AChk0KGae8B7W0pwm7JnPaGolO49LlQIQjiaJXKwsepF0T4nLmjuBjl7EA2yvmsCxhpgc7sXZ2IfFD3T1vXKwJQrDo67MJPD49FusWZc7UUMdEM0Tlwst8YOnMxT0oUEvFBJ1TnoSyChpLf8PRbmK/HhjrkUCN1xr/gBai3BuG2yhFRSRSAwySIK0EQyLgpE+ubGHLyBtx53gyeWmx2oSe1PBsctWsCL95NqscN8JcKJeRMk2z5EvhRHcqKx4dI5UqCQmN4gjedWHMyTPJ7IPSBDHlUUuuiE6OzV84pJGynMkAybucOWgZ7nkOC3SNELZX3dJTAFuO7pWw8Pzuq7Jd4gecCG4iVGlVon0MomFGSkTiCQLTHZVAdoV98daCba8BjjzQT1RzNjDyURfTBFSwcmObWj5rA1mvacaQj8zAmNcRdSFqHe9tvwHPCh0LMyyA7Y8QXpEwBNjOb0eG12MX3IIg3pHlaC6i8dJGiS5eFY7Fu12iYaxe/8vOpcJPZDpfKBWwhzGjcSInakWOrDcQfggMzhJdX1BkGh8W4faBUr0buqZA4ryFsmO1kjJsV8V+OXRBCE3zKuAHf0HvTQo0fyitC4UAse6DsvlpSZNpS8OVYPhC+gokPg8CEOzsfufFnwr0/hDzZ/flPdSY8MZ5He3COnTXdDE2qfTDmOyKTxXLDndOkTJBqrP35ggRoAPArSZ6Z0s+RtXoBNU35VkYzmR+EgA4kSLMDwgAgiEoADWCiIkdE4mNjo+QkZKRQJOWl5iZmpuJF5MsghgCiEgKQYIQGTqDnK2ur7CxsrOwCyG0maAAK6e4AF6TYQALiTyNFVyIvY9Fjf88BYIVDRHNvtbX2Nm0EYaQV4gZoQAJllGXLDScNNKKpIa6AObnjkKICfXi9qgdAYo3/ZMuaNFGsKBBgj5aRZl20FcSVA0jStzUAkBCAA0MEvOQosQrE5ocJAIpZKAjXhRYnYi0DiMvAIUKrJhIs6ZNRyriZbTEolqiKDcg3SqHcZMMBRyGMVMm6AUkT4+yiIj0LVGVWQbGXbzJtWtEqCy9ih1L9tiHL4iAtcry1NdVRFJeSNklSQQjRyfmkprZ6MRKmGbp9i1LuLC1UZOMwTIGw9WGS+kGkXs0o5JNxIYza3aE2VGlt8NWCdrwOBISYptTq57Eza1Vlk8ssc0Hod3/IytKigpicggcqiFM4iUaMgkkkmhwVytPHYCAxZyPUA+HFmtqqwpDl+4GQERSyuxKWbWFlxZAZ0xZoy9fzxUsK9E8xaoI1429/abRXk4kbuntDLy+NTICfmngBxcV0exAT1NoCWgID6ZU0NQH91V4UyHDiIBBeOVgqBwJkWyQlFBtWZObapZZeBgtGlSYgorrIWDgK+4Z9YsmzjUC2g84adBADts1BeJRg3HYyH/IAQbAGDA2WdZdv4jQkYQEWVAEBXcJsZArUiiWyIAkaNBYebNtAlorBEAnnpNNQomVUCnQ92Z614ygBXhsZjbgcgNkAlYXkhTgEXLpOHUJMYPa/5anZiDZlJOat1FwgUjDmDOmNmUUIM1xTS0TSRGRCcKpkckhIgNEjfC3piMevHLEa4uqKERvsWgx1aktUHliqh+NUVudisZaWE6xKcmJdAVJoAmyPw13ywJI0AofJBbU192rzApbmJtivbjqRCmIGcQpFVwanyNJHcDjocveqKMljABErbbskfdKqPA+gmUupr4JKKn0lkVCaQXwp5Y3myBZUAe1NWqevHVR1QlbJKTkbakBZwzLCSpI8Wqx6gkSFC7ZIrKBhD7iMi3Ck5QJ056dIJIjJEERYN1JGucccV8gQkKFnPsFqHNZEQAFy8GQuOynJkw2QmdyOakqnSoAV//6oqrDDa31J0IDvRYnLBBTbZG7IKiJPI6sPCMrCuOUksxVlyeyUXhufVOrBMGsaIOcRMCFp23TUrLdE1nxSFWwanaqcIgDcIDeg4zKypmEV/4KWyMbKJOmcBfXigxRqJJ51hX8m0lwlmRHXrhR2Lu2IE4s6S7LAJKNsUkZWu4oIufpk08iHpgQVyODyiic6Zk8EwTyrhhvUZAjMK/7RBu+nnQsM+PIa1NAMgsxiXK7I/Nf05d/CZW/YmJLJqM7X+IskA4CXgfwGP7JxdiM7Yj0n7agtN0dUIcgKsEjr80CSBcx21Yc5RNrwcRs5uvK2yBBHWykaBJoQQJfDmEoTbT/RnaOE0SmniU+6wGggRG0G+4sBwHyoQp8nODb3CABOc8EJIW1coVABji4LzQBYGn4YETwIQhQvMBLOORKDX+SA6SBLRIr5MkPu8G8RnUHYxRUAJXgsgMFPaMEEdDiFQXxvySakRYimeAZnbVGifCvPh/p109oxaUFGiUyRGCH0dpIkJ4tCYKBI2Ms3niueQntGD/RAF+8k5EdCCMEXsIXHyf5u74VZAwOc4UH8GaNItRAApSKhAjS8DdKuqYvmYQKBD/1Fyj9pSLhqUcmNbFAA/blArMsYnKCUJpVmtIatDJGFgKXuWzlkhMOmEL45oZEffVkAheTAQVgCbeL+TER/yjISANElIgf/dJyAQTAEjhjjcFlY3EhmQK3sKGCxtnum9nojcJcmDVlNctdtQGSgajJNNRoiQsdpATzFEk8kMGznPzMHREPObv4nGhmZUrfvbbniAz0LFeDodIWrRAFGITBUKc5KL1uBpFwVukg6KSjJZyjpYSedDUHgKPGiBECkm6nRgG1BBFWIkkbwUQKCPDQJF6Jsg2sYoki9YUadTNGmpVkHu/CRDWW+J/q6UaOzwMqIrzllCa0zikG7deJKtLTpMYqlI47Ji3GgLrMEGCJ8SOIDSRKGMpl7EUUwJ/jsoeIf3XRUmkzEtpcYdNPcfGEgzCH+8yaDRo4pYu62f+VTBnaruf5bpnNuycXP1A0/NhRZkhlrIXWFTNKLtYa7uEkYWwGDNcFbAEkdRgCsLZVGNrkBYJqyohEKxF8mUJBNendJZxI0QKcQjTJMBAHjYXYeEiWt6PVJ/U8QQC6qsak2rAuacmCBBTgCbtDq80L1Jaq3dakBSFwbdygG5FEjcMRRGjmNRZxDQSUi0K7UEBFa8deJxEBbXrVSIUWqjuJTnGGZtRLc9H5JSHYUhZCnWx/aRIuKvlyL/i9RJ869yXPNfdYezkwOz5qpO2+d8L3cU5QzepSFGstwAjmTiChSGNhqHE+Lp6I/mK8Px/JkL/XuyECGDOLRIWjI19AIez/opjj9RyZtmOZjFuFs0YJCJdeIzDnc3gVnERlpa1w6YBqW2EXQ2m5yQ0JJ4LkUVN0kTNx/N0wBUcDLA+jmSbOGd2KJtmiwq1zLHr9bBtbzKE/31lFNMgBalDAaBqisbTKmMlCnGeuYaTvwd+JBygecOgnnVgW6uXElWNFgyBgBxsDkHI7gITWsQSHCqvwUBmdtADicjgTu/0CE6ZE5VgMIdSdjgh9IRPDrHVIGK9DqydwG7Gp2HoXkgt2atZZhOd2BWJx7Qo3mvCEulWuBXIZBobAzZ+YLkrP9nzht0DhtfTq1r4cEOLGpC3BhnA0qn0FkImtgWR6+xvIBRECXxa5/+dLxNSdSuQAspmrrakg3EH8Ai53KuDVf1eInrE48A2Haw37WdxFZs3USshLk8LaJL6NHsSrFlURL0DnELNuKGuG8yqC5/DjFnp4sG4z2G+VwdHOxLnGrK2zY+pZ4oJQZjZcpuqxIC6oHGiCME6RFA482MkVWaUB6qFnTPxLCemLQiEyQIGh6FfoTpqxLHSOiaZhwrq2RXtZmi5zwq3rYgTG5noNwldO9N3vqBvQFButg8ZUnOTL0cIHL/xHVlHUO44Iq9x/ObWwHfJXd1EBjy6QPUMlJB12+vDkRz+Lrlv2INSdW6tvEpnFdfQRFYSzcpASJMoa+8M/xyLp2TuqvP/0+YQ7VXAIb2GObIqQQjBIWVMYfILjCHr3NBG+7M2n5CE6vu5BNgi4f/pDkuZV5RBku2H++2vLEkOlj1BpNjsIpa0cgAYQKoF7od9G8tQgHaQZRoHuiT8lEB0STvEBNkd/BBh5PwQB/zdUGSMCQ/BY87dV1bBNGsB4mTE6OrBwohILOaUvAPABSXFaBRhBPJB7kvBcpyJvm/AEvxeCXjFqcrdykeAczzcRCVhb8ZB/5vFpqnEDTPIveUEZmGVYS2EL6MeCZrQrFoV0kTCDdYE2GsCERhiF2jAB1LBxhNUQR9AEFbcDKih517B6RwMJ8XckQPgtl9U/iCeFhaF2tJD/htpgCmpoQXE4U1TAaBxgeB5SacyhHUSBHlh1a3OoGc+WD0vVCqHVcXTBTYG4iOxECWOxY2+2a1sSE4KghWGAccoBZuxzG32RZSoHGFDGiE62NGLhKaIYH6HoCIP4TeCFiE3yXEcgdsZnQsphV6tnemaIF8B2iprxd3yoSQK2KeOig7wYHYTWZA/gi5OAGE+TdNryelanWRKWMZ0lCbYmI7FXjJ7WRzxwddZQNBWkcdoIcJ1WLbgoSlCYMKoRBoOnDBG2d2XRjLkICVMECjWALHZVe+NoGMGjjK0AKOkmEcSxgft4iukoLPL3eHEXj/xSkOE1C+J3EB8gXQ5JOC5Y/ziEVEgSg0hnUwP+SAtjViSNcQsYyGNbBjxlcZGSIFER+QszAIkVeWcwgBrHGJPluDOPRosoSRYeKSSpmDWw9j7UQwsmtW82SX33eFvzeJQodo6cwYaClIGnF4Pw+JFpZoPVt5Sp0jqHCIESwSkMhguYyJTsIWc7OSHqpn1a0Wtk2WSjYJayAC2miH3L0UIruRLREwlIswAaoIWV5QtOKTGtQiezJAK7oi5i2ZZrR46QME6wB4tcgYKKmWMtqT5N0FZMUFZ4422RYARnhlrV4TkpFyclSJdnaBBVUD0dYyqnAiUJgBrfM5l8YgKHgBlMko2bYZWyeWhW9YvEOEF51/8InAJ3gKhjSvEvW/GAJ5SFagRjixmWxBgVNiSdxLab9lGZXgGC1hlsauU5e0ICKFhdyZOW72SFkRA1wJg6qImShlaauhcQJgAlz2A67bmd8MSAkFCf9tlfnBSYrwF/sNACFFgLJJSf6gaV+AaA4mhwvmA8QYGgZISfC5IYpVFC+1kYcHmhGnoJTVV30kFWIVCDkUCC3KENvSlOoKgILVCE8KgeGck7IaGeTnMJK+EFcEcAoJFJMgFmWiBfG/qjQKoZ8lCj1nia7NINsIUfzUec9TWLTIQqTOqib0QBLZKP1yCiRQIpDkApY/YXWQlpQUoT/0CVCRqmZCkD3jij5UH/d60AEGXVWJAFQs4ZR4fVFUpXWXKSEGhaJIqhnWb6p4A6lFEaMqA2A2Rnb8uQpiKzipBnIFmApUUaT44wkZYFAVk5AkVwRbgZqDehkpz6qXEJLo0BA+alJIJ2Aj/5eEewE1OpDWo3AbMxAdDZOdOggjuHM9MIqrq6qzeHCZ5qGMKnIOWSNuGANIwaMbU6oRw3qLfEmj/hJSHgUsWDFEk5CV3Clrx6DTWiPq2YrbxYkxIRc7PQGhowkF74h0EIGckHCb0RkEpFgXpqPS1xVTLqrQRhrAHQnSKhm/aqhlriCtjJFdZBCFGXWCX5CizaKVG5CcGJa1ppFT9AR4qWgv3a/xV0EpsVy4jgCiNT0REVpwyApI6YMIE6yKaqKH3WKI8dGIvVmbAZKxYqC4a18LKk56frSRC7RjzmNZakmH4SMQCNsnC2mhSrqUvc4aM0qxk5ew2OmbRCd00jRTxngycj8jQqe5U5qBKCQC6noIlOq7RwkQJe4i3GpFRf+2+fqS1Xg1XsVp5F8qI746Utk5YnmGFee7ap8UGqIkNwi7dS+KXkeR+Am64jmyzvl23F6Yh+ax+OdW6L+2KmySYp4ULbGp1QVQsml7hGCXw997gVGJ0SF3W7Fa1pqxnR5rkBUwQkmjOkuh79yHBQZLMmiboTkRPYBW4NIk2lomtX8goZqv+AuLB9bUa7wvJWHQipFsKyD2QoXTW4zyOzEtGerSI8R0q8NZEBIvADI6NWQRAGpvaO94Ev/Gq9BVgw9rVVTCBoLXAR7npeS6isG0m+ZBGb+GM24lqp1+dGQggOmSu/06aTkhsPHkVzsOQhP9Zh81VENvV6RjsJpeq/tdit/ItYHuAxucmk4HkyBTNDEgzBY7EAtYG0i3K+M1QIOoAALSIjS5UA1RMmNAEDbaUsmdSdKqqof+nBPVuG0cEf30cTs6rD+lJ1FlG5OLwtz3O3pNaoWkRBBCmHZHOCm1q6s8CzRUymZnKWzMCZhjG+VWwTDINqZAES4cIUX2KH2Ao7GTb/hUdyF16aAi6XEoDywwvTxaj1fNALpvchxXRsEBEwp22iW4PwZIBxdsl3KegAg3WCFq05GJJDpSkBQU0lA264xzexQumhBSj7Zg1HyWKxAgsaC5ubcD47adKgwbFRAJ88C1OwLjlQLClwC5wWtqKxwcHwUiHJyb6gn1PArLhMSUVwsMLSZbpmfpG3taZwwMBkpIlmUJyVW0PQIAcgZYjciL2MJq0mq5pML1Ygx9XMW8FDhg0sWY8RBth7rwAHChQpGqWxCrNKmtgwzd3MCXfqd4Ebz0CqeaKHH94lR8BsIkZqrTBAGhHgp/KHvJvgx/Z8OfWa0ID6NujEZEJaCEnZ/7hkagE/qJ+uQJEMvdF7bJQwcycAfFsZsQqNC2M5cMArSDIpZrmgen7mFr8cvaGZi8KGETv4ISKcA0bQMMnOeyyxiMQx7SoHaR96HNTfFK+KQ9IYoYLjhsBH8iyp6irga9Rocp79uxoYTdXfhD/uHNKFU6s78Fua8CKtW19B4LJandYQvEVkMTCEUoXUWcxqrRkXlM1zvZs9sxJ86RErh8JNzHpJ0ggeJwmeZD5D3a8zcL/K0QFafNdm1AFgCXuwaxNSBrWwRMUG0tO0gMyOfcU18RD7iLieq3E7XdITG8atMSKsyjW2FwtX29kbU62OwsXW+av2CcMflluEgbLz5/8chikOFQS1sL0Z2ku4LyV3L83QM+DCTr3F00lR4cZFnK3KjDncHGfdLKQ1XKjIHaOEZLGvOtVV8fBDSKDCU43dGkPbhKXe0HfHgYoOCdIAvZADGu0VoVwMLaIDWsSFBZBkNwGh6E0zU7wwWS2F7aurmlIC36vP9rFsbC3AQwTUAa6eJ9zYh0LE3yjhgHrLGmskOVAC8JwapHW+yTqgsWCyGj7hgQITcapDLq7iaJYoR9DPj8ih7JCrMC6kD57j46jgn/ieXgGFVEiv7svj/ygbK2nkNRthKX69G4saADXdfKfkVY2OVP6I/kk4FJnlEYE3xnUOA+gVX3zlGknmgSj/dgzXsEV+CfV9vc9h0Fde12myjP0xh3XdzffnVn60qdeVBbZt5qUH6ELXwRKhAkQwdYKeQlZKvn/elkXAWV1hbjrgl4le6QxNpbph4Q2Rxusx2FVu6YQ65YvI5d6qhxdiPF1ZTqneqKC+q9HM0RPAAwrS5AK2GwhdZ62uRLQuigUuC6RupuD21xPBCOu6fHBuiEdgHYT+vrlexBhOsxuBtTMHQgYxyc1ecgHrkI3u2H6RuBdQamd9EGJs3NduEFnRKOwNqgDexYIWFB+k5rLA2EJZ7gXBYJzut73B4QndKnxOlBMgofTeHgEPXenOFSZGAODZPV491kiMqgPvvtl+/7axHM8jQHEiUNaJ+fA3gc0af6HwDVrBXaEdbyG9PvIVyQj7nHTU4d0mbx+hxMstz5Tnm8oxX/PrseiTifAVasM23/N0fMdRcO+aUBKa7vNGn7EvXc4ywx/9ri+YffTJDPWTKdontAIiP1QeKO67OPLHKvWKubReH/bV/FBoPexhv+pi/6nbnvZUCdErzfZnJAF/V/BwX/c0++x2TxO/6yRrn7F7T750X+4XcNhQ3w8h9bIIp9lhb6hPn/fF2IrJ7fiod9+L4t6S/019X/cqUPbpDZOXnzOjEBQm/vm+6zh/rzERa72nT/pIn7VJdAJdz/psQviyz1vrXpEn+qd4T/+nx137vi90DgPzoPn7OAQN+k78YhFIwFDUV4r8OhP7sO782L373B5smGHt8S79F4cj/Qv92g9owq4y399GjT/+2kL9Ye/5TRLxQ2/+hrH17l+mZnTg8a8aFFewMnD89Z8x7A8IAIKDhIUBhYiJiouMjY6PkJGSk5SVll4AAQQLlp2en6ChopUsIQAFQQA7QaaEKKOwsY8XsrW2t7i5uoMHu76MCbE3iEK/xsfIuVXJzM3OigssURxBOxwRFNI0gkMvJUPRz+Lj5OXmtZjHBsbD5+7v8PHy86MnEIPYr6qFT/T+/wADWvoh8B2ngggzJVzIcFyGMKuaVEBBbZ+gdQ3/M2rceGvCQY6/PJYASbKkyZMAPAiaUeMIlVUVBT1BkQGACAC0UOrcybNnpSSERNTwSbSo0XNUBo3MwMHm0adQn7WLSrWq1avmUjRJibWrV09Tvq5EJECs2bNo06pdu8hC1LKDBjTqBUAG27t487p7oLevsZyMJPgdTLiw4cOIYTm4lLixY8JTH0t+t3ih4FoEJmvezLmzVXu/BKQrqMWz6dOoU2/EcFm169ewY8tuRDBe7UmtZ+vezbt3MynxJET+NQOJ7+PIIWVOjjoFPCByk4UIw7y6dQBS7l3fXvIJDO7gdWMIv9muOyWS4I5KSr69+/fwfQ2PT7++/Z3BFKHX/6n+Pmb/AAYo4IAEFmggQ4fsMt6BDDboYF+5fbLMgxRWaCGCnyyXyIKK9HfhhyCGCEl0AFR2yxiEqKQcdiLiAkSLMMa4CIehJKAiIplVIOOOPPYYiQm6AMkIkBS1MhYlQvqoJI8qLBnJfHHhpIo+jmjn5JVY1ieCFx7ql8gMEWYpZnUjjLkQC8y8aGZga7Zp3wyLQAnKcuzhdAITlMDpIEbA/CCnm9ZNAAqaFhKgZ3q11PlIgoOYCOijJR3K022QVmrppZgmksVKXTxZyA0Q/JnpqKT6JSk5fFVZ6qoBlcbqUSRG4pwgI2y6EmCv5gqPD/vpStSpahJzig6L3OTrsf/IwtZrsS9YlEgLiiYrC4rSVrsToYzAMCutiPhQ4gnYFrKttbGAFl6SwZGLlYaDpELCERR0yksjPhCrbihW0LfsveB9pEEDIwliJVf82oJuwQhrdKMiS2VwBFdF2NtCwhRXnJcQRdSEiBTZMGEvIs51oJTFJJecJjILEzIxISGMVAIFgjBBRQacpIANAGWarPPOyuD6XycNOOtcxKp8wIGRPF+YX9I9jVbOy/wIggIJAQ9xCgAKTNOjoPdOyLRXfOLi6iASYx3EEwpEIAgRg8j79dtwT6KFqLk0yU22g2ww80dx9+23KEuLswMTQ1059t+Ib8R1Mwcn7vjj5cSaIuT/lFfuTDBaaFxI45Z37sjKf19hyRfzSnnCp43WhXObxrLsOUA8vE5JMYg46qYWDw+SJN+y9+67KBQEza2Hbv1ufEBdxtkmAVIUoHqHx2f19+KLBDvKCONmKbwpXewbvTllgO572NDXlbNT+MR+pQAq4Pl9QOpbHHglvVgpAueMdGqlFiQAYNz7AFSXrWKhudQNglqDENmzxDQaPrErgOLIV/zilryC3egEwOmW2yDIwVgwqhP5od2jJMemD3bwhJLwlixO96hUTYJ6KPyFEmSggZ2ZsBKiGxSIKqgIArDwEXSLoRAnYTdLIAABZBPTD2rgtUIsJ4hDREcUPwKzCFQA/4mYGkAxuhHFE57PRY1Q4NVwZrVLiW6CXUwjM3ZQqgSYR42+yJffyIcwEkIDjhC03Sjmt6hcvdFXMHyK9R73xUrQEY+Oo1TSTrWxtuAIkQbi3VEG+LutWEKSkOwb/silx0YcxGcCU0gmD3SBMtTQJ3zsXRNFOUoAfgxhxUjBR2bgvUat0omQCuSIWomMKHygZL40Uu4kUYSRPcouqZQEDVCwQV7Kon8kA867KLkhLw3iC0hbkwJv6cxm1O9rH0gFY2pXqQeyEpckYwI1i0ICHmDRYiPoAsxAMSGnuWkFPVwiAIq3zxaUMWEijAc/a6GSFbyyYj+MRSnaNB1F6LN16P/r5pEMKIhNTlQRRFCAzjjgvjkNwgMt+EAOHlk6GaWscjccRxFhoUiSfWcUlHReUJyFJVBKFJ0Eo6kk1hk9bt60QX88R7jkxjCAQJRBQ/3p4wrYiQEwsmQD86BS75XMRpy0IGKcqlYDpTsWkRQgUHQTXbbKLxUQagR8s6lRc7okHn6JrNJanFwmMEAVEsKeAbHCQeHKV9gQ7SRbJJBFayGAAAABgX2Nq06GKSAWNmUUbk2stdjXrsL1zbKSfZw5n5fZzmYqlhptm2dHuyQF/jEK/CkQX4oQ1U50wK44JS2y0AOBoFJuAK1lxGZly9vC3mcdBNkkjXhL3OIad1WYpI//lSJ73OY697nQja50EVbL6Vr3utgVS0vhBoSEZjdp82zID8tgoGJ+F3GI5Rlsz8ve9rqXJ/156nvnS9/6Sna49s0vc3CbBqYNUr8lU4H4AEzgAhv4wIswK4IX7Br5MvjBEI6whCdM4QwVgqcVzjBb1KrhDnv4wyAO8XyzKuISm+WoJk6xilfM4ha7+MUwjrGMZ0zjGtv4xjjOsY53zOMe+/jHQA6ykIdM5CIb+chITrKSl8zkJjv5yVCOspSnTOUqW/nKWM6ylrfM5S57+ctgDrOYx0zmMpv5zGhOs5rXzOY2u/nNcI6znOdM5zrb+c54zrOe98znPvv5z4AOtKBf/1zYABja0IN2sQMS8AAbVPQBV020hg0gAA8kAQcuUIQLsGADSndS0gsejybAIIgY9CAsBAPCEowQAwAwAArQAfWEDSAGALjACZFOUQ9cbYQwyVq/CQqAoxkAlPQ4wdUu/HWBA2AEAIjh02wyAA4YsGtlEzgAWCC2hI4NBWsDO9vJ9oSjm+1t+jKbAagWhaOPXe73LkHbsAhADxgw0HZndzGklkUAtpBpe2d3AOeG9ieCUW1/XzcYxdZ3wA0+XYBDgQG5WEfBGQ7dxUy8EYc2gI1yHRdm95vi0LUBA6pKiENf4AxkSDkZ1GAGvDqR3iB3LsDB0GpHHBoNZBgECHYOAv81NDNKAXg1Ik4q8JjfNAAuIDcjbp5zRPC8lnLB9hYmpzyjk9UA8J6RoQnQdKfvXA2McALEPeWJADjACKS2AaNGrfaKTl0MNyp2D0SdACjgAABLiJUmALAFuJdoAE7YwhYSbvMAsNvu0OETGJpt6CVYvUcHgPnSDY3yRfDcDPPyoaGEAPPdkrOpOADDAWzggrxnAgOYNsIhHnBrIEAhBos5tgUsYOoS9X30+4wLEFyQhASAAQcAd4ILDjCF0o9oADjY9RI6rYmp430KiAb+43f07rF+yUYW6LoZKk8IniuiDWZwARpYjmHcNGLugoCC6jNhBCj0YP1iUPrgne14ACT/YQua6HcA4i8IgNuA8R4QAx6wb44mb1hwfDgQNgEwBfl2EYZXb9P3IQ/AF0kgeU40gRiIczu3BlQQANwnCN5XCG0AAGwQfuN3Tp1wADx0CONhAThgAYdwALC3a2UhBgWHA90GcOmneg6ABbj2AFuAaofWf0sQA5UmgJlAeyMibUkQf70gbD7ogybCXBHIIMUjchC4T7O3hTgHACDAgQfgAR8YgogAfuLHcj5FCfi1Ofy2fgCAA9y2fo7HF8KXg2VRhAmwei4QA0nXcQmyDknQfOtgWEj4dxeme5v2f8NneNRmA6FXFgPga1VIIRM4ehZICBiYgWQAAgCwBl9gBMCH/3I8t3NlSILhpwJg53JfpQixxiZAkHzCdnfypnSHp36nZwEu8ACGBgQx0GkyWG1D6AC1R4gqQYz9N1BbkID9JwF8YWjxF4OnFwN8IQFrOIkUshiRB32BsWhN54m79myiSIYieAYQpwZsIAp2ZAgVZYQ4EAO/J3hKtyA+mIS9eHo9gAWHVoTLeAg4yIISII2Z4Igdhzr9JyWZ4AT4CATrQI04oHYPUHTWeCAsmHUdYmhoIAjemH5VEI6koylE4AKqSFC56IxgoAlTcJJigAW9cGmL4Xj5wXsl4gDCtohvmJDQJwBYUJIOIJP7B3wYUHuLsnu6aAAx4ATyBnsLuIimVv+NEekg+9aAFelUm5iRGnkGa4B5HZKMUaILNhAD7aiMpzeLhiYBtSYIjuZsmyYIyrhr7XiAPSlsDCB4gjeUfKeVkTCT7WiHYuCV9bh3TblDHld4uEUGVKmRLTcjAHBxwEBP39KKYTmI83IjGscV+bF6GHEIGOEBG1eZGDCBaugBUxAshdVdfIJofwkiD3CJG2JyZPAFFweViVB9p3lfmdCHixIAN5AFSicIQtch7TibnSVvDHBIFSl/RQcEFAmcfbUYu4lxHodt6CYBQGAjZIEFH6eckiV2/zUjUzCAYYGPF1Fy+5Sc2MlX+1Zzj7AYjPaPI8catZOW5ZlZTuVskbCdaB4gAUDRbdU5nPEpn3iXmDanex4ABukWFw8Xbv3ZV4yomAOJghJgAJB5bmeZDN1VoAmKUgdJnwHKC5I5bROKDDt5ocbjeLkICTtZGQuIbCLKWwmwBQwgeijYFncHlis6WlGXBC7AAA0pcAbQlbZWfzVaXDPpaltgBMqHd07wekQKpEFKXDqIEwh5nYKQiCTXpKQlOcEwnUxppTsTCAAh+QQFAwAAACxuAH4AUgPdAYUAAAD///8DAwT7/PwoKCg1NTWgoKAgICBWVlZ2dnZKSktvb2/Gx8hRUFE8PDwvLy/u7++EhIRcXFzi4+T19vaXl5cZGRkRERGwsLC7u7vo6eq1tbXLzM5CQkLBwsJnZ2epqanb29yLi4vR0dK73eaOjo7X19cveW8vgc6xzeliYmI+hHp8fX0ZbcYoeckicGZztOdJe3NAbmiIobYqRGbS3eQfZFsvjeGLp8ZTo+hgjbIAAAAAAAAAAAAAAAAAAAAG/0CAcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdruNcb/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zJXs3Q0dLT1NXW19jZ2kUy297f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSLCgwYMIk9hIyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyVzPTqpcuS8ly5cwtS0ccqJmzJs4vXUjcqLJzv+cQIMKWwFlptCjSIeteEHEaNKnUDG5HNMzqtWrtaoqOTEVq9evopgK0WoTrNmzg7puqeoUrdu3mtrCnUu3rt27v7Ti3ctXl96+gAMLkevk7xIZhAUrXsy4sePHkCNLnky5suXLmDNr7rXg5+bPoH3FIBq6tOnTqFOrXs26tetEal/LBmtYDOnZuHNria27t+/fwIMLd8t7uHGR3YqPiZH4uHPQt59L17Z0uvWOYmv38XLbhvbr4I8pD08+W/RczWGdL8/eyHhX79vLryJ2vv37+PPr38+/v/9SnrnXFBfr/TdPeuDFd5CCBt71zHdSICgFhA1WiAyFFmZoTFVaFbj/BIZNeKjhiLVUFyKIPJGooisUojjgYEiIRZiLK9ZYioge/lTfETR+2KONQC4i4lZF9NThckEmOUlZE6b4oxMmKinlJfVhyCGPRAx5hJZTEhOga2oxmSVNRRbGxJNdopTbl0h0haYVXKYpZyUrxFlmVXbOqechbJ55xpt7BkpHn4XtSOCLgiZqyZVDMGiEhAC8AKiilAZiGIbjMTpWpZzmEWBPeSJKZqekYjJpqbpAep+hWzKh5amoxmopG4TKaqsb2oEKxQlywXrrr3j85d2jUIQK7LG7JaFXgXoZuamZyErCqn0/0jjtqEI4Gu22cECI4rXcOuJrbtlh+4SYW66X/+u44barqxW8qppimXsY2+41teLD7rNNNHvvv2TsG+m8ABdshrVLxAlutgIb7DC9NDX88MRJ5LslU6Hu+Jev2lKszrAaSWqGvR7fYXEhddoh8T4Lj1lyPCQDBei+bcX8Mq3SZpYybDeT2nHAPbdbnM1BU/JzKyyEnEWVRT8k8ko27DxFy02TcrQgMhDtkAxcmUt1k1WjM7PLT2idjpYiPh2F2dis3KmhrP51tcxh65vG1wLNXXc9X5+q91d/792L1ESczJHZhHMhVuCCt/Idlzan7LZDbDduTwzOmsvOd4Yj0rnlx6B7kK/ygm7L53rgjZeWqDcasenFdEVU4jGSNv+5RfZmTR/sdbSOshJRDnwW2ozczrsaCDNUeRaMH5/Mpaq/bvxAM0z9RukaNc8Xs9d+O/D07fju/Phy5Kk9+VKcn0n0H+mevvCOgX+O/GI0pzYY6odzKv3o/xE8JOwr3GvE1z9geIF/dCsg0BT1k8CBK3+mC+AcsHcwBSrDfaiRIEwQaMFoLK8k7INgByG2Ce1xEGZheMEHRyieFbbEYyJ8Ra0IiD+CReGELDxdDktknBhurQyGw6FwNMhCH0Jrh8wgIkvgRoXbCBGJtrCdW5QIRUu4MCA7eWIaUnLFKjqsayR0nRf3RjUankaLY1SWbdyDxjRCpo2ac6OeukiFzIn/gVAUlCMv6IgQw2gNjno8FgYD2Qo+PsSIhFRGHr1ixv80MpGQjCQADClJRlCSSJUsmOgCMxqcZZIVgMSIHQX4SYedhylUBF6nEPmFUJbylbDcYdRmk8r8LFINj7RcLmM5iV0uhpW8dIPNbhnMYhrzmMhMpjKXmTpmesqZ0IymP3wpTSDNsJoAo+Y2iInNNLmym+LQJjjHaQjukHNb3zznbzpWS3V60501es8l4UnPetrznvgMTzorKc58rtOfAA2oQAdK0IIa9KAwbFUsq4dPYCL0oRCNqEQnStGKWvSiGK3iPLGwz4zeZKNXeJdHR0rSkpp0jSdNqUpXytK1xbGl/zCNaScc2koAMFSmOM1pPUCq05769Kd74ilQY9XR/Qh1qEhFziSPahqmJvWplEEMVOXTzqla9aqSoClWt8rVrnr1q7uoKljHStayEtKJZk2rWtfK1ra69a1wVUlR40rXutpVNaO8q173ytcGzbWvgA2sYAdL2MIa9rCIjYVWE8vYxjr2sZCNrGQnS9nKWvaymM2sZjfL2c56lrA3/axoserU0Zr2tKhNrWpXy9rWuva1sI2tbGdL29ra9ra4za1ud8vb3vr2t8ANrnCHS9ziGve4yE2ucpfL3OY697nQja50p0vd6lq3ZItFS3avy931dfe74A2veAfSz/Ga92GlPf+v/tTL3va6973wja9850tfiaa3vvjNr34vUt5f0nW7+50GNwNM4AIb+MAITrCCF8zgBjv4wRCOsIQ50t8JW3iIF86whlVa4Q172GNi/TD5/ipi7na4xAa8L4pXzOIWu/jFMI6xjNN64hlnJcR2qLGNvzC7Hfv4x0AOspCHTOQiG/nISE6ykpfM5CY7+clQjrKUp0zlKlv5yljOspa3zOUue/nLYA6zmMdM5jKb+cxoTrOa18zmNrv5zXCOs5znTOc62/nOeM6znvfM5z77+c+ADrSgB03oQhv60IhOtKIXzehGO/rRkI60pO0xAAAwAARCqAAGODCBSduBAhn4AAH/BHAEATxgAQzwNBwgIIIDAOACDaiAB4qQgRJ04AIAIIABVL2GAOxaAA3IABMgAAIH5FrYvDaDBjoAAAWYIAoMKAAAJJBsMqRaABuggq9zHYJqgyHbBYDAFUxgAQGMwNtbELYCtACBUT8b3eNuNhcocIALiBve2iaAq7/Q6XXjWwoBSIC5w7ABAez631A4d9LCEAAECODeCGdCw3E9hk4nIOJNeHYJyBCADzwc40oI+MehEAANCKHbTDCBwUGehAFYgNpPCMAIdOACIbQABTCA+BECUABjs/wII8B2zHHQAiPcnARKEMHIf06ECix9CQEgehJcgHQkeEDoTB/CxJ0g//OiT/0GLQdABNKggQBkoAHTPrelG4CAtotACBS4eAEufnIENJsDcJ+ABEoQACJoAAEPcIABAlDpafd8A31/wgfYPu0JyJzxYu87BD6wgAnz3OcS1wETWgCDI3igBgdQQQ3S4AELlIADohZ3BRyAAQMYYNYBJ4AHPPAAFQBgAA5oQAgWQICyY+ABoSf8EHLPAQNYAAR9l0ABTNDqESR+2LrGNAAg4OsCYEAIHui7AjrAAJND2AQaqL3OkRACBtQcADif+hFwToMG4OAGVY+3EloP9wPgnQURIHziJ2B/uGM6Awdgcjw3eMFWAgggfACwAb3XdyVQAH1nf9qXAM+3BP8j0AEIKAQiIIFFkADUJ2EbMAIEoAJqN38z4HUuMAApgATnVwQ3AAPtBwM54H1X8IFJIIMaEAFoBwALQHmxJgQY4AAeIAEIgAEM6G8dJ4HUh4MIqIBDAAL2RnsUUGkGOIFK4AEKIAINwIF9xwIfwAKxNgDP12kRlgEmEILvVoUMdXQMkIJGhwQuqAAwKIMzCHW8ZwHIhgAHIAIVcAB0BwAOsHF5qIPUBoYJYHdgqIRD0G4cGG0WQGwOIHzFdoFiqHVNeAEfYAAKEG4Nl4d7uACJtwG2N4YjUAAIcIZJkAElCABHZ25sSAQrSAQt+II5EH9WQIMhN30GIHtm92xm52r/GHABGUB4uSh2DaB/O6h/Slh4luYAPccCDwABG+CAUqgACDiMQyABYHhywSgEBVABMnd7lraAJydhZdcB0jZsNVBzRwcArFgErzgELRh679eKVjB+QAd3HZB/DBCFJUcA5ReAfccBviiNzSYCwpeMRWACvRiOZSeIYWiK4DiOiScBEriPiaeLwaiMENZxFsB11bOO7LiGQ9AC9DgEJEACAsB3aDAACRBulnZ8DXeAsXd7DlB5DcdsGrBvG3ABHICMMmkAE9BuyKeIfTd3MgeTTuCECskAB0CEbEd4EUAAA8B/yDeJEGYAAydxE+AC60hq7dgCOXCKWbmSytcBBDB2/wAQAszIjKm2jH64fLc3jHnYd4d4gK/mjXtoljJ5lA4QglS4BAlAAGaZf2lpjmzZdxiwbxMWAivXBAGQglQnBF7JASmAAvYIdwKnBgJoAp9HaxmgcxSQgFqHmBF5exDXaZ9okfu3aX+Zch84gbPXgXCHd5YXeDGXAjoQf5MZcgdgd1lXBCUwlhKXlkPglRZAm56Hdb+ZiDoYBZ1magYneUiwdctJBCJnlSmHbXhngcxZBAzQmNWZiMAGBROQbRBQAMJZBDxHAOFpBFgpfVyXac25cxEgALPWntbZAOmJjhewn6LZh/iZiPUmh44ZAR9gj+fGbAFqBBpwAfb2BBCAnWlDkGoP4AYUMAEjgGyDxn/KCXU7t2vnuKBIcJ4CUHnDWQR/N20iCnVjdwEVQJ71CZ4rqgQhsG4XkADIuXNByI4qQKAzWoUwB2sscHCtV4hCcKMo96PkCQKixo6kJplzl21KegVT2Z1+FgQAIfkEBQQAAAAsawBmAFUD9QGFAAAA+Pr4/f/+8vTz6u3sbJyVYZWOhamkXoyGUJOKUYuDJW9lVYR+k7OuKXZsvMrHrLu4d56YmLu2d6Set8LAmMO9MXxzhbqzbYuIc6ykOoN6Q4qBpbWzcZWQ7f37qsS/ZaOaWpuShqKe1NnYnq+s3ODfp8zGytLQ4/XyxtrWt9PPHmlf2eTihrGqzuDdg5eTl6mm2u7r4+fmHF5VRHRtzefjlaOgstzWd7OrUXx2G3LMAAAAAAAAAAAAAAAAAAAABv9AgHBILBqPyKRyyWw6n9CodEqtWq/YrHa7hHG/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsmwsTxQRs7m6u7y9vr/AwcLDxMVRI8bJysvMzc7P0NHS09TV1tfY2drb3N3e33gBVsjg5ebn6JsU6ezt7u+Z4vDz9PX29/j5+vtWEjGsJ/gJHEiwoMGDCA3+S8iwocNlA8Kse0ixosWLGDNq3FjlAcePIEOKHEmyJCt5W2yYXMmypcuXMGPKnEmzJh8UWSJKIWCzp8//e7U4GOP5s6hRVgyOKl1aUYYSL0KcAiAxlanVq1izat2qDAHXr2Dz1QpLtqy5EGbTqvUGoUiKtXDjGsPVAo1QuXjzYmrgQa/fv5ZcCEG55YU1ooATM/RYJkETnIojS+akYLLlq4h3Sb3MubOmiUcYex5NetJbIrgGGS7NenKNJHVby54tkjDt29kC6CyyuQmLDkMQGACQWogE3MiTH/GQWQ3VJK+VS58+pXKRu0m8crFNvTtN7W7LgIgyfHvJtt7Tw04jGnV0DEY0qJ8vnTuTFuUX0H+8/+PxNaeF0dcQvQ0hgiD29acgTCoI8QERByBxXHELVqhcUkZMIIR+UjRo/0mCFoYYi0rOOUGhiCgyFdAREZJRwBEB1kEighCmaCMoJWRHYBbACaFhEQcwYF1wRLR345F+bZCEA0g2+ZdgTGBYxAJKOmnlS0HCOAV6TtAwxAZSMomWEuBdaWZG5TnR3GCkgHjmm9GY4OITPerlJpx4kUPkFinUCUCVUeIpaFgFnLjeEf+lceegjDLTIhp6GlFgo5QKBENsSzgGyJqVDgFap9og8CgYMwCKB5dsGAnqqsFE8KMdN7Aq66y01lrIbkyo6sSngHzAwVuL2irsKVAiAVU/06E6LEMNbLFQIMUO0ewg0VrB603LCjqqEwJYYShqFwBwLRa6fnFskWOMsP9ttuxyQo4ELy6XyLPt1ltiLy9UAEa5S2Bn779cSPkqFy8898jAYUg1IMAMnxGsFjkU0S1vUShbhJ9crEixGRM3rMjD+3Hq8cgXcVDmFlJKHPAgHStBgcG7kiwzE4m+cS4WQ4KBsYSxzuyzKDkbER0YNV/RbY8MrFsFsDT/7LTRagQth790ZvCHnBbvoe/TnXKI6XVbqGr1ELjyW8bNQlSLRIxIgDjuH91SMKnSAIzFdV4rqAHfEB5S0cG0FYiwsxbgbSBfuB0GApkgGt+tFlUCPMgGzFeg9S0ZSmrq+OZ2aDe2eMRx0TMaHALApI9ZIDzFpI9Eyvlkchpy3LTGjZH/uWp7lOvl65aldnlSKMWbRawZFEDlF7GvBgDik7R8BAbxkjAD7zK3SHcfB4IBMre2pC3J29RfRvsSo3PxqReaV7E4EdYtkDfZX6RsyvZJxC5g+GRhcLocXy+xNxFFo8LExhc6u+BPZnYLXdJYZIS9jekKWduF85jAArW9gX4H7ExxDMU8lCUhgkNgktSeQDVkSYGADqpYFGbEBZFNgW0nySA6GiCfL3CgBThogur29LmwWWGCWggW+Azhun4NoYgiCmCT3oeF61XHCAoYk/BSqIUE7igMymOCbl4ow0r9DwAPbCAYFCC/KuwOiuN4BAsBYbZVYLCLw9jaETSQviqA/zAKZawbGKWFRYnoCDromkL2sKWEN9LDkHCElBNQiIceCoJL/btRJImBSL0MR44FVML+6niE6R0hjFAYD/v+UD41GREJQ1TczyppyT0KIYp2iMAKmCiENB2hjC5M2FMkWIc2zoeVnCkdE75YBE5ezHQGypABRvinJmwRkFCw4CmAqLgpVsGKXOlbKG9jyydY4JNKoKUSrKlD7amPgk3w5T1SmUhzTIuZqOueFPY3BKsVYJK1JFIO2SfMTGpxC0VbGBjIkcVh5KidHDmZEY7Vzw35T5Px/BMzp0XMUaJRS/KUQgdEqYYdOuxQCEWSAxCm0Cc4sZkQ4mgNyTA0U75Bnf8hrRXlXAkoB+QNm0gQZ41uCU6OWrSeQgtkGXDVtkK04HIxPdJKnbC/bwLgpPkcamiOaAQI3BGaSZ1F4xJTUvmEYJ96ZEIIloo6UTpGUzq9aE+LKdQieKSbUAPAVi0z16yugp5acCqZpjC2C5T0Ctq8mBKvwLo+EPUJLMilXRXjSVcqobCvjGiGwOBTxxqBmmwA5lUwC5NBAsaj4zQWaH30I3I6tLJOWKYW6hoxydlBs4uFQ0FlMyS4WjR9qN0TE5houDX89RP0yoZiY9sMJoXLVTxtKEjDGYUOSqBBqGrpKYmLvUoMVy1lQu035UFLq9kUqKTdIwGFV4Az6pYII0D/qsqoiwhlQdUOM/WOCY6j3CQMTAGO/GkHp4veJZzgt+zdFBEO2wicZuUuALbOB3bY1CRogKO2RQ14LXsG13pGmt0YnFZpQi/t4FWy5OnSZJOwmorydwP5DXAdABwelnpnrMWhnTGrgoTKhIusRpilg0/oqWEQ+B2wLcZ77QuwbeVQczsT5ndxzFYggVgKgtGwWn4MBSp3w7NUHBYo00phPDJBrzUG5YCrIrw1/hGVyxuyiqdJmgTAlZGD5akHC1hKABAlAmJuAianGpVgQJY+5pWroJcg3TnYDzCH3mYUHKA5/Pq0vmzd8wdXF1op/3PNKkTmFIKcBE4DBr8jtkKd/wF6hNLl1szl7DMX0CYXmDKDnXmY7RxYTRFAKVR++0XCeMLIyCXoNcVtsHBWHobEgRRarbKCDwhsC1amli5l8TJVAyfwAdsyZgAiu1TgjDUGK2M6tZJzNdzSWAUs+6QyxdFPHv0GTgk52Qzgu8W3nyDQyS5YCs77s1QZ4UJvw4OcpqqsU2cshfGoV8/vZtO876CduhbmE+ApYU26+WEqhPHgaWAkDJdyqYL0Td+I9R4eDPxwbrckwlFNHRpzPeLTxBnfG1u4GY7d40BEmDC5lEC9oeDa4FK1Jg+GKJGbkGcjsJwLpjXLddGRo0QrwtKKmWJgiQDmOeLVxFl2Asljzv9zqILH4TI3qRAaW4hin5d/LpG1FmYnhTWqmd0Z/VDYlwDMl1cVynJ+CAVYnPDxAQoHRRc7A5feBJVMfQhQtwLI+eBpVWB40HIxWYvHIKr1rWfxF9FX0t1NBFPnnU5ZX+7ctZp4KlwVDWbGOkU2P0IC2p0IZN9xLSX9wdGOPhaw7Yu5rfD2JeS2IZYuAJODU7Sq+z4KJjiQhW2PhQiw3OyF/0OxJQ53bQzAqtsovXOU6G85bH4eGP/8MRkdheGD/uyTLoMFIacJwd3+CAcV6/eFraNeh38gD4pArBRbdWlPmKkOBQC0F1rR8SMIoCsR8yIDiAWEZwkERzKNVxiOgQv/KcZ8e+V0yIYPqNZf5VRRMJVn3xdqxdRrtUMMu/cM2xNf3dCAGfMFUBJnqaReo7YS/iIOM3J4HVdu7DYuMLNS41UM3ccNJHhp56Ar9BOBVGR5ifM8APRkXVYQPndC8AQFxmdffIcgQZgRSDgZkueEUHCFX+F/TrCBRLKAybB1IxOFNEN/FidhAMSGzKSG6YdGkJYP6AF2nPeEc3Z0TfN/caB2L7EA99cSZMgFr/dUU1JOXUgSwPYEOYCBWNBQVchHUKCCTEh5sbBxhrUGZrhOdDdyP6VonwRXsdeHiBIrh6cRITCDVlBxIfZQL1BQJJAawiaHWYAMEtCJBiEOvCh6/wrXEnwoL2y4BM2xc6mGiV9CED0yHCngFIUYBlOoaZ1nAYOYcMPohnNIhC5hiYgHhvYwhAKEHrq4U1OwUVfAjXMUgOIHAKXID7BUBPYjJMdHBTlUjVUUVAokTNT3Q5FwjZ0AA2iIVVfRjkyQAR6Qij+njUYnBdHIEb/XeSQGb0LwTUfmGPqYBaKyhKLgj5yATy6zaTNBIZDYhFYDiFXmBFvTAfkXcJFlfk3AZQ2BAPrRiFiAckxVR9BXBBHjTw8ZByMJDxy5JTIBU5xFBeg4eSkHRtLWkJFlEepEVM8oVk+lfUiJeJBnRyP2XroRlE2AfQUxAFtYEODYR94YfZWzjv8nE2jkWBDrpgQ5KXjzZCJBpCeBlZNFuQ1vCXNWMCaHODlCYJLJQHt3SW5Y+QQsaE1U+RBiOGbmNgEK8HhRUocmN3QoVQXyEH8AYIx8klCCcJTLAAJKCFhnVn19Jy/iYmJh5Cs59RHtIQ9UQ5N1YFpFpHrdxoLUsJMGVIkXMTHv45lRoJmGyQbjSGNihBCeFDniQmt6kIonWD81dh9FFQWFNZbKIG4KaZSzlpklgRJFSTUxYJNr4y0WkYWh05OV8ACpeHp2QwCn1xBKIgK9ZxGBdzZSAGtrmYGviIgwsQDDaXp/EkAPOFneSADkqTLslCAw05z4UAsB6Qcd0GyfCQf/BZppmvhQTdAAUleCFlEgBaACRPEci5mdeRgfTniXoUkcHvGTfjgQzpOYsaaixTCBZTeipngMCVcyuGAdSXGiaOCSIIVuQmCdCcltthlyHFF6qwGbO9GE0XAyYZkG4AmPGhWlFEFMLVBGCtCfWeBJPtoGC+EFyEUFgmGfyvBMcsBi+wg622CBS2oGSYGbewUhNTMqRoJDq6mYC+mLaycueYoGmJQBJ1UoQVoBPaKc9KifJ9kLDWpH33KNRKFmsYOH2IkN3EcEmPdR+glXviQYwXhuzgIk0UiQStCXHok6mHmjqkZoX8CK2DChExmicRqg4nmVzdAi3uZpZHoZQtqn/83lYshoj3xGdOVoiwDBBqxKiHPgqryalLZ0HMNRRrlqFmn6CRg0n6/gojRaCJP4DKVacyhwqVAAmE44dXfhJQiZPjKpPsDqEzxhaVxpXV74DA/5NgQQX1RacxzBLxX6BhbQqb4BG3IET9uKJmH1m3tAm1rHmtkqcohKQlngryeANr45DU4Hdih0lFF5FyfwYyhGmaZod8CmpF9BnZbgFMAJo/CQGfuUPSSLKB0CQ7EHq88wUxcwWIwkrg2bNQjZsEvgr0wFVoHVAC27SpTKc2dqnsXJjn+ZYabVlmOhoJIyZnLpT0iglkVyqk0JBf+ArQSBtUW6CRPbRHtAArrXfv/a2WMgcGinIavJdE5QgClRtD9+VQ7y+Ab7SqxDQHsltHk+lZ4IyzWLKludAAEFk5SPdYkSyT7lgQBMSRJPuppyxHp4saucEJVtAALd2jxNtkv+taJacDlDuw31RXNbwIbtyZBE8LckAQFlhLSk0KXnmbrXWgersbPt0LhbAD38xbBr91sD8KCkexGQEbqeAKeisK+5oCdlaaEuiw8dIKp8kxP5uZeU+BKna7d+sLx6Sat8gLyRQJ0HEEmNu6hk2ADWEZ/18DUBoQJIC5wCCQCBRqXBon1smhCQWQ592QyHGShVdb0aAWpNwLXzyL9nN1hTdDng2g4vw4/zAKGxNJH/pMAB/4Fytou7F1oTAkC5DGRnSTuqPhG8cRC2lBo0WgotH9mVYkMcm3SvMGGTQrooJVxIMTCt7wcOPzgEKxACICCZk9FsCVzDhiCyqhErhiq1bQudrCHCQbq0mcYSg5kJ/iI598sKIdgIRXy42AjBf/G4NIyqTkIiEMZ5+Xsq/PFBkSuCmTCALdtBQvwXtON6HFi9EZnFQIx6e8TCi4AAKFtqz7nE3HRWT5UUqttuLtGWQEgF5jbFnusGgsqzQTypy7Ns1qrBMJF7NWJrdMK2L7HHphC4bTUJoIQMSafJwEW1IaSHfsHDZfG43jGwlKY8zSInMfwVUFsE5mm7QlfH/1UZBhPQyGvwtduEcjqBtdUxJpkrE2P8BzlsOj67D3l5DzyKvXF6K1YwhW1BDnaTJfjIrmiwrrrMDItSQXFsmkLJp5fhv2UAkw4Rzd/ASJ7spaOkKTJ7CS9CNzzRxUdByTIXrb+ICQZgrZ0wn94rKHjsDvgMDBSgAgPNpJpwAW3MMf3cpuVsT5HkvlfxztwTB8dsJkpsILjMCNhkhiAcRMB8RWfCypPlwKCy0I8QzYflEWznxYEAMgKQk8Q00pKhrHNWLx2dBF+bzANFx3m7zYqMqWe7zSfsyNPByVoAAwR50D6jznmwG+hrIL2Hs365ButwrEchzl9yOh/NBTmkz/+00iywe595gLKpYVuLUy1OpYtVnNHFQj8MekpGYrWLNJR5HZ51IIiM8sRBLQmSytBDTYyqmgeuY8FkgdJimtTCYmUK+gDa27kAompAbVn1e4tT4EsqCtBXkkci8K7C0idc90SOnU4EqqdigLf3eBfmW2EYtcjfXBYYDXux5gYWjcWAANiorBWM3Q/oTLTl3G1lbAKszbuUlqqrjXC8S66yPdulARkUgNP0JtqfS8jYWUq7Edd3UNKV6RdcYt0x9XaTEinK2jEFnahkkEqeXQbY8czKnSnQHRlkjcjujXdb4Mt1AETl0lIHgNdVDRa/Pd9yDCtSuteBXZg4swSzTOD/VyHAYBDgzRUCCeCKpilQFmR5ieLKaoBNcBVGYcTS5+zg1MoIHXSsO8nhaA0XQXHEn0zig/CQg41mY0C2Sv0EPmXIRBA7OqzStPHDMH4HeIaqkKmGzYzUPo0Bl900kVTUloF5Os3PdazTNoNOaahrRnzU0qm0GeQVEnDkhKB5iHBdE2RL8zwbTP2wQU4H4CiSZ+BCEk51ISIYVoMDmV3D4k1IAngJBDfjF1LHxnPciWBhYS0xxOzjEX6diEsbeelT+BF2IzARd14Kgq5yX9wEdLTBhWBjcCLl31uwPq3VbUgfRQPVtawHBVLfdqWWjQjhVcCND20jHePd73u5z30k/94sCO1dSGOAHlh2ACr+Jv47yGjHx3UshmFsuPDtBj19JZOOBYRLOP/pJA0+CAS30W9O2YMC5D275nBwlEmX27be20fC2zV6CEvuJKqupr6X3uF62kLhFRZO7vPhcFgdYKQ8tYBgKEryTcE+3OTlKTx+2t8tEXnu7bJyUFtTZ6qT6bTg4kJgXjkzSdzdJOKO8My+PIddBBdg3GcAJXX64WupsstS7Y2y7KJQFyGrStOL8VmV7/nezeno6v554wqSby7fUVYZr6LuhT3kFQ4cAWfOY0SEJX7caYTAAfcORyYvB/2EFkzSiKCB7U1C81qDaV9UC88OB5gbVb0WsTyf8/8INTpbzwYzpht4uOti304VDwdn3Rtlv/Zsj9fFvssHjvFUL0N7Nu9yEACUcwB47LqJtPTlcMVMES6Wg+hnCqvVQvgSXSFyQgKVbi5i3xf1vO/gSeuDUiyaL/fBeet8MIQxTy700flW7vlh5e5QirqVPSwoHwXrzjs1tAJkFetlQMmKzTXpviu7b30x0Vvox0b89EptjwVNPxsZyYD0Cei9UAHHLxuCj/pXsDVxX/c/gxaKL/1XAPzZLwtWrx7crv3iTz1Ozg25bwfBjRyOP/6LUP0kM1enrg9+HhYakPdQCuZ6MOCMzv6OCAQA4ZBYNB6RySFM2XQ+oVHplFq1XrH/We2W2/V+wWHxmFw2n9Fp9dr8eLDhcfmcXrff8Xn9nt/3JyP+BAcJCw0PERMVi2QWHR+hOvoyAALTOCAzNTcvOT0Nc26IAj5LTU9RU1UhOypWX9FEmkhha78Y8CDiMAqGKGyBg4WHiYuNSy2OlZc9U5iHaZV0n6n/TPQwQYZQqru9qxq/xcfJ1VT8fsvVvbUBPtbVr+HnvyzkxTAv6Pf5+/3/zW1yAEACmw+WACZUuJBhQ0cLCAJAAAaTQ4ulSLW4uJEjMAUNiigYkqBjSWquTKZUeWrgSpfK3ryUOdOQhQ00cebUudMityMGeAYVOpRoUaNHkSZV2gaMJAAHokRb/zqValWrRZh0eYem4tWS07yGFRtybFmzZ9FKS7uWbVujHtzGFZZObt09Me3mJSJLb9+kUv0GFjyYcOFEMQxbRBl3wBmoiSFHljyZcmXLFildzgkB5TUBmkEr+1xk8RUCoReORr2aGV3WK1Ocg/ZaSmPat3Hn1i3I9W7fv4faBp4ya7l7w5En90vgtBDhRHwGPVGuq3Lr17F3C/BcVYnsOAsiif6d9WPyqEYs3HqeffuOgN1HFmE+fkLujuDXH6xBiLZALIjASz9yVFumQNwgoM8v/gZs0EGeqiOigAmKMACXB+1yIQsBA8RQKYhG8nAZ7wBSUESrJAHwxFUShGsfjf/aWVGpm24aAoTwZKzsBQ5zNCvGHpsBUsghsXOGyCORTFJJPppbchPZ7iDxie2ctCzCKmtpcorxnFgPyy/BDFPMMT/x8oz7yExTTYYOXNPNN4+woQo04axTPxp+1ENDO/msEqg+AbUCg0ChgOE4HuPYM46WCG20yhrmKE03Oh2ttIv8LM10SBU17dTTT0EN1RhMRW1LylK3SK+QxsxE1dXvVN2it9CMfNXWW3FFldRceZURSnyeAKEAjdg7tddjm4jViALzRNZZw1DYVRHEnt0NoT6VrVbbHqdDolYvEK0NtOK2VYRcR9ssF7RvVTlX3XfhNYvaKRSN117lwLpX3/r/cgjN2H1/3deIbpFYILNthsBR4IUni6CGf5u48kKGKc6LrymINaLVijkOrZeOQc7tzxCQ4DTkkwnLtwhIKznigWvnQ1lmuS6eCImNjWh25p3b+rgFkhVwCiWQeC66pzq4oY9Co5kOzeamoT5LgoL0KTTqq70qTmEkamSNUoohTjNbORgEgGWs0WaIBJWlCGcLSS1L12iTw3Qx7btv2xph5b7GO0e5m2iFikZI8O1Aov2u9OLz5Ewc2yRw1u1bp/oDQFrHwxz75o0zvi0ZkAmO5PEvKM9NI1Ew17Rv2i5P3UHNpXgj4CxecP22rqtsvYnmWrWBbdyEcztc20+kZXgq/84+j13i69R8duahj/5mKyLnmIXOpS/qger3qjf778EPf4rjSRfCAZEmBq528cnUEolkPlZuBrjZ343LNVYfLgDYZS68/v+RBgvEech9XeCfgyhgIvL8rmRhA+ADV7M4JAlgVghLH2kg+Jr8zOtNBcRCA7iXwb4wsEqIOo1nBCVCvRxwUH0CnAq9Ebpi3O9vQ6BbFKoGQ5FJZEgtaJLemqBA3UDlgMEiCdpQtyIZcuFaOqQM+YAUPytw0IbYeWGOMHBBv0lRd1a4ImRooARZFGd7f7obDWZwsCguSQRwA+K9rgQn+nnRCb+CYmBu6MQGUfEJDhSdHpNSREAOciWly/+RDNZHyCJh6XlbQkIXFYkUQUYhkZG05CtI2KFMDSB/lywLDC42wCRVEguQfMAbPWkVVDrHckM6Yip/IxsaugqSsLSlY8x4S9QA5jimuCNq/KfLpCCKBE38Ui21oEVhVgVEmvTlMhUpsc+JqpEhhOY14yBEbG5zD27j5jfBGc6gIFOc5TwEOc2ZTnWuk53tdOc79aJNeAbGkPO0J69mOYt77pOfwCPC8voZUCosUaAFNehBEZrQT+RSoQ116EMhGtFboVOiFbXoRTGaUY1ulKPv/GVHQRpSkY6UpCU16UlRmlKVrpSlLXXpS2EaU5nOlKY1telNcZpTne6Upz316U//gRpUoQ6VqEU16lGRmlSlLpWpTXXqU6EaValOlapVtepVsZpVrW6Vq1316lfBGlaxjpWsZTXrWdGaVrWula1tdetb4RpXuc6Vror4Yl0ZBjFv4rVinWQlX+3FSQB40IaaEyxgZ+ZXxPZ1sY117DwI+1jJTpaylbXsZTGLh8hmVnqb5ay6SOHZz9ZwCCcogWLPNNjRJmk0BM0nG0K72iMBTgdREO0WYivbMNVWXEpA7ShUq9u/3XVvy0oDMikqhL1+YbnFFe5UeJuE6Bahgru7Qm6vq1wn/Na6z40Lb6dLhPBml45FQOdt6XCa5nqXKLW1WxHGKx4yRKNA3C1vcrXL6N6zxHdw8w2uFrroQdUMeK/E1e9YkjjFPtKxSX7sm1TwC7jLEfTAS+EvGOzbyvxSwTYHyg+l1lvAAhn2rxmu8EouDIAUl3gMpKAFAV5Ip+bC57RwoO96T/wSAYwmj3zALiOMm2MHvfa//vXtX52jiw4nwYOn4rEZ0CvklbywujYuspSV40fgDuLHWB6ycaNchi57GTk4DrIfxkxm34TZciR6jpaPe2U110fAeEjznPVTYz3cGc/f+cxz8NtnJYUDzmcWdKkC4Lb7mLiUbD50cga84UdPmtL6rPSlKc1oTMMpGiMw86YNEwQAIfkEBQMAAAAsbgBnAFID6QGFAAAAJXZsH3FnKXpwG2xiL391GmddOn10QoF5NoV7KnFoS3x1NnlwKGxjNHRrQYh+TZGIOW9oSHRuUIN8JWFZYIJ+E2BWMmdg9fv5U4mCaZ2WXHx4a5SO4u/sjKShd6qjssvGlreyZoyGGVZNztzZQ2BcIiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv9AgHBILBqPyKRyyWw6n9CodEqtWq/YrHaL3HC/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGiShKjpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3DjLC8ePIBVOCEmypMmTKFOqXMmyZaaRLmPK/BZhps2bOHPq3CnnAc//n0CDCh1KtKjRo0iTKl3KtKnTp1Cjqio1RITUq1izat3KtavXr2DDioVEYqxZeFTPql1rpAECtnDjLkkARQMACnLzgl1ABK/ev3L9DnkLuDDYCg0MK17slQNjrR6SpH1MGarHIxoSV95MdMSQDRYAMOBMOqlfmKVTHx1wBHWRC6pjO8RwxoEQ20L4AnAtu3fL0YOJEPZNXKUEA6x3DwkQoLjzfYK/dGhi4UDi63efa0/4gYyF6k3sBqK9vby0CoN9OhFQwLx7eKHrFEj+vn464PLp29//syz//8hEN0YJT4hHHoAIJqjgggw2yOCBDkaIkYASVmjhhe9ZheGGWSmA/xuHIPIBW4gkGoOeLhyIV+KKLLaI0nBf1ATJdC7W6IuHmUBYRAY29qgHCMGpZwaQexDg45FSHGAGfoBEdsplSFbmoZKKTMYEk6/oFqWUAlQ5gAJdOmHlMk5uiRKBNRkJxomivWYAF1qOwcCX7cUpzQN0SaijUciJ1p0YFCjASAAJDFBonmYmCsaYV4TAqBAWaEDlHwgQIMClhiqqKRZsllHom6J9KIgDDFg6ggAQJPLnHY9uapOdQnQq5xKOCZJqH/F9UaurYQka6lztbcGBqN5h6Q2xvA5lbBFh1mHlrUqAKomMyUYoqwPQvqGlftV2mwdvTqyKxaTelusIskXAeP/bF0JO0a658Kqxa25MQDDlulko4JNm7l5Bbbyj/FsYv20x92WMakrB40Lg/tWqXHhyu1ymCatLhQNuJUHCw8q9Mi/AsuFJRE2VMkeXwW02cVx2ucH6xGUEp1vVIu+C8THIgJGLRHMG6/tEmAkvQaQVy+Js9BXiRtsmob8uIMHCbVkh69FUA2Ipa2pid0R88zUX3BIxE+G1zDVXbfYVFheMKZ0S9wVpykIgisQDXSYtmgGpwlqp3CVlC1aZXdn9mmg+VWfypUlcKu3EwTawuBPqkcqsmjCpuMSeCoVwNjsNCL7z0jzDXfByBGActeVRlLpcJx5ouLl53y3ddc/rAdD/JZi+auHTnID497qNPB4qxNptZ8fc8HSynLjOkP/+CoEhk+41c0HD+qWRin8t8/IGqMv8r8Z47rxUEeAoGqEJWKo9pqayj1zx+EoWthFpx0Hj+D1SmyrfQnhg3fDny1TctEfASsVvOcNR0ti0d6v6tQZ/Z/MLuhJnu7WlTIHBaoK+VCQyuXWtCwqTXFbuB0FhBO1zHRNOusw3APHk6VPwK6EM3WDBFG7tcWK7XqgkmMExTKBhM3ydwGwnPNGRoi8VM8LCvieMsv0Oc0uZDGKOwACLNSs4N3MCXnRWRL8JAYpBvAOUNpS7JFygdMer4PauRMAwupFoQwgU/YgAtdyg//GNUwmRAbP3wACWqk9zfA1hJliIBWgOjw0akcruVgAvXvCKokOAuKhim1MFUmFEQ90UihZGl5GRf2tcWBmlVbisZY2JKzQC4IwwtCyMEZFsdBAON6m8dTnuNhbokgF22aerFeoznrQhGaAHSypQSJYAIKEG52JH5iEOeSzLlhO3EMxiJumEW6ujcwiZuqWdsYdvA+ICbTc8uuSJm9ZkFd4gsUqjoDJWdhob1tYVOWM5DnHQ6lKhHPmGqaWTikRoJYl4c8/s7DFV81ua+g44n4vR659GE4Eik+DPt7FHdbWMH180Aybh5E5kdgAjRMNQ0cckVHdefJ+gmAPENlahpP8jTdZEmdAAlAF0AgvlW0cbuqSYljB0onsTT5ETsVEiTz9UspdPAfFKC1mJowmDpC+Bdrhnxq0Ad0QXKJd6h5MioqVn8F1DCicmLBEvex8sG1bn9oSZcjUNZ4xEGdvASYM4EKCIwh3xAiitEX0Pg3drlEDfGgtIEuVDdQVoz0w2OzpuFa+LJMOywIrIYwJCmUjMFVEQY1iAvoZtV6XewTDJU8ImBLP5QA8/VajE2y2QeoDcpE3lZ9o/iPQSQ8RINXd2gLyRLrBtmeZnwDmYLNa2p5PgGNooahEKbRQJE6VbRm3GBtTu9riEEGsR2tnWK6D2IG/BHbnmepvZajaOR/T/DUx1cl2weVUgbo2a0sRGF8sSDrTpq9kCyKsHTWLXCocMBDa727HyvYyy82CSbSbFXyQqwVEna2gaoXCid/avqW24QG4dsc5rGBco583leIUpttUJQXwq4ddox+kil3G3Ig12ANc6201mpTiDMSzrf9mA4Eic6LwFmyURtFs7htx1PaU7IDXdtmNfILSuv2xvxyh7NXZMwMJ0TZk+H4sEEWgzPRtusiukPF0f3vJt6yAzFGi85vuuUQkf/kqDkYJOfNGnPbgBV3xjSYFfvmMBQl4ClHQTGuJe7KJvFjMm1LxkT5W5NQzWYTxwyofG0pS1ilbEngUhZPuOzMtQZQ2X/+/jyipct4pdc0zG5IsZ6gw409ryw6bXaLrmIOB/SsCz4ljcjvWWIcw78mXwSgu21En3xB/xNUs8jcJBLNSzEwYIqRKbhgyWjNc2TsTKznHbmXyZ0yuUmJH8BhvsAa0eys5xHNjz0iJkZg2GljZRAr0GSB5AUuCRQmzpMWumUlsLnkmJgSOi3C3QOwz1e7WYrmNAfEi0x9BtNhMYDU3PSiU5REbItym18cju5uCpHOeR07xcqRlxmViGNS68gFOFkyExowH5O/79a9kaAMUbwfAZdrkQme9hv2Z838v3kQEgRwHii1K3S1VehitXgs26vcJqJTvqmQETCR3u301Gnv+HOPeiVMLVBLtftnQju6G3VVfyq7neBq9H8NGWYDB6UwL1Jadcg0a/qqBJ4l+G9Pnkn2A7kxOCdDAEK95RUTactUjzcLh8FbDa4kCU+lA45BJ8U3A7Eb7rlI4WheIULjY/7v4GSWG71GLI+Fs3UEZgp0ZLDT/DbvO+Jkw3QfFIGKzDASBQcoVd9tv4/bccqjv4tkH1Y2inB3COh46fxHXVAPbf6eDzaL3rYSJkzIs3w/OShJl3k4O0KZVScNxOBGquT120lwH6DCu9CqL61+mZTot+y+cZaZHoHuzfZVMDF80ssn3nVwS0x0wlFhIhhnMN0Hf/R2KqUXiZ42/hAFb/AZYI85dv9BcLqJF9YpQ+lnNr2sBDg8B/opeBkEd690cOLbd+lrBLYWN06ecPAogKJMgPEOgG/jWD24Ay77Rt1RYG3zR/APgTDFgkabdo4MB68qBuLvgHuic9DrYQw7JyU8cRI3GDFMVs9gCCS/JcvKKFJhhHR1gbFfR4gOIeFTACwvcFuGd2k2YHpJJ1nkd8tvcfC5A+bOAAzHcH3SYh1acFdQZw9jFnqeB8YwZ4K0FMEOQXBUgRGpAB5DUlhDgUNRiGvtCHe7c++2aJ9KCDAtGGSsB5iiWEnKgOGlKBVgACT6gJgldpddV+V0IoZsgTk6J5SBBwpXh7lOCDSLCH/0MYS0sxV1sVcGB4aXZ1ElW4ebVAikDRilzwh4shUUVYC7FHC43TeDgRNnXnL86YgcwYCKbzg+40P5QnBohnIzFYCH42KGtIh1fRjVGQNVvCAe04CMnoY1VQjCQBfU8gimZ2eWaCi41wj4rgj30EjJRxMj4CinKAirmIRAeDAA75kKDgM9fUFPqIBQTjiSZIkEslShTJBMgHUe8VL7AoB5gYIiO5Bic5UIygTEMzjekkkJoyaxzpD7ZIEixoBpehc344hojIipvgKAC2ElMIhyEik0ewinWAWimZBB75CIZIi6xiNJUYkv9UgEYCj2fwlFUpB+WHlRBBk6HHBwZZaf9RcJbz5VGzKJZER0tToIh64JWggIJueRGBiAcOpJaYhAh8STJ3KRRhmQVROQUr+XSB6U5bAEYPUJieEFfBhQS8mJhmkVtAOS71OAfdkTxPQEmUCRiOeWjxxpdXoJTMwpll+Zk8QZdWkJlEc5mo1zxkI0BFppoKwoVxgIVwqROsCTKTKAlcaZuqwQEqVQuk+QZTkkEMyX3C6QmGQmxeoYhNxY/NyQV5yQQY0JtpsFHrOBbpWJ23gFFqwZQldJya1o+IUEWK4VuLCJ6YCZvuiUjHdpPxWYcgpJdRQJb1GSG4OQd2+Z2VsZzOIlq1VQG6OQYTOT4QYJfFYZ55wElTCVf/+3khXwYBodlfE/obolAqv1kG5Dk4GaogZzliuIZcguCgIXoWO3l2baRJOZmi5rFgfdChLwqjz/GN23mQDuKTNkoHwdmjCuKLaqAfEWqfWfCIQMoiuZMxAxdrSboiETMEF/qk8QJ2dNNb/bIorkml+7FfNnWd18mlldGSaDBIYsqfZVcH0LgbpnmmOfNVShYtU+qmefFlP4qflUenYzoch1klevqngGoSH3KlvDcogRo9QZme7/cFCboiHSqc6CFe5wggc4oF2okzRepvBHqosXEAW8WjeiAjbcmphnGnebCmpPoXItCmqWqSd3mpEGWqZqBhrdogU1SrQoSrv7Oi/23QqH8Aqrr6E4sarNWSkcSaLAZ6ByDlgMdaLvSxamTAqs36Hk+zI9NKNfTpI4BTkoCqM2F6rUcCdF8EANRpcuBqCX16E5STp+daLZ5ajsniq8GKLe3qLRUYjmAAq/UKO4m6r4riKNvor4nyAQUgqwJbIt23HluKICh6sA77sBAbsRI7sRRbsRZ7sRibsRq7sRaRrRz7sSAbsuugryJbsmoBoCabsiq7sizbsi77sjAbszI7s6RGsxiyOzbrVPeZs/UhKBkAAasSAptpIemKsXWUqTxrHguatBvCoEz7tFAbtU0gr1K7Fg1btaRBtVJAsljbtV77tWAbtu7AtWKLD/+DiQhFW7Zqu7aYUKls+7ZwG7dyO7eXQLZ0e7d4m7d6u7d6sJy0Ua18uxmPGrgq4bGEay1Ie7gzYbeK27iO+7iQi0haG7kxy7iUixCWe7ldWqPbkLmaWwnV+LmiO7ow67lxgUOmS7o8QSR44raq+xQMWK6vGxacO7s5wTFCartG4Y/iSUcfp7tS4SSithuuYbDAmxM1VUTH6xW2pibSurxJQa/QO73UW73W668kdLbXe6Y1tb1aAX7ei5QSoYThixWTWr7o2xtk+rQo6zDp+74I6LKpGxsEC7/2C7PPOxZOc79FcSAQMrj8uxOeahLGGsAGfMAInMAK/EZAZLgL7BL/+eumV/nAFNysBVzBGJzBPZq2RTHBC9K+KfGhSCGgjSCuAjuZE6cdV7uWGiyzqCqz63tJarFf0EclJByyHuxxLUxwTruzO7yv03GgPzzEwTq/RHzE3WDEdgCsSHwSF9zEUOybCxvFFhFzpXHDUKs1VKyhW9zFXvzFYBzGYjzGZFzGZnzGaJyi0PfEadzGbvzGcBzHcjzHdFzHdnzHeJzHerzHfNzHfvzHgBzIgjzIhFzIhnzIiJzIirzIjNzIjvzIkBzJkjzJlFzJlnzJmJzJmrzJnNzJnvzJoBzKojzKpFzKpnzKqJzKqrzKrNzKrvzKsBzLsjzLtFzLtnzLuJzLX7q8y7zcy778y/5qAsA8zMRczMZ8zMicBsKczMzczM78zNAczdI8zdRczdacy8vcBNl8zdycENvczbHwzYEgzsVMzuB8znkhzOZcBOtcBu2MzvAcz/I8z/QMsu98zkEAACH5BAUDAAAALFUAagBrA/EBhQAAAPf6+O708v3+/WWak1mJguLp6EWKgp2xrYSdmd3l40iPhcfS0GKSi+rv7crl4VSQiNTg3nCfmZ66tneWksfc2Y6no6XCvXqqo1SZkN/v7HGmntTr6IuuqfT//WuKhbfY03KQjLLOyo21sLbDwez696+7uuH289HX1p3Jw8HLyXqyq4m+tzF1bBlwyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb/QIBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2yyV6uuCweEwum8/otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgYKDhIWGh4iJiouMjY6PVhNCA2sSkJeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxseQBsjLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eJWGkQkUiDj6uvs7e7v8PHy8/T19vf4Rw75/P3+/wADChxIsKDBgwgTKvmisKHDhxAjSpxIsaLFixgzatzIsSOcfR5DihzJRoG3ACRTqlzJsqVLbuVeypxJ0wmlmjhz6tzJs6fP/59AgxbMILSo0aNIkyp9dmKp06dQo0qdWgol1atYtYHMyrUrMAhew4rdFaJJirFo0zpCIICNCFtt1cpd+cBkmA4Ams7dy9fRTSsg9OrrS7gw0AhWDSsO2YAAAAkcFmdJLLnykxJo4ip5YLmzZ0KWPosezYRBlwJFNCdpQLr14hEbuCBwoiEmAAsAPkhl6Noz3mREHF/uTdxwhTYJMCRR3bls8edVcFeZDb269SMqnIQGhFoN5evgEwpvpCy8eYV2i0gH83t8swTn4yPTLWSrlthJzgnpnjc7L87yBSgMcwIWWN0FZFAwxVsGNsgTf28cAEVTrDloIU3U2dSEfRd2SP8Yflm4R9sQRAXynYco4lNeEwqm+AYKLv5EwHYxpvFXjUulh+OOGf2WWnRxcDjIjTwWKYtyWURmhIRgwJeXFBHQ4aSRVCIDloZ5tFjlli/Rd8WJNnIppjPHxVGmd2Om2cuUVlhiWyBeqiknTloWBOaceNJRISRespnnnzBFucVZyAFq6CH6meGcI34e6uijkIp5Zyb+gSFkGERGquk0MFpqhI6yMTEpEgWIuOmpgGC2RQEQntFpbmOs94QFraJq6ytMbhjJHgiMcOuvTUKSaIjLUZHAmUv4CCWwzEZBoCAI2pFpFqaN2Oy1ijDYhrZjlIilEaMeMS0AwxJSrhAWKIv/LY+NRjtFnY8Jce4Ve4ZIqLtMAGgtJBnut+6G4WYFIheN9tuFr1duEcC8q4ph8L8QH4EkAPpiYcIS3gYDasQcFztGrgfHkfGPcjxcxApwVNoxcYuCK2jACz4BLxUsbDLuEHGuzKyvbUgyc7BkrPiHjwlHIesRIOuc5gJcvDlE0kqYDIFguia7hI61/gGzHNz+urVkhDKR8xWC1mdx1GK0LMTPqQjwNRJHK22cv0uoNvBRJsvN18RGUMBzo2M4HdwSWbuBbCj2vf1E3p/dbGi9TmQMdR3w3n2QuoQpnvZ11S75KSAToGYqKJgxzsjkej/XtRTupWNE50WMXoXjSPBW/wZqPFehoKqp/yE0aagTwfTZVTtRc3+Ff+4s20mSGrwWzL+uh+a9RxW3EpAfMfPxR5TN8KxrLxQI3zAVqLJlG5x1ZfRUZA/AyMrfcqm0ZVCPJ+1q+jq250ESQf4bk5qfEmBXvWuNTULPM4LlYseXjXXGAmpbzALFkMAVVAxprPtWGJ6FBAIuAnCF4N4Q8GeOAjoENf9bG42SwLSw6U4LwxvccMymsDJAMBEBs10dSGhCiYiQCgnEAnUiSIVXJWiA2uuhEq2QvNV4KgpBLIm8ALPEKhaBSfC7QhTptgcBmu13i5igFT3URCykEGNN2KIXzODAMHKBh0Y6Hx88OJYYZv8AZULgAAhl+D7s+dEIWRSeq2qHCzr+gmoXMWSKwOiEMqKNgW7oTiBjwcFrMBIph6sM+6DYhUnyD1ZEyJ0OybXCM8DRE6YboxKuN5U9NjJ3jQSDJ5fhPlUyCzL74yITimYF+9kSGr4cy+iamL0zslCBfRwCz3hXw186Ew0UIAAvQzlCUq1SmZ4zJhJaJAkAuI6aGgxTRIL5TH84UgkL+J80dQkkI0qvnIcs0DnDwKo0FgFfeaQDPuF5iEt6Qo4aSZqSrIkEMQ5Om0toES9NUMYLOlF2ioHoTNw5mlIS9I9m4GVy8iMqAEwulWghgUT5+Qs8GuuTWUBNrQwKhePkko//mQPIwL43p8gQMaFQyMAPL0o2koJiloW4GFUsuoRuQjKZx0Tn5NSIVI5WcwqI9OkdYii+8TUHnUk9QgZMVaIDjDQKp5TqH2oluFt9dT9UbZMbzjoEgD7BoWKNGH0EqoSdohEOrBQCSL2wz+LtpGxxtcY3p7ACozomNmntQl/XCLfAcuKmTQOab2SJ0k2WgaaO5cPRyHkMLyJkAYnl5BCImlOrZbYae+VKzjKp1WmG1p4kmiLOiDDY09rDsmd46WQmEkWvQgFkLEUSCBAqhcS4Mglh1UhqPfOF8nhWKlF6bRry+kPcLTaDss0RRVxos72ko5ZFhSJQj2BU24rDn7EF/2UcUknaltgVhlpoIxFsA1g/BCCv5v0IIatAUWwuDgll/ewMBZlPMpjguWawXVk5q4nkjqK+RehvRxhMzwibYQSVpCZ6JXJdUu2UqYB8HmvkG6r8yoPCF4GrEAZWXvW+64VJaDG96uNgE7dCqB30Ex4xN9oyDJQl0+Rpj59wjreEALPsQcYA2CoL3drDrW1AsRuYydiOAHW8WUUEROOGX1Fk+FQ4NqWgIAzb2aKGBCo2XrziZxEeT4Fx3HUCgEC0uiFXB7cbISEJPbthDE4hzHFWpggQKl15dPnHYmsYGt7rCzxHjMx9IDGWr/nlgSC4wBR7wwcUaVo8jNLGbfstUv9bxGQhsBacRUnAUq9w3Dt8ehF9ztNy95sH4gIAAfM0Ar7SB5FXs3kPuQa1LZQT4KpOqAmIxth4JrgoGVdEwlAIdBUK7d/w8TJsHd5Ley/LEylHAbI7YTSMO80ER7sYLckOydaQ3D0o95KJoklg4cA72yTYWildXgyJAXzUJML7IMJZka9FRu7GZtffRb2Zkw0T637sexC13cKka8LpnoKPZJjWNYuYEGatsaLG8+2eWljqVwtjQdx2vmJGNENvnAIxo1Co85eC6opTdvyeUbEfyfWQsGJLJGuXLoOzMXrNtKjm5j1CbhTcDScJiQiWHon4k1RehZZnudxcoPaL+f3/ZCoMDNxhIbUgyrZwg5Q95LGUg7mRQIIbSX0jlU7CcIUz9JZEC0Igf3cA4m7qkg85yPVmAsrubY8gai7YfKDygFOy9jmkOxxBH7cafBS32tw1BTInF8IJQtXM+2/qMEWDSZG58TUMIPIZqbjp53GCWQ+mNHxIWl8HXpDCZRsJdSfD2824BNXrVSUTF813it1in1M90z+BAODPMN6W5w03u389VJEeETfz/B3BV4Ti28eRVsM8fEOQtuC7wHdwsQjS9tBLG61vB3aDA8S7LbHMrtZWkjxcE96HQv41D4C816L8Y7BtMnJScPITPAMhUaUoXbAB2UdbucdGw2A/gREH/2enbkHjY0rQcFdwe/4wLIlVL1qHDmwncXcFBu7ncsjgLt5WYexXBgI4DvBHW3WAXxyyHYTXAC1IERUQLS+YCCXiLtGHM9vhLtIBbZmBC5oTTCYAbqOnHmvAQQ8oDj34RlngeuT1awWmgTphfFoQhSVIRyg3EgUwWFZXekcUECuIcb0HbBHBdGOAflrgToBjUPukL5bQeEXghoFXD/m2Yi9HWQURhPHnMVZgAS12QXsCIqXmELOhG4+HKbugOYvoCh8wiQx3B57nTUNwak4VgktBbxxICLSnhuFAfU7ULQO1czKhhx2FakgAhxQDWHfzXp4IEbARDv7nDLD0F7B4F/9diFL2UIGBA221KEhlA4A6owD7xxEMIIwNUQA3gyyE5wXqYooQxoqgtH2g129C0AJMYIUNkYNT4HuqUCa5qAsO0ClhNSwsYFIvKH6RpUIEUYn/dX/mt3XN8wRZlDv06CFx1ofFJYq3sQnKADmKVDHF6IfLomj9IB0qVVdP9FRVAI9JYY9+twrgSDkNJi7ndo+jpRdSZ4q/iFTdUU9XgXoztmYaQSjTCEx+II6XABLLOEAwKQWqZlEA2ZBKkIkbaHFS4IwVgU+WODspRw8NWAoKcj69GAY86RBNyX1R4IX1NwW8IQBgZxDZgYdMSQjLJ2x/sCiP+AaC6BMmUJNoIJL/7UCRjICNTgiMOJd1LpEdYzkFY5Yvm0iKAYkRoGKE3kAdacgMkKOKUmkWRTGKUIkzg2mL76aFb3AsqqCKO5QKZdh/EYUsINeO3EhgEkmYE8YLU3gKofgJIlV/gtOVPHGV6TWC3DY7cWESXFgkTcgSsNRqQ9kTHTaZBdcEhumVcoB4XLCUh1lltGZwCkhxYfCI2sSWJdQhFJWTrDCTiAB1IuhzvvlWHoGSemCRiyRDE1AWyKhxmUAhwiEiRROW5JGBUdCEsakYlAGQJYACTkJauIkR5BhqoalY9pV2jwAB3LKefrYET2kYW5OQwdGVAYoQJzgLwGksx7Ggmdkt7ISe/4fwMz+WkQJSStuWAQTajDxiFUe5KxK6B3w5C/Yxh8Uxl5BJEt9JCtKpCynaCH/pGflHoKK2crpglvsiMWNQn1VwN2kVhlWAnenZkUOwoliFFYnpB2ARg7bCpGZyl4AkBB86B0lKgjKKdrxZCNhpmnGAP3u5MRzknlPZF6FYpaDGYzrCo2lAQL7lUVOqCQSwFVppGRbKe/4wp7Kgnf9RCHuVZkhUGEaKV33ENM4ZDy3pCwfaio/VVKIwIwqpn2HBWbvpi1xSqDQEBpx4B3b1TWqapbZVnRtkl+5XAf05dZ16hJfBl6g5Gq9yjlrUQ8FmpuNIZugXlvripzmqBWCyf//QCR5qaUIOqn+CQCBa+JpmkKm56pEVFiP+qSmMWZR0MCoagAAgEHFakqgApi2faWybyQe9ghZ4GpEx4qrrMYnUGmmMpEMCwGmZ9KaGEqx5WAd6micJmHhROQT3h6zg5KfPmqwgeoqeeqIcVwRASn53wmkxoQAVEKhNpa8l9mMoNiqHs60BWxgt+m09czW4qqxPoo1YUEnQGXeW56oVayDmuawSqSQeC6X/haUfsTrIcqoeVbJp0QGoQbIYiwdOM5cm9yymEaPHti+5h5aVcZ+gVmlEGzhTRG39qh+k2quKsIQ0ayQvqqhrZqzKiR0I4qjSxwZVaZdT+ycjYLQiGKH/6WasaxoGNKIkGBA8XBq2ahGuVYijKfWgwsla31mvYVAi90dVRcOJoJoVtFMelgq3w3k7jzpCI/pF8ypnDnsEObOqfWcgcitVQvoi/wk7xqoAtyezt8Z/GNha2LUYOGtCgRudIsd1RACLQNsE1Vo58vIBdCsgKMABKxteYdu4o4tWdOmyt2u6uBekMWa4stSsEUa24oq2JTgESWserAEBh/pIxLuawplxHdW6hSsnvzq9vtNBF7m6duCupJEeHIBk8zlGGnC+jHCyHERmxpsHQAkeyncACSO53Ktp3xuiYrC4QWskBXu/d+BmG/uVfxojSTO78nq6ntq6DLslryYk/7UZB+53sYEVvXNwaeqbWVUrVtj6Bo5RaHVaqRF6Bs0rNjSKI5fraeJkvQAMMSksMm/bBx7KJaUbteERwdghokc6PN2pwLAHtQVFJZ5ruMi7lSebMkR1FjbLwqRiwf3bwiMXCgOsBpMpbSsktZpSxFAsB/DqMFUzxVscxuQnXmJ8cGORoKgAFkYlKB1sONt0G3nTGPi5nU9cxr3rRol7qWkjvr1TuaMQwmnSFkNsx3ITJ1GywXOQMBRcBltVJJNKyNFGen5AKE2xd3Q0mqDFMa07x8/UxmsFySULH7LqBqPJAvDDs6ngxzQBEjUMypBrB8s1LXzsynYMIM+DLIJywv/OSsszNx6zTAa1pLe8DE910QhfR7HDLDe8BCH/C005hci2xL/E68k7SizJfM0MSaSxcivKi5fm1R0p4CtgXAnTtgZaDCxb8762xAGPi83u/M5PCM+uKM9i8MKg9stxoMr0DMUY8KJobEJuk8wjAHWAzAr9us8I3cou8s8I3aM4nAYHnSfn3NDkQNG5+Uz67M4FbdFV98lKY79l7MQcPRMNXJF57IKaCTFl0sV3Kr8j/dJIVNJSUMKaMiUTnVksLQobjSrUDNM9qSoIbJM+nQ2DDA47PQdBXVTC/C8okb1DHQVkVpLC9q1PHSGcXNVT28zvhtWeWq8xPLBczc/WHNb/3Fsp0DyQVfTIZL3NT+Ckt4J0Eb3Wwpuacs3LulvXeL0y/ZjXj7DJPIIYQMzXiSfTgl3YAhLXhj3Xic3LRb3YWyzS62ICCOIkau3Yln3ZmF3ZrozYmK1K6djZ4cTZ/PS7oF3aYmzPpp3au+wJOa3aMRK/OiPNqEDYndzOrl2xop06tN2l+5zR2KLQh6DZmYVAm3fbYZvJxj2mb8mb+AFaJrUC6vwvDZrcdKDLm3LUo/DVNuYt+OzTJJC1U9sAw4PK1F3e5n3eRTLK6A3RjrzecIvd/dfNwwzfAO3e9n3f+J3fBhHY3aXfUtXY/m0dD40Iux3gkzUKX2bdBr7gq1Dg/wz+DNDm4A++KX494UpT4RbOT+eA4Q191+bVTRKe4SI+B7I94u0Q4iZ+IcB9rykeKU4NiC3+Sxwe432DInvnB4g246oN0tBR4jR+Xs/h4T9+K7Y95K2g1Uae5Eiom0ZA30reGjr+5F4pp/iQhq0t5USN5VSw4pAi31puK4ucBEf841GeIqqysT395WqiMoMmHKHFO4CF2mq+I+OCliu0D23RABXD33O+I8/VKi1XL5AdDTcj5H0uDuoSG5BzNDyOi1nA0DWB4rY1P2fxUs8LrYcuJ76EGxmc6ajSnVAQ5p6+KV2MzPXwNnI+6kteo6rOI+rtuq0e67IuErlNEXEh6f8O8uodkurj9Ct8/hxUBuCzvikJiuTDLi5XXhz8m+ayrpwNwOzXgevHPu1V8Ig+Tu2wUK0Xpd3YfnXjGwALmpjdlG6N3u3yAe3IhxO8PiaDnhbJDhTgfriPkg5nPRfortoeYOjhbdjCbe4N7u+1QEcDIFSk/RLtziOQbh72AWWd3hHbWyXXPhZLzZ4AX/Hn/e4YkfA2bvEx5UyQbogkLTdcrm+x090c/2fgAd4nnwblLiBlztgla+wrD5eLAdtiwe0/UeuFQN5dYdYJNhLjvDOaGOv3nhQ2nwgTbyEEMvIJ4R8HXx0O8PJ7cfQ88fAz/3+zZermLu0G0vARUb5yo/P/1eE67qTrFh8Aws4VBtDyenz1aODDXaHvbt+Ycw8pvz4aMMP1ng5yDHDTQwUgel/33nwgOC/4Z1D0UuLwbED15g7y1QH3hk/k+Rv5Wl8IGF/lkR++ma8p1VL4m6/pnw/FjBP46/DioX/6qJ/6XC31qt/6ru/Frx/7sj/7KsH2tH8haW+jt7/7vN/7vv/7wI/VSR/8xF/8xn/8yJ/8yr/8zN/8zv/8XnH5EqHy0F/91n/92J/92r/93N/93v/94B/+4j/+5F/+5n/+6J/+6r/+7N/+7v/+8B//8j//9F//9n//+J//+r///N///v//////////////////////////h/////////////////////////////////b6////////////////////////////////////ExH//////////////0/gAv////////8v1xH///////8Pef/fGjT9//////////////////////////Yv9s30//////////////+/FBH//8gQBAAh+QQFBAAAACxuAJYAUgPFAYUAAAAAAAD////+/v64uLgKCg1OTk+srKwTFBjk6OkkcWdra2suLi709PTa2trKzMuQkJDAwMBWVlZFRUWgoKEweXBxcnE5ODlcXFwbj+2Xl5c+hXuww9P6/P0YdNGJiolgksJ7fHtMe3UkZFsgICCCg4GFs9QUZ7qUx+3u+P5PioGysrKHnKtaotrg4eGo6P1iYmILXrRkhaAdeNRmm80AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/0CAcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdjvdcL/gsHhMLpvP6LR6zW673/C4fF4U0e/4vH7P7/v/gIGCg4MjhIeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsOVFcTHyMnKy8zNzs/Q0dLT1NXW18rG2Nvc3d7DCt/i4+Tl5ufo6err7O3u7/B+dvH09fb3+Pn6+/xE4f0AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4KWnLybOnz/+fQIOOnCe0qLt/jXYaXcq0ElGFXppKDWUIgFIwI5BO3co1oAKtXcOKHWUM7NizJp+iXcu2rdu35K7CnUu3rt27ePPqrRfV396/gMOYDUy4cJXBhhMnriBXsePHRvr6LYIYsuXLTypj3sy5s+egjdVsCP25NE/NkZOQFoLatGuIV1tX1lr1te2prW/rHps7yurdwBl+DU6ca+/eStQSkVy8uUjkzqO3RBrbCfPU0rNjHK69+9zB172LvwhdSu3x6FWCLR8sfPr3ac5/+Q1/mfL6Ytjj30+QPv//Ka3mHhbyAWjgOHL5d+A59y1ohYIORrhOgVCwp5+EGG7TIBcXhrH/YYamqACiaiOWONCHJqZ40ICUKQGhijDGQmF8RiDFYow4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xiLrtXDJnmmA8icS5nnuNievLHMsMc88TM02Q8RdINVyEjAkFdODs1sRA9VxE/lmm8THN128V7MkD5zzjj37NPHUxWEdW7tad+3112CHLbYYVY9NS9TutGx2FEEjVnR+SePSNiVMJ3X0E2hrl+vMc7+X99qAX6Fy4ELUndndhKNazc6JN+44flxvtvfjlJvxti2RE9RF5fzEPYfhnEvleeik7/VysaDrwXjprLfu+td0mvf67LSrk/967fOOszruvOs7dO/ABy/88N38TbxHxk/S902pvcvw8seztHv01NeUuZvXV5/m7dpL3X1n3GuWPenhf6/ctlH8bP767M989dSjty///KjRL9Pl9uev//789+///6GAHgAbMbl8CHCAgzkdAv2ivgU68IF9OCAEJ0jBIbzPNHlRYAU3KBX0aWZ6HAyhCEdIwrlIsIQoTKEKV8jC5JSvhTCMYesu6Jr4yfCG+HAaDqeSvDbgb4dADKIQh0hErdmwiEhMYlM2p0RqeLCJUIyiGHQoxZmMr4pYzKIWt8jFLnrxi2AMY2auKMYymtEoZKzeEc/Ixja68Y1wjKMc50jHOjb/yI54zKMe98jHPvrxj3/6ISAHSchCGvKQiEykIhfJyEY68pGQ7NILI0nJSlrykpjMpCY3yclOevKToAylKEdJjDWS8pSoTKUqV8nKVrrylbCMpSxnSQwm0vKWLsSlLnfJy176IXZEAKYv3QHCYYZjksYszbnSmExxIC5CMDFlM7/3zGla85rYzKY2t4lDaXLzm41QGzjHuQZvkvNL5jwneBoYRkGq853/QyY85/k/GDCTnvjsJTvziQ4q8vOfAPXTEwNK0IJeqYcGTehcqqnQhjqUSekc4D4fStGKWpR+Eb1oMdyp0VswtKMgDamABidSXGiwpChNqUpXuoiBsvSl/zCNqUzDlIGlzfSmOM2pTnfK05769KdADapQh0rUohr1qEhNqlKXytSmOvWpX3EpVKdK1apa9apYzapWt8rVrnr1q2ANq1jHStaymvWsaE2rWtfK1ra69a1wjatc50rXutr1rnjNq173yte++vWvgA2sYAdL2MJCJwIBSCwR2tMew4LhAB2wgAYeMAERhACxmP2oY5FgGAs4IAECCK0RKPCAAxigAahN7WafEIADYCC0BQCABRZwABDYNgQi4AAFQvsBBCSWsbJb7RI4EFoMXPa3SGjAAwoggA+YFrnCTQIJQDsCBkCXCRaQgAAe8NvfDfYBAqDAcw1w0iG81gHdjf9uEYiLAfOQlwoZCG97FKteAFxgu+71rhEWEN78qncC+L1uFfjrAP/q964hEMAG/JuF+D6AwY4dQAKEQF8tjEAA26pwYTUggNsIOAsJqACECSsBD4xYC/HN1YcBy+HerBjEIp5vcAM7ABG7d8Z42VYDNDyEFt94sAle1ouVsAAZEMAEQjhBC1QgKRAEmMd+BS8roLwEFJiAAEY4QQokVQEKUPjAcXXAAL4MBStj+QgE2DIRLiABsZD3vYXrawIW/OYnrODKSjgBDEBEAgxDOGIcLUIAQDACIUyAOeQlwQcOLYQMeNkDHnzAB+x7Htd+wAE1HUKiAUABSLv3AjUmKdL/HiwEB1y2AQsGgAPam9hM9/LJvzMyE1oQOwHMdgXCXMKOrRCACph6AgXIAFESW4EEjIAoCEhAaRcsluV2YLocGHSnF6CBAlTKPAtQ9gEcEGNniyABzlsCsQst2x0vYMyyrWkARvABzaoyBBLQAAgOQO8nWBkABMh3Ek4whBIkYAYyOIHABV6CF2ThVoTmyQYwMOwRbIADqfYAw4VAWgBgQNgAUFkApotZiX95AoUedGwDMICuEGXSSINABfwTABGYWNMBuEABdxlvEiDg2khDAb71jWYF9PvfJVCA0IVegnSS4FzDBkAHKtABZBeA0O1VdbSJTWfmsJoBDrhAAxBA/4HNVbjlBRB5hpfuBGk/QOJWCYBnz34B7pS3lfFW+rOf3YQQHKAFV+a5EXwuBH/XIOhDV0DRw7IEEVBgzsypwAXWPXEhICAvVZdtAkyrdAlIONX5JS9yNLDxAUw5BE/XdBHS09oSg7wAC4i5BDgwAV+TuZfQXg/OlZCBEACbAWbWOxH4DgC/A17ovU+aOPeLdNktQPExb7fFJx7zGku86sn2beflfW4OwNwADBjAsU87gLF7nsITo4BzKcyASgVA4sh2r7V/3MvVD5oB8C8mAJATX8/nXvcA4H0JtnuCwPfe4FjwMsjBHBYQdsXmAGJWAMdmXa0ldYl1buqWfO5lAf9eFlwqx3wQMAAq1nowVwQeNGglknwbByC9dmiPN0wF8HJUZgQ6YQGwpQL3d2YAQAMpIAQp0AId9gIpsINqAHrCBgEIuHEikAEI4AEOcHQqIxYFuC1ZYltqlwBHh3XoRQI/GITwZx5GmFjaV3bw5lsgUACLxwFP94SXpX0Z5UkbEFvspwRKKADaZX95l28EMHjmJQGvF2dXAWwfIH4kmFgON2wvVwCM5gESIGI1JhZi2GWTdn4DoHaWRwGQ6Fvboojyt1jV9gEp6F4eUGOCiG3GBGAZhjNtGFrhBYNxeAIv0DM1RmZgRgVEUX6XJWi2RQQLYFnMgVrzl4uFQwIhmIv/DEBvwKgTrTZzKWdZi1WLh7KCtNQAsMYEoyhacDiHqUgEB2BrJ/ZXmMiKbChbpOiGnAaDNCAqxDVlrRhXItBh1zh63FgAoJV6O/ZmiKVpJZaOfzUA6KaMcQZgDABeFwAAtPWOikUU9xWKjoUA1jhkccaL8+eGvziL8LiQrIaPfuUBfoaPjQUCTbcBB0lfiddma1hYEJAAY4aQ5jFvtdVnIxmQQkBc60GSgEVg9FiSwLUB3CVjhtaM0WWQiwhnbJgaA+he4BWR5YgFDYBbrqZVBul5LhkBJjmAfigAIaeSPnRPTZVttpZeSxN/2DYA24WV9aVpFNl1XnkEROFaAoB6RGP5lRbEXCUHkKLCABngAKG1eC75lYYHWw9nASKAABnwACOwW2f5AAw4lI6lXITYjUPwARyQenWplpxFb3Y3mITZVEEAACH5BAUDAAAALHcAnABJA8ABhQAAAP///wAAABh00v3+/vf39+Tk5EBCRTk7PicoKBUWF6Ojo46Pj+7u7nh4eG9vb0pKS9vb27a3uGVlZVpaWjExMVNTVJeZmx8fHx2V9L/Dx8rKyggICYWFhaysrL29vSprsPv7+9HR0Q4ODhFuzSiL32S6+COZ96fm/WOLutT3/sDW6X2x4ShyaEKCeczo+y1/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb/QIBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2e3Rxv+CweEwum8/otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgW4tgoWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKzSoS0t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9BDXtHU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wADChxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsuWnaWFgupxJs6bNmzhz6tzJs6fP/59AgwodSrSo0aNIkypdyrSp06dQo0rtZ0uKzKlYs2rdyrWr169gw4odS7asqqpsrppdy7at27dw4zZEK7fuWLp288LFa4Wv3r8k/QIOKXiw4cOIEytmqXax48eQI0ueTLmy5cuYM2vezLmz589lCoMejVA06dOoU6vGY3q169ewYyNpLLu27du4c+vezbu379/AgwuH0nq48ePIkytfzry58+fQo0ufTr269evYs7+irb279+/3uIMfT162+PLoXxVPz17S+fbw48ufT7++pvX28+vfz7+///9CoIWfVgMCaOCBCCbo0nsKNuggPwU+KOGEHkVoEoMUZqjhhnFgyP/hhyCGKOKIJJa4lYUmpqjiiiy26OKLMMYo44w01ggIijbmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYaoNjllx26eWXYAYY5phklmnmmWimqSZoHq7p5ptwxinnnHTWaeedeOYpZZt69unnn4AGKuighBYqxpaGJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpXvKJ6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQeqdqtNRWa+212Gar7bbcduvtt+Bahmi45JZr7rnopkv/4Qbqtuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdlY6L99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu//vtuOeu++689+7778AHL/zwxBdv/PHIJ6881gU073zzyy8BfQQfLMBABwwsoIEBBhDA/fcGABB+9ER4QAEG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ihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fP/59AgwodSrSo0aNIkypdyrSpIgW/JjidWk0igBhaFlDdym0D169gw4odS7asWYxQz6pdy7at27dw48qdS7eu3bt4QdrIy7ev3784YQAeTLiw4cOIEx90oLix48eQI0ueTLnyOayWM2vezPmO1c6gQ4seTbq06dOoU6tezfr03tawY8sWvWK27WE3buse9nq3b2i5fwu3WHu48ePIC/ZOzry58+fQo0ufLsyrkeCgBFPfzr279+8wETi5AL68+fPoiqNHqD3m8i2f18ufRGC+/efW7+vfb2C/f7nv/SfggEJJReCBCPIkXoIMNujggxBGOFt7ElZo4YWZkIfhhhx26P/hh1pgB+KIz1BIYluYnajiigBpxeKLgKgnUoAw1mjjjTjmqOOOPPbo449ABinkkEfIqIaGRCap5JLdxMfkk1BGueQHUo7Y3zUp5phllc+4yOWXYLbmZIxhtmYiThCUacyWarbp5ptwxilnKjQidoORJCI555581rhgn4AGCpmIgha6BqGGJqroooxyiWejkEYq6aSUIsXmYYxVqmkjl0qXVqSPbiqqGX+OauqpqKYKUalHnKnqq7DGKisurs5q66131YcrVZ3u6uuvwAYr7LDEvvJpsQeygOyyzPpmQbPQJjJmtNRWa+21kvaK7bbcditoqKdd6e0dHYxr7rm9iIv/7rrstuvuu/DGK++89PZSZ7345qsvavfu6++/AAcs8MDDIkrwwQgnrPDCrxjMMFwOPywxKscSWOvEGGessWPTbuzxxyAfB27IJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fWOunKb39dkl2322WinrfbabLft9ttwx+2WunLXbffdePejZ9589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcuuXQGTm755ZhnrvnmS+/N+eegi6Vt6KSXbvrpqKeu+uqst+76qyO/Lvsfo89u//vtuOeu+9+x7+7778AHL/zwxBdv/PHIG6Vs8sw37/zz0DsUcfTUV2/99djLW3v23Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//3456///vz37///AAygAAdI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cMct99znTq11F2/TrffewGzAt9t/d3p3fIEft0jDJhS+mAf9LKh4oXk/XtzNkldu+eWYZ6755px37vnnhwyeduSg10V66ainrvrqrLfu+uuwxy7746fPbv/77bjnrnuWte/u++/ABy/88MQXb/xAvR+v/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334GfFa/jkl2/++einr/767F8vevvwxy///PTXb//9+Oev//789+///wAMoAD1kLwBGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQmOvGJUIyiFKdIxSpa8YpYzKIWt8jFLhqigF4MoxjHSMYymvGMaEyjGtfIxja68Y1wjBAY40jHOtr/cYzvu2My8qjHPvpxdXz8oyAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0lJGgZyXZUkxxwzOQxOevKToAylKEdJylKa8pSoRFEqV+mRTbLyG4x7pSxnScta2vKWuMylLnfJy176knC/DKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yc9++vOfAA2oQAdK0IIa9KDRu8ARJoBQNjBAAxTAgAkSx4ETTOAADT2DBDygAAEIAQQgAAAIBCAAEBBABRcIQEbD8AEHeHQB/yrowEWHMAENmIAAL5WASleahQ4UQAAOCIEFmDCBEYwUAhnYKU+pYAIBKEADSnUCAjxagagu9QkREAAGrPqECyRAq1y9ahIu0FGoXgEDAhBBWMVqhI4yYK1RoEBa4cpWAGT1rVtQgQAQQNerotWsXNiAADrQVztkwJoSAGsYCgCAwtZBodUkgAIcO4XEjoCycoDsNCsggKpKIQMMkAAALABXEQgAo3wYgBA0K00CNDYKDHhBCVAghBK8IAZhZcBeMbsE3j5BtaOlpm45wNsWzJYERSCBDB7wACMkYLJZAO5CrQBc1kITrdZdQgtQgFwk3ICrHxisdK2Q3cZagKFUqP8uNR0QgeY6gQElIEF3j8AC3BpBsVVQKXqPEADQpne1AfhAAgggAvROQAQR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T768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIIgcfggxBGKOGEFFZo4YUBOojhhhx26P/hhyCGKOKIJJZo4okopqjiih1qyOKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5YobXKnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEa6xAmSVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqv/7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXHKyLFmes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJ1Usr001BHLfXUVFdt9dVYZ6311lx37fXXYIct9tjHYkz22WinrfbabLft9ttwxy333HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KT7W8HpAFRQehYetO6BEK+vDgUGADSQ/0AECTRAAQYB9B6A7ExQgAABAgBAwAMFPEC8AAQAQIHvvwNPRAUREH9BBAwUwYEEDERwAfMRVOC79LULIEAGvDOBQQbmNzD+6hJ8n4H4UFAvwAUSvC86A8xD0PsUEHiAABigv89RQAAOMED0quAAATzvf5/jnwIgeAUFDLCAmsMAAimIBQQIgHcL3FzyOJiFEZLwchH44AmvoMEIYLByGrTACrGQABWG0HLDe6EWCDDBGUJOAgJw3w250AAbYq6GHPAhFjgggAQo0ACXK0APy6CAAujwDxM4ggO2gIAsGsGLXMhAwID4QDJsoIgbSGOWEIEAIThAAUJ4ABGkuIUCxP/RDBHIFwc6IAAISOCPZBABASzwgUJCYosAgCMSxPgEO5psfQ/AQPbKIMgMiOAAB+gEItOASEa6kWAS6KIE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turqq7AKpmqsXhlJ660o4qrrrrz26uuvwAYr7LDEFmtsTqweq+yy+0TGLLG2PltdstJWa+212Gar7bbcdgtYtN6uB24ua4Zr7rnopqv/Lm6druvuuyjNCu+89B5UgX0beEttvfz26++/AA+2b8AEFwwWpgYTJ2/CDDfs8MMQt7hpxBRXfOvAFmes8cYcv4hUuR2HLPLIJJds8skop6zyyumOm4TLLMcs88w012zzoxjfvFTOOkuWb8/rLQz00ETPwXPRSCet9NJMN+3001C3+HPUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu//vtuOeu++58gMz778AHL/zwxBffM8zGJ6/88sw37/zz0Ecv/fTUY+179dgPJrQS12fv/ffghy/++OSXb/756KevPp4Tr+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMgjBXyQkjCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohCHSMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMohZHFIAuevGLW9TCBSrAgQc0IAENQIACNlCAL3oxjFO4gAYOIAABAP8gAwdwwAEsUEcBGEABbXQjHJ3ggQjUMQIcAEEBivCBDSDAAXV8wAfcGIBBJqEACRCABTgQyCVg4AF11IAQwGjJIlQglG90wgcaIAAHvIWUpQSABvw4yQEMQAoe4OPPUmlJBAgAAbycAgMEcC8ABHOLs9TAMadgyF12cRGLXCQEF/BLYz4TCwYQQGSWaQhpOvACAkiANSspBQyAAAO17KIFHEDOayriA95koAEsMM4oFKADKHCBPgnwAhDY0gMCEGU9zRDPUYrxgR0g5kCdAAIUkIAAECXBEGAggQCw8gOjJOcYbimBIkwAAM6yAkYdmMeMQuECDo0oAYpA0Q/8kqP/thxDSD0KUizAs4GnzBc3k5DSiB4hBAHwpTTd+QWNIsGoU7glPAOAgQQsAAAViEACphqBDnhx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yLGjx48gQ4ocSbKkyZMoUz6hprKly5cwY8psxXKmzZs4c+rcybOnz/+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2LL2aZtOqXcu2rdu3cOPKnUu3rt27ePPq3ZsOLRa/fAMLHkw4nrXCiBMrXsy4sePHkCNLnky5suVaEC5r3sy5s+fPoEOLHk36IuDSqFOrXs26tevXsGPLnk279pDDRU7b3j1MN+/fwIMLH068uPHjyMf6Ts68uXOYy59Ln069uvXr2LNr3869e93o3sOLd4d7vHl14M+rd53+SPv10U69h0+/vv1c5e/r15N/v///AAYo4IAE7tNfgQgmqOCCDDbo4IMQRijhhBRWaOGFGM4zX4Ycdkj/1oEe1rOhcSOGaOKJKKaoIhkgrujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBilEjkkUh+R0SLSTbp5JM2MgnllFQ6BUJqRlap5ZZcdunll2CGKeaYZJZp5plopqnmZlmu6eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiP4pZaKMNuroo5BGKmlIi05q6aWYZqrpppx2+mdmnoYq6qiklmrqqaimquqqrLbam6uwxirrrLTWauutuGZaaa689urrr8AGK+ywxBZr7LHIJqvsssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar/+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbv/77bjnrvvuvPfu++/ABy/88MQXb/zxyCefIwQNcJDAAQcAcEEFDywQgPJIgNCBBgMAMEABCCAAAPfeO9AAA9gPYQAFA2CQQAMbEFDEAg9kwL70DFyPPAQIfK8A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K6Pr1T5UljDqCDL/AcR+F0Ce7WUcdeLenrVd7rgr5u2J5WyM7hvc7GJMFexOyYhA7+4OEp8+7bBguUsh3vc+EjKcCys268xGClyuK2EeQrEtCfPj70tB8MVR5m77gNmO1SUe7o/B7cpIfMET657A7/+eVR9FZL17XfBtE8pDNBAPJ/DeIMM4oSFfDTrexsyN7Lux8jFvEdAVHx5GTvHOF8+hRtCb83rYoJsKm3W7GU5T2UQfEjozjd+O6sKuak1PFQxWMCev01VvF8QKf6Yh8VtfOJDg6OHtkWF/TZGxDBf7N2TvKJx99sgFLLuZT9AO95MbdDVv9zVm4lvOxI20MOee5jM/DrtMIRiv//cZ05Yl4mCIX9CSbhmFgu2NLxI1EueJbRuqPvnt6PWa7zDLPnudTxPs7iG+HvrweKRYwn9rpvGm71wJryZQA+pOYe++geTicOrUMfi90fKtDy3o0vsxdm4g8kXAT9io763FTwy6n/y7kOHMD5eyzxas7ywfwO5cPPX63oPPjxhRPxR3U0vTj8vloxoOsK7bjxRiouLnT9yCEvDrH65+zzDA9f7Z0P358fhpzvQR8dr0ryunIuj93/8nEf39n85qsvz938rZL4HI3//qbPDB2/+68LvVgPtpkfX9Dwserycq9/P9/79riP/9HzPe4Rjh3//LPQji2P/Xa/+su/CsYf8D0d//l/EaHqL+/R8Qv9vcgpHkzd3/5h68/d///Q8nlt//0mD/v6H+/d///U8eK3P4/V/OnyH5/U8MDm/bmxH9/d///e/NlZH1/Z9YxN//GWz5/X9s/Z/BAtDp/d///d//6M77/Z9wON///d///d///d///T/o+N///d///d///d//V2Lx/d///e8Kh9///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d///d////3f//3f/wYRAAYQAAEQAAEQAAEQAP1/vQGwAEEkASTgAZnf/9IVABNwARsgCAUwCCcgCAWgAA6Q5P0vXYAQ4NBSsJFiglECAPBRwoAgAQFQkGGxeImZqbnJ2en5CRoqOkpaanqKmqq6ytrq+gobKztLW2t7i5ur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NOt4orEEMcbLi22MaMytzghwcUUS0cadjo2I/U6bHSFtzp2OJc7mUMYfHGulxLWC/wjX5qYICdoL0/DUk8KCPKgBEaHGj1zEEKici/No9I41epRq/ZZR2ZFZ27itT/YIpc2BLJLEJkoCMPZvLSsC9uWN/WtpTyaaGVjsBp+JM6rfzcyqISDanXFLDH81Cm6OODjd/2vKIFgY2F6O0qpr6ExSM0DTWcbJidxsEf/VOEADP1Bq+03fPVCfOSgRCMdxVyaML5hhfm40XSnygA1radI+EzlqXp7kJtes8VgBFdxIYrbyNE5HRcjpH2SBNdPgC42CEeBOyfKnPUYIjulywfU0k8g4ZcsYC9FJGP/PG7+I1a4/TK3xN+fVeWa4vUXjtF0QvlvmUnwO7yyyJ87gif9MdED/TDPeMERIg859zypXkOHhZaw0gQnCm1C6SU++Qs/QYUmfT8OF0CLAvqiBUwC4c4RAN0V5S7tsgx+I7x4kcKJoxcBF9R2ttpBJoMLwYPUc9QSJKFufAWUyQrGqM6LgFm/+9Sw1sCd5ag5WKyDFkuHhsZ00FAI6P+lVzpINatZA52kX364WEDE4BH+D9aKZGayc2BFkYv0AZXT/VTRYaHjE6pB8UnX7j/Tlw0RAy7147QjBLnPVofvGd8RNAvVoIylmksnFSkC4gzl4AqRKJSnXOg/5a/Cl5YYXXLLSp2SRdyCQccggdZFnedAgmkjnQ9AxpEL8qJa3+fuBd4v/PPKUu3nGHua4dCpxYvhUrIl0Ueme1+9SvhysjAGzagKHQfqoj2ryoAJCp12FiGGp1/pB/vNUHAEV+MDA3vq1HmUL4elURACmexQ2HPuAtqoBjYHT3vSQj8gVqW32a/t0/myOtpAEdM+VeO/awMi8j2T76fQFiTP31IFsB3rCp+RX6pzS/nUW2oBHd/zLh/OR+HnM53yx5Xk0M9jOZ92K/nVspmeJuG3RF1ryFv02U33CJ/3Xl32endbZt/2Azfrb131ObZ7d9/3fB/7gF35kG/7iL837NP7Ln3Utlezkd/7S9PXn73KWRlxpl34rf/JuPfvr537/O/rG6n5At36h/0Xr8Df/80f/9MdD9Wf/9nf/94f/+Jf/+af/+rf/+8f//Nf//ef//vf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5d0AVgAJ/CVQlgERpABMf7//78mAciARSAEgWgAAIADOIADAGiABoCDQnjk////hAKICo8aNCC0yAkDAAoJLECR6BGcBnASKaxo8SLGjBo3cv/s6PEjyJAiR5IsafIkypQqV7Js6fIlzJgyZ9KsafMmzpw6d6IUUGDgRAkdfd4gJFEGz6RKlzJt6vQp1KhSp1KtavUq1pcC6hBkNFKAE6OFspIta/Ys2rRq17Jt6/ZtTJ+LGjxaUNIno4IJ4PLt6/cv4MCCBxMuzFJug0UpwUr0Yvgx5MiSJ1OubHkyYooqBTCAA2fv5dCiR5Mubfo06osC8no9zKBg6tiyZ9Oubfv2TMZjXerG7fs38ODChxv2CYdQ3LwuiDNv7vw59Oi5lccVQAiO9Ozat3PvDtwn3dwuGijybv48+vTq/a5ugCK3deTr59Ovb//+TZ+EHtUcoKj/QQX4CTgggQUaCABj5dEE3m5vKWZSgwrxl9SEB1p4IYbOtWdXTQ9AlIFl2IEk4kUkZngiiime59Mj8tEkiSSLwKEgbRFi9KCKOeq4Y3DGPfLei5JA0sAhk9nII5JJKpkdeAfVBOOQjEASmolVwVHhkllquWVSnDWQCJAgRQIAJWOCBCUci0zJJZttuvnmR17S+FEkkUAiQJlnCglHIWvWdiScgQo6KFReaiamnU44kadHkziaph+WAZoRlipVidGlhGq6qaCGilQnJP9lQAlInvZVKUsN2IQqp6262iaDn9oJSGMCxIkCea/quiuv2+nH6kagAgKARA7EyZWxvSq7/yyzuCEma6jEFuuRAIVk2iy22WpL2VYAhuSHH92qOu1G+rm4LbrpqgtYrCJtRay03mokAK6HrnsvvvmWxeK15dIo0XGgYWRrAwroezDCCT/FmL3UckWIUQ74NK8BDUyqMMYZa3yYdf1mtBoc7RVCgBMogKjaXCdvvDLLLX/lQGIh0fuAAhlEVO4DFru8M889q1aIvNTa6sIAQLemWsc+K730yvoVLJIXCcB8KWJOMH011gd76fFCFilQwCJzLjTX0Vmbfba2jH0W5wAAMGCrygMEMBeOaNt9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K++89NarVrz2Znkdvvn26+9zwvH7r4/ZSlHwwB9Ci/Bgf5Krh8ALRyyxXgePQezEyfKK8cYcd+zxxyA7cXHIvsULMckopzzUyY3AqvLLMOPh8D4VxwxXzTbnrPPOPPfs889ABy300ERT53IfdLGLc9FMN+3001BHLfXUVBez9BiKVq311shczbV2Xn8NsNgMjkz22WgbEjYca6fNFMuDuE1WV3DLXV3dduet9956t83334AX7beNeLNtduCIJy7O0YrvU3jjkEdOzeGS9xgCg+9WrvnmnHfu+eeghy766KSXnpvpqO9yeeqst+7667DHLvvstNdu//vtuOeu++689+7778AHL/zwxF+TdfHIJ6/88sw37/zz0Ecv/fTUV2/99ZGsjv323FuY4OPdhy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMYHAkSMFGga+CGMygBjdoNQ568IPl0xgIt5GrEZrwhChMoQpXyMIWurBWjHuhDGdIwxra8IY4TFgOd8jDHvrwh0AMohCHSMQiGvGISEyiEpfIxCY68YlQjCLiBifFKlrxiljMoha3yMUuenFaM/uiGMdIxjKa8YxoTKMa18jGNrrxjXCMoxznSMc62v/xjnjMox73KIrM8fGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4zKUud2mNzJWQl2kQwApIQAEGDGEBCEDAASRwPGCCQQAYOEAAAqBMCgxBAhAwJjUpwAFncgGaCAjABRogAiQIUwEWAEAAClBOb1pBmNI8QDPrZIAFBEAC7qQCNAGwgBlMYQAdEOcv89kEATRgne9UAAEI0E6CLsGg98SCMC8QgIY69AgQxacWBEDRFVwUoxMIQDq3IEwCGPOjRRAAAk76zZBWAKX/QxBAQC1K0gpUFKbCjKgYVHoAnFogAGQQQAYCMAGUniAAHSiDSiHwUaHeNKgBbeoBLmAGAXAgABgIBFOjUAAk9FQK1hzDV02o0qSW4QYwWAA3AUHVKLB0CFsFQFuLENYFGOGtThirDUUQUhKYIQYtKAADXsDWI+BVrnQI6w1HMIKhnoEFLaABAgi7CcVO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/wAAAP7+/rm5uTo6OjExMRh00fr6+tzc3BwcHcLDxENDQ42NjZeXl21tbSQkJHZ2dmVlZdXW1/T19hQUFFFRUSoqKu7v74SEhFtbW+vr65+hpK6urgoKCsvO0BRtx+Tm6H19faioqLS0tMLj9Yyx1FSAoyGS7ECBxjNvrUez/qHI5mibzqGrg4CdgL36/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb/QIBwSCwaj8ikcslsOp/QqHRKrVqv2KzW6Np6v+CweEwum8/otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7vC/8/wADChxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJEiGCkihTqlzJsqXLlzBjypxJqwvNmzhz6tzJs6fP/59AgwodSrSo0aNI8/lLyrSp06dQE9mMSrWq1atYw0zNyrWr169Mt4Ide3Qp2bNo06pludXs2rdw48qdS7duTbt48+rdy7ev37+AAx8R68Wt4MOIEytezLix48fZDEOePFGyEsuUM2vezLmz58+gQ4seTbq06dOoU6tefYcw69ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+dTMEOfTr269evYs2vfzr279+/gw4sfT748H+nm06tfz769+/edXMOfT7++/fv489dGr7+///8ABijggAQWaOCBCCao4ILz8MfggxBGKOGEFFZo4YUYZqjhhhx26P/hhyCGKOKIJJZo4oko6uRgiiy26OKLMMYo44w01mjjjTjm6J98Ovbo449ABinkkEQWaeSRSCap5JJMNunkk3nxCOWUVFZp5RZSXqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOappxBZ7unnn4AGKuighBaqTZ+GJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqv/7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUI0cBAphjXnkRExDgQAagZzDCAhtUvsADEAiguhAVeKB6BQxwgEHkEABQ/4EFDnwQAgYBBIBBAiQ8YIDqEiTAOAEKCMAACSch0XsAE0TgegSJByCB8lA8L4IAFSxgeAipO0AF9MOLP3gCHlQwgRW9X5+B4CHYXvoVvW/fAOABQFDB/FkEIH0HfrOeANa3hd5ZYIB9I4EAOACG3sGOb/ljgBgCoMAR6C0ADkCgEp4HgAl48AkBYEDt8hbBDfbuAy0AgApWmAITzG4JAViAAAB4NwoKwHvO650JVECEA4AABCkoARNKWEMNKCAJz9uhEXzoQyFusAECiJ/dBlABCeRwAB/g4RGYmAIYos+CfOAAAwrwgNK1zwAF6IDviGABEVhvCBqQwOU6UAADaP/AeEQYQAYkKIIhIIB6acxeHwFgAQsYD49CoB4A/lgu6M3wiidQAhNNoIQFTAACxdMDAjqggA58oAAaOOMEHKCADwRgCCRggAUoKITg1Q55DZiABgxAAT9GwAAkIIABHrDICNSOA90DoQHuBwDZFdMAqFykBJBJrg2MQIOcS0ACFqDFJDBRCShYgQUKQEk9gO6EF0DABiDgPevxUgi9S2Pv4NiAAFjAiou8gPniCUYAXICevbTAEzZQgCJgUAP+jAAixUWADHjgA0cggEI5UE0kXDMJ2VQBBLq5B8ztMYbIHMA//bjHRWZuBPckZASet0s/EtKDbeygAaToAAk6IQH/DLjfA9b3zwzgrpboJJclUUfAIizgpwwtwgFY0EUhPBQJ2TyBAkyAAj7EsJPFLMBHmem7CxDAo+kkJgMJgIEGVNGP/FTAEVsZUgAs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2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8MwO8fT19vf4+fr7/P3+/wADChxIsKDBgwgTKlzIsKHDbSoeSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJ8lXLlzBjypxJU+MsLQ1q6tzJs6fP/59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2od8+Xm1q9gw4odS7as2bNo06pdyxaf17Zw41J5K7eu3bt48+rdy7ev37+AAwseTJgi3cKIEytezLix48eQI0ueTLkyuMOWM2vezLmz58+geXkITbq06dOoU6tezbq165iYX8ueTbu27du4c+vezRtoht7AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4sfTx5y7PLoE53Huj69+/fw48ufT7++/fv48+vfz7+///8ABijggASe1l6BCCao4IIMNjjECA5GKOGEFFZo4YWTHIjhhhx26P/hhyCGKOKII2pI4okopqjiiueMxuKLMMYo44z6mEjjjTjmqOOOPPbo44w2/ijkkEQWaeSRSCaZTJBKNunkk1BGKeWUVFZp5ZVYZqnlllx2uRmTXoYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKmhjEA5q6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqstsoNA67GKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqv/7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012xzMjndrPPO+YDJ889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeGPpc9589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu//vtuN8sgAMdgCBECBlA4GLuT4zmwQcPGDDAAABYYAEAzFuAwAYQAHAA8UoE4MEGCQyQgAQhUDCEAxAwsMAF0CPgO/ZHBDAB9A90sIT2ICAwAAHisy+E9vY/UAAUAWAAAQagAP0F0Hvym0IAFnC/4d0uACAYgAauEAAKOG8eD8wAAbOgvQRYwIGyEwAFBvCALXTQALZrgPS6UMENzi4ADxgABrkAwQF8IIQdGMD7whCACyQghAhAoRhauEPXHfA3Y4DhD1+nxCcE4IkAgEABQIiEI75OhRVoggDolwIARCACKWCBCZgQAANIwIgMGED+sheAAqQgAkX4Ignmp4DnNf/BAzMc3/8qt0A7stEBXTyCHLOnwerFgYp0E8AFEDC/J7JACV8cYxU9MID1JeF62cvjFDwQQA1gwH9CaMAGLqCBBezPfaAEQAYwgAD/BUAIDFgkBzhJBFGScgFbBIADHoCAC1DglU9QwBmF4IBODjMET9xlATtWxhKycQSBRMIXRZCEEozAAtSr5h6XgEgnWjB8EkAfDBHAgA8QYAO65KUBIBDABEwAAhxAQE4KkIAFFOCTUBTCA3z5G1wCgJQFqIABiukEDxBgAkhswAIvkAHf/fIArVzjxuhZgZwhoQAFmAAcvSiCFmx0CB89gghQQAAOzBEJIpAkGQ4Qgiy2caD/ZYSVEBgJAg7ck50aKOATDwqAUb4SAglgZyiDar0JYKCCMP3nBPK5BAhcgKkAUMBSieCACkA1YwywYDaRUE4GRBMAIgiAR4nwxSScgKQPOOkRVhCR+W2TqxItwvAgSADrVcB/TjWlQgGAPxiic6cFfIAprYeBDwAzqjalQCkh+NTrKUABV+WqBiZwRoJyoALCBAFTNYmxDgC1AoY8QgdGG80IiKAAFCjBR8uKhLO2Uq1GYCsZ38rV2RpAsydMgDytx7/qhSABDGjABCxQwAu8b4vGpaoBlivPhULxfJstwmEzQNwQeJKTi5zAAgyAy+uFgAMdy6oBFBBaI3S1tCKw/2ABVCsE1h7BtSZNgmzduoSszs+gf20ABsgb1TPmsq895SsHHgBeCZgSuZodAiPJ51/KPvcB+VwAI2cKWQEQkwFQZGQAC/DKDBDgAMCkLcYUSgANHPYInCTBRk0LIQusF47uNcJZsbkCs6rUChZFMWGzaD0Bjm+dr3RAXV/5RA4v9rGvbACAVfnhIiegAR1oLgAMnE88SlePwBRsBUGsSwI4gHeRxVgP6/rHQLJ4eS5WrWmToAITVLKtSIDzGPY6TGK6s6gw7a37MKDQ33L4A0FdYJNDkBN3PlGgB1Byjy3wSyeAINAWNCwCKqyAo1qwA7tjJgO7ecoAnJTF0PPei//lLN0QyPAKOaYCS/3YVySyElZbFDI7GyCBEt8WmAJdJIYvTVdWkrPDBkBfd4MZbO4WuZesFOoExuuxFt6QjQd4JKhDzWgVYLJ9ybujiEPJ2U0SIbRQjquFv52BYh6WAuUOcS7Dbb3x/ebETigfh4mQVS4TM64aE8D3yPhEFad3CGgurxECQFwnXLtzAajAAFJdxQCYoAWFgh70BlrFQjKxAAMYrBZbKD0bWpjh+yPAhJn4AD9qcYTlI2EFiSndD9gwdm10oRYLgGGDnrqKun0hAxNIxh4fgIEbgPf+FKBG2vXw5kywKCWRPoQaFjGEhdbiEBSK2YGn0Zm1iznFi9dd7rm6HH13IJ9M/RZzRhuc5TlznwSxx7+MS73d1vOABmTOdoUnwJKztTsS9Wc9p3pvqxWPIQFBzr4ASgDNgg2BEDIwgQqg7++c5jv9OCBE5glBehUYO98NjsEpOi4IACH5BAUDAAAALE0AZwBzA/QBhgAAAP///wEBApWzrfL29I/BuHqupZ28tpO7s4i2rZ3Cu4WxqanNxvn7+c3h3ViWjOP188PY1O3w7nmzqqfFv57KwcPd2Nfl44Wpoqq+uoi7sW+to2ahl7TPybLIxGuonlydk9Tu6nWjm3ipoJKrp7Lb1LLUzqS2s73U0ODu65LHvlCPhWeZkPP++9fd24ShnMLIxnCelmSlmn66sOTo5rq+vZ7Px+n8+M7V08no4qbVzWmRir3k3HeXkb7OymlpaVCGfcrPzScoKkxMTF1eXjc3N4+QkXR0dRQVGKmqqZ2enlKW1IO+uB6T8H9/f4SDgx5zy2W59DZ9cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gACCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5yNPSadoaKjpKWmp6ipqqusra6vsLGys7S1jTe2ubq7vL2+v8DBwsPExcbHyMkNyczNzs/Q0dLT1NXW19jZ2tvc3d6zON/i4+Tl5ufo6ZU1sz3q7/Dx8vP09Z0Z9vn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8okx2CmzZs4c2qikCmEzp9AgwrNFGDhsqFIkypdyrSp05wpZkF4SrWq1atYs2rdyrWr169VW4AdS7bsOyBRzapdy9ZbzbZw/+PKnUu3rl1mKFrtAHV3kYS+gAMXwpBAMCUaaQ0rbutisePHkAm9iEy5suWGFy5r3lwth1jOoENXZWFAtOnTVj+jXs2aZWNE+HpwaE27NkwSJHja3s07JS4FqShEAKCht/Hj8k4QwifoKPLn0MvBKNUDyCAPByTviM69e8HCwA0hqIDLu/nzyV5nmlyIHQAFM04RIIC+vn1R7FXluE68v0Pn9wVI2Q0SDGcIAUH4x4l6ptAnimoCRsjWDqUVwiAp2TVDg4QcnpbZe6G8gAAAIpQAIiGgvGWIgR226GIl7pSi3gODlKaiIMO5M0BoAL7o4y7DOTgKEyUkQCOOgySmwP8DNnzy45NQKoJBKpkpwMEGJCKZQXiCxMDDNEJGKeZqOOTVpXiF7GjmmWO26WaIKAqiHH/2QPjmnS3FsIADqpAAgIn8JcBADCz8aeFCnuGpaFMsyunocqn0uOikdtmJyo5ZLrddfxYQZ0N/mKojKaWkntTpKDGCOliXK0jGyIeThClJqMTIWuqtDc05igIYPNBqfKu6Ws6ouBY7GokVFPbABEjy1ygsuhorrVn5lbIBaZkOQqGhG4oSRDiKoDDVNNNNa25Az3LiJ4kiANAqCEBocKS7I4gggnX7nfgqABeaQywACZ4rcD8eUMJnIiSM0GWFOhBX6ARAfHCiDwZOqcj/v+IAGLBLtg5sGgmFOjLiJizMW5qRNbaqYI0et+zYto8cjInCLMugLQAggCjzAHy57PNm2cnGSQXzFqLAjYTQ+vPSlI0sCNKEwCryzSIssEgHI0yQQLuZ/EUIxkyHLRQoMFPiw9ALFFdIec9IjUm3YsdtTs9oRjKc0pxsEF8BkoAt999NlZwzJLJt6kiqiDi4ApZPq+Y24JA75TRsOGcL6SG9Fu3IBA0Lktt7Bf9pcbN+6bJu5KhDxN4IkycZdY1qN8In1++VYOklGZK+it+WlJn679m4k9gg/R7S8axHI36LoY+AzfsmoQMv/T6fqvvK8dNnn9HpocQgC5cI5/7K/wkiGD7U81jBrT0yPRR2NQ70PT4r7exCMl8n2B8qyPCSdDDPuOtrkwf8d4oetM8V+4keNRx0gLdwDxMHYFsAJ4gKBMnPFGbKny8IQMBVdCthVqOc/vQhMwp2SIGpUBO4XLGmvh0Cb6ag2b5MSMNcTKYChHpUJ0Z3OeZN4mwrSiEhAJiKqVjKa7eLGv9qyERnhGwQEsQPjphDCWJFURD5SpwoZKY+LTbxi7BgVog0F4oKFKJz+grFCvl1KvkchT5iGVe6oCiZCoGRTnfEhGr2RLIdfWA2+HNUvejnw+tQMW828MnXNiE+RkQLAGEq4SXQd7E8yg1qacQEbnAWwgNpwv9eNOLA4OjoCEnBx4uLdIQPLlgI5SniYDUBxSMtSUtSYMB7pJABE8BnuUtsh3FQTAsLWvcgSKAwEVuyHSQKwDdIJmKJtYymLYoDAokhgpiSIEzdElEuRLhNBjaolwayeDUXMs8nilSl7K54vUw2z2vSvFPVclm5HlrimFicZSRg0M0BbO2PINAAJpt1gBGRU4drC1clArDEojwjO7yEhAMswE4fdRFy97qSAXgIQe/JoJp2fN0k1rUjkKEJhpRgltb2xshUjoKVntzFIU8wARXYM54/utYKzAgnnIHTcyNYXD3nZ7Qs6UaSllDYSpv5pUSoplwpcFB5TlBQRHRQEu7/YQUlmwc5IqbOn1prY/dAMDgGIIAFUphAzpqazZ6JtafEmYEB9DYltqbyokFsDjLwComoUBSn0oLBGnGwF5FyQgPtkoEUZpMzm60sqc2SoTcJdyaV2gwCB9USVwuhyK0KaxMONac6AUsqPRlvm5kogWlV1stMDJRfmlCBXHM2nkpE4EYadOk1CfEBHYhlhZ412lspwTPSSis39nLX4PAGnJDOjFYYOEBd13E7Mk4CqdchTQGaJFnYxuyVlqheJ3UXLq8GywG5JSVQnWrcSZnABjXpLssGEVGD9RKQmyPkeAeBWBLNSzXBJZ1uBGHThFbxEdEtHSlMlESJxiK9AoNw/4Q6kAAxlq+aZ6zjfiuBgA+EdI43Ha1PnMteR8pJmfONVSXN9MAHGg8FEWyvjCFFI5U+McPrsmYmVIBh5oHYEBIbppT0BZxlHCy4bhuPBbCriEN6TZ8GlgRfT8Hk3dJyyqRaQAOJAwQbMOEBTgvPAQBZgNnwmKebAJSXeCDG6BUqX04L6YggOk8MEJB/BfOfcyTsTKsdTRMhIFBC+cxN76YiAhXNqz4CnBVGG+ta2kKAGA1BAa2BVG9Mwt2X2UReRFStzZwaGQmaqYgBKMCICJ2sIXLwLCwDrAVpgUAXXe0KeIq2lJgrZwATZL42uSACDhBfuyTtaRKptbVT8xybVP/AqxfOU4dmBTNPtZYlnqF0EEGKsl4lgV4HXyLBsrD1gYs9ZApad1HAxNwGsPQBoYKAbkOeDC5Fl8MNoBFFOURztXHmZVUt50YtvFjxFFg8ZwIAmpOo74E2HIuCby6znVavwWdsH2D5W06FspfEVMoymCqbv0Ptb/XwIbPbCmICimSdTwmcpbzMS03b1u2rtvQICIQWQJnJDQNygM9u8a3K2K5g15r8tkBSHDQloOq5M+VYVtW0EfVa+cJAVV//7XdrhMgZ53Cob04H3bxYDOKG+DdHsK9D5jH3uCY+R4kkTDIRfDJ7UK59dGcsoHr8TsQD8AvQLN1yjptibez6o7D/q368ELOxWnGayQH3danAA0YF0k4V+bVtNauK1jY4SiH3ukfHT4UqcGtP4Oas1xPMh5ACJxlngL2jnl4jWHIhdspb/1b2jwrbeNjnjevTxjzXPC4qltXejNA6w9GeN8sATOswvqXbneueen/wTogVkLWapFn3BHA/m3bTN6jusrh1FnYyjvt9hGhHf4krqUffWwSbSxtA57mTLJvGYNpIwwB8nQ5kZg13OzTyLgF1JR+FeIwQdXNVYItTAHakUfQVcO6HSgYnKwinYOk3SYTGCSdgV8lAAYYncYtwaskHFiMzV7s1A93XY+xWI893Jq6HfQR4Yd1nbLHDU8W1eixT/2Z7R3gelmKr8FqFFnbQsDETZzazwEpJsEZwBygBcgG0BiUawHCIt3FNlyUeNgEcyC6+8niVsyysw0zkhyzK1kYRc3KmB1K6pC9Z6G0HR2kvdG+NkEyJdghPWGupdgkVCHWY8C0j2BqKp2NWCIiCAAMxYH2CYIjXIgPW91H7F4U4pDYhw1HIklhdMjg2kza6J1lyJDttuH7M0wEoJjIH1TFAZAvIh0d9ODAWsC0GgIKDIEqHIFQsqFz8homNBzrUtFOFgVgLoDCGqHXHJoZ8E0Ib53jEszxwlyYWZ2jMaAnik4GiIH/B4HCp2B2A6Hz+0XTV4SteuIVd6IUzsAPjYf8lIVNmWVMaMtCKCuI9CABWHsZMCxBKJzdpChd0nuhJnUIg9AGBUQZHAIB5wxCKb8cQH2gY9YgroDSAxRF9ZtQ61wdQjbUCTBCOrahWgLR9KtUux7aM0qcszGJN9maFceUoVLSGPLV/MfV7ICgSp4gMc7gavfYjOjBch+B9gNR0e8dusHhyaNQq64aNTMBJfudY6Whslvg0HtV1uuMeWKcCEMeM3CMpOAB0gpGHdkGTP3NLIEJi19SLZHWIO7h4Fulpk+YfNGJ/e/MAaaV7ZRVXrEMoCjA5v2FVT+N+4nZaVPkLdbiSGyGJcNFIYUN3ZEk/ZsaFk8NuvSgiPVg7XDP/L4nXb1o4CGV4JWLICDURAlh5gXTIiaHQYBjyko0gmDhVeUuDAS9gMtkyflzDUwW4LNkoelMIiQuZLUHmmk9TJP5xAXumXmt4l3+SKCoJjcjgYiQBmtWoEpMBBIZTHYPxkU/TYSpDhSugMttXT4tXbSzAexRZMrBzMlZSlkB4CPuxDEwISRRgc8tgKwDyF3vpGO3ZFMzhShNEQISBjiwjVN2VnWbIBBsgVKdUe9TEhTjTTNYnVz04A9d5YyfCA1OxgUXYHIL2oAYmJC5wRCp5nM5giF8EUjb1gqwFAijpU8ASjw5jhoSELS1HL12yNxzwKR9QZtdBAK8xXkJiAvBG/24S2B3C+aAtiRGDl6OB2Uq9yFscoJwZdns6FWmG0m4HKjr+pY5CpksqsG5MaDWayG+JsUZIpJmXMB0LUALUKAw9qhG+KTkEUxc7gC3glJ2O1wFu5n21l5QrGh791Y4BpZSSOZ3NF06F0jki0m+XiYpBeKTTdwmDki/GiaE25HWMACGimWU/RZuF4RNW4oO00ymhFH02Q2rt5iuC0oOLyHeJKFeGgpYmmm4ZUgFctBzkRER5WFU3c4/NiBoJkKg3sXQX6oNalQtuVxZDinhq5aKPFSzasgGiJ0ahWqI1cybpGFDLyFhZwmwvtFklpKXLQJyzGg9lGkAD8HoIAwDY6v8xL5BcZCatU8gIKPOixjgCNbEsXjiSAvVPgcgsIbOC1YmnGTBX8EaEa+MCGMBWkrhfpMl+pPCecWIP1eIdp9mCsxd79ihC5kKAW/l9TmpWQFaJOuY+eSFKAlgaR6IcZPWOhOKTdWRxd1dIxpiShmajNLc/BysWCPAlxKeox5CmFvIsazioHsNaBbpq8Eh4PqWnlRMDfxSUf9R8IfdR1YmOkEYIkCmEPrij00pz8wekNGtDydVpR4aMu0OwtaEbg7ODaTRdxpZ3ZpglrcJahRSrH/WVqLlSnjIifSoeDBsJEHKSW9M5eXm1xKADXAkJUMYKAPlZuwEEi4NfcqKV22H/eGWZbhs3pfPlsdcnj40Vhme7cyjgl4UQAQlbdL/QTXzbfgBzsLDQMXv2RvlUCU8pGDmpA142fjC3KriUkwiljv21Ut44gyf3orXXJUgzIu6TqtM6RP5jsYdwSCCyrZZhsK7TO8hpYtAbYqU7gbbhARJJM0xVUoaQcUZZbe6IaYwVH5DWgBJjU+6TghLjT/1HqK/zo4fnTlMEh6sLsXFhAvM7FuEqasHQaqajuT+UE9VkvGYobGdbTyZ4iXRVIZbmU9eXKQqMJQtZlisysFgFmPT1J/YLtZ1ZFsrrFYTEvngIC+VZihI6Crh6FRmnTdGVLywQMY5XgImHex1ZnZwW/6CtNzjAonVpmDTF5TQ32AOZWQmdwxP3G4GhywsF4x5Vq2KqwAKsWbCGsERqOX5RkU5acS/+hg8vWmm06Fh745OLaaK/MqDu8i4iWom0+LQREHA9cJ4NGjWnWAGfcp5HHA2ZYbhOGQ1mgn3Idgo61i57l7Ik+AJUxBNWw51hzLTRp1IWxib6NWnpmLEWIMBpIh4JRAnIe8EgV8fMoLbRUC+jxFmOEMR2AyL8WHNB8aH1kkiGYgHCa5uEsH1Nt26CyHr7Q04YsFiOfDkk2kuIymE8lRdcggJ5YWqczAzAGQ1nRazcpgp/S7o5sYjK2mmY9LjVyViRmgE7AoQeiLEKOv9F55utMGIoRLzGGlzCtkDCx3wNgkwnG/tSlGbB/aMTB4R6ZlQTpxao1rQ1EWW+s6W0yZgI3Fe3yzqsHEa8F1DMr7O3ldJ7XPGvzdApH1xwNBKeeidCALQhSUByhuC/TGExCzB+nBOrSFUYHbCTAG2B9hQvJgJdpmcBHk2XTRZ5eSi1Q/gImRw5LVuwntnHxhTQ7yFfrJo4jbGDrMUXrvQXyqEkCgN/S6Eb4pSmh9mfRGaPXDyLh8C9Wb1fkrXMeAO6ndBtdZkdI31rY1EB8uzQSjGzzOxpFr2HbhgJzNJIbyFdjKB6+AR3QvJsVlEY89bIvPUrs2tvLbSxdBWguDP/uhbjpt50kLMSxZtLEDFNDa7mAzs5AKQsJzbnuS1xyt/aqPazULIKKauJIq5LGK2SAynQL0v3AlSJKZ2bExkgjvTFdpUFItJMpDgji4uAWFNqoKVBkypHCL1KYNaFvai1CeMEXneIDWEqEAxgq55DwUtBAkv8CGDdcN+aNjcGQgYQHp5cI/V6JsT2HpPDADAmOmKLE048ORzVMDc8fis3rlK3vd64CEprWVvNeyz3ikHJqNvLCqudXdr1C9FdCYhrEVPGAAe+IFaR1qaQTp6tyQMg31x2JAv7kBfsR+kor8hiAuf9JycQrjGBKdFyP43gheUpn8aMMCrXX9Pc0fy9/zJl3QsXwB5LpkiPags5nbxGfBHwZCaBixRW2cywUCXBSTHFut7KdWwR02NM5nh/e8I2sR2TbFd5Db/XoZWS0FxuWaLlCc0anB80UgIF+c36UeTpoVAHgeL3lNlA0a142rdvnSTKwZ+8PY+m99mHwLhb2SpO7RLlGJr4nQAdFuYh+CF2zbQ11tsx6ScG0uEG0OIHF9v8EKGNwLwF0cFRgj2IVTS5R698XDekdnJqkyEtICKGEN4yEY/AwUrqjM4OQ32MoM7naGkfGZ5zooSCrJ+bxwzXzaX90CgTDhoUMDJjegmryl85g+FWOm98fXjUXcWjyzen6bY6QTO/Vi4BQ//pm0twKQOHzB2bFHtWsKnJ6O5DMoDoo5vpcBUXFsA/wU4ZBcmXozAb6QS8JfiKuFeGmhMqO2Dhx+hpisjoBTg2ye1Mqp4tKMrQhc5fepNsPg0JxKnmhHvxA/8Vxf0YyT7avhTKBfOUCgDTeToIi6V7K9fs9Z1XNKPh5ggUvfJR7ttLluITHkXQfH5GS7vAzU0h9InxOZgdxDkyAUdEQx6CyITEcG4Qxmc0BXP0oTHjRo5gUqiZNgKWYkRtpgdMYJhijvm+OrEjpIro7dzRdZlNSd+OLIpYXzhkj/SFnWS/FHJj0vWf+xMm7FAeGxWw2ZFoPf4L2OPwAQHEiVsbfxH/k4CWYpNhxZ6AJmb2o080Sk8ES8ZWLx9ahTBPCGxV10RbAS0ENxC+CAlG3S1k6MRBywK1e4lbiL7e36zDarJ7JAJ1VODlygcnM0kEHyPCIkvNDOShDn+vV9SNcyDMCo0x2Slh3bn6NVa08p5Y5z8+rQkyMkWDKfypqvlR2qwibXPrMNNJu+y69C8Bq5JYUN7D6hAkqIkgUH47khfNsY7dhuyKMwJp1Z8UdOEBKzm0QREHCACCg4SFhoeIiYqLjI2CCjmOkpOUlQ6DPZWam5ydnp+dkZwHCzeSFYMnAEGMDZ0QmCOCJgUiLIQIIzEAIIUbD7y4vCsPDzIgICsmoMzN/87P0Iy7hBQks4Iyq9rNIpQ7j7MJBguGKcEAGjG3l4Q9GgAkCwO5E4YHLQMULYLmiDSK/wb14kEh0b9M0Sj1O+QiocNBFx4C2EcogKtDu6YxWihxY8ePIENSiiCyUIJP5jJQhDXIQyIeuXiB0LDg1odgN9EpyigT2AcOJYMKHXroxTUChqwRItlMHDoUjmK26ybIQFJBSoUNiqDg2tWThS6GvQqAIwIAXRN5gCESRyJTROOC3FXPpNy7ePN+HGAhoY+s6pihUEUpA0JiAlfsUiyo76AZaAUGM7bhp97LmDm9EIFBh6YYQDAai3rScSNZGxxNkIVIlVGdpnUOiidIrP8oRD4yO+Kou7cmsQB05ZR96IDerL6TZ2ZRYtkm4Id4pLK6KcNUBovSGsegNDTQHSDGqVhR3BCHY+gmQFbOXjmG6g5yxcZK/HT1ooVULEjrrxDv3/1Rclt7BOpmlHqppYLIfEMNWOCDcwGQww71wDVJBCEMIsFYZDkSgC+ShadBAfbwJ2FjAPSggAGoAEAefQB08NhEsXBQjITUQahjXKS8c0huhjgIFCafafJegojIgsIDBZCICHOTNNAQSjtWuck3zUhgoSInEWODDe1BZeWYzJAwTQjG0chMCxG9VBgixDQJD5a33AhRZOBIp9U2op2HDTlkJmddXCQAQ6NRaWb/19UIysB4ISdDJoIAdsNwSWlFKYKl4SSDepIBO4GGmhBq2DAXAYN6XSrqqpRgECkhUz6kgaqbVgLlie8Ft0JoJhp2YnAqmPQNayYVJIidjLKqLDMj1IVngNrkKlSzqnVVDAuhNeISP4owKFZAanGrCAWgLhsqQmWe1V4+A5jrri8P1GViSMZ6smV9VdkTDH/xzlJuIjcxwURVCYj57sESGSCCDg4+Q8p0CAS7yIHxTgDmOVOtJu6etRGSAksd19YmpwiXXAmx4CTa24bzOGmysgkAs4KzYUra2qsX5OqZobzI0rAh2C1AnmfBvWx0a4ZQRLAhunQUQ2WZnjWBDC3u/3QLWpnYWYh1caKYVNXPHrKho40UfPTZ/krmVVN3MnPCAHBpiraov7Aw7ykJIVUerACduO2TNF4dlQgrRDz34fxEFCvWHhcCgg3/jtqzuqfdPWS7xfIQwmtMrR1u20mXg6l/iIuqd75M/+hLNWWDF81rLZU+pg/UFv1cI5FrRrraQUo7iM+4z0iiOHZrJPvc7w2sfHBURUT1qc7U+6TC3pwk3+9718p3WC4sOq4nrgN4fG+glhAj9vgx8h5iD+U+foHjmE+2JCADHk1A1iAw2q/tCOJOkQoYWCEi8ar3HUxhgFKQSPIBDQp5rj7f8BHJrBIDSlmHgVsx4IPG1gyVYf/FOYzo1GBOA5SPOUyDVurBi9DRC2i47ITgsJ1dsEczx+ipECtABeYSsT8UHswxhrGbq/Z3C1qVZxmdCtLWpNGJztGPERcDFHL4J7ZRwCMeUlGTDz3xM01kaHW48NNNqMM6R6gwR1qkxABYtESDbbFAGkABXHr4uShFwzhunAQFKTdDBXkggZnCxhuNNjwO3C2EFWCJ0qCIMmdcwC2LYOAU/WeIzpGAP/+BBkk4c7JB2swZHDzACpXxDlQwwDGA5EQOUKWoGGGOO+i4mCfbkys+Tm8oLKHKDqhCtO1tbCqNkRa6wKEwukjMEBKc5bsuGaXTae+ZvyRUWiZJja9twgL/zvycSzLUgmyW7YvKhOZwXoGI9aRPEkD4kuAq0a6+eCBNhlpnONkjJif64oWhy9s+0PhALj3iYQVEXV/SkZoPqMsnXvPdPFm1w9u95UcksCfvkuPNVkQTYCrw4EKpxKFOZKuPVzLeJ1TBMBluNDnMgUAH3lO/oHSxZ7HDk/QSIctCQCWds9iFk2RgUBb2SwSHPOksoUONmTxkmJfZlgkZwRihcoKoiACbSSJBgTzGAgjmO4ADFGrFFTaCMJFBwRffIR6n6gZLtkuBAxZZRT2mEWg27R9kOqdRUtyQHLGRUf+qFkCc+AkVFUvATM2qrEwuAqqSkJtDftJQTo1sKAlg/1hFCeuRmGoDnAP02jUeADlcqKAEsKBKY7UFr+95jSRO+V0vCmAxymLmBArNKNIMIikFyJIVW8NQOdaCCORAoBsv7BdxVqQ2XnaDajDl5MC6glTXKsuqzo1uW4qVCNjp1S4zACEmrns+iQBJT7kaB1rcJ128vAdUI6jACXoAMvct4IaLMGwIx9JStZ1OfqW6hX5UMMYNCBYAUgiOdOQm1fKO6ZjZQwkBuHmBAxixdBKtgW+ME5+jBau+SzuR4CzDxIf8wyUJEkE65IQvA2NmM5b5BT8PcUqucCI35OXHO1Ekln2QIDSp3C6cZGioAmQ1hvSJsYkJxBuJjk+en+BuR/8mywxwreoEIOuAhdIki2A5SII0k01jG/mMePBEEDQZMoEywJqbcGDFHSPJg53xAui+NZKAskV4qoLQ1g5iZsmU2kvFrJu3HQKzhz2cdj3hZD4pUC81qJ3RlEwIrh5iri7hinGkWkZnkGM/49EsW/k8YT/ly56i6AELRmsJRrvpE/7Fyo2YxDFOVykeRHP0Ex0ByUM/SAYhQCw5EaHrofy4AvhdVq8TC+QZoa/LwHAONV39IAwoyWpUeVP/MOw4zcbOBD9eYqkuVgtgLawgKxSTUfbM7HJ35AVTy/HcaHEWDrLqXrzeXVznhx83e2MHFSCxua1042piJBvn1kULZ0H/AR2Yg9ogSvVjxHuWhi1730lNj1MVw2S0YXp0ByMA7HBnlnIWu2z+JAg0IU6gFaJ5fhDYtKcEiT1sr5lL4I1RBz5qiACT/CFBnQS5hXIQe9/l4aBQOb2PE0sU/M2AyAXRscPWjG8A+uZwvBgIBytkflR8Yypbo3koQ6z/6QsqoR01ddMG9Y7knNYUNbRerMIEYL+P20ZDeFlOcPaWaP0aFDRp2cPJM0vMpixw/aftWBMCGny4fz+yW9jw26Tw7d03KREUaecisZdHwwSWJwosRc6EHWIHt2ejyLzUjYt0aPvxaAMryKvYg2A7sweytizqRgucnTcapKgnn9AfxMrX/4HpA/D9SBKrsnt6OUnfcqq16ZrBFWI19K+gmEECClD13Oul0NmxGbwXsbhzvuXob90W7CtpfeXYJpwU6Iq7hVL3vJ0eyLmw/cpqS8VN2Mh/aD1PgvDZyfK/jy0rsQiGtAlA539jMmwv8ym+hDrvgoBfIQwM8A7JtCMso1DbEmxol1ADVkpSgzEGCHEDgGR80lyg80kfOH8apIASYnR8ETILJxc+BxL1Yj2RoTysQXoPsl5jx4C0MnolWGInuHfpNW3wIGMjMCCN5RRZlyRBCIOz5HMYKBLr52FRoRNWoQNNIg75Zmf8pjqRoVF3Qh0/IYKwIRnSV2BNyGfyVBnO8f9OlfY7M6AfA8hJDHgIDxCDaeh7b6ZBkgZZKyd85JAN8pJ+EpOFEvN0tAQUfLQibreHn4U+5lSH2FMxechnBHAWIXhmISJFv3ISnDE1jeEA/0JqwIItldiEGdBXQWFLyjEcJeAAUFFlg/B7kVgz9BYD/KcIJlAu8iB7h/YBXHaK0cUCMVAT4fAYgxUZfXdqwngXmOWAZmVkntIXGxcXOWBbMqdA0ocWCLQBX6R8WSI53UWMQIUd0DgJSDVOzWhWmKULVcMSM5BsdWQrLRSM67h3CMcWiyVAvkEASOFmYNF2TXJ8YPZYyRF5hBAvHJBHKScI+sgJOHaPiGMBeDhrVYH/jY1mFRVpJOHBAssokSCJalmWGQ2xYEsBAXSVUdOHjAKmG/K1dKTYau8HIoZyhb0Xkqsid393GuBnbQnTE7WIkxkolC6yCEBCS9O3X/kGhMlxCQdAfR0VVRdlUgTwkKgTUEQ5Nzo5b7GjVnORGi2Ui1lJgmImYQ45k0aCls7IQTKyfc5RjLE0IvoBFgNnLqDnb2qRim+GAWKZlazykkk2lQ2UX35ZFAYJdTcpOrlFZCNXHKY0l2QUVjpymI0pAdIzfIVZXqy0GWjoQh8Qj6v1XpmplpR1dc8AjozAXT0pCefIToLHWtaDhWhycR1QfaAAmK1CWj7Si1sBTlaZL305/5oUSJpRuRNEEUGl0E/CWW6YWYVslhm8sZQVUFN+80IG8IrJ6DYMgIiTpwnU6ZrLGU6tSYXhaTKmuUCdUI3xZR3RRhSxcp6rUBDTuQCy4BldYQEtYp9iSZkQ0iL/IlLlOZYBipO2uTE4GBdHySUruUT7hRb4RZGPAHSsOFsCgjvdZ4K0ZXcDelLZKRFNtaGPNza65gqmJo2EAAOdYaJ5oVLKpgIRqFlsVJTSYT4L6kodwFplSA3WMSWX1BWQ8HF444uUxJQZlANbyTYgSkhgVhLClKQgKQLcqSZPE5wf0XvmEAHsVpAx0kuHFoFcej4vSiJV9p0tURD78QxKRSVCFv+lTqoj46mWikWkH0GGbVp24ORgYKYDGLAQiQkhJ2GmTNeDaBgx+baUGaRE/paggPcJH9I45Hd7QGZqwTFodRoq8veAi3Sklbqpjmpr70dzqeNVJYFPD3N6fKSnPtJLPupKWmpRbUUyh/Ah4PKSl0ARUTgdcsqpurqr6JerkpAJBQACkrprLoiMLjqdesVoiQQRdFVVGBhmrNoBmQee3hdvraCoezgzhUCWvFoyIzOF3RquADNf/9Yi7Rek2pIh8lQQPBB8AAEXaWFwcoQdHjBow8etucNKqkClyrmH0KQAReQ4dSmuEPKmBMure7qARYFgnqCir4M520mkp/QWsQL/bAzgnxc4EVCVecWHe4LJpv4KqY32ImB4sA1oskIJrqe3mn0zpI4wU7oUEkBFcC/4Ul+kXezaKcaiWzIiDsuQrGLCANvXmIzKEFPJAK0Xnz4JGrzQpyhbIP9hsE8Lkg1HFAvxNHHaZbCpKZiYGrs4Vbqlm5JJE3rylEw3XQyxEDW6g9Wmd1NrJVL7tn45tO43rhNqRZsiHnn2DvJjRDSArYMgqyv1GPuxH/zYEUqAG580aJFSP1h5LJIot75RgJLLqXELCgxAC5RSoIzQLiL2iNsiXhcjCtAqISEQCUhxrqkgnzIQh2CSayFxoaZxd83hN0WTamdRL7c6i3RauWPm/7vA60Kd2rAoAKH80202ULsxFAJc0a4pgK0Oq2Zsd4gNwDLUp7IQ8Y9CR1RAMr3jOIR7EzBcCTiPG7yY4bDmO6DOlhmAuwky8rlAYQMjIhtO+XLmwGhsmhZ8uxTuBJhvShuKy2LHOEbd1QgDkb7KcaHggBSP5Y8I7JdZ2wgd+2LRgxYSCCaq+E9fmjZ3eQ1BxRIRswFkerYdZIURDH/n07onc4QP3J9qwp8tLJQjqSy/9yV98QGdGRurtEoRO0OdyYUC0p6dkG5OckGPOqwxbJdJvJzGWJQ89xHSdzkKqy+N0Q/t14Kci7mqlR4IMBgIMbgkUThqt8Qvo7xTrEdcpv+6ZOxUQrwsRgcsj0A1ZtwiUCEV3WAsDRajhlADEEB3G/wod7vC1LPGZ4NWyghIJ4ykhDxkLOsuDUEBFZIeYEKRsFkCCRSx8DnGeJuhxQEo6VBSi6ykRTliqCWy8xDKqFzCpBNpKDKhgHlxHGVHwqDCqXw2BJSRZYsvWTzBaFvLSnygqxJn1oZ5hwrDJtEs/MoJ2OeLTtaZvmyXvEgcmCYtgZyIz/wuiQaXsHC5yXGj+oEnBSC/yzqPDzFjnTx7oAMDMXnNGecKr0ERNNEiKFPNLrk09MzOVfJRmfwgL4oOJGIsvNmyfmhSHlRrsYfPR7NKCbYjeozQwZzMYxKHmfL/JQk1qX8EEk4GF0zBo7NACzcZgofLhA5tLrFiOOYzsRCifBfrYIYjpCPdHsQVsoGShUwJ0U/hDA+pKsYhMEDKNFDpDz5gzC/9akYpU0NnEsvcCWYJEIb3T2SmAAbjZepxRUOdHF38Hs4cKLnBcBnGPNSDg7mSxeR6zOsxL4q3RIlc1bIzL9tcpe27CerRWWqdwBeLvlUyKFDDIsfqbU3TxkcNCntWAmhIOPNRsj7pCVI2174mb8EjmIotXW4EzDsSgduIE3EsW9XVu57AVQFhxKkQEdOnJ9yFAGJNwY9dEm2pEEU9Oz7QnKctEri4qG7cz/WRb5oIqesMCtZAEH0K/0Kv0jwWTC+vvYqHkLgYlhtIcS8X8cZVYtfD/RDCdTAmwCIDQ8wL95lM0JFgFpTCO3QmLc3uCsfC99wi0aEUqhYbSd68iqNomF01yMW7C0OpUw85QR2m55iGnWRqrN5C0QJuwctjwq38TVheWptAJDewsEbA2K+wLd4rGdfrUS6OQamYO60D3hG4eeHpC1a1e9KARAorIsJOe3kaIp8N57m/oJA5Ums00NJoqgAUpuE6kgT73WcyHl2QoCq5MoCqEt48sqVaOAEKScLG1gwugdk3HnFJHrw9GNDvvaKRUb4L44nZOBtp7b6TrXpVbR2Uwtw/uKmurd6Xwl3Qp8lCkf+4f+Jfe+QnU/2Ipyt8Nr3kIqEDF3s+BqPlk13aco50rJovWKhD9riKi6LmL0jkj5BtL77nvsEUY9PIip6kbRJZwY3kBUwUrwQZlR3nVz4KcqnQj44XXQSynz6gFXDJsjEDv3AZtAGbfXflQ7gAFO4JfCQBOLDPo54QfXERbXbrlQpbhlMQT3PbE2hecSkhaAiu6lLj5qKeF46aY6LnpYnQyyAVUzMNw44XpD14otm5P83r3v7tVXhDtPzkUI4B7GAAc0Zskg3ubmwOQi3f7M5sWRYCCbSS0P46HeKFeBfv5Wbr/M7G6XWnzzLiPw4RLYOjOQKMIvzvDP/vMFGqho7/oOoTHAgiMIFx7c7g3A2/8S1s4hFDYpSO7eSlN4q4mxrpttCQ1ByvTPe+8uYCYmQlptx9F7FexRbMUwjSCzMMDdIaTGTn8guU3yNRCQ4IvkBvQAcQbV+ib0T3PS/gQF6dDUisSvNGNBKT3kevO5JMrA6loPHtpNwskexK7pfBr1QmE3lxAlif9ZxAn19PCVISaGzvXMQl2LGEGW637j1Rvp9g1zs/9zxfKwqsi4B/c6G9urh6F97DVCsgBRNQ8x0x9YWP2pJPtEmsgmBu7BVwGyqS9nQYScVY+UHRwZPvSNwH9vy9mzOlCuZtdn6n+AP07qXf34Ts73XqrkI/3vGS/9XXFxkWPvuXgQMtD/xbBLgeGfE4pxEDM/wSYfvEj9HPn3vEuFxEUcchrSNvHf3aD6L6gwx68ckzHlHbz++yf7CiNLB34V+lzqRfJdDjLxSOHrxcFfakjiXKLjlL34J7EeiSAAgXAIOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmogEGTyboKGio6SliS6VDaarrK2ujwMAI6+PFYMetw6tCJg8grTAwcLDxMXGFsbJysuIPgAEkqrM09TH1B0AM4QjtrQs1eDh4uPkoQrl6OmJJAA0iBTq8fLzlRsygyI8vKYJhRAF9AIKHEgQEgIThmAUXEjMB0KGECMysxDhXbYWhf9i8DuETaLHjyCNmcAwKEjIkyhTqlR2whGCfitjypxZriPNmzhz6kwobR0ABh3OAYgFimiiAzuTKo34YqnTp1AR6ar5DFY2c1GzaiXHYKvXrzlRyZOA79BLgAA4wAPLti29DG7jyp1LKiiAioUmaFDxU9MLCHQDC86EcbDhw4MzmFChY1uBxzJUCEVMubLly5gzn4rgQiwFA/Ya49VMunQhB9BMq16tMgWuQYJwTYhRYbIkA91Y686KbLfv3/JMluxbqILeBZGI7gPOvLnz59CLtzz6gINLfBNeHRgdvbv37+AhciY02UfvQssXRSg8i5TY8PBHpY5Pv778bbbvmur/2SjFoff2BShgVAGo498i8w2YCGCEWNBBCIMkqOCE9LBDoXPcAZDDhZGggFeBwaDA4YigEHADic8diGIzIg6ywEF8tbLWijQ+QlaNzPGHY3E2BUPBL4lkuOOFKoIE15DjYPRCbjUeeYiEoyCF5JTFhaQQIe5QWY0ON+iI4pUanjjUKkJqaWZIXp5ZTGFIvtagIUteMp8zauLo5jxQ1qlnTvwBuOeKacqU55+EknKjn/0tkgKbjNxYaHxTaUXno5RWssCGlWQ5CZCVdkpQpJ46MuiOSOnCKSbmMerecKG22kqRY7raqphYajLdInDd6KisvJJTQq/JnfkQqsAWO4ym/5lWZaysDALTokqILhvMqNJWm1QEXVk7JbJyNattnTVAo0EC+dXVTrTfWoZuWyC+ma6Wi73SwaTv1uuKjjPaS6UC2Oq7IqbuQDMsQYHK6a+ecH0g2S0HT2ihfl+Num7DFxKl12O34PLevPRS7ByYH008iU0FS/ssuAe8eNUIEzBAwgIz1IbcUOR6DJ23EKkaTULtRBihMxEgcJ7NK2JTggoKD6XDXpLV1vSdRP9GVJlO6WzIj1HvWNGMTiMnWQHZjpe1bwN7ldquL+kA6tj/lhQ0X/0YsM1PvGzNtmlra2W1fmXfrXW/NqWdVjZMiGZIBBBqmLffjCvbOKEV9cuIIP8XLP74VzXg8OTlnA8kcueHobZQu3U5Cbq2p54O1cmbClSy6sui8jrsI+JM++2NmI57VrviVAMhRu1eberCKwX1U5EXr/zyVBW0tySwMi/99Cx9RTX12GdfystZ9XAO8dqHL74mMxvCLU28xDh+vQ+v73n0pcwOTIIzZOf+/fivmv/+/Ms1AJNjQdB/+kfAAk4CJirpmAEXuD8Fwo9gDIygBJMisQla8IKGOhYGNxjBEzzQGtTqGQdHeEHF7MJxkXhB8Pwhv0I9j4QwZEYLNzHDRMgmhji8IK2qcSQEftAfOQxi9YyVOGLsUD2wKUTJ8nQ9IVKMBLdy4oI+VytNtBD/MC+0kRS3qL18AZEVIvshF8cYihXerSshJKMaCTIA20lrAEM7jTIgBMA12lFGtKthI5oYCSre8Y8M1CPDWCU8QQLykMlCYaN+AT5EpkuFjlSEH2mhoh2gJ5KYpF0jidGPcv3Di5kMpfQUmJHJ9CRSeClAdrJllr59x5A4OcE3shdFUW6iiIUwmi2CpzJ3uYhuV7OlMPOnAA7MRgRy+5UhboACC5WPEK68X1NQhKlhYsYGK8vO0DQmyQKeAAisC18PMnmgTUZiVBmQUg6EwiQKVKB9ZrGmPLU3TQc94BYKiEV6jiIb+83TXnH85zJzx4jPnAMDIjCBy2Sxgau5kwW8/6ilQCfasDRO7gYvIc+vzmGdWNHsocCkqEgr1bth0EsExMkGyxial3HVpj7nG6lMCTMtjvyvpWvZQMxkcbiZ+vRPuhPJDeA3A4UV4AMh7dXvfsrUUdjNZ4mwgcyS2NSqviumiSLEqAqgTE9dUZFWDWWPWAFLXkk0rMIMp5w0B09ocuRdZ0XrUf7oRkeYsBFWGydcFxRUucqzkXU1H1la0CKiHI+IhOioX/cIsYmWVI4oDEpgq2WAcdmQlX4FpUx74koLAASllpPVUnn6DSktNq195EQVtRpP9kH2tIkAAknGWCAzisqGhmjjILHTWG194i7mXCwQ7hnKHboTnslz6/+lPpEtAgyAJJDUVlnDOgBLrjE1F5BfuSzCCNvClmLWTaka+UiJD2axVxoZ4HcPkV4nWnQTkuPueok2nQSglIuaE4XVHsRaWYTWU6Od70wHa4kEpeySNjOugIU4GvIaDE59aeuy3rtgETpRjJlgwAEqR9oEIOcFAZ2wBMB3gsfwq8KRTCMM8ssIklxsbCKKJooX2NVhbHXG/gLfbDdI4VC0ABUOthZWobpY+E1zphnCyHStpdbvmhaDIVaEBxCAYUXRLspW9S4O/zsmUGEKBVXenC9xfBgJLHkhev3jAXqUuO2S+Tc7XUkI+yrBMJOHkG4Fq1XePBgczJLPG6kEZnv/qoq4EhnQhwkvokUhS0H/BCFcXrRptDwT4o4QKbTR1FgtMuhmuNZWkt7gPuz8xUsCaVH+OrOT+4vDlzRUz26dD2BLjVtZxaLT+DvyTEg9RpyxaYdNlkqvEKqIE/igli+KtCh7zIgV1BGDcKR0aiO0ZmUDC5tPznNTmQ1rGqQZhso8r5gPjZ38UMBBEJhsqNa8QF5HxNAcbIwoXDMCEXCtsrkI8qOCiz8HkHIZSB1Fe2GYT1zSuo8jDvVu9E0MEGjkzH/55RZVrfDH/Vkem2bfbzFxxIr3iuG9RVQGdJ2ObMMV1x5nHL9Vi+AtPzjlbJM2Dt3pbkikydow7xQyTC4Q/5JrS8I5Z5641cGOfVYL5eWVMqOAHvQRJoAHG7dWx8nadGDdyjqTZbE8DB41bte66ugFwAra8xEgIAUt02M62PfdUgT2diBnf/ba5w4S0LwY1j79N90p1ZJfrFnGOWTHfzUACb3v/fCaWTniF08fnjNepI53Vd8fT3kiVV6gil/35TdPJYpz/vOgDz0ramwtpJAFBx4YuugfqVl5NMU/h1297MsB7yTB4DU1n73ugTHkDVZz98BPfPDt6PnhG//4yE++8pfP/N3jHBxqb770lVL76Vv/+tjPvvbJeO7te/8muf+++MdP/vKb//zLyDj61/8ROrP/dlh+v/wB2QAOz////vjPv/73z//++///ABiAAjiABFiABniACJiACriADNiADviAEBiBEjiBFFiBFniBGJiBGriBHNiBHviBIBiCIjiCJFiCJniCKJiCKriCLNiCLviCMBiDMjiDNFiDNniDOJiDOriDPNiDPviDQBiEQjiERFiERniESJiESjiBAVAgpLOEsucCSfADRSAEVigERTAETxAuUCh7SlAEAgAASFAERPADZjgEQoAEAoAERBAuXteFoWYihBCGRaAEONCEeNgATSgBNXAEalgEJ/CEcLh3J4AEVIUgTZgEACAAQ9B7gwhzAfADAFAEk6CHSiAAAhBgj9h0BACGRlBgEuD/iZtYdQQgBJkoiOcUiQLwiaMIiWCodZUYIaqoBK3ocaoIMhx3i7UYh0mwivoVAEVgiLu4aGQxBKQQAC4gAEcwjICmipl3Tk4gAJPEjHJFA8q4HwQgAERAjTgWAE8gjavgjeDIjRUWAEJgjJIAi4yAjL5IjgIWAEEgAIooKiu0BI8AjJTojvMVAEYwji+XCOL4WOo1bvo4TAGAhpgABaJSA5k4OYswjQVJRiBijujYCAqZCBeJiPKICRDZCGJBLWIxjzZHCKzIM6FAixYWkV6FBMsoCVCQkQBwkZ3mAbjgARHAkuoYIgBgh4VHkojwBK6QJSIJAECpkr3SGRqCBE8g/5CE8G1QsAQhAJMwiQhNEAVCQAT2SJWvgJLreFtvAotXUpKWkJNGaSw1AANKKRyLkJFPiYxsCQVNoJVVeZVREJergIuT4AR4Zwh6yQgmIZawJJZlqVS/kzlpCQkvuQR9CAEXqZB2aQhxOZc/EAVaSQ4gEi6CuZeF0JfFN1CDWSmZc5VkiQiJCQMCsJQK+ZKPWQiRGQUsmZWQ2ZP69QhFaQifqEed2V9M+ZlaYmYNcI6oyGqD8JSmeZqMGZOrOQhNsJxVuYqwuSYmeYj3wZc0xXK8+SeRKAQeSQilOQjG+ZSKwgQNyXFy0ieHoJeOqAiqwJVQBSV4WWw7c53YeYmT1P+d3rmU63gEYWgMQzaUtFCbeYln8tkp7MiejGCf9xmcEXKOa+VU1AJLPbFi5vN2j6COnTCQA6on+OiVxFkImCiJkrSReJWSgqGgGYokAUCfkLAEilkIP+AER4AuqviGJ5pJTciG52SaZiiPATBiSGk+11ij29aP7wmQNTAE8CgAQiABQSA7huCMQrpt5qidI+qbQUAAQ3CKNtSOUcpUSdqS6qksLgADEtCLxgglEjCGXWpV/CiiiOgPSIAEJQWM/rimP0UAsziiz9AATEo5SpSlmminIzWRqpiZAFl/qoADmtKJ4ymoVdWEP6CNXbmnRIaWjToNu+mo90Ool4gE/mlbnbAhiUXwjJr6T8iYpUIwj9JgooMAoKWKVk1YA2DIhkmAKA0AA0aQjyT6qnLVhEEgiZiopEUwrGo4CEVgBOnJq4/qq0rgBEQwBENQhkZQA8mqrIuVh6xqrZcTCAAh+QQFAwAAACx4AJ4ASAO8AYUAAAABAQH////+/v5JSkv7+/sfHiCsra4sLCyNjYyUlJRCQkIVFBienp6FhodfX1++vr53d3bg4+U2NzhSUlJvb3DIyMh+fn+0t7nd3d2jo6NgaGtMh33Pz8/T09PBwcHf7/fw8PBXibXq6uoEYsIaddH09fau4fg8fnY7TmOr6f41dbxds/Mzjttgm46f0uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/0CAcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdqvdcL/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/gIFpKIKFhoeIiYqLjI2OYhxskY+UlZaXmJmam5ydnp+goaKjpKWKk6apqqusra6vgoSws7S1tre4rqi5vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwYzqTJbOmzZs4c+rcybNnzv9dPoMKHUq0qNGjSJMqXcq0qdOnUKOmBCq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqzUN1rdu3TdrCnatULt2Wdu+ayau3L0++fgMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOL/jm69E7AplOrXs26tevXsGMrQS27tu3buHPrFkd7t9nevoMLH04cnYviLGkiX868uXOcwJ9PjC69Oi/lya1rb0Z9u9DuG8F7xyh+vHlb5c+rX48lPfv38OPLZ47a/fz7fbDj389ffxT7/G0DYIAE8uEfEwMWqOCCDDbooEEJPijhhBRWaOGFGIoUYYYcduj/4YcghijiiCSWaOKJKKao4lQrFrVhizCCpdyLMdZo44045oigjjz2SA2NPgYJz3GzHCjkkUgmqWSFRi7p5JNQRinllFSiBGSVWGap5TVX6tTklo0Q+dgkXYJp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABipocV8OauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIb6RJmilmrqqaimquqqrLbq6quwxirrrLTWauutuOaq66689urrr8AGK+ywxBZr7LHIJqvsssw26+yz0GoY7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar/+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZnFsr112DjSWrYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFdu+eWYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbv/77bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99mybkAEEBzTQwAEWZMC9FRkksAADAbTvfvsIPIDB+VBAQAD8FWiAgQUdeNABBgqgAPsYcAEJFIB+SfDAAgBggAQYEAkCiOAHHtC+BCDwCAkIAAM0IIAnCCADFESA+S4ohPtV4IBSEIAFDBCAA5AQAC20wgAKQIEAKACBCAiAFgRQARuebwE63AIPY6g9BxBRiEAcQfY64EMwhCAABMCeACZgADEI4ABHpB4W52dFKlpviggoAwSyGD0maqAMYKxeBIJIhgFkUALTE4ABomiGDJD/0XlwvKEZBmCAB0xvjB04Aw3DKL0GBACOe4wAA+hAgAn4sQwRQAIhx/BIozlgkVEoAQtaIIVLzqGKRfACEkBJhAdM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8+rdy7ev37+AAwseTLjwMpmGE9dFrLix48eQI9cJyViy5cuYM8erLIaz5s/uyIIeTbq06dOoU6tezbo1SdGuY4+VLcUz7dsRmeLezbu37z+6mwi0/bs4POJUYBtfnlC3TOXMoy8LboQc9S7Ss2sLfk/mdeHaw4sfXxwxcvLovXnunr49N+Tn3cufT/8xdCURnjuxGL++f1D3JRHBd/8VKI1K/YERoIEMfrIgAJydp1+DFKqSYIUY4nJhhswQ+P/bhhyGKOKIVnkYUxkmkqjiiiwSld+EILYIoIw05hIjeTcWkWONPLoBYopE7NjjkIesAyRKRCY52RVCKukkKUc+KWUbIDY55ZWDWInlloLkV4WWXIZ5hpcK7iJmIGCeqeaabLbp5ptwxinnnHTWieE1ado5kGgm5FmPcg92pqc/frJE5qCIjpPooow2KqijdxVqFAmSQnrKemZUaumTfmr6jqebOhNodU1F+Q+oaIwaajOmIrkqeqr6F+urDKJKK0EXmndrhbaeuKs2vYp1qK9N/WpssMbSiGyQycoyLETLNistHq1Oay2z1xoXrR7betWto99SWWa2yMxK7rnoptv/TbiMsIuNu6aZq5W86u5Gb70KzVotXPDi629jlPZzLxID/wtnvwYnrPDCAjPsMGkFP3wmwhJXbLFvEV8syL4ad+zxxyCHLCfFIsta8sko85ryyixnR3JNEb/c8mUcz2zzzTirGzBmMktWc85M/Az00EQXbfTRSCet9NJMN+3001BHDXXPUlc9BNVWTyVB1h9jzfXXYCPkddifCU322WinrfbabLft9tvTwS23LRnPbffdeOet99589/2Q2XQA7vfghBdu+OGIJ664ZGMv7vjjkEcu+eSUV2755ZhnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst86lCYK7LvvstNdu//vtuOeu++689+7778AHL/zwxBdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHsqlbj4MomGAKMQiGvGISEyiEpfI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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![data-filter-extension.gif](attachment:e4426b37-c5a4-43ad-b3b7-8566f94c4be9.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As with the `ScatterplotLayer` example, this example will use data from Ookla's Speed Test application and [shared publicly in the AWS Open Data Registry](https://registry.opendata.aws/speedtest-global-performance/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "\n", "import geopandas as gpd\n", "import numpy as np\n", "import pandas as pd\n", "import shapely\n", "from ipywidgets import FloatRangeSlider, jsdlink\n", "from palettable.colorbrewer.diverging import BrBG_10\n", "\n", "from lonboard import Map, ScatterplotLayer\n", "from lonboard.colormap import apply_continuous_cmap\n", "from lonboard.controls import MultiRangeSlider\n", "from lonboard.layer_extension import DataFilterExtension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fetch data\n", "\n", "We use the same data as the `ScatterplotLayer` example except that here we download extra columns from the dataset to use for filtering.\n", "\n", "Columns:\n", "\n", "- `avg_d_kbps`: the average download speed for that data point in kbps\n", "- `avg_u_kbps`: the average upload speed for that data point in kbps\n", "- `avg_lat_ms`: the average latency for that data point in milliseconds\n", "- `devices`: the number of unique devices contributing tests in the tile.\n", "- `tile`: the WKT string representing a given zoom-16 Web Mercator tile\n", "\n", "We cache the downloaded file locally to `data-filter-extension.parquet` so that the second time running this notebook will be faster." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "url = \"https://ookla-open-data.s3.us-west-2.amazonaws.com/parquet/performance/type=mobile/year=2019/quarter=1/2019-01-01_performance_mobile_tiles.parquet\"\n", "local_path = Path(\"data-filter-extension.parquet\")\n", "if local_path.exists():\n", " gdf = gpd.read_parquet(local_path)\n", "else:\n", " columns = [\"avg_d_kbps\", \"avg_u_kbps\", \"avg_lat_ms\", \"devices\", \"tile\"]\n", " df = pd.read_parquet(url, columns=columns)\n", "\n", " tile_geometries = shapely.from_wkt(df[\"tile\"])\n", " tile_centroids = shapely.centroid(tile_geometries)\n", " non_geom_columns = [col for col in columns if col != \"tile\"]\n", " gdf = gpd.GeoDataFrame(df[non_geom_columns], geometry=tile_centroids, crs=\"EPSG:4326\")\n", " gdf.to_parquet(local_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Taking a quick look at this data, we see that we have 3.2 million records." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
avg_d_kbpsavg_u_kbpsavg_lat_msdevicesgeometry
059837886681POINT (-160.01862 70.63722)
137485841782POINT (-160.04059 70.63357)
233646200782POINT (-160.04059 70.63175)
323812328861POINT (-160.03510 70.63357)
430475356751POINT (-160.03510 70.63175)
..................
3231240195283200681POINT (169.81842 -46.29571)
32312411569310359561POINT (169.81293 -46.30710)
3231242267479674582POINT (169.66461 -46.42082)
32312436799513564631POINT (169.65912 -46.45110)
323124412301798551POINT (168.85162 -46.56075)
\n", "

3231245 rows × 5 columns

\n", "
" ], "text/plain": [ " avg_d_kbps avg_u_kbps avg_lat_ms devices \\\n", "0 5983 7886 68 1 \n", "1 3748 5841 78 2 \n", "2 3364 6200 78 2 \n", "3 2381 2328 86 1 \n", "4 3047 5356 75 1 \n", "... ... ... ... ... \n", "3231240 19528 3200 68 1 \n", "3231241 15693 10359 56 1 \n", "3231242 26747 9674 58 2 \n", "3231243 67995 13564 63 1 \n", "3231244 1230 1798 55 1 \n", "\n", " geometry \n", "0 POINT (-160.01862 70.63722) \n", "1 POINT (-160.04059 70.63357) \n", "2 POINT (-160.04059 70.63175) \n", "3 POINT (-160.03510 70.63357) \n", "4 POINT (-160.03510 70.63175) \n", "... ... \n", "3231240 POINT (169.81842 -46.29571) \n", "3231241 POINT (169.81293 -46.30710) \n", "3231242 POINT (169.66461 -46.42082) \n", "3231243 POINT (169.65912 -46.45110) \n", "3231244 POINT (168.85162 -46.56075) \n", "\n", "[3231245 rows x 5 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since we want to cross-filter on three attributes at once, we create a `DataFilterExtension` instance with `filter_size=3`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "filter_extension = DataFilterExtension(filter_size=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similar to the `ScatterplotLayer` example notebook, we create a normalized download speed to use for a per-point color and radius." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "min_bound = 5000\n", "max_bound = 50000\n", "normalized_download_speed = (gdf[\"avg_d_kbps\"] - min_bound) / (max_bound - min_bound)\n", "fill_color = apply_continuous_cmap(normalized_download_speed, BrBG_10)\n", "radius = normalized_download_speed * 200" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we prepare the columns that we want to filter on. In this case, we'll filter on the download speed, upload speed, and latency values. These need to be passed in as a single two-dimensional numpy array, so we use [`numpy.column_stack`](https://numpy.org/doc/stable/reference/generated/numpy.column_stack.html). Only numeric arrays can be used for GPU-based filtering.\n", "\n", "We also define initial filter ranges for each of these columns." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "filter_values = np.column_stack(\n", " [gdf[\"avg_d_kbps\"], gdf[\"avg_u_kbps\"], gdf[\"avg_lat_ms\"]]\n", ")\n", "initial_filter_range = [\n", " [10_000, 50_000],\n", " [1000, 10_000],\n", " [0, 100],\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we create a `ScatterplotLayer` with our desired attributes. Keep in mind that you must pass the `DataFilterExtension` instance to the `extensions` parameter in order to activate its functionality on the layer." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6573b575a4e54c9aaff09fda16afdfbe", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Map(layers=[ScatterplotLayer(extensions=[DataFilterExtension(filter_size=3)], filter_range=[[10000.0, 50000.0]…" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layer = ScatterplotLayer.from_geopandas(\n", " gdf,\n", " extensions=[filter_extension],\n", " get_fill_color=fill_color,\n", " get_radius=radius,\n", " get_filter_value=filter_values,\n", " filter_range=initial_filter_range,\n", " radius_units=\"meters\",\n", " radius_min_pixels=0.1,\n", ")\n", "m = Map(layer)\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Only the points that are within all of our initial filter ranges are shown, but we'd like something more interactive. Let's connect sliders to the map.\n", "\n", "Here we create a separate slider for each attribute and then connect them using a `MultiRangeSlider`. This _defines_ the slider element but it won't be connected to the map until we use `ipywidgets.jsdlink` later." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "351fc3f741564cf983d41de16d75d5a3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "MultiRangeSlider(children=(FloatRangeSlider(value=(10000.0, 50000.0), description='Download: ', max=70000.0), …" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "download_slider = FloatRangeSlider(value=initial_filter_range[0], min=0, max=70_000, step=0.1, description=\"Download: \")\n", "upload_slider = FloatRangeSlider(value=initial_filter_range[1], min=0, max=50_000, step=1, description=\"Upload: \")\n", "latency_slider = FloatRangeSlider(value=initial_filter_range[2], min=0, max=500, step=1, description=\"Latency: \")\n", "multi_slider = MultiRangeSlider([download_slider, upload_slider, latency_slider])\n", "multi_slider" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to propagate the changes in our sliders to the `ScatterplotLayer` instance, we use `jsdlink`. See [Linking Widgets](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Events.html#linking-widgets) in the ipywidgets documentation for more info." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "_ = jsdlink((multi_slider, \"value\"), (layer, \"filter_range\"))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "lonboard", "language": "python", "name": "lonboard" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "047ec5e7425a4654a57cce12177a671e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0cfded5a2e3547eb9bf6027a144497cd": { "model_module": "anywidget", "model_module_version": "2.0.0", "model_name": "AnyModel", "state": { "_anywidget_id": "lonboard._map.Map", "_css": ".lonboard-tooltip{font-family:var(--jp-ui-font-family);font-size:var(--jp-ui-font-size1)}.lonboard-tooltip table{border-collapse:collapse}.lonboard-tooltip table tr:nth-child(odd){background-color:#fff}.lonboard-tooltip table tr:nth-child(2n){background-color:#f1f1f1}.lonboard-tooltip td{border:1px solid rgb(204,204,204);padding:5px}.lonboard-tooltip td:first-child{font-weight:450}\n", "_esm": "var DK=Object.create;var IC=Object.defineProperty;var OK=Object.getOwnPropertyDescriptor;var BK=Object.getOwnPropertyNames;var FK=Object.getPrototypeOf,zK=Object.prototype.hasOwnProperty;var Br=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),dA=(e,t)=>{for(var r in t)IC(e,r,{get:t[r],enumerable:!0})},NK=(e,t,r,i)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let s of BK(t))!zK.call(e,s)&&s!==r&&IC(e,s,{get:()=>t[s],enumerable:!(i=OK(t,s))||i.enumerable});return e};var ki=(e,t,r)=>(r=e!=null?DK(FK(e)):{},NK(t||!e||!e.__esModule?IC(r,\"default\",{value:e,enumerable:!0}):r,e));var e5=Br(Ri=>{\"use strict\";var Zx=Symbol.for(\"react.element\"),UK=Symbol.for(\"react.portal\"),VK=Symbol.for(\"react.fragment\"),jK=Symbol.for(\"react.strict_mode\"),GK=Symbol.for(\"react.profiler\"),WK=Symbol.for(\"react.provider\"),HK=Symbol.for(\"react.context\"),qK=Symbol.for(\"react.forward_ref\"),ZK=Symbol.for(\"react.suspense\"),YK=Symbol.for(\"react.memo\"),QK=Symbol.for(\"react.lazy\"),HF=Symbol.iterator;function $K(e){return e===null||typeof e!=\"object\"?null:(e=HF&&e[HF]||e[\"@@iterator\"],typeof e==\"function\"?e:null)}var YF={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},QF=Object.assign,$F={};function b_(e,t,r){this.props=e,this.context=t,this.refs=$F,this.updater=r||YF}b_.prototype.isReactComponent={};b_.prototype.setState=function(e,t){if(typeof e!=\"object\"&&typeof e!=\"function\"&&e!=null)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")};b_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function XF(){}XF.prototype=b_.prototype;function LC(e,t,r){this.props=e,this.context=t,this.refs=$F,this.updater=r||YF}var kC=LC.prototype=new XF;kC.constructor=LC;QF(kC,b_.prototype);kC.isPureReactComponent=!0;var qF=Array.isArray,KF=Object.prototype.hasOwnProperty,RC={current:null},JF={key:!0,ref:!0,__self:!0,__source:!0};function t5(e,t,r){var i,s={},n=null,o=null;if(t!=null)for(i in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(n=\"\"+t.key),t)KF.call(t,i)&&!JF.hasOwnProperty(i)&&(s[i]=t[i]);var c=arguments.length-2;if(c===1)s.children=r;else if(1{\"use strict\";r5.exports=e5()});var f5=Br(Bn=>{\"use strict\";function zC(e,t){var r=e.length;e.push(t);t:for(;0>>1,s=e[i];if(0>>1;iiT(c,r))fiT(_,c)?(e[i]=_,e[f]=r,i=f):(e[i]=c,e[o]=r,i=o);else if(fiT(_,r))e[i]=_,e[f]=r,i=f;else break t}}return t}function iT(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}typeof performance==\"object\"&&typeof performance.now==\"function\"?(i5=performance,Bn.unstable_now=function(){return i5.now()}):(OC=Date,n5=OC.now(),Bn.unstable_now=function(){return OC.now()-n5});var i5,OC,n5,Ef=[],pA=[],eJ=1,vu=null,Ha=3,oT=!1,d0=!1,Qx=!1,a5=typeof setTimeout==\"function\"?setTimeout:null,l5=typeof clearTimeout==\"function\"?clearTimeout:null,s5=typeof setImmediate<\"u\"?setImmediate:null;typeof navigator<\"u\"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function NC(e){for(var t=wh(pA);t!==null;){if(t.callback===null)sT(pA);else if(t.startTime<=e)sT(pA),t.sortIndex=t.expirationTime,zC(Ef,t);else break;t=wh(pA)}}function UC(e){if(Qx=!1,NC(e),!d0)if(wh(Ef)!==null)d0=!0,jC(VC);else{var t=wh(pA);t!==null&&GC(UC,t.startTime-e)}}function VC(e,t){d0=!1,Qx&&(Qx=!1,l5($x),$x=-1),oT=!0;var r=Ha;try{for(NC(t),vu=wh(Ef);vu!==null&&(!(vu.expirationTime>t)||e&&!h5());){var i=vu.callback;if(typeof i==\"function\"){vu.callback=null,Ha=vu.priorityLevel;var s=i(vu.expirationTime<=t);t=Bn.unstable_now(),typeof s==\"function\"?vu.callback=s:vu===wh(Ef)&&sT(Ef),NC(t)}else sT(Ef);vu=wh(Ef)}if(vu!==null)var n=!0;else{var o=wh(pA);o!==null&&GC(UC,o.startTime-t),n=!1}return n}finally{vu=null,Ha=r,oT=!1}}var aT=!1,nT=null,$x=-1,c5=5,u5=-1;function h5(){return!(Bn.unstable_now()-u5e||125i?(e.sortIndex=r,zC(pA,e),wh(Ef)===null&&e===wh(pA)&&(Qx?(l5($x),$x=-1):Qx=!0,GC(UC,r-i))):(e.sortIndex=s,zC(Ef,e),d0||oT||(d0=!0,jC(VC))),e};Bn.unstable_shouldYield=h5;Bn.unstable_wrapCallback=function(e){var t=Ha;return function(){var r=Ha;Ha=t;try{return e.apply(this,arguments)}finally{Ha=r}}}});var p5=Br(($xt,d5)=>{\"use strict\";d5.exports=f5()});var v8=Br(Wc=>{\"use strict\";var xz=Ji(),jc=p5();function Ee(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,r=1;r\"u\"||typeof window.document>\"u\"||typeof window.document.createElement>\"u\"),fL=Object.prototype.hasOwnProperty,rJ=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,A5={},m5={};function iJ(e){return fL.call(m5,e)?!0:fL.call(A5,e)?!1:rJ.test(e)?m5[e]=!0:(A5[e]=!0,!1)}function nJ(e,t,r,i){if(r!==null&&r.type===0)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return i?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!==\"data-\"&&e!==\"aria-\");default:return!1}}function sJ(e,t,r,i){if(t===null||typeof t>\"u\"||nJ(e,t,r,i))return!0;if(i)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function xl(e,t,r,i,s,n,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=s,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=n,this.removeEmptyString=o}var ga={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(e){ga[e]=new xl(e,0,!1,e,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(e){var t=e[0];ga[t]=new xl(t,1,!1,e[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(e){ga[e]=new xl(e,2,!1,e.toLowerCase(),null,!1,!1)});[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(e){ga[e]=new xl(e,2,!1,e,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(e){ga[e]=new xl(e,3,!1,e.toLowerCase(),null,!1,!1)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(e){ga[e]=new xl(e,3,!0,e,null,!1,!1)});[\"capture\",\"download\"].forEach(function(e){ga[e]=new xl(e,4,!1,e,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(e){ga[e]=new xl(e,6,!1,e,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(e){ga[e]=new xl(e,5,!1,e.toLowerCase(),null,!1,!1)});var nk=/[\\-:]([a-z])/g;function sk(e){return e[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(e){var t=e.replace(nk,sk);ga[t]=new xl(t,1,!1,e,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(e){var t=e.replace(nk,sk);ga[t]=new xl(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(e){var t=e.replace(nk,sk);ga[t]=new xl(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(e){ga[e]=new xl(e,1,!1,e.toLowerCase(),null,!1,!1)});ga.xlinkHref=new xl(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(e){ga[e]=new xl(e,1,!1,e.toLowerCase(),null,!0,!0)});function ok(e,t,r,i){var s=ga.hasOwnProperty(t)?ga[t]:null;(s!==null?s.type!==0:i||!(2c||s[o]!==n[c]){var f=`\n`+s[o].replace(\" at new \",\" at \");return e.displayName&&f.includes(\"\")&&(f=f.replace(\"\",e.displayName)),f}while(1<=o&&0<=c);break}}}finally{HC=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:\"\")?s1(e):\"\"}function oJ(e){switch(e.tag){case 5:return s1(e.type);case 16:return s1(\"Lazy\");case 13:return s1(\"Suspense\");case 19:return s1(\"SuspenseList\");case 0:case 2:case 15:return e=qC(e.type,!1),e;case 11:return e=qC(e.type.render,!1),e;case 1:return e=qC(e.type,!0),e;default:return\"\"}}function mL(e){if(e==null)return null;if(typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case M_:return\"Fragment\";case T_:return\"Portal\";case dL:return\"Profiler\";case ak:return\"StrictMode\";case pL:return\"Suspense\";case AL:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case Sz:return(e.displayName||\"Context\")+\".Consumer\";case wz:return(e._context.displayName||\"Context\")+\".Provider\";case lk:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||\"\",e=e!==\"\"?\"ForwardRef(\"+e+\")\":\"ForwardRef\"),e;case ck:return t=e.displayName||null,t!==null?t:mL(e.type)||\"Memo\";case mA:t=e._payload,e=e._init;try{return mL(e(t))}catch{}}return null}function aJ(e){var t=e.type;switch(e.tag){case 24:return\"Cache\";case 9:return(t.displayName||\"Context\")+\".Consumer\";case 10:return(t._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return e=t.render,e=e.displayName||e.name||\"\",t.displayName||(e!==\"\"?\"ForwardRef(\"+e+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return t;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return mL(t);case 8:return t===ak?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t==\"function\")return t.displayName||t.name||null;if(typeof t==\"string\")return t}return null}function CA(e){switch(typeof e){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return e;case\"object\":return e;default:return\"\"}}function Mz(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===\"input\"&&(t===\"checkbox\"||t===\"radio\")}function lJ(e){var t=Mz(e)?\"checked\":\"value\",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=\"\"+e[t];if(!e.hasOwnProperty(t)&&typeof r<\"u\"&&typeof r.get==\"function\"&&typeof r.set==\"function\"){var s=r.get,n=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(o){i=\"\"+o,n.call(this,o)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return i},setValue:function(o){i=\"\"+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function cT(e){e._valueTracker||(e._valueTracker=lJ(e))}function Ez(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),i=\"\";return e&&(i=Mz(e)?e.checked?\"true\":\"false\":e.value),e=i,e!==r?(t.setValue(e),!0):!1}function FT(e){if(e=e||(typeof document<\"u\"?document:void 0),typeof e>\"u\")return null;try{return e.activeElement||e.body}catch{return e.body}}function gL(e,t){var r=t.checked;return ps({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function _5(e,t){var r=t.defaultValue==null?\"\":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;r=CA(t.value!=null?t.value:r),e._wrapperState={initialChecked:i,initialValue:r,controlled:t.type===\"checkbox\"||t.type===\"radio\"?t.checked!=null:t.value!=null}}function Pz(e,t){t=t.checked,t!=null&&ok(e,\"checked\",t,!1)}function _L(e,t){Pz(e,t);var r=CA(t.value),i=t.type;if(r!=null)i===\"number\"?(r===0&&e.value===\"\"||e.value!=r)&&(e.value=\"\"+r):e.value!==\"\"+r&&(e.value=\"\"+r);else if(i===\"submit\"||i===\"reset\"){e.removeAttribute(\"value\");return}t.hasOwnProperty(\"value\")?yL(e,t.type,r):t.hasOwnProperty(\"defaultValue\")&&yL(e,t.type,CA(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function y5(e,t,r){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var i=t.type;if(!(i!==\"submit\"&&i!==\"reset\"||t.value!==void 0&&t.value!==null))return;t=\"\"+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==\"\"&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,r!==\"\"&&(e.name=r)}function yL(e,t,r){(t!==\"number\"||FT(e.ownerDocument)!==e)&&(r==null?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+r&&(e.defaultValue=\"\"+r))}var o1=Array.isArray;function F_(e,t,r,i){if(e=e.options,t){t={};for(var s=0;s\"+t.valueOf().toString()+\"\",t=uT.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function y1(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var c1={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},cJ=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(c1).forEach(function(e){cJ.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),c1[t]=c1[e]})});function kz(e,t,r){return t==null||typeof t==\"boolean\"||t===\"\"?\"\":r||typeof t!=\"number\"||t===0||c1.hasOwnProperty(e)&&c1[e]?(\"\"+t).trim():t+\"px\"}function Rz(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var i=r.indexOf(\"--\")===0,s=kz(r,t[r],i);r===\"float\"&&(r=\"cssFloat\"),i?e.setProperty(r,s):e[r]=s}}var uJ=ps({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function bL(e,t){if(t){if(uJ[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Ee(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Ee(60));if(typeof t.dangerouslySetInnerHTML!=\"object\"||!(\"__html\"in t.dangerouslySetInnerHTML))throw Error(Ee(61))}if(t.style!=null&&typeof t.style!=\"object\")throw Error(Ee(62))}}function wL(e,t){if(e.indexOf(\"-\")===-1)return typeof t.is==\"string\";switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var SL=null;function uk(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var TL=null,z_=null,N_=null;function b5(e){if(e=F1(e)){if(typeof TL!=\"function\")throw Error(Ee(280));var t=e.stateNode;t&&(t=hM(t),TL(e.stateNode,e.type,t))}}function Dz(e){z_?N_?N_.push(e):N_=[e]:z_=e}function Oz(){if(z_){var e=z_,t=N_;if(N_=z_=null,b5(e),t)for(e=0;e>>=0,e===0?32:31-(xJ(e)/bJ|0)|0}var hT=64,fT=4194304;function a1(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function VT(e,t){var r=e.pendingLanes;if(r===0)return 0;var i=0,s=e.suspendedLanes,n=e.pingedLanes,o=r&268435455;if(o!==0){var c=o&~s;c!==0?i=a1(c):(n&=o,n!==0&&(i=a1(n)))}else o=r&~s,o!==0?i=a1(o):n!==0&&(i=a1(n));if(i===0)return 0;if(t!==0&&t!==i&&!(t&s)&&(s=i&-i,n=t&-t,s>=n||s===16&&(n&4194240)!==0))return t;if(i&4&&(i|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0r;r++)t.push(e);return t}function O1(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ph(t),e[t]=r}function MJ(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=h1),L5=\" \",k5=!1;function eN(e,t){switch(e){case\"keyup\":return ttt.indexOf(t.keyCode)!==-1;case\"keydown\":return t.keyCode!==229;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function rN(e){return e=e.detail,typeof e==\"object\"&&\"data\"in e?e.data:null}var E_=!1;function rtt(e,t){switch(e){case\"compositionend\":return rN(t);case\"keypress\":return t.which!==32?null:(k5=!0,L5);case\"textInput\":return e=t.data,e===L5&&k5?null:e;default:return null}}function itt(e,t){if(E_)return e===\"compositionend\"||!_k&&eN(e,t)?(e=Jz(),PT=Ak=vA=null,E_=!1,e):null;switch(e){case\"paste\":return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=i}t:{for(;r;){if(r.nextSibling){r=r.nextSibling;break t}r=r.parentNode}r=void 0}r=O5(r)}}function oN(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?oN(e,t.parentNode):\"contains\"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function aN(){for(var e=window,t=FT();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href==\"string\"}catch{r=!1}if(r)e=t.contentWindow;else break;t=FT(e.document)}return t}function yk(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===\"input\"&&(e.type===\"text\"||e.type===\"search\"||e.type===\"tel\"||e.type===\"url\"||e.type===\"password\")||t===\"textarea\"||e.contentEditable===\"true\")}function ftt(e){var t=aN(),r=e.focusedElem,i=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&oN(r.ownerDocument.documentElement,r)){if(i!==null&&yk(r)){if(t=i.start,e=i.end,e===void 0&&(e=t),\"selectionStart\"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=r.textContent.length,n=Math.min(i.start,s);i=i.end===void 0?n:Math.min(i.end,s),!e.extend&&n>i&&(s=i,i=n,n=s),s=B5(r,n);var o=B5(r,i);s&&o&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),n>i?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus==\"function\"&&r.focus(),r=0;r=document.documentMode,P_=null,LL=null,d1=null,kL=!1;function F5(e,t,r){var i=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;kL||P_==null||P_!==FT(i)||(i=P_,\"selectionStart\"in i&&yk(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),d1&&T1(d1,i)||(d1=i,i=WT(LL,\"onSelect\"),0L_||(e.current=zL[L_],zL[L_]=null,L_--)}function Fn(e,t){L_++,zL[L_]=e.current,e.current=t}var LA={},Qa=RA(LA),Yl=RA(!1),x0=LA;function W_(e,t){var r=e.type.contextTypes;if(!r)return LA;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var s={},n;for(n in r)s[n]=t[n];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function Ql(e){return e=e.childContextTypes,e!=null}function qT(){Hn(Yl),Hn(Qa)}function q5(e,t,r){if(Qa.current!==LA)throw Error(Ee(168));Fn(Qa,t),Fn(Yl,r)}function mN(e,t,r){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!=\"function\")return r;i=i.getChildContext();for(var s in i)if(!(s in t))throw Error(Ee(108,aJ(e)||\"Unknown\",s));return ps({},r,i)}function ZT(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||LA,x0=Qa.current,Fn(Qa,e),Fn(Yl,Yl.current),!0}function Z5(e,t,r){var i=e.stateNode;if(!i)throw Error(Ee(169));r?(e=mN(e,t,x0),i.__reactInternalMemoizedMergedChildContext=e,Hn(Yl),Hn(Qa),Fn(Qa,e)):Hn(Yl),Fn(Yl,r)}var jd=null,fM=!1,iL=!1;function gN(e){jd===null?jd=[e]:jd.push(e)}function btt(e){fM=!0,gN(e)}function DA(){if(!iL&&jd!==null){iL=!0;var e=0,t=mn;try{var r=jd;for(mn=1;e>=o,s-=o,Gd=1<<32-Ph(t)+s|r<Zt?(le=Kt,Kt=null):le=Kt.sibling;var ue=R($,Kt,tt[Zt],ut);if(ue===null){Kt===null&&(Kt=le);break}e&&Kt&&ue.alternate===null&&t($,Kt),K=n(ue,K,Zt),Ot===null?Pt=ue:Ot.sibling=ue,Ot=ue,Kt=le}if(Zt===tt.length)return r($,Kt),es&&p0($,Zt),Pt;if(Kt===null){for(;ZtZt?(le=Kt,Kt=null):le=Kt.sibling;var Ge=R($,Kt,ue.value,ut);if(Ge===null){Kt===null&&(Kt=le);break}e&&Kt&&Ge.alternate===null&&t($,Kt),K=n(Ge,K,Zt),Ot===null?Pt=Ge:Ot.sibling=Ge,Ot=Ge,Kt=le}if(ue.done)return r($,Kt),es&&p0($,Zt),Pt;if(Kt===null){for(;!ue.done;Zt++,ue=tt.next())ue=C($,ue.value,ut),ue!==null&&(K=n(ue,K,Zt),Ot===null?Pt=ue:Ot.sibling=ue,Ot=ue);return es&&p0($,Zt),Pt}for(Kt=i($,Kt);!ue.done;Zt++,ue=tt.next())ue=N(Kt,$,Zt,ue.value,ut),ue!==null&&(e&&ue.alternate!==null&&Kt.delete(ue.key===null?Zt:ue.key),K=n(ue,K,Zt),Ot===null?Pt=ue:Ot.sibling=ue,Ot=ue);return e&&Kt.forEach(function(tr){return t($,tr)}),es&&p0($,Zt),Pt}function rt($,K,tt,ut){if(typeof tt==\"object\"&&tt!==null&&tt.type===M_&&tt.key===null&&(tt=tt.props.children),typeof tt==\"object\"&&tt!==null){switch(tt.$$typeof){case lT:t:{for(var Pt=tt.key,Ot=K;Ot!==null;){if(Ot.key===Pt){if(Pt=tt.type,Pt===M_){if(Ot.tag===7){r($,Ot.sibling),K=s(Ot,tt.props.children),K.return=$,$=K;break t}}else if(Ot.elementType===Pt||typeof Pt==\"object\"&&Pt!==null&&Pt.$$typeof===mA&&tz(Pt)===Ot.type){r($,Ot.sibling),K=s(Ot,tt.props),K.ref=e1($,Ot,tt),K.return=$,$=K;break t}r($,Ot);break}else t($,Ot);Ot=Ot.sibling}tt.type===M_?(K=v0(tt.props.children,$.mode,ut,tt.key),K.return=$,$=K):(ut=BT(tt.type,tt.key,tt.props,null,$.mode,ut),ut.ref=e1($,K,tt),ut.return=$,$=ut)}return o($);case T_:t:{for(Ot=tt.key;K!==null;){if(K.key===Ot)if(K.tag===4&&K.stateNode.containerInfo===tt.containerInfo&&K.stateNode.implementation===tt.implementation){r($,K.sibling),K=s(K,tt.children||[]),K.return=$,$=K;break t}else{r($,K);break}else t($,K);K=K.sibling}K=hL(tt,$.mode,ut),K.return=$,$=K}return o($);case mA:return Ot=tt._init,rt($,K,Ot(tt._payload),ut)}if(o1(tt))return j($,K,tt,ut);if(Xx(tt))return Y($,K,tt,ut);wT($,tt)}return typeof tt==\"string\"&&tt!==\"\"||typeof tt==\"number\"?(tt=\"\"+tt,K!==null&&K.tag===6?(r($,K.sibling),K=s(K,tt),K.return=$,$=K):(r($,K),K=uL(tt,$.mode,ut),K.return=$,$=K),o($)):r($,K)}return rt}var q_=TN(!0),MN=TN(!1),z1={},kf=RA(z1),I1=RA(z1),C1=RA(z1);function _0(e){if(e===z1)throw Error(Ee(174));return e}function Pk(e,t){switch(Fn(C1,t),Fn(I1,e),Fn(kf,z1),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:xL(null,\"\");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=xL(t,e)}Hn(kf),Fn(kf,t)}function Z_(){Hn(kf),Hn(I1),Hn(C1)}function EN(e){_0(C1.current);var t=_0(kf.current),r=xL(t,e.type);t!==r&&(Fn(I1,e),Fn(kf,r))}function Ik(e){I1.current===e&&(Hn(kf),Hn(I1))}var fs=RA(0);function JT(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data===\"$?\"||r.data===\"$!\"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var nL=[];function Ck(){for(var e=0;er?r:4,e(!0);var i=sL.transition;sL.transition={};try{e(!1),t()}finally{mn=r,sL.transition=i}}function GN(){return Mu().memoizedState}function Mtt(e,t,r){var i=PA(e);if(r={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null},WN(e))HN(t,r);else if(r=xN(e,t,r,i),r!==null){var s=vl();Ih(r,e,i,s),qN(r,t,i)}}function Ett(e,t,r){var i=PA(e),s={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null};if(WN(e))HN(t,s);else{var n=e.alternate;if(e.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var o=t.lastRenderedState,c=n(o,r);if(s.hasEagerState=!0,s.eagerState=c,Ch(c,o)){var f=t.interleaved;f===null?(s.next=s,Mk(t)):(s.next=f.next,f.next=s),t.interleaved=s;return}}catch{}finally{}r=xN(e,t,s,i),r!==null&&(s=vl(),Ih(r,e,i,s),qN(r,t,i))}}function WN(e){var t=e.alternate;return e===ds||t!==null&&t===ds}function HN(e,t){p1=tM=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function qN(e,t,r){if(r&4194240){var i=t.lanes;i&=e.pendingLanes,r|=i,t.lanes=r,fk(e,r)}}var eM={readContext:Tu,useCallback:qa,useContext:qa,useEffect:qa,useImperativeHandle:qa,useInsertionEffect:qa,useLayoutEffect:qa,useMemo:qa,useReducer:qa,useRef:qa,useState:qa,useDebugValue:qa,useDeferredValue:qa,useTransition:qa,useMutableSource:qa,useSyncExternalStore:qa,useId:qa,unstable_isNewReconciler:!1},Ptt={readContext:Tu,useCallback:function(e,t){return If().memoizedState=[e,t===void 0?null:t],e},useContext:Tu,useEffect:rz,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,kT(4194308,4,zN.bind(null,t,e),r)},useLayoutEffect:function(e,t){return kT(4194308,4,e,t)},useInsertionEffect:function(e,t){return kT(4,2,e,t)},useMemo:function(e,t){var r=If();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var i=If();return t=r!==void 0?r(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=Mtt.bind(null,ds,e),[i.memoizedState,e]},useRef:function(e){var t=If();return e={current:e},t.memoizedState=e},useState:ez,useDebugValue:Ok,useDeferredValue:function(e){return If().memoizedState=e},useTransition:function(){var e=ez(!1),t=e[0];return e=Ttt.bind(null,e[1]),If().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var i=ds,s=If();if(es){if(r===void 0)throw Error(Ee(407));r=r()}else{if(r=t(),Xo===null)throw Error(Ee(349));w0&30||CN(i,t,r)}s.memoizedState=r;var n={value:r,getSnapshot:t};return s.queue=n,rz(kN.bind(null,i,n,e),[e]),i.flags|=2048,R1(9,LN.bind(null,i,n,r,t),void 0,null),r},useId:function(){var e=If(),t=Xo.identifierPrefix;if(es){var r=Wd,i=Gd;r=(i&~(1<<32-Ph(i)-1)).toString(32)+r,t=\":\"+t+\"R\"+r,r=L1++,0<\\/script>\",e=e.removeChild(e.firstChild)):typeof i.is==\"string\"?e=o.createElement(r,{is:i.is}):(e=o.createElement(r),r===\"select\"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,r),e[Cf]=t,e[P1]=i,e8(e,t,!1,!1),t.stateNode=e;t:{switch(o=wL(r,i),r){case\"dialog\":Wn(\"cancel\",e),Wn(\"close\",e),s=i;break;case\"iframe\":case\"object\":case\"embed\":Wn(\"load\",e),s=i;break;case\"video\":case\"audio\":for(s=0;sQ_&&(t.flags|=128,i=!0,r1(n,!1),t.lanes=4194304)}else{if(!i)if(e=JT(o),e!==null){if(t.flags|=128,i=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),r1(n,!0),n.tail===null&&n.tailMode===\"hidden\"&&!o.alternate&&!es)return Za(t),null}else 2*qs()-n.renderingStartTime>Q_&&r!==1073741824&&(t.flags|=128,i=!0,r1(n,!1),t.lanes=4194304);n.isBackwards?(o.sibling=t.child,t.child=o):(r=n.last,r!==null?r.sibling=o:t.child=o,n.last=o)}return n.tail!==null?(t=n.tail,n.rendering=t,n.tail=t.sibling,n.renderingStartTime=qs(),t.sibling=null,r=fs.current,Fn(fs,i?r&1|2:r&1),t):(Za(t),null);case 22:case 23:return Vk(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Nc&1073741824&&(Za(t),t.subtreeFlags&6&&(t.flags|=8192)):Za(t),null;case 24:return null;case 25:return null}throw Error(Ee(156,t.tag))}function Btt(e,t){switch(xk(t),t.tag){case 1:return Ql(t.type)&&qT(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Z_(),Hn(Yl),Hn(Qa),Ck(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Ik(t),null;case 13:if(Hn(fs),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ee(340));H_()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Hn(fs),null;case 4:return Z_(),null;case 10:return Tk(t.type._context),null;case 22:case 23:return Vk(),null;case 24:return null;default:return null}}var TT=!1,Ya=!1,Ftt=typeof WeakSet==\"function\"?WeakSet:Set,cr=null;function O_(e,t){var r=e.ref;if(r!==null)if(typeof r==\"function\")try{r(null)}catch(i){Is(e,t,i)}else r.current=null}function $L(e,t,r){try{r()}catch(i){Is(e,t,i)}}var hz=!1;function ztt(e,t){if(RL=jT,e=aN(),yk(e)){if(\"selectionStart\"in e)var r={start:e.selectionStart,end:e.selectionEnd};else t:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var s=i.anchorOffset,n=i.focusNode;i=i.focusOffset;try{r.nodeType,n.nodeType}catch{r=null;break t}var o=0,c=-1,f=-1,_=0,w=0,C=e,R=null;e:for(;;){for(var N;C!==r||s!==0&&C.nodeType!==3||(c=o+s),C!==n||i!==0&&C.nodeType!==3||(f=o+i),C.nodeType===3&&(o+=C.nodeValue.length),(N=C.firstChild)!==null;)R=C,C=N;for(;;){if(C===e)break e;if(R===r&&++_===s&&(c=o),R===n&&++w===i&&(f=o),(N=C.nextSibling)!==null)break;C=R,R=C.parentNode}C=N}r=c===-1||f===-1?null:{start:c,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(DL={focusedElem:e,selectionRange:r},jT=!1,cr=t;cr!==null;)if(t=cr,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,cr=e;else for(;cr!==null;){t=cr;try{var j=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(j!==null){var Y=j.memoizedProps,rt=j.memoizedState,$=t.stateNode,K=$.getSnapshotBeforeUpdate(t.elementType===t.type?Y:Th(t.type,Y),rt);$.__reactInternalSnapshotBeforeUpdate=K}break;case 3:var tt=t.stateNode.containerInfo;tt.nodeType===1?tt.textContent=\"\":tt.nodeType===9&&tt.documentElement&&tt.removeChild(tt.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Ee(163))}}catch(ut){Is(t,t.return,ut)}if(e=t.sibling,e!==null){e.return=t.return,cr=e;break}cr=t.return}return j=hz,hz=!1,j}function A1(e,t,r){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var s=i=i.next;do{if((s.tag&e)===e){var n=s.destroy;s.destroy=void 0,n!==void 0&&$L(t,r,n)}s=s.next}while(s!==i)}}function AM(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var i=r.create;r.destroy=i()}r=r.next}while(r!==t)}}function XL(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t==\"function\"?t(e):t.current=e}}function n8(e){var t=e.alternate;t!==null&&(e.alternate=null,n8(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Cf],delete t[P1],delete t[FL],delete t[vtt],delete t[xtt])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function s8(e){return e.tag===5||e.tag===3||e.tag===4}function fz(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||s8(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function KL(e,t,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=HT));else if(i!==4&&(e=e.child,e!==null))for(KL(e,t,r),e=e.sibling;e!==null;)KL(e,t,r),e=e.sibling}function JL(e,t,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(JL(e,t,r),e=e.sibling;e!==null;)JL(e,t,r),e=e.sibling}var Aa=null,Mh=!1;function AA(e,t,r){for(r=r.child;r!==null;)o8(e,t,r),r=r.sibling}function o8(e,t,r){if(Lf&&typeof Lf.onCommitFiberUnmount==\"function\")try{Lf.onCommitFiberUnmount(aM,r)}catch{}switch(r.tag){case 5:Ya||O_(r,t);case 6:var i=Aa,s=Mh;Aa=null,AA(e,t,r),Aa=i,Mh=s,Aa!==null&&(Mh?(e=Aa,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Aa.removeChild(r.stateNode));break;case 18:Aa!==null&&(Mh?(e=Aa,r=r.stateNode,e.nodeType===8?rL(e.parentNode,r):e.nodeType===1&&rL(e,r),w1(e)):rL(Aa,r.stateNode));break;case 4:i=Aa,s=Mh,Aa=r.stateNode.containerInfo,Mh=!0,AA(e,t,r),Aa=i,Mh=s;break;case 0:case 11:case 14:case 15:if(!Ya&&(i=r.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){s=i=i.next;do{var n=s,o=n.destroy;n=n.tag,o!==void 0&&(n&2||n&4)&&$L(r,t,o),s=s.next}while(s!==i)}AA(e,t,r);break;case 1:if(!Ya&&(O_(r,t),i=r.stateNode,typeof i.componentWillUnmount==\"function\"))try{i.props=r.memoizedProps,i.state=r.memoizedState,i.componentWillUnmount()}catch(c){Is(r,t,c)}AA(e,t,r);break;case 21:AA(e,t,r);break;case 22:r.mode&1?(Ya=(i=Ya)||r.memoizedState!==null,AA(e,t,r),Ya=i):AA(e,t,r);break;default:AA(e,t,r)}}function dz(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new Ftt),t.forEach(function(i){var s=Ztt.bind(null,e,i);r.has(i)||(r.add(i),i.then(s,s))})}}function Sh(e,t){var r=t.deletions;if(r!==null)for(var i=0;is&&(s=o),i&=~n}if(i=s,i=qs()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*Utt(i/1960))-i,10e?16:e,xA===null)var i=!1;else{if(e=xA,xA=null,nM=0,Wi&6)throw Error(Ee(331));var s=Wi;for(Wi|=4,cr=e.current;cr!==null;){var n=cr,o=n.child;if(cr.flags&16){var c=n.deletions;if(c!==null){for(var f=0;fqs()-Nk?y0(e,0):zk|=r),$l(e,t)}function p8(e,t){t===0&&(e.mode&1?(t=fT,fT<<=1,!(fT&130023424)&&(fT=4194304)):t=1);var r=vl();e=Yd(e,t),e!==null&&(O1(e,t,r),$l(e,r))}function qtt(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),p8(e,r)}function Ztt(e,t){var r=0;switch(e.tag){case 13:var i=e.stateNode,s=e.memoizedState;s!==null&&(r=s.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(Ee(314))}i!==null&&i.delete(t),p8(e,r)}var A8;A8=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Yl.current)Zl=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Zl=!1,Dtt(e,t,r);Zl=!!(e.flags&131072)}else Zl=!1,es&&t.flags&1048576&&_N(t,QT,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;RT(e,t),e=t.pendingProps;var s=W_(t,Qa.current);V_(t,r),s=kk(null,t,i,e,s,r);var n=Rk();return t.flags|=1,typeof s==\"object\"&&s!==null&&typeof s.render==\"function\"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ql(i)?(n=!0,ZT(t)):n=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Ek(t),s.updater=dM,t.stateNode=s,s._reactInternals=t,GL(t,i,e,r),t=qL(null,t,i,!0,n,r)):(t.tag=0,es&&n&&vk(t),yl(null,t,s,r),t=t.child),t;case 16:i=t.elementType;t:{switch(RT(e,t),e=t.pendingProps,s=i._init,i=s(i._payload),t.type=i,s=t.tag=Qtt(i),e=Th(i,e),s){case 0:t=HL(null,t,i,e,r);break t;case 1:t=lz(null,t,i,e,r);break t;case 11:t=oz(null,t,i,e,r);break t;case 14:t=az(null,t,i,Th(i.type,e),r);break t}throw Error(Ee(306,i,\"\"))}return t;case 0:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),HL(e,t,i,s,r);case 1:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),lz(e,t,i,s,r);case 3:t:{if(KN(t),e===null)throw Error(Ee(387));i=t.pendingProps,n=t.memoizedState,s=n.element,bN(e,t),KT(t,i,null,r);var o=t.memoizedState;if(i=o.element,n.isDehydrated)if(n={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){s=Y_(Error(Ee(423)),t),t=cz(e,t,i,r,s);break t}else if(i!==s){s=Y_(Error(Ee(424)),t),t=cz(e,t,i,r,s);break t}else for(Uc=TA(t.stateNode.containerInfo.firstChild),Vc=t,es=!0,Eh=null,r=MN(t,null,i,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(H_(),i===s){t=Qd(e,t,r);break t}yl(e,t,i,r)}t=t.child}return t;case 5:return EN(t),e===null&&UL(t),i=t.type,s=t.pendingProps,n=e!==null?e.memoizedProps:null,o=s.children,OL(i,s)?o=null:n!==null&&OL(i,n)&&(t.flags|=32),XN(e,t),yl(e,t,o,r),t.child;case 6:return e===null&&UL(t),null;case 13:return JN(e,t,r);case 4:return Pk(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=q_(t,null,i,r):yl(e,t,i,r),t.child;case 11:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),oz(e,t,i,s,r);case 7:return yl(e,t,t.pendingProps,r),t.child;case 8:return yl(e,t,t.pendingProps.children,r),t.child;case 12:return yl(e,t,t.pendingProps.children,r),t.child;case 10:t:{if(i=t.type._context,s=t.pendingProps,n=t.memoizedProps,o=s.value,Fn($T,i._currentValue),i._currentValue=o,n!==null)if(Ch(n.value,o)){if(n.children===s.children&&!Yl.current){t=Qd(e,t,r);break t}}else for(n=t.child,n!==null&&(n.return=t);n!==null;){var c=n.dependencies;if(c!==null){o=n.child;for(var f=c.firstContext;f!==null;){if(f.context===i){if(n.tag===1){f=Hd(-1,r&-r),f.tag=2;var _=n.updateQueue;if(_!==null){_=_.shared;var w=_.pending;w===null?f.next=f:(f.next=w.next,w.next=f),_.pending=f}}n.lanes|=r,f=n.alternate,f!==null&&(f.lanes|=r),VL(n.return,r,t),c.lanes|=r;break}f=f.next}}else if(n.tag===10)o=n.type===t.type?null:n.child;else if(n.tag===18){if(o=n.return,o===null)throw Error(Ee(341));o.lanes|=r,c=o.alternate,c!==null&&(c.lanes|=r),VL(o,r,t),o=n.sibling}else o=n.child;if(o!==null)o.return=n;else for(o=n;o!==null;){if(o===t){o=null;break}if(n=o.sibling,n!==null){n.return=o.return,o=n;break}o=o.return}n=o}yl(e,t,s.children,r),t=t.child}return t;case 9:return s=t.type,i=t.pendingProps.children,V_(t,r),s=Tu(s),i=i(s),t.flags|=1,yl(e,t,i,r),t.child;case 14:return i=t.type,s=Th(i,t.pendingProps),s=Th(i.type,s),az(e,t,i,s,r);case 15:return QN(e,t,t.type,t.pendingProps,r);case 17:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),RT(e,t),t.tag=1,Ql(i)?(e=!0,ZT(t)):e=!1,V_(t,r),SN(t,i,s),GL(t,i,s,r),qL(null,t,i,!0,e,r);case 19:return t8(e,t,r);case 22:return $N(e,t,r)}throw Error(Ee(156,t.tag))};function m8(e,t){return jz(e,t)}function Ytt(e,t,r,i){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function wu(e,t,r,i){return new Ytt(e,t,r,i)}function Gk(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Qtt(e){if(typeof e==\"function\")return Gk(e)?1:0;if(e!=null){if(e=e.$$typeof,e===lk)return 11;if(e===ck)return 14}return 2}function IA(e,t){var r=e.alternate;return r===null?(r=wu(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function BT(e,t,r,i,s,n){var o=2;if(i=e,typeof e==\"function\")Gk(e)&&(o=1);else if(typeof e==\"string\")o=5;else t:switch(e){case M_:return v0(r.children,s,n,t);case ak:o=8,s|=8;break;case dL:return e=wu(12,r,t,s|2),e.elementType=dL,e.lanes=n,e;case pL:return e=wu(13,r,t,s),e.elementType=pL,e.lanes=n,e;case AL:return e=wu(19,r,t,s),e.elementType=AL,e.lanes=n,e;case Tz:return gM(r,s,n,t);default:if(typeof e==\"object\"&&e!==null)switch(e.$$typeof){case wz:o=10;break t;case Sz:o=9;break t;case lk:o=11;break t;case ck:o=14;break t;case mA:o=16,i=null;break t}throw Error(Ee(130,e==null?e:typeof e,\"\"))}return t=wu(o,r,t,s),t.elementType=e,t.type=i,t.lanes=n,t}function v0(e,t,r,i){return e=wu(7,e,i,t),e.lanes=r,e}function gM(e,t,r,i){return e=wu(22,e,i,t),e.elementType=Tz,e.lanes=r,e.stateNode={isHidden:!1},e}function uL(e,t,r){return e=wu(6,e,null,t),e.lanes=r,e}function hL(e,t,r){return t=wu(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function $tt(e,t,r,i,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=YC(0),this.expirationTimes=YC(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=YC(0),this.identifierPrefix=i,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Wk(e,t,r,i,s,n,o,c,f){return e=new $tt(e,t,r,c,f),t===1?(t=1,n===!0&&(t|=8)):t=0,n=wu(3,null,null,t),e.current=n,n.stateNode=e,n.memoizedState={element:i,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ek(n),e}function Xtt(e,t,r){var i=3{\"use strict\";function x8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=\"function\"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(x8)}catch(e){console.error(e)}}x8(),b8.exports=v8()});var S8=Br(Yk=>{\"use strict\";var w8=bM();Yk.createRoot=w8.createRoot,Yk.hydrateRoot=w8.hydrateRoot;var Jxt});var U8=Br((s4,o4)=>{(function(e,t){typeof s4==\"object\"&&typeof o4<\"u\"?o4.exports=t():(e=typeof globalThis<\"u\"?globalThis:e||self,e.maplibregl=t())})(s4,function(){\"use strict\";var e,t,r;function i(n,o){if(!e)e=o;else if(!t)t=o;else{var c=\"var sharedChunk = {}; (\"+e+\")(sharedChunk); (\"+t+\")(sharedChunk);\",f={};e(f),r=o(f),typeof window<\"u\"&&(r.workerUrl=window.URL.createObjectURL(new Blob([c],{type:\"text/javascript\"})))}}i([\"exports\"],function(n){\"use strict\";function o(u,a,h,A){return new(h||(h=Promise))(function(x,E){function P(V){try{F(A.next(V))}catch(q){E(q)}}function D(V){try{F(A.throw(V))}catch(q){E(q)}}function F(V){var q;V.done?x(V.value):(q=V.value,q instanceof h?q:new h(function(X){X(q)})).then(P,D)}F((A=A.apply(u,a||[])).next())})}function c(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,\"default\")?u.default:u}typeof SuppressedError==\"function\"&&SuppressedError;var f=_;function _(u,a){this.x=u,this.y=a}_.prototype={clone:function(){return new _(this.x,this.y)},add:function(u){return this.clone()._add(u)},sub:function(u){return this.clone()._sub(u)},multByPoint:function(u){return this.clone()._multByPoint(u)},divByPoint:function(u){return this.clone()._divByPoint(u)},mult:function(u){return this.clone()._mult(u)},div:function(u){return this.clone()._div(u)},rotate:function(u){return this.clone()._rotate(u)},rotateAround:function(u,a){return this.clone()._rotateAround(u,a)},matMult:function(u){return this.clone()._matMult(u)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(u){return this.x===u.x&&this.y===u.y},dist:function(u){return Math.sqrt(this.distSqr(u))},distSqr:function(u){var a=u.x-this.x,h=u.y-this.y;return a*a+h*h},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(u){return Math.atan2(this.y-u.y,this.x-u.x)},angleWith:function(u){return this.angleWithSep(u.x,u.y)},angleWithSep:function(u,a){return Math.atan2(this.x*a-this.y*u,this.x*u+this.y*a)},_matMult:function(u){var a=u[2]*this.x+u[3]*this.y;return this.x=u[0]*this.x+u[1]*this.y,this.y=a,this},_add:function(u){return this.x+=u.x,this.y+=u.y,this},_sub:function(u){return this.x-=u.x,this.y-=u.y,this},_mult:function(u){return this.x*=u,this.y*=u,this},_div:function(u){return this.x/=u,this.y/=u,this},_multByPoint:function(u){return this.x*=u.x,this.y*=u.y,this},_divByPoint:function(u){return this.x/=u.x,this.y/=u.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var u=this.y;return this.y=this.x,this.x=-u,this},_rotate:function(u){var a=Math.cos(u),h=Math.sin(u),A=h*this.x+a*this.y;return this.x=a*this.x-h*this.y,this.y=A,this},_rotateAround:function(u,a){var h=Math.cos(u),A=Math.sin(u),x=a.y+A*(this.x-a.x)+h*(this.y-a.y);return this.x=a.x+h*(this.x-a.x)-A*(this.y-a.y),this.y=x,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},_.convert=function(u){return u instanceof _?u:Array.isArray(u)?new _(u[0],u[1]):u};var w=c(f),C=R;function R(u,a,h,A){this.cx=3*u,this.bx=3*(h-u)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*a,this.by=3*(A-a)-this.cy,this.ay=1-this.cy-this.by,this.p1x=u,this.p1y=a,this.p2x=h,this.p2y=A}R.prototype={sampleCurveX:function(u){return((this.ax*u+this.bx)*u+this.cx)*u},sampleCurveY:function(u){return((this.ay*u+this.by)*u+this.cy)*u},sampleCurveDerivativeX:function(u){return(3*this.ax*u+2*this.bx)*u+this.cx},solveCurveX:function(u,a){if(a===void 0&&(a=1e-6),u<0)return 0;if(u>1)return 1;for(var h=u,A=0;A<8;A++){var x=this.sampleCurveX(h)-u;if(Math.abs(x)x?P=h:D=h,h=.5*(D-P)+P;return h},solve:function(u,a){return this.sampleCurveY(this.solveCurveX(u,a))}};var N=c(C);let j,Y;function rt(){return j==null&&(j=typeof OffscreenCanvas<\"u\"&&new OffscreenCanvas(1,1).getContext(\"2d\")&&typeof createImageBitmap==\"function\"),j}function $(){if(Y==null&&(Y=!1,rt())){let a=new OffscreenCanvas(5,5).getContext(\"2d\",{willReadFrequently:!0});if(a){for(let A=0;A<5*5;A++){let x=4*A;a.fillStyle=`rgb(${x},${x+1},${x+2})`,a.fillRect(A%5,Math.floor(A/5),1,1)}let h=a.getImageData(0,0,5,5).data;for(let A=0;A<5*5*4;A++)if(A%4!=3&&h[A]!==A){Y=!0;break}}}return Y||!1}function K(u,a,h,A){let x=new N(u,a,h,A);return function(E){return x.solve(E)}}let tt=K(.25,.1,.25,1);function ut(u,a,h){return Math.min(h,Math.max(a,u))}function Pt(u,a,h){let A=h-a,x=((u-a)%A+A)%A+a;return x===a?h:x}function Ot(u,...a){for(let h of a)for(let A in h)u[A]=h[A];return u}let Kt=1;function Zt(u,a,h){let A={};for(let x in u)A[x]=a.call(h||this,u[x],x,u);return A}function le(u,a,h){let A={};for(let x in u)a.call(h||this,u[x],x,u)&&(A[x]=u[x]);return A}function ue(u){return Array.isArray(u)?u.map(ue):typeof u==\"object\"&&u?Zt(u,ue):u}let Ge={};function tr(u){Ge[u]||(typeof console<\"u\"&&console.warn(u),Ge[u]=!0)}function er(u,a,h){return(h.y-u.y)*(a.x-u.x)>(a.y-u.y)*(h.x-u.x)}function Lr(u){let a=0;for(let h,A,x=0,E=u.length,P=E-1;x\"u\")throw new Error(\"VideoFrame not supported\");let E=new VideoFrame(u,{timestamp:0});try{let P=E?.format;if(!P||!P.startsWith(\"BGR\")&&!P.startsWith(\"RGB\"))throw new Error(`Unrecognized format ${P}`);let D=P.startsWith(\"BGR\"),F=new Uint8ClampedArray(A*x*4);if(yield E.copyTo(F,function(V,q,X,et,at){let ct=4*Math.max(-q,0),mt=(Math.max(0,X)-X)*et*4+ct,bt=4*et,Et=Math.max(0,q),Vt=Math.max(0,X);return{rect:{x:Et,y:Vt,width:Math.min(V.width,q+et)-Et,height:Math.min(V.height,X+at)-Vt},layout:[{offset:mt,stride:bt}]}}(u,a,h,A,x)),D)for(let V=0;VcancelAnimationFrame(a)}},getImageData(u,a=0){return this.getImageCanvasContext(u).getImageData(-a,-a,u.width+2*a,u.height+2*a)},getImageCanvasContext(u){let a=window.document.createElement(\"canvas\"),h=a.getContext(\"2d\",{willReadFrequently:!0});if(!h)throw new Error(\"failed to create canvas 2d context\");return a.width=u.width,a.height=u.height,h.drawImage(u,0,0,u.width,u.height),h},resolveURL:u=>(Ds||(Ds=document.createElement(\"a\")),Ds.href=u,Ds.href),hardwareConcurrency:typeof navigator<\"u\"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(sl==null&&(sl=matchMedia(\"(prefers-reduced-motion: reduce)\")),sl.matches)}},Cc={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:\"\"};class Zi extends Error{constructor(a,h,A,x){super(`AJAXError: ${h} (${a}): ${A}`),this.status=a,this.statusText=h,this.url=A,this.body=x}}let $n=zi()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol===\"blob:\"?window.parent:window).location.href,Ii=u=>Cc.REGISTERED_PROTOCOLS[u.substring(0,u.indexOf(\"://\"))];function Xn(u,a){let h=new AbortController,A=new Request(u.url,{method:u.method||\"GET\",body:u.body,credentials:u.credentials,headers:u.headers,cache:u.cache,referrer:$n(),signal:h.signal}),x=!1,E=!1;return u.type===\"json\"&&A.headers.set(\"Accept\",\"application/json\"),E||fetch(A).then(P=>P.ok?(D=>{(u.type===\"arrayBuffer\"||u.type===\"image\"?D.arrayBuffer():u.type===\"json\"?D.json():D.text()).then(F=>{E||(x=!0,a(null,F,D.headers.get(\"Cache-Control\"),D.headers.get(\"Expires\")))}).catch(F=>{E||a(new Error(F.message))})})(P):P.blob().then(D=>a(new Zi(P.status,P.statusText,u.url,D)))).catch(P=>{P.code!==20&&a(new Error(P.message))}),{cancel:()=>{E=!0,x||h.abort()}}}let No=function(u,a){if(/:\\/\\//.test(u.url)&&!/^https?:|^file:/.test(u.url)){if(zi()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",u,a);if(!zi())return(Ii(u.url)||Xn)(u,a)}if(!(/^file:/.test(h=u.url)||/^file:/.test($n())&&!/^\\w+:/.test(h))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,\"signal\"))return Xn(u,a);if(zi()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",u,a,void 0,!0)}var h;return function(A,x){let E=new XMLHttpRequest;E.open(A.method||\"GET\",A.url,!0),A.type!==\"arrayBuffer\"&&A.type!==\"image\"||(E.responseType=\"arraybuffer\");for(let P in A.headers)E.setRequestHeader(P,A.headers[P]);return A.type===\"json\"&&(E.responseType=\"text\",E.setRequestHeader(\"Accept\",\"application/json\")),E.withCredentials=A.credentials===\"include\",E.onerror=()=>{x(new Error(E.statusText))},E.onload=()=>{if((E.status>=200&&E.status<300||E.status===0)&&E.response!==null){let P=E.response;if(A.type===\"json\")try{P=JSON.parse(E.response)}catch(D){return x(D)}x(null,P,E.getResponseHeader(\"Cache-Control\"),E.getResponseHeader(\"Expires\"))}else{let P=new Blob([E.response],{type:E.getResponseHeader(\"Content-Type\")});x(new Zi(E.status,E.statusText,A.url,P))}},E.send(A.body),{cancel:()=>E.abort()}}(u,a)},ol=function(u,a){return No(Ot(u,{type:\"arrayBuffer\"}),a)};function fo(u){if(!u||u.indexOf(\"://\")<=0||u.indexOf(\"data:image/\")===0||u.indexOf(\"blob:\")===0)return!0;let a=new URL(u),h=window.location;return a.protocol===h.protocol&&a.host===h.host}function Ea(u,a,h){h[u]&&h[u].indexOf(a)!==-1||(h[u]=h[u]||[],h[u].push(a))}function na(u,a,h){if(h&&h[u]){let A=h[u].indexOf(a);A!==-1&&h[u].splice(A,1)}}class ss{constructor(a,h={}){Ot(this,h),this.type=a}}class to extends ss{constructor(a,h={}){super(\"error\",Ot({error:a},h))}}class Ol{on(a,h){return this._listeners=this._listeners||{},Ea(a,h,this._listeners),this}off(a,h){return na(a,h,this._listeners),na(a,h,this._oneTimeListeners),this}once(a,h){return h?(this._oneTimeListeners=this._oneTimeListeners||{},Ea(a,h,this._oneTimeListeners),this):new Promise(A=>this.once(a,A))}fire(a,h){typeof a==\"string\"&&(a=new ss(a,h||{}));let A=a.type;if(this.listens(A)){a.target=this;let x=this._listeners&&this._listeners[A]?this._listeners[A].slice():[];for(let D of x)D.call(this,a);let E=this._oneTimeListeners&&this._oneTimeListeners[A]?this._oneTimeListeners[A].slice():[];for(let D of E)na(A,D,this._oneTimeListeners),D.call(this,a);let P=this._eventedParent;P&&(Ot(a,typeof this._eventedParentData==\"function\"?this._eventedParentData():this._eventedParentData),P.fire(a))}else a instanceof to&&console.error(a.error);return this}listens(a){return this._listeners&&this._listeners[a]&&this._listeners[a].length>0||this._oneTimeListeners&&this._oneTimeListeners[a]&&this._oneTimeListeners[a].length>0||this._eventedParent&&this._eventedParent.listens(a)}setEventedParent(a,h){return this._eventedParent=a,this._eventedParentData=h,this}}var te={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},terrain:{type:\"terrain\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"sprite\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{},custom:{}},default:\"mapbox\"},redFactor:{type:\"number\",default:1},blueFactor:{type:\"number\",default:1},greenFactor:{type:\"number\",default:1},baseShift:{type:\"number\",default:0},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{required:!0,type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},filter:{type:\"*\"},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"!\":\"icon-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"padding\",default:[2],units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},\"viewport-glyph\":{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-variable-anchor-offset\":{type:\"variableAnchorOffsetCollection\",requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\",{\"!\":\"text-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},terrain:{source:{type:\"string\",required:!0},exaggeration:{type:\"number\",minimum:0,default:1}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}};let os=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];function fn(u,a){let h={};for(let A in u)A!==\"ref\"&&(h[A]=u[A]);return os.forEach(A=>{A in a&&(h[A]=a[A])}),h}function gi(u,a){if(Array.isArray(u)){if(!Array.isArray(a)||u.length!==a.length)return!1;for(let h=0;h`:u.itemType.kind===\"value\"?\"array\":`array<${a}>`}return u.kind}let _t=[Ia,Se,Dr,mr,Os,gt,Ca,vt(Tr),J,nt,ht];function Dt(u,a){if(a.kind===\"error\")return null;if(u.kind===\"array\"){if(a.kind===\"array\"&&(a.N===0&&a.itemType.kind===\"value\"||!Dt(u.itemType,a.itemType))&&(typeof u.N!=\"number\"||u.N===a.N))return null}else{if(u.kind===a.kind)return null;if(u.kind===\"value\"){for(let h of _t)if(!Dt(h,a))return null}}return`Expected ${xt(u)} but found ${xt(a)} instead.`}function Mt(u,a){return a.some(h=>h.kind===u.kind)}function Ut(u,a){return a.some(h=>h===\"null\"?u===null:h===\"array\"?Array.isArray(u):h===\"object\"?u&&!Array.isArray(u)&&typeof u==\"object\":h===typeof u)}function re(u,a){return u.kind===\"array\"&&a.kind===\"array\"?u.itemType.kind===a.itemType.kind&&typeof u.N==\"number\":u.kind===a.kind}let ne=.96422,oe=.82521,ar=4/29,_r=6/29,Ye=3*_r*_r,lr=_r*_r*_r,xr=Math.PI/180,vi=180/Math.PI;function Bi(u){return(u%=360)<0&&(u+=360),u}function ni([u,a,h,A]){let x,E,P=Un((.2225045*(u=Hr(u))+.7168786*(a=Hr(a))+.0606169*(h=Hr(h)))/1);u===a&&a===h?x=E=P:(x=Un((.4360747*u+.3850649*a+.1430804*h)/ne),E=Un((.0139322*u+.0971045*a+.7141733*h)/oe));let D=116*P-16;return[D<0?0:D,500*(x-P),200*(P-E),A]}function Hr(u){return u<=.04045?u/12.92:Math.pow((u+.055)/1.055,2.4)}function Un(u){return u>lr?Math.pow(u,1/3):u/Ye+ar}function Li([u,a,h,A]){let x=(u+16)/116,E=isNaN(a)?x:x+a/500,P=isNaN(h)?x:x-h/200;return x=1*Kn(x),E=ne*Kn(E),P=oe*Kn(P),[gn(3.1338561*E-1.6168667*x-.4906146*P),gn(-.9787684*E+1.9161415*x+.033454*P),gn(.0719453*E-.2289914*x+1.4052427*P),A]}function gn(u){return(u=u<=.00304?12.92*u:1.055*Math.pow(u,1/2.4)-.055)<0?0:u>1?1:u}function Kn(u){return u>_r?u*u*u:Ye*(u-ar)}function oa(u){return parseInt(u.padEnd(2,u),16)/255}function Om(u,a){return Fl(a?u/100:u,0,1)}function Fl(u,a,h){return Math.min(Math.max(a,u),h)}function ws(u){return!u.some(Number.isNaN)}let ih={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class ai{constructor(a,h,A,x=1,E=!0){this.r=a,this.g=h,this.b=A,this.a=x,E||(this.r*=x,this.g*=x,this.b*=x,x||this.overwriteGetter(\"rgb\",[a,h,A,x]))}static parse(a){if(a instanceof ai)return a;if(typeof a!=\"string\")return;let h=function(A){if((A=A.toLowerCase().trim())===\"transparent\")return[0,0,0,0];let x=ih[A];if(x){let[P,D,F]=x;return[P/255,D/255,F/255,1]}if(A.startsWith(\"#\")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(A)){let P=A.length<6?1:2,D=1;return[oa(A.slice(D,D+=P)),oa(A.slice(D,D+=P)),oa(A.slice(D,D+=P)),oa(A.slice(D,D+P)||\"ff\")]}if(A.startsWith(\"rgb\")){let P=A.match(/^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(P){let[D,F,V,q,X,et,at,ct,mt,bt,Et,Vt]=P,kt=[q||\" \",at||\" \",bt].join(\"\");if(kt===\" \"||kt===\" /\"||kt===\",,\"||kt===\",,,\"){let jt=[V,et,mt].join(\"\"),qt=jt===\"%%%\"?100:jt===\"\"?255:0;if(qt){let ae=[Fl(+F/qt,0,1),Fl(+X/qt,0,1),Fl(+ct/qt,0,1),Et?Om(+Et,Vt):1];if(ws(ae))return ae}}return}}let E=A.match(/^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(E){let[P,D,F,V,q,X,et,at,ct]=E,mt=[F||\" \",q||\" \",et].join(\"\");if(mt===\" \"||mt===\" /\"||mt===\",,\"||mt===\",,,\"){let bt=[+D,Fl(+V,0,100),Fl(+X,0,100),at?Om(+at,ct):1];if(ws(bt))return function([Et,Vt,kt,jt]){function qt(ae){let Be=(ae+Et/30)%12,Je=Vt*Math.min(kt,1-kt);return kt-Je*Math.max(-1,Math.min(Be-3,9-Be,1))}return Et=Bi(Et),Vt/=100,kt/=100,[qt(0),qt(8),qt(4),jt]}(bt)}}}(a);return h?new ai(...h,!1):void 0}get rgb(){let{r:a,g:h,b:A,a:x}=this,E=x||1/0;return this.overwriteGetter(\"rgb\",[a/E,h/E,A/E,x])}get hcl(){return this.overwriteGetter(\"hcl\",function(a){let[h,A,x,E]=ni(a),P=Math.sqrt(A*A+x*x);return[Math.round(1e4*P)?Bi(Math.atan2(x,A)*vi):NaN,P,h,E]}(this.rgb))}get lab(){return this.overwriteGetter(\"lab\",ni(this.rgb))}overwriteGetter(a,h){return Object.defineProperty(this,a,{value:h}),h}toString(){let[a,h,A,x]=this.rgb;return`rgba(${[a,h,A].map(E=>Math.round(255*E)).join(\",\")},${x})`}}ai.black=new ai(0,0,0,1),ai.white=new ai(1,1,1,1),ai.transparent=new ai(0,0,0,0),ai.red=new ai(1,0,0,1);class La{constructor(a,h,A){this.sensitivity=a?h?\"variant\":\"case\":h?\"accent\":\"base\",this.locale=A,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})}compare(a,h){return this.collator.compare(a,h)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Lc{constructor(a,h,A,x,E){this.text=a,this.image=h,this.scale=A,this.fontStack=x,this.textColor=E}}class on{constructor(a){this.sections=a}static fromString(a){return new on([new Lc(a,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(a=>a.text.length!==0||a.image&&a.image.name.length!==0)}static factory(a){return a instanceof on?a:on.fromString(a)}toString(){return this.sections.length===0?\"\":this.sections.map(a=>a.text).join(\"\")}}class kn{constructor(a){this.values=a.slice()}static parse(a){if(a instanceof kn)return a;if(typeof a==\"number\")return new kn([a,a,a,a]);if(Array.isArray(a)&&!(a.length<1||a.length>4)){for(let h of a)if(typeof h!=\"number\")return;switch(a.length){case 1:a=[a[0],a[0],a[0],a[0]];break;case 2:a=[a[0],a[1],a[0],a[1]];break;case 3:a=[a[0],a[1],a[2],a[1]]}return new kn(a)}}toString(){return JSON.stringify(this.values)}}let Bm=new Set([\"center\",\"left\",\"right\",\"top\",\"bottom\",\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"]);class Vo{constructor(a){this.values=a.slice()}static parse(a){if(a instanceof Vo)return a;if(Array.isArray(a)&&!(a.length<1)&&a.length%2==0){for(let h=0;h=0&&u<=255&&typeof a==\"number\"&&a>=0&&a<=255&&typeof h==\"number\"&&h>=0&&h<=255?A===void 0||typeof A==\"number\"&&A>=0&&A<=1?null:`Invalid rgba value [${[u,a,h,A].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof A==\"number\"?[u,a,h,A]:[u,a,h]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function zl(u){if(u===null||typeof u==\"string\"||typeof u==\"boolean\"||typeof u==\"number\"||u instanceof ai||u instanceof La||u instanceof on||u instanceof kn||u instanceof Vo||u instanceof Vn)return!0;if(Array.isArray(u)){for(let a of u)if(!zl(a))return!1;return!0}if(typeof u==\"object\"){for(let a in u)if(!zl(u[a]))return!1;return!0}return!1}function Yi(u){if(u===null)return Ia;if(typeof u==\"string\")return Dr;if(typeof u==\"boolean\")return mr;if(typeof u==\"number\")return Se;if(u instanceof ai)return Os;if(u instanceof La)return sa;if(u instanceof on)return gt;if(u instanceof kn)return J;if(u instanceof Vo)return ht;if(u instanceof Vn)return nt;if(Array.isArray(u)){let a=u.length,h;for(let A of u){let x=Yi(A);if(h){if(h===x)continue;h=Tr;break}h=x}return vt(h||Tr,a)}return Ca}function _i(u){let a=typeof u;return u===null?\"\":a===\"string\"||a===\"number\"||a===\"boolean\"?String(u):u instanceof ai||u instanceof on||u instanceof kn||u instanceof Vo||u instanceof Vn?u.toString():JSON.stringify(u)}class Nl{constructor(a,h){this.type=a,this.value=h}static parse(a,h){if(a.length!==2)return h.error(`'literal' expression requires exactly one argument, but found ${a.length-1} instead.`);if(!zl(a[1]))return h.error(\"invalid value\");let A=a[1],x=Yi(A),E=h.expectedType;return x.kind!==\"array\"||x.N!==0||!E||E.kind!==\"array\"||typeof E.N==\"number\"&&E.N!==0||(x=E),new Nl(x,A)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class an{constructor(a){this.name=\"ExpressionEvaluationError\",this.message=a}toJSON(){return this.message}}let hu={string:Dr,number:Se,boolean:mr,object:Ca};class Jn{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A,x=1,E=a[0];if(E===\"array\"){let D,F;if(a.length>2){let V=a[1];if(typeof V!=\"string\"||!(V in hu)||V===\"object\")return h.error('The item type argument of \"array\" must be one of string, number, boolean',1);D=hu[V],x++}else D=Tr;if(a.length>3){if(a[2]!==null&&(typeof a[2]!=\"number\"||a[2]<0||a[2]!==Math.floor(a[2])))return h.error('The length argument to \"array\" must be a positive integer literal',2);F=a[2],x++}A=vt(D,F)}else{if(!hu[E])throw new Error(`Types doesn't contain name = ${E}`);A=hu[E]}let P=[];for(;xa.outputDefined())}}let Up={\"to-boolean\":mr,\"to-color\":Os,\"to-number\":Se,\"to-string\":Dr};class Ul{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A=a[0];if(!Up[A])throw new Error(`Can't parse ${A} as it is not part of the known types`);if((A===\"to-boolean\"||A===\"to-string\")&&a.length!==2)return h.error(\"Expected one argument.\");let x=Up[A],E=[];for(let P=1;P4?`Invalid rbga value ${JSON.stringify(h)}: expected an array containing either three or four numeric values.`:mo(h[0],h[1],h[2],h[3]),!A))return new ai(h[0]/255,h[1]/255,h[2]/255,h[3])}throw new an(A||`Could not parse color from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"padding\":{let h;for(let A of this.args){h=A.evaluate(a);let x=kn.parse(h);if(x)return x}throw new an(`Could not parse padding from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"variableAnchorOffsetCollection\":{let h;for(let A of this.args){h=A.evaluate(a);let x=Vo.parse(h);if(x)return x}throw new an(`Could not parse variableAnchorOffsetCollection from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"number\":{let h=null;for(let A of this.args){if(h=A.evaluate(a),h===null)return 0;let x=Number(h);if(!isNaN(x))return x}throw new an(`Could not convert ${JSON.stringify(h)} to number.`)}case\"formatted\":return on.fromString(_i(this.args[0].evaluate(a)));case\"resolvedImage\":return Vn.fromString(_i(this.args[0].evaluate(a)));default:return _i(this.args[0].evaluate(a))}}eachChild(a){this.args.forEach(a)}outputDefined(){return this.args.every(a=>a.outputDefined())}}let md=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class gd{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type==\"number\"?md[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(a){let h=this._parseColorCache[a];return h||(h=this._parseColorCache[a]=ai.parse(a)),h}}class _d{constructor(a,h,A=[],x,E=new Bl,P=[]){this.registry=a,this.path=A,this.key=A.map(D=>`[${D}]`).join(\"\"),this.scope=E,this.errors=P,this.expectedType=x,this._isConstant=h}parse(a,h,A,x,E={}){return h?this.concat(h,A,x)._parse(a,E):this._parse(a,E)}_parse(a,h){function A(x,E,P){return P===\"assert\"?new Jn(E,[x]):P===\"coerce\"?new Ul(E,[x]):x}if(a!==null&&typeof a!=\"string\"&&typeof a!=\"boolean\"&&typeof a!=\"number\"||(a=[\"literal\",a]),Array.isArray(a)){if(a.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');let x=a[0];if(typeof x!=\"string\")return this.error(`Expression name must be a string, but found ${typeof x} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;let E=this.registry[x];if(E){let P=E.parse(a,this);if(!P)return null;if(this.expectedType){let D=this.expectedType,F=P.type;if(D.kind!==\"string\"&&D.kind!==\"number\"&&D.kind!==\"boolean\"&&D.kind!==\"object\"&&D.kind!==\"array\"||F.kind!==\"value\")if(D.kind!==\"color\"&&D.kind!==\"formatted\"&&D.kind!==\"resolvedImage\"||F.kind!==\"value\"&&F.kind!==\"string\")if(D.kind!==\"padding\"||F.kind!==\"value\"&&F.kind!==\"number\"&&F.kind!==\"array\")if(D.kind!==\"variableAnchorOffsetCollection\"||F.kind!==\"value\"&&F.kind!==\"array\"){if(this.checkSubtype(D,F))return null}else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"assert\")}if(!(P instanceof Nl)&&P.type.kind!==\"resolvedImage\"&&this._isConstant(P)){let D=new gd;try{P=new Nl(P.type,P.evaluate(D))}catch(F){return this.error(F.message),null}}return P}return this.error(`Unknown expression \"${x}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(a===void 0?\"'undefined' value invalid. Use null instead.\":typeof a==\"object\"?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof a} instead.`)}concat(a,h,A){let x=typeof a==\"number\"?this.path.concat(a):this.path,E=A?this.scope.concat(A):this.scope;return new _d(this.registry,this._isConstant,x,h||null,E,this.errors)}error(a,...h){let A=`${this.key}${h.map(x=>`[${x}]`).join(\"\")}`;this.errors.push(new dn(A,a))}checkSubtype(a,h){let A=Dt(a,h);return A&&this.error(A),A}}class yd{constructor(a,h,A){this.type=sa,this.locale=A,this.caseSensitive=a,this.diacriticSensitive=h}static parse(a,h){if(a.length!==2)return h.error(\"Expected one argument.\");let A=a[1];if(typeof A!=\"object\"||Array.isArray(A))return h.error(\"Collator options argument must be an object.\");let x=h.parse(A[\"case-sensitive\"]!==void 0&&A[\"case-sensitive\"],1,mr);if(!x)return null;let E=h.parse(A[\"diacritic-sensitive\"]!==void 0&&A[\"diacritic-sensitive\"],1,mr);if(!E)return null;let P=null;return A.locale&&(P=h.parse(A.locale,1,Dr),!P)?null:new yd(x,E,P)}evaluate(a){return new La(this.caseSensitive.evaluate(a),this.diacriticSensitive.evaluate(a),this.locale?this.locale.evaluate(a):null)}eachChild(a){a(this.caseSensitive),a(this.diacriticSensitive),this.locale&&a(this.locale)}outputDefined(){return!1}}let lt=8192;function ft(u,a){u[0]=Math.min(u[0],a[0]),u[1]=Math.min(u[1],a[1]),u[2]=Math.max(u[2],a[0]),u[3]=Math.max(u[3],a[1])}function Lt(u,a){return!(u[0]<=a[0]||u[2]>=a[2]||u[1]<=a[1]||u[3]>=a[3])}function $t(u,a){let h=(180+u[0])/360,A=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+u[1]*Math.PI/360)))/360,x=Math.pow(2,a.z);return[Math.round(h*x*lt),Math.round(A*x*lt)]}function ge(u,a,h){let A=u[0]-a[0],x=u[1]-a[1],E=u[0]-h[0],P=u[1]-h[1];return A*P-E*x==0&&A*E<=0&&x*P<=0}function qe(u,a){let h=!1;for(let P=0,D=a.length;P(A=u)[1]!=(E=F[V+1])[1]>A[1]&&A[0]<(E[0]-x[0])*(A[1]-x[1])/(E[1]-x[1])+x[0]&&(h=!h)}}var A,x,E;return h}function ti(u,a){for(let h=0;h0&&D<0||P<0&&D>0}function Ss(u,a,h){for(let V of h)for(let q=0;qh[2]){let x=.5*A,E=u[0]-h[0]>x?-A:h[0]-u[0]>x?A:0;E===0&&(E=u[0]-h[2]>x?-A:h[2]-u[0]>x?A:0),u[0]+=E}ft(a,u)}function Xg(u,a,h,A){let x=Math.pow(2,A.z)*lt,E=[A.x*lt,A.y*lt],P=[];for(let D of u)for(let F of D){let V=[F.x+E[0],F.y+E[1]];Ex(V,a,h,x),P.push(V)}return P}function Kg(u,a,h,A){let x=Math.pow(2,A.z)*lt,E=[A.x*lt,A.y*lt],P=[];for(let F of u){let V=[];for(let q of F){let X=[q.x+E[0],q.y+E[1]];ft(a,X),V.push(X)}P.push(V)}if(a[2]-a[0]<=x/2){(D=a)[0]=D[1]=1/0,D[2]=D[3]=-1/0;for(let F of P)for(let V of F)Ex(V,a,h,x)}var D;return P}class Af{constructor(a,h){this.type=mr,this.geojson=a,this.geometries=h}static parse(a,h){if(a.length!==2)return h.error(`'within' expression requires exactly one argument, but found ${a.length-1} instead.`);if(zl(a[1])){let A=a[1];if(A.type===\"FeatureCollection\")for(let x=0;x!Array.isArray(V)||V.length===a.length-1),F=null;for(let[V,q]of D){F=new _d(h.registry,Nm,h.path,null,h.scope);let X=[],et=!1;for(let at=1;at{return et=X,Array.isArray(et)?`(${et.map(xt).join(\", \")})`:`(${xt(et.type)}...)`;var et}).join(\" | \"),q=[];for(let X=1;X{h=a?h&&Nm(A):h&&A instanceof Nl}),!!h&&Um(u)&&Vm(u,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}function Um(u){if(u instanceof cl&&(u.name===\"get\"&&u.args.length===1||u.name===\"feature-state\"||u.name===\"has\"&&u.args.length===1||u.name===\"properties\"||u.name===\"geometry-type\"||u.name===\"id\"||/^filter-/.test(u.name))||u instanceof Af)return!1;let a=!0;return u.eachChild(h=>{a&&!Um(h)&&(a=!1)}),a}function Vp(u){if(u instanceof cl&&u.name===\"feature-state\")return!1;let a=!0;return u.eachChild(h=>{a&&!Vp(h)&&(a=!1)}),a}function Vm(u,a){if(u instanceof cl&&a.indexOf(u.name)>=0)return!1;let h=!0;return u.eachChild(A=>{h&&!Vm(A,a)&&(h=!1)}),h}function vd(u,a){let h=u.length-1,A,x,E=0,P=h,D=0;for(;E<=P;)if(D=Math.floor((E+P)/2),A=u[D],x=u[D+1],A<=a){if(D===h||aa))throw new an(\"Input is not a number.\");P=D-1}return 0}class nh{constructor(a,h,A){this.type=a,this.input=h,this.labels=[],this.outputs=[];for(let[x,E]of A)this.labels.push(x),this.outputs.push(E)}static parse(a,h){if(a.length-1<4)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if((a.length-1)%2!=0)return h.error(\"Expected an even number of arguments.\");let A=h.parse(a[1],1,Se);if(!A)return null;let x=[],E=null;h.expectedType&&h.expectedType.kind!==\"value\"&&(E=h.expectedType);for(let P=1;P=D)return h.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',V);let X=h.parse(F,q,E);if(!X)return null;E=E||X.type,x.push([D,X])}return new nh(E,A,x)}evaluate(a){let h=this.labels,A=this.outputs;if(h.length===1)return A[0].evaluate(a);let x=this.input.evaluate(a);if(x<=h[0])return A[0].evaluate(a);let E=h.length;return x>=h[E-1]?A[E-1].evaluate(a):A[vd(h,x)].evaluate(a)}eachChild(a){a(this.input);for(let h of this.outputs)a(h)}outputDefined(){return this.outputs.every(a=>a.outputDefined())}}function ui(u,a,h){return u+h*(a-u)}function jm(u,a,h){return u.map((A,x)=>ui(A,a[x],h))}let Ra={number:ui,color:function(u,a,h,A=\"rgb\"){switch(A){case\"rgb\":{let[x,E,P,D]=jm(u.rgb,a.rgb,h);return new ai(x,E,P,D,!1)}case\"hcl\":{let[x,E,P,D]=u.hcl,[F,V,q,X]=a.hcl,et,at;if(isNaN(x)||isNaN(F))isNaN(x)?isNaN(F)?et=NaN:(et=F,P!==1&&P!==0||(at=V)):(et=x,q!==1&&q!==0||(at=E));else{let Vt=F-x;F>x&&Vt>180?Vt-=360:F180&&(Vt+=360),et=x+h*Vt}let[ct,mt,bt,Et]=function([Vt,kt,jt,qt]){return Vt=isNaN(Vt)?0:Vt*xr,Li([jt,Math.cos(Vt)*kt,Math.sin(Vt)*kt,qt])}([et,at??ui(E,V,h),ui(P,q,h),ui(D,X,h)]);return new ai(ct,mt,bt,Et,!1)}case\"lab\":{let[x,E,P,D]=Li(jm(u.lab,a.lab,h));return new ai(x,E,P,D,!1)}}},array:jm,padding:function(u,a,h){return new kn(jm(u.values,a.values,h))},variableAnchorOffsetCollection:function(u,a,h){let A=u.values,x=a.values;if(A.length!==x.length)throw new an(`Cannot interpolate values of different length. from: ${u.toString()}, to: ${a.toString()}`);let E=[];for(let P=0;Ptypeof q!=\"number\"||q<0||q>1))return h.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);x={name:\"cubic-bezier\",controlPoints:V}}}if(a.length-1<4)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if((a.length-1)%2!=0)return h.error(\"Expected an even number of arguments.\");if(E=h.parse(E,2,Se),!E)return null;let D=[],F=null;A===\"interpolate-hcl\"||A===\"interpolate-lab\"?F=Os:h.expectedType&&h.expectedType.kind!==\"value\"&&(F=h.expectedType);for(let V=0;V=q)return h.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',et);let ct=h.parse(X,at,F);if(!ct)return null;F=F||ct.type,D.push([q,ct])}return re(F,Se)||re(F,Os)||re(F,J)||re(F,ht)||re(F,vt(Se))?new Da(F,A,x,E,D):h.error(`Type ${xt(F)} is not interpolatable.`)}evaluate(a){let h=this.labels,A=this.outputs;if(h.length===1)return A[0].evaluate(a);let x=this.input.evaluate(a);if(x<=h[0])return A[0].evaluate(a);let E=h.length;if(x>=h[E-1])return A[E-1].evaluate(a);let P=vd(h,x),D=Da.interpolationFactor(this.interpolation,x,h[P],h[P+1]),F=A[P].evaluate(a),V=A[P+1].evaluate(a);switch(this.operator){case\"interpolate\":return Ra[this.type.kind](F,V,D);case\"interpolate-hcl\":return Ra.color(F,V,D,\"hcl\");case\"interpolate-lab\":return Ra.color(F,V,D,\"lab\")}}eachChild(a){a(this.input);for(let h of this.outputs)a(h)}outputDefined(){return this.outputs.every(a=>a.outputDefined())}}function Jg(u,a,h,A){let x=A-h,E=u-h;return x===0?0:a===1?E/x:(Math.pow(a,E)-1)/(Math.pow(a,x)-1)}class Gm{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expectected at least one argument.\");let A=null,x=h.expectedType;x&&x.kind!==\"value\"&&(A=x);let E=[];for(let D of a.slice(1)){let F=h.parse(D,1+E.length,A,void 0,{typeAnnotation:\"omit\"});if(!F)return null;A=A||F.type,E.push(F)}if(!A)throw new Error(\"No output type\");let P=x&&E.some(D=>Dt(x,D.type));return new Gm(P?Tr:A,E)}evaluate(a){let h,A=null,x=0;for(let E of this.args)if(x++,A=E.evaluate(a),A&&A instanceof Vn&&!A.available&&(h||(h=A.name),A=null,x===this.args.length&&(A=h)),A!==null)break;return A}eachChild(a){this.args.forEach(a)}outputDefined(){return this.args.every(a=>a.outputDefined())}}class Wm{constructor(a,h){this.type=h.type,this.bindings=[].concat(a),this.result=h}evaluate(a){return this.result.evaluate(a)}eachChild(a){for(let h of this.bindings)a(h[1]);a(this.result)}static parse(a,h){if(a.length<4)return h.error(`Expected at least 3 arguments, but found ${a.length-1} instead.`);let A=[];for(let E=1;E=A.length)throw new an(`Array index out of bounds: ${h} > ${A.length-1}.`);if(h!==Math.floor(h))throw new an(`Array index must be an integer, but found ${h} instead.`);return A[h]}eachChild(a){a(this.index),a(this.input)}outputDefined(){return!1}}class Hm{constructor(a,h){this.type=mr,this.needle=a,this.haystack=h}static parse(a,h){if(a.length!==3)return h.error(`Expected 2 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Tr);return A&&x?Mt(A.type,[mr,Dr,Se,Ia,Tr])?new Hm(A,x):h.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(A.type)} instead`):null}evaluate(a){let h=this.needle.evaluate(a),A=this.haystack.evaluate(a);if(!A)return!1;if(!Ut(h,[\"boolean\",\"string\",\"number\",\"null\"]))throw new an(`Expected first argument to be of type boolean, string, number or null, but found ${xt(Yi(h))} instead.`);if(!Ut(A,[\"string\",\"array\"]))throw new an(`Expected second argument to be of type array or string, but found ${xt(Yi(A))} instead.`);return A.indexOf(h)>=0}eachChild(a){a(this.needle),a(this.haystack)}outputDefined(){return!0}}class Gp{constructor(a,h,A){this.type=Se,this.needle=a,this.haystack=h,this.fromIndex=A}static parse(a,h){if(a.length<=2||a.length>=5)return h.error(`Expected 3 or 4 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Tr);if(!A||!x)return null;if(!Mt(A.type,[mr,Dr,Se,Ia,Tr]))return h.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(A.type)} instead`);if(a.length===4){let E=h.parse(a[3],3,Se);return E?new Gp(A,x,E):null}return new Gp(A,x)}evaluate(a){let h=this.needle.evaluate(a),A=this.haystack.evaluate(a);if(!Ut(h,[\"boolean\",\"string\",\"number\",\"null\"]))throw new an(`Expected first argument to be of type boolean, string, number or null, but found ${xt(Yi(h))} instead.`);if(!Ut(A,[\"string\",\"array\"]))throw new an(`Expected second argument to be of type array or string, but found ${xt(Yi(A))} instead.`);if(this.fromIndex){let x=this.fromIndex.evaluate(a);return A.indexOf(h,x)}return A.indexOf(h)}eachChild(a){a(this.needle),a(this.haystack),this.fromIndex&&a(this.fromIndex)}outputDefined(){return!1}}class xd{constructor(a,h,A,x,E,P){this.inputType=a,this.type=h,this.input=A,this.cases=x,this.outputs=E,this.otherwise=P}static parse(a,h){if(a.length<5)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if(a.length%2!=1)return h.error(\"Expected an even number of arguments.\");let A,x;h.expectedType&&h.expectedType.kind!==\"value\"&&(x=h.expectedType);let E={},P=[];for(let V=2;VNumber.MAX_SAFE_INTEGER)return et.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof ct==\"number\"&&Math.floor(ct)!==ct)return et.error(\"Numeric branch labels must be integer values.\");if(A){if(et.checkSubtype(A,Yi(ct)))return null}else A=Yi(ct);if(E[String(ct)]!==void 0)return et.error(\"Branch labels must be unique.\");E[String(ct)]=P.length}let at=h.parse(X,V,x);if(!at)return null;x=x||at.type,P.push(at)}let D=h.parse(a[1],1,Tr);if(!D)return null;let F=h.parse(a[a.length-1],a.length-1,x);return F?D.type.kind!==\"value\"&&h.concat(1).checkSubtype(A,D.type)?null:new xd(A,x,D,E,P,F):null}evaluate(a){let h=this.input.evaluate(a);return(Yi(h)===this.inputType&&this.outputs[this.cases[h]]||this.otherwise).evaluate(a)}eachChild(a){a(this.input),this.outputs.forEach(a),a(this.otherwise)}outputDefined(){return this.outputs.every(a=>a.outputDefined())&&this.otherwise.outputDefined()}}class Wp{constructor(a,h,A){this.type=a,this.branches=h,this.otherwise=A}static parse(a,h){if(a.length<4)return h.error(`Expected at least 3 arguments, but found only ${a.length-1}.`);if(a.length%2!=0)return h.error(\"Expected an odd number of arguments.\");let A;h.expectedType&&h.expectedType.kind!==\"value\"&&(A=h.expectedType);let x=[];for(let P=1;Ph.outputDefined())&&this.otherwise.outputDefined()}}class bd{constructor(a,h,A,x){this.type=a,this.input=h,this.beginIndex=A,this.endIndex=x}static parse(a,h){if(a.length<=2||a.length>=5)return h.error(`Expected 3 or 4 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Se);if(!A||!x)return null;if(!Mt(A.type,[vt(Tr),Dr,Tr]))return h.error(`Expected first argument to be of type array or string, but found ${xt(A.type)} instead`);if(a.length===4){let E=h.parse(a[3],3,Se);return E?new bd(A.type,A,x,E):null}return new bd(A.type,A,x)}evaluate(a){let h=this.input.evaluate(a),A=this.beginIndex.evaluate(a);if(!Ut(h,[\"string\",\"array\"]))throw new an(`Expected first argument to be of type array or string, but found ${xt(Yi(h))} instead.`);if(this.endIndex){let x=this.endIndex.evaluate(a);return h.slice(A,x)}return h.slice(A)}eachChild(a){a(this.input),a(this.beginIndex),this.endIndex&&a(this.endIndex)}outputDefined(){return!1}}function qm(u,a){return u===\"==\"||u===\"!=\"?a.kind===\"boolean\"||a.kind===\"string\"||a.kind===\"number\"||a.kind===\"null\"||a.kind===\"value\":a.kind===\"string\"||a.kind===\"number\"||a.kind===\"value\"}function wd(u,a,h,A){return A.compare(a,h)===0}function fu(u,a,h){let A=u!==\"==\"&&u!==\"!=\";return class N8{constructor(E,P,D){this.type=mr,this.lhs=E,this.rhs=P,this.collator=D,this.hasUntypedArgument=E.type.kind===\"value\"||P.type.kind===\"value\"}static parse(E,P){if(E.length!==3&&E.length!==4)return P.error(\"Expected two or three arguments.\");let D=E[0],F=P.parse(E[1],1,Tr);if(!F)return null;if(!qm(D,F.type))return P.concat(1).error(`\"${D}\" comparisons are not supported for type '${xt(F.type)}'.`);let V=P.parse(E[2],2,Tr);if(!V)return null;if(!qm(D,V.type))return P.concat(2).error(`\"${D}\" comparisons are not supported for type '${xt(V.type)}'.`);if(F.type.kind!==V.type.kind&&F.type.kind!==\"value\"&&V.type.kind!==\"value\")return P.error(`Cannot compare types '${xt(F.type)}' and '${xt(V.type)}'.`);A&&(F.type.kind===\"value\"&&V.type.kind!==\"value\"?F=new Jn(V.type,[F]):F.type.kind!==\"value\"&&V.type.kind===\"value\"&&(V=new Jn(F.type,[V])));let q=null;if(E.length===4){if(F.type.kind!==\"string\"&&V.type.kind!==\"string\"&&F.type.kind!==\"value\"&&V.type.kind!==\"value\")return P.error(\"Cannot use collator to compare non-string types.\");if(q=P.parse(E[3],3,sa),!q)return null}return new N8(F,V,q)}evaluate(E){let P=this.lhs.evaluate(E),D=this.rhs.evaluate(E);if(A&&this.hasUntypedArgument){let F=Yi(P),V=Yi(D);if(F.kind!==V.kind||F.kind!==\"string\"&&F.kind!==\"number\")throw new an(`Expected arguments for \"${u}\" to be (string, string) or (number, number), but found (${F.kind}, ${V.kind}) instead.`)}if(this.collator&&!A&&this.hasUntypedArgument){let F=Yi(P),V=Yi(D);if(F.kind!==\"string\"||V.kind!==\"string\")return a(E,P,D)}return this.collator?h(E,P,D,this.collator.evaluate(E)):a(E,P,D)}eachChild(E){E(this.lhs),E(this.rhs),this.collator&&E(this.collator)}outputDefined(){return!0}}}let sh=fu(\"==\",function(u,a,h){return a===h},wd),Ht=fu(\"!=\",function(u,a,h){return a!==h},function(u,a,h,A){return!wd(0,a,h,A)}),fe=fu(\"<\",function(u,a,h){return a\",function(u,a,h){return a>h},function(u,a,h,A){return A.compare(a,h)>0}),vr=fu(\"<=\",function(u,a,h){return a<=h},function(u,a,h,A){return A.compare(a,h)<=0}),g=fu(\">=\",function(u,a,h){return a>=h},function(u,a,h,A){return A.compare(a,h)>=0});class Ni{constructor(a,h,A,x,E){this.type=Dr,this.number=a,this.locale=h,this.currency=A,this.minFractionDigits=x,this.maxFractionDigits=E}static parse(a,h){if(a.length!==3)return h.error(\"Expected two arguments.\");let A=h.parse(a[1],1,Se);if(!A)return null;let x=a[2];if(typeof x!=\"object\"||Array.isArray(x))return h.error(\"NumberFormat options argument must be an object.\");let E=null;if(x.locale&&(E=h.parse(x.locale,1,Dr),!E))return null;let P=null;if(x.currency&&(P=h.parse(x.currency,1,Dr),!P))return null;let D=null;if(x[\"min-fraction-digits\"]&&(D=h.parse(x[\"min-fraction-digits\"],1,Se),!D))return null;let F=null;return x[\"max-fraction-digits\"]&&(F=h.parse(x[\"max-fraction-digits\"],1,Se),!F)?null:new Ni(A,E,P,D,F)}evaluate(a){return new Intl.NumberFormat(this.locale?this.locale.evaluate(a):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(a):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(a):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(a):void 0}).format(this.number.evaluate(a))}eachChild(a){a(this.number),this.locale&&a(this.locale),this.currency&&a(this.currency),this.minFractionDigits&&a(this.minFractionDigits),this.maxFractionDigits&&a(this.maxFractionDigits)}outputDefined(){return!1}}class Si{constructor(a){this.type=gt,this.sections=a}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A=a[1];if(!Array.isArray(A)&&typeof A==\"object\")return h.error(\"First argument must be an image or text section.\");let x=[],E=!1;for(let P=1;P<=a.length-1;++P){let D=a[P];if(E&&typeof D==\"object\"&&!Array.isArray(D)){E=!1;let F=null;if(D[\"font-scale\"]&&(F=h.parse(D[\"font-scale\"],1,Se),!F))return null;let V=null;if(D[\"text-font\"]&&(V=h.parse(D[\"text-font\"],1,vt(Dr)),!V))return null;let q=null;if(D[\"text-color\"]&&(q=h.parse(D[\"text-color\"],1,Os),!q))return null;let X=x[x.length-1];X.scale=F,X.font=V,X.textColor=q}else{let F=h.parse(a[P],1,Tr);if(!F)return null;let V=F.type.kind;if(V!==\"string\"&&V!==\"value\"&&V!==\"null\"&&V!==\"resolvedImage\")return h.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");E=!0,x.push({content:F,scale:null,font:null,textColor:null})}}return new Si(x)}evaluate(a){return new on(this.sections.map(h=>{let A=h.content.evaluate(a);return Yi(A)===nt?new Lc(\"\",A,null,null,null):new Lc(_i(A),null,h.scale?h.scale.evaluate(a):null,h.font?h.font.evaluate(a).join(\",\"):null,h.textColor?h.textColor.evaluate(a):null)}))}eachChild(a){for(let h of this.sections)a(h.content),h.scale&&a(h.scale),h.font&&a(h.font),h.textColor&&a(h.textColor)}outputDefined(){return!1}}class Tt{constructor(a){this.type=nt,this.input=a}static parse(a,h){if(a.length!==2)return h.error(\"Expected two arguments.\");let A=h.parse(a[1],1,Dr);return A?new Tt(A):h.error(\"No image name provided.\")}evaluate(a){let h=this.input.evaluate(a),A=Vn.fromString(h);return A&&a.availableImages&&(A.available=a.availableImages.indexOf(h)>-1),A}eachChild(a){a(this.input)}outputDefined(){return!1}}class Ts{constructor(a){this.type=Se,this.input=a}static parse(a,h){if(a.length!==2)return h.error(`Expected 1 argument, but found ${a.length-1} instead.`);let A=h.parse(a[1],1);return A?A.type.kind!==\"array\"&&A.type.kind!==\"string\"&&A.type.kind!==\"value\"?h.error(`Expected argument of type string or array, but found ${xt(A.type)} instead.`):new Ts(A):null}evaluate(a){let h=this.input.evaluate(a);if(typeof h==\"string\"||Array.isArray(h))return h.length;throw new an(`Expected value to be of type string or array, but found ${xt(Yi(h))} instead.`)}eachChild(a){a(this.input)}outputDefined(){return!1}}let as={\"==\":sh,\"!=\":Ht,\">\":De,\"<\":fe,\">=\":g,\"<=\":vr,array:Jn,at:jp,boolean:Jn,case:Wp,coalesce:Gm,collator:yd,format:Si,image:Tt,in:Hm,\"index-of\":Gp,interpolate:Da,\"interpolate-hcl\":Da,\"interpolate-lab\":Da,length:Ts,let:Wm,literal:Nl,match:xd,number:Jn,\"number-format\":Ni,object:Jn,slice:bd,step:nh,string:Jn,\"to-boolean\":Ul,\"to-color\":Ul,\"to-number\":Ul,\"to-string\":Ul,var:zm,within:Af};function li(u,[a,h,A,x]){a=a.evaluate(u),h=h.evaluate(u),A=A.evaluate(u);let E=x?x.evaluate(u):1,P=mo(a,h,A,E);if(P)throw new an(P);return new ai(a/255,h/255,A/255,E,!1)}function _n(u,a){return u in a}function ul(u,a){let h=a[u];return h===void 0?null:h}function Ur(u){return{type:u}}function hi(u){return{result:\"success\",value:u}}function go(u){return{result:\"error\",value:u}}function mf(u){return u[\"property-type\"]===\"data-driven\"||u[\"property-type\"]===\"cross-faded-data-driven\"}function t_(u){return!!u.expression&&u.expression.parameters.indexOf(\"zoom\")>-1}function Sd(u){return!!u.expression&&u.expression.interpolated}function qr(u){return u instanceof Number?\"number\":u instanceof String?\"string\":u instanceof Boolean?\"boolean\":Array.isArray(u)?\"array\":u===null?\"null\":typeof u}function Qi(u){return typeof u==\"object\"&&u!==null&&!Array.isArray(u)}function kc(u){return u}function ci(u,a){let h=a.type===\"color\",A=u.stops&&typeof u.stops[0][0]==\"object\",x=A||!(A||u.property!==void 0),E=u.type||(Sd(a)?\"exponential\":\"interval\");if(h||a.type===\"padding\"){let q=h?ai.parse:kn.parse;(u=Uo({},u)).stops&&(u.stops=u.stops.map(X=>[X[0],q(X[1])])),u.default=q(u.default?u.default:a.default)}if(u.colorSpace&&(P=u.colorSpace)!==\"rgb\"&&P!==\"hcl\"&&P!==\"lab\")throw new Error(`Unknown color space: \"${u.colorSpace}\"`);var P;let D,F,V;if(E===\"exponential\")D=Ti;else if(E===\"interval\")D=It;else if(E===\"categorical\"){D=$e,F=Object.create(null);for(let q of u.stops)F[q[0]]=q[1];V=typeof u.stops[0][0]}else{if(E!==\"identity\")throw new Error(`Unknown function type \"${E}\"`);D=Zm}if(A){let q={},X=[];for(let ct=0;ctct[0]),evaluate:({zoom:ct},mt)=>Ti({stops:et,base:u.base},a,ct).evaluate(ct,mt)}}if(x){let q=E===\"exponential\"?{name:\"exponential\",base:u.base!==void 0?u.base:1}:null;return{kind:\"camera\",interpolationType:q,interpolationFactor:Da.interpolationFactor.bind(void 0,q),zoomStops:u.stops.map(X=>X[0]),evaluate:({zoom:X})=>D(u,a,X,F,V)}}return{kind:\"source\",evaluate(q,X){let et=X&&X.properties?X.properties[u.property]:void 0;return et===void 0?aa(u.default,a.default):D(u,a,et,F,V)}}}function aa(u,a,h){return u!==void 0?u:a!==void 0?a:h!==void 0?h:void 0}function $e(u,a,h,A,x){return aa(typeof h===x?A[h]:void 0,u.default,a.default)}function It(u,a,h){if(qr(h)!==\"number\")return aa(u.default,a.default);let A=u.stops.length;if(A===1||h<=u.stops[0][0])return u.stops[0][1];if(h>=u.stops[A-1][0])return u.stops[A-1][1];let x=vd(u.stops.map(E=>E[0]),h);return u.stops[x][1]}function Ti(u,a,h){let A=u.base!==void 0?u.base:1;if(qr(h)!==\"number\")return aa(u.default,a.default);let x=u.stops.length;if(x===1||h<=u.stops[0][0])return u.stops[0][1];if(h>=u.stops[x-1][0])return u.stops[x-1][1];let E=vd(u.stops.map(q=>q[0]),h),P=function(q,X,et,at){let ct=at-et,mt=q-et;return ct===0?0:X===1?mt/ct:(Math.pow(X,mt)-1)/(Math.pow(X,ct)-1)}(h,A,u.stops[E][0],u.stops[E+1][0]),D=u.stops[E][1],F=u.stops[E+1][1],V=Ra[a.type]||kc;return typeof D.evaluate==\"function\"?{evaluate(...q){let X=D.evaluate.apply(void 0,q),et=F.evaluate.apply(void 0,q);if(X!==void 0&&et!==void 0)return V(X,et,P,u.colorSpace)}}:V(D,F,P,u.colorSpace)}function Zm(u,a,h){switch(a.type){case\"color\":h=ai.parse(h);break;case\"formatted\":h=on.fromString(h.toString());break;case\"resolvedImage\":h=Vn.fromString(h.toString());break;case\"padding\":h=kn.parse(h);break;default:qr(h)===a.type||a.type===\"enum\"&&a.values[h]||(h=void 0)}return aa(h,u.default,a.default)}cl.register(as,{error:[{kind:\"error\"},[Dr],(u,[a])=>{throw new an(a.evaluate(u))}],typeof:[Dr,[Tr],(u,[a])=>xt(Yi(a.evaluate(u)))],\"to-rgba\":[vt(Se,4),[Os],(u,[a])=>{let[h,A,x,E]=a.evaluate(u).rgb;return[255*h,255*A,255*x,E]}],rgb:[Os,[Se,Se,Se],li],rgba:[Os,[Se,Se,Se,Se],li],has:{type:mr,overloads:[[[Dr],(u,[a])=>_n(a.evaluate(u),u.properties())],[[Dr,Ca],(u,[a,h])=>_n(a.evaluate(u),h.evaluate(u))]]},get:{type:Tr,overloads:[[[Dr],(u,[a])=>ul(a.evaluate(u),u.properties())],[[Dr,Ca],(u,[a,h])=>ul(a.evaluate(u),h.evaluate(u))]]},\"feature-state\":[Tr,[Dr],(u,[a])=>ul(a.evaluate(u),u.featureState||{})],properties:[Ca,[],u=>u.properties()],\"geometry-type\":[Dr,[],u=>u.geometryType()],id:[Tr,[],u=>u.id()],zoom:[Se,[],u=>u.globals.zoom],\"heatmap-density\":[Se,[],u=>u.globals.heatmapDensity||0],\"line-progress\":[Se,[],u=>u.globals.lineProgress||0],accumulated:[Tr,[],u=>u.globals.accumulated===void 0?null:u.globals.accumulated],\"+\":[Se,Ur(Se),(u,a)=>{let h=0;for(let A of a)h+=A.evaluate(u);return h}],\"*\":[Se,Ur(Se),(u,a)=>{let h=1;for(let A of a)h*=A.evaluate(u);return h}],\"-\":{type:Se,overloads:[[[Se,Se],(u,[a,h])=>a.evaluate(u)-h.evaluate(u)],[[Se],(u,[a])=>-a.evaluate(u)]]},\"/\":[Se,[Se,Se],(u,[a,h])=>a.evaluate(u)/h.evaluate(u)],\"%\":[Se,[Se,Se],(u,[a,h])=>a.evaluate(u)%h.evaluate(u)],ln2:[Se,[],()=>Math.LN2],pi:[Se,[],()=>Math.PI],e:[Se,[],()=>Math.E],\"^\":[Se,[Se,Se],(u,[a,h])=>Math.pow(a.evaluate(u),h.evaluate(u))],sqrt:[Se,[Se],(u,[a])=>Math.sqrt(a.evaluate(u))],log10:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))/Math.LN10],ln:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))],log2:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))/Math.LN2],sin:[Se,[Se],(u,[a])=>Math.sin(a.evaluate(u))],cos:[Se,[Se],(u,[a])=>Math.cos(a.evaluate(u))],tan:[Se,[Se],(u,[a])=>Math.tan(a.evaluate(u))],asin:[Se,[Se],(u,[a])=>Math.asin(a.evaluate(u))],acos:[Se,[Se],(u,[a])=>Math.acos(a.evaluate(u))],atan:[Se,[Se],(u,[a])=>Math.atan(a.evaluate(u))],min:[Se,Ur(Se),(u,a)=>Math.min(...a.map(h=>h.evaluate(u)))],max:[Se,Ur(Se),(u,a)=>Math.max(...a.map(h=>h.evaluate(u)))],abs:[Se,[Se],(u,[a])=>Math.abs(a.evaluate(u))],round:[Se,[Se],(u,[a])=>{let h=a.evaluate(u);return h<0?-Math.round(-h):Math.round(h)}],floor:[Se,[Se],(u,[a])=>Math.floor(a.evaluate(u))],ceil:[Se,[Se],(u,[a])=>Math.ceil(a.evaluate(u))],\"filter-==\":[mr,[Dr,Tr],(u,[a,h])=>u.properties()[a.value]===h.value],\"filter-id-==\":[mr,[Tr],(u,[a])=>u.id()===a.value],\"filter-type-==\":[mr,[Dr],(u,[a])=>u.geometryType()===a.value],\"filter-<\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A{let h=u.id(),A=a.value;return typeof h==typeof A&&h\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A>x}],\"filter-id->\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h>A}],\"filter-<=\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A<=x}],\"filter-id-<=\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h<=A}],\"filter->=\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A>=x}],\"filter-id->=\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h>=A}],\"filter-has\":[mr,[Tr],(u,[a])=>a.value in u.properties()],\"filter-has-id\":[mr,[],u=>u.id()!==null&&u.id()!==void 0],\"filter-type-in\":[mr,[vt(Dr)],(u,[a])=>a.value.indexOf(u.geometryType())>=0],\"filter-id-in\":[mr,[vt(Tr)],(u,[a])=>a.value.indexOf(u.id())>=0],\"filter-in-small\":[mr,[Dr,vt(Tr)],(u,[a,h])=>h.value.indexOf(u.properties()[a.value])>=0],\"filter-in-large\":[mr,[Dr,vt(Tr)],(u,[a,h])=>function(A,x,E,P){for(;E<=P;){let D=E+P>>1;if(x[D]===A)return!0;x[D]>A?P=D-1:E=D+1}return!1}(u.properties()[a.value],h.value,0,h.value.length-1)],all:{type:mr,overloads:[[[mr,mr],(u,[a,h])=>a.evaluate(u)&&h.evaluate(u)],[Ur(mr),(u,a)=>{for(let h of a)if(!h.evaluate(u))return!1;return!0}]]},any:{type:mr,overloads:[[[mr,mr],(u,[a,h])=>a.evaluate(u)||h.evaluate(u)],[Ur(mr),(u,a)=>{for(let h of a)if(h.evaluate(u))return!0;return!1}]]},\"!\":[mr,[mr],(u,[a])=>!a.evaluate(u)],\"is-supported-script\":[mr,[Dr],(u,[a])=>{let h=u.globals&&u.globals.isSupportedScript;return!h||h(a.evaluate(u))}],upcase:[Dr,[Dr],(u,[a])=>a.evaluate(u).toUpperCase()],downcase:[Dr,[Dr],(u,[a])=>a.evaluate(u).toLowerCase()],concat:[Dr,Ur(Tr),(u,a)=>a.map(h=>_i(h.evaluate(u))).join(\"\")],\"resolved-locale\":[Dr,[sa],(u,[a])=>a.evaluate(u).resolvedLocale()]});class Ym{constructor(a,h){var A;this.expression=a,this._warningHistory={},this._evaluator=new gd,this._defaultValue=h?(A=h).type===\"color\"&&Qi(A.default)?new ai(0,0,0,0):A.type===\"color\"?ai.parse(A.default)||null:A.type===\"padding\"?kn.parse(A.default)||null:A.type===\"variableAnchorOffsetCollection\"?Vo.parse(A.default)||null:A.default===void 0?null:A.default:null,this._enumValues=h&&h.type===\"enum\"?h.values:null}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._evaluator.globals=a,this._evaluator.feature=h,this._evaluator.featureState=A,this._evaluator.canonical=x,this._evaluator.availableImages=E||null,this._evaluator.formattedSection=P,this.expression.evaluate(this._evaluator)}evaluate(a,h,A,x,E,P){this._evaluator.globals=a,this._evaluator.feature=h||null,this._evaluator.featureState=A||null,this._evaluator.canonical=x,this._evaluator.availableImages=E||null,this._evaluator.formattedSection=P||null;try{let D=this.expression.evaluate(this._evaluator);if(D==null||typeof D==\"number\"&&D!=D)return this._defaultValue;if(this._enumValues&&!(D in this._enumValues))throw new an(`Expected value to be one of ${Object.keys(this._enumValues).map(F=>JSON.stringify(F)).join(\", \")}, but found ${JSON.stringify(D)} instead.`);return D}catch(D){return this._warningHistory[D.message]||(this._warningHistory[D.message]=!0,typeof console<\"u\"&&console.warn(D.message)),this._defaultValue}}}function Hp(u){return Array.isArray(u)&&u.length>0&&typeof u[0]==\"string\"&&u[0]in as}function qp(u,a){let h=new _d(as,Nm,[],a?function(x){let E={color:Os,string:Dr,number:Se,enum:Dr,boolean:mr,formatted:gt,padding:J,resolvedImage:nt,variableAnchorOffsetCollection:ht};return x.type===\"array\"?vt(E[x.value]||Tr,x.length):E[x.type]}(a):void 0),A=h.parse(u,void 0,void 0,void 0,a&&a.type===\"string\"?{typeAnnotation:\"coerce\"}:void 0);return A?hi(new Ym(A,a)):go(h.errors)}class Qm{constructor(a,h){this.kind=a,this._styleExpression=h,this.isStateDependent=a!==\"constant\"&&!Vp(h.expression)}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._styleExpression.evaluateWithoutErrorHandling(a,h,A,x,E,P)}evaluate(a,h,A,x,E,P){return this._styleExpression.evaluate(a,h,A,x,E,P)}}class wt{constructor(a,h,A,x){this.kind=a,this.zoomStops=A,this._styleExpression=h,this.isStateDependent=a!==\"camera\"&&!Vp(h.expression),this.interpolationType=x}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._styleExpression.evaluateWithoutErrorHandling(a,h,A,x,E,P)}evaluate(a,h,A,x,E,P){return this._styleExpression.evaluate(a,h,A,x,E,P)}interpolationFactor(a,h,A){return this.interpolationType?Da.interpolationFactor(this.interpolationType,a,h,A):0}}function $m(u,a){let h=qp(u,a);if(h.result===\"error\")return h;let A=h.value.expression,x=Um(A);if(!x&&!mf(a))return go([new dn(\"\",\"data expressions not supported\")]);let E=Vm(A,[\"zoom\"]);if(!E&&!t_(a))return go([new dn(\"\",\"zoom expressions not supported\")]);let P=Md(A);return P||E?P instanceof dn?go([P]):P instanceof Da&&!Sd(a)?go([new dn(\"\",'\"interpolate\" expressions cannot be used with this property')]):hi(P?new wt(x?\"camera\":\"composite\",h.value,P.labels,P instanceof Da?P.interpolation:void 0):new Qm(x?\"constant\":\"source\",h.value)):go([new dn(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class Td{constructor(a,h){this._parameters=a,this._specification=h,Uo(this,ci(this._parameters,this._specification))}static deserialize(a){return new Td(a._parameters,a._specification)}static serialize(a){return{_parameters:a._parameters,_specification:a._specification}}}function Md(u){let a=null;if(u instanceof Wm)a=Md(u.result);else if(u instanceof Gm){for(let h of u.args)if(a=Md(h),a)break}else(u instanceof nh||u instanceof Da)&&u.input instanceof cl&&u.input.name===\"zoom\"&&(a=u);return a instanceof dn||u.eachChild(h=>{let A=Md(h);A instanceof dn?a=A:!a&&A?a=new dn(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):a&&A&&a!==A&&(a=new dn(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'))}),a}function Ed(u){if(u===!0||u===!1)return!0;if(!Array.isArray(u)||u.length===0)return!1;switch(u[0]){case\"has\":return u.length>=2&&u[1]!==\"$id\"&&u[1]!==\"$type\";case\"in\":return u.length>=3&&(typeof u[1]!=\"string\"||Array.isArray(u[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return u.length!==3||Array.isArray(u[1])||Array.isArray(u[2]);case\"any\":case\"all\":for(let a of u.slice(1))if(!Ed(a)&&typeof a!=\"boolean\")return!1;return!0;default:return!0}}let Px={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function Xm(u){if(u==null)return{filter:()=>!0,needGeometry:!1};Ed(u)||(u=gf(u));let a=qp(u,Px);if(a.result===\"error\")throw new Error(a.value.map(h=>`${h.key}: ${h.message}`).join(\", \"));return{filter:(h,A,x)=>a.value.evaluate(h,A,{},x),needGeometry:r_(u)}}function e_(u,a){return ua?1:0}function r_(u){if(!Array.isArray(u))return!1;if(u[0]===\"within\")return!0;for(let a=1;a\"||a===\"<=\"||a===\">=\"?Oa(u[1],u[2],a):a===\"any\"?(h=u.slice(1),[\"any\"].concat(h.map(gf))):a===\"all\"?[\"all\"].concat(u.slice(1).map(gf)):a===\"none\"?[\"all\"].concat(u.slice(1).map(gf).map(Pd)):a===\"in\"?jn(u[1],u.slice(2)):a===\"!in\"?Pd(jn(u[1],u.slice(2))):a===\"has\"?i_(u[1]):a===\"!has\"?Pd(i_(u[1])):a!==\"within\"||u;var h}function Oa(u,a,h){switch(u){case\"$type\":return[`filter-type-${h}`,a];case\"$id\":return[`filter-id-${h}`,a];default:return[`filter-${h}`,u,a]}}function jn(u,a){if(a.length===0)return!1;switch(u){case\"$type\":return[\"filter-type-in\",[\"literal\",a]];case\"$id\":return[\"filter-id-in\",[\"literal\",a]];default:return a.length>200&&!a.some(h=>typeof h!=typeof a[0])?[\"filter-in-large\",u,[\"literal\",a.sort(e_)]]:[\"filter-in-small\",u,[\"literal\",a]]}}function i_(u){switch(u){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",u]}}function Pd(u){return[\"!\",u]}function Zp(u){let a=typeof u;if(a===\"number\"||a===\"boolean\"||a===\"string\"||u==null)return JSON.stringify(u);if(Array.isArray(u)){let x=\"[\";for(let E of u)x+=`${Zp(E)},`;return`${x}]`}let h=Object.keys(u).sort(),A=\"{\";for(let x=0;xA.maximum?[new ve(a,h,`${h} is greater than the maximum value ${A.maximum}`)]:[]}function Qp(u){let a=u.valueSpec,h=Pn(u.value.type),A,x,E,P={},D=h!==\"categorical\"&&u.value.property===void 0,F=!D,V=qr(u.value.stops)===\"array\"&&qr(u.value.stops[0])===\"array\"&&qr(u.value.stops[0][0])===\"object\",q=fi({key:u.key,value:u.value,valueSpec:u.styleSpec.function,validateSpec:u.validateSpec,style:u.style,styleSpec:u.styleSpec,objectElementValidators:{stops:function(at){if(h===\"identity\")return[new ve(at.key,at.value,'identity function may not have a \"stops\" property')];let ct=[],mt=at.value;return ct=ct.concat(du({key:at.key,value:mt,valueSpec:at.valueSpec,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec,arrayElementValidator:X})),qr(mt)===\"array\"&&mt.length===0&&ct.push(new ve(at.key,mt,\"array must have at least one stop\")),ct},default:function(at){return at.validateSpec({key:at.key,value:at.value,valueSpec:a,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec})}}});return h===\"identity\"&&D&&q.push(new ve(u.key,u.value,'missing required property \"property\"')),h===\"identity\"||u.value.stops||q.push(new ve(u.key,u.value,'missing required property \"stops\"')),h===\"exponential\"&&u.valueSpec.expression&&!Sd(u.valueSpec)&&q.push(new ve(u.key,u.value,\"exponential functions not supported\")),u.styleSpec.$version>=8&&(F&&!mf(u.valueSpec)?q.push(new ve(u.key,u.value,\"property functions not supported\")):D&&!t_(u.valueSpec)&&q.push(new ve(u.key,u.value,\"zoom functions not supported\"))),h!==\"categorical\"&&!V||u.value.property!==void 0||q.push(new ve(u.key,u.value,'\"property\" property is required')),q;function X(at){let ct=[],mt=at.value,bt=at.key;if(qr(mt)!==\"array\")return[new ve(bt,mt,`array expected, ${qr(mt)} found`)];if(mt.length!==2)return[new ve(bt,mt,`array length 2 expected, length ${mt.length} found`)];if(V){if(qr(mt[0])!==\"object\")return[new ve(bt,mt,`object expected, ${qr(mt[0])} found`)];if(mt[0].zoom===void 0)return[new ve(bt,mt,\"object stop key must have zoom\")];if(mt[0].value===void 0)return[new ve(bt,mt,\"object stop key must have value\")];if(E&&E>Pn(mt[0].zoom))return[new ve(bt,mt[0].zoom,\"stop zoom values must appear in ascending order\")];Pn(mt[0].zoom)!==E&&(E=Pn(mt[0].zoom),x=void 0,P={}),ct=ct.concat(fi({key:`${bt}[0]`,value:mt[0],valueSpec:{zoom:{}},validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec,objectElementValidators:{zoom:_f,value:et}}))}else ct=ct.concat(et({key:`${bt}[0]`,value:mt[0],valueSpec:{},validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec},mt));return Hp(oh(mt[1]))?ct.concat([new ve(`${bt}[1]`,mt[1],\"expressions are not allowed in function stops.\")]):ct.concat(at.validateSpec({key:`${bt}[1]`,value:mt[1],valueSpec:a,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec}))}function et(at,ct){let mt=qr(at.value),bt=Pn(at.value),Et=at.value!==null?at.value:ct;if(A){if(mt!==A)return[new ve(at.key,Et,`${mt} stop domain type must match previous stop domain type ${A}`)]}else A=mt;if(mt!==\"number\"&&mt!==\"string\"&&mt!==\"boolean\")return[new ve(at.key,Et,\"stop domain value must be a number, string, or boolean\")];if(mt!==\"number\"&&h!==\"categorical\"){let Vt=`number expected, ${mt} found`;return mf(a)&&h===void 0&&(Vt+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ve(at.key,Et,Vt)]}return h!==\"categorical\"||mt!==\"number\"||isFinite(bt)&&Math.floor(bt)===bt?h!==\"categorical\"&&mt===\"number\"&&x!==void 0&&btnew ve(`${u.key}${A.key}`,u.value,A.message));let h=a.value.expression||a.value._styleExpression.expression;if(u.expressionContext===\"property\"&&u.propertyKey===\"text-font\"&&!h.outputDefined())return[new ve(u.key,u.value,`Invalid data expression for \"${u.propertyKey}\". Output values must be contained as literals within the expression.`)];if(u.expressionContext===\"property\"&&u.propertyType===\"layout\"&&!Vp(h))return[new ve(u.key,u.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(u.expressionContext===\"filter\"&&!Vp(h))return[new ve(u.key,u.value,'\"feature-state\" data expressions are not supported with filters.')];if(u.expressionContext&&u.expressionContext.indexOf(\"cluster\")===0){if(!Vm(h,[\"zoom\",\"feature-state\"]))return[new ve(u.key,u.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(u.expressionContext===\"cluster-initial\"&&!Um(h))return[new ve(u.key,u.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return[]}function Id(u){let a=u.key,h=u.value,A=u.valueSpec,x=[];return Array.isArray(A.values)?A.values.indexOf(Pn(h))===-1&&x.push(new ve(a,h,`expected one of [${A.values.join(\", \")}], ${JSON.stringify(h)} found`)):Object.keys(A.values).indexOf(Pn(h))===-1&&x.push(new ve(a,h,`expected one of [${Object.keys(A.values).join(\", \")}], ${JSON.stringify(h)} found`)),x}function lh(u){return Ed(oh(u.value))?ah(Uo({},u,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):$p(u)}function $p(u){let a=u.value,h=u.key;if(qr(a)!==\"array\")return[new ve(h,a,`array expected, ${qr(a)} found`)];let A=u.styleSpec,x,E=[];if(a.length<1)return[new ve(h,a,\"filter array must have at least 1 element\")];switch(E=E.concat(Id({key:`${h}[0]`,value:a[0],valueSpec:A.filter_operator,style:u.style,styleSpec:u.styleSpec})),Pn(a[0])){case\"<\":case\"<=\":case\">\":case\">=\":a.length>=2&&Pn(a[1])===\"$type\"&&E.push(new ve(h,a,`\"$type\" cannot be use with operator \"${a[0]}\"`));case\"==\":case\"!=\":a.length!==3&&E.push(new ve(h,a,`filter array for operator \"${a[0]}\" must have 3 elements`));case\"in\":case\"!in\":a.length>=2&&(x=qr(a[1]),x!==\"string\"&&E.push(new ve(`${h}[1]`,a[1],`string expected, ${x} found`)));for(let P=2;P{V in h&&a.push(new ve(A,h[V],`\"${V}\" is prohibited for ref layers`))}),x.layers.forEach(V=>{Pn(V.id)===D&&(F=V)}),F?F.ref?a.push(new ve(A,h.ref,\"ref cannot reference another ref layer\")):P=Pn(F.type):a.push(new ve(A,h.ref,`ref layer \"${D}\" not found`))}else if(P!==\"background\")if(h.source){let F=x.sources&&x.sources[h.source],V=F&&Pn(F.type);F?V===\"vector\"&&P===\"raster\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a raster source`)):V!==\"raster-dem\"&&P===\"hillshade\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a raster-dem source`)):V===\"raster\"&&P!==\"raster\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a vector source`)):V!==\"vector\"||h[\"source-layer\"]?V===\"raster-dem\"&&P!==\"hillshade\"?a.push(new ve(A,h.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):P!==\"line\"||!h.paint||!h.paint[\"line-gradient\"]||V===\"geojson\"&&F.lineMetrics||a.push(new ve(A,h,`layer \"${h.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):a.push(new ve(A,h,`layer \"${h.id}\" must specify a \"source-layer\"`)):a.push(new ve(A,h.source,`source \"${h.source}\" not found`))}else a.push(new ve(A,h,'missing required property \"source\"'));return a=a.concat(fi({key:A,value:h,valueSpec:E.layer,style:u.style,styleSpec:u.styleSpec,validateSpec:u.validateSpec,objectElementValidators:{\"*\":()=>[],type:()=>u.validateSpec({key:`${A}.type`,value:h.type,valueSpec:E.layer.type,style:u.style,styleSpec:u.styleSpec,validateSpec:u.validateSpec,object:h,objectKey:\"type\"}),filter:lh,layout:F=>fi({layer:h,key:F.key,value:F.value,style:F.style,styleSpec:F.styleSpec,validateSpec:F.validateSpec,objectElementValidators:{\"*\":V=>s_(Uo({layerType:P},V))}}),paint:F=>fi({layer:h,key:F.key,value:F.value,style:F.style,styleSpec:F.styleSpec,validateSpec:F.validateSpec,objectElementValidators:{\"*\":V=>n_(Uo({layerType:P},V))}})}})),a}function hl(u){let a=u.value,h=u.key,A=qr(a);return A!==\"string\"?[new ve(h,a,`string expected, ${A} found`)]:[]}let ch={promoteId:function({key:u,value:a}){if(qr(a)===\"string\")return hl({key:u,value:a});{let h=[];for(let A in a)h.push(...hl({key:`${u}.${A}`,value:a[A]}));return h}}};function la(u){let a=u.value,h=u.key,A=u.styleSpec,x=u.style,E=u.validateSpec;if(!a.type)return[new ve(h,a,'\"type\" is required')];let P=Pn(a.type),D;switch(P){case\"vector\":case\"raster\":return D=fi({key:h,value:a,valueSpec:A[`source_${P.replace(\"-\",\"_\")}`],style:u.style,styleSpec:A,objectElementValidators:ch,validateSpec:E}),D;case\"raster-dem\":return D=function(F){var V;let q=(V=F.sourceName)!==null&&V!==void 0?V:\"\",X=F.value,et=F.styleSpec,at=et.source_raster_dem,ct=F.style,mt=[],bt=qr(X);if(X===void 0)return mt;if(bt!==\"object\")return mt.push(new ve(\"source_raster_dem\",X,`object expected, ${bt} found`)),mt;let Et=Pn(X.encoding)===\"custom\",Vt=[\"redFactor\",\"greenFactor\",\"blueFactor\",\"baseShift\"],kt=F.value.encoding?`\"${F.value.encoding}\"`:\"Default\";for(let jt in X)!Et&&Vt.includes(jt)?mt.push(new ve(jt,X[jt],`In \"${q}\": \"${jt}\" is only valid when \"encoding\" is set to \"custom\". ${kt} encoding found`)):at[jt]?mt=mt.concat(F.validateSpec({key:jt,value:X[jt],valueSpec:at[jt],validateSpec:F.validateSpec,style:ct,styleSpec:et})):mt.push(new ve(jt,X[jt],`unknown property \"${jt}\"`));return mt}({sourceName:h,value:a,style:u.style,styleSpec:A,validateSpec:E}),D;case\"geojson\":if(D=fi({key:h,value:a,valueSpec:A.source_geojson,style:x,styleSpec:A,validateSpec:E,objectElementValidators:ch}),a.cluster)for(let F in a.clusterProperties){let[V,q]=a.clusterProperties[F],X=typeof V==\"string\"?[V,[\"accumulated\"],[\"get\",F]]:V;D.push(...ah({key:`${h}.${F}.map`,value:q,validateSpec:E,expressionContext:\"cluster-map\"})),D.push(...ah({key:`${h}.${F}.reduce`,value:X,validateSpec:E,expressionContext:\"cluster-reduce\"}))}return D;case\"video\":return fi({key:h,value:a,valueSpec:A.source_video,style:x,validateSpec:E,styleSpec:A});case\"image\":return fi({key:h,value:a,valueSpec:A.source_image,style:x,validateSpec:E,styleSpec:A});case\"canvas\":return[new ve(h,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return Id({key:`${h}.type`,value:a.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:x,validateSpec:E,styleSpec:A})}}function Cd(u){let a=u.value,h=u.styleSpec,A=h.light,x=u.style,E=[],P=qr(a);if(a===void 0)return E;if(P!==\"object\")return E=E.concat([new ve(\"light\",a,`object expected, ${P} found`)]),E;for(let D in a){let F=D.match(/^(.*)-transition$/);E=E.concat(F&&A[F[1]]&&A[F[1]].transition?u.validateSpec({key:D,value:a[D],valueSpec:h.transition,validateSpec:u.validateSpec,style:x,styleSpec:h}):A[D]?u.validateSpec({key:D,value:a[D],valueSpec:A[D],validateSpec:u.validateSpec,style:x,styleSpec:h}):[new ve(D,a[D],`unknown property \"${D}\"`)])}return E}function o_(u){let a=u.value,h=u.styleSpec,A=h.terrain,x=u.style,E=[],P=qr(a);if(a===void 0)return E;if(P!==\"object\")return E=E.concat([new ve(\"terrain\",a,`object expected, ${P} found`)]),E;for(let D in a)E=E.concat(A[D]?u.validateSpec({key:D,value:a[D],valueSpec:A[D],validateSpec:u.validateSpec,style:x,styleSpec:h}):[new ve(D,a[D],`unknown property \"${D}\"`)]);return E}function Fs(u){let a=[],h=u.value,A=u.key;if(Array.isArray(h)){let x=[],E=[];for(let P in h)h[P].id&&x.includes(h[P].id)&&a.push(new ve(A,h,`all the sprites' ids must be unique, but ${h[P].id} is duplicated`)),x.push(h[P].id),h[P].url&&E.includes(h[P].url)&&a.push(new ve(A,h,`all the sprites' URLs must be unique, but ${h[P].url} is duplicated`)),E.push(h[P].url),a=a.concat(fi({key:`${A}[${P}]`,value:h[P],valueSpec:{id:{type:\"string\",required:!0},url:{type:\"string\",required:!0}},validateSpec:u.validateSpec}));return a}return hl({key:A,value:h})}let pu={\"*\":()=>[],array:du,boolean:function(u){let a=u.value,h=u.key,A=qr(a);return A!==\"boolean\"?[new ve(h,a,`boolean expected, ${A} found`)]:[]},number:_f,color:function(u){let a=u.key,h=u.value,A=qr(h);return A!==\"string\"?[new ve(a,h,`color expected, ${A} found`)]:ai.parse(String(h))?[]:[new ve(a,h,`color expected, \"${h}\" found`)]},constants:Km,enum:Id,filter:lh,function:Qp,layer:Jm,object:fi,source:la,light:Cd,terrain:o_,string:hl,formatted:function(u){return hl(u).length===0?[]:ah(u)},resolvedImage:function(u){return hl(u).length===0?[]:ah(u)},padding:function(u){let a=u.key,h=u.value;if(qr(h)===\"array\"){if(h.length<1||h.length>4)return[new ve(a,h,`padding requires 1 to 4 values; ${h.length} values found`)];let A={type:\"number\"},x=[];for(let E=0;E[]}})),u.constants&&(h=h.concat(Km({key:\"constants\",value:u.constants,style:u,styleSpec:a,validateSpec:In}))),Ld(h)}function Ba(u){return function(a){return u({...a,validateSpec:In})}}function Ld(u){return[].concat(u).sort((a,h)=>a.line-h.line)}function fl(u){return function(...a){return Ld(u.apply(this,a))}}ca.source=fl(Ba(la)),ca.sprite=fl(Ba(Fs)),ca.glyphs=fl(Ba(Kp)),ca.light=fl(Ba(Cd)),ca.terrain=fl(Ba(o_)),ca.layer=fl(Ba(Jm)),ca.filter=fl(Ba(lh)),ca.paintProperty=fl(Ba(n_)),ca.layoutProperty=fl(Ba(s_));let Fa=ca,uh=Fa.light,Jp=Fa.paintProperty,t0=Fa.layoutProperty;function hh(u,a){let h=!1;if(a&&a.length)for(let A of a)u.fire(new to(new Error(A.message))),h=!0;return h}class za{constructor(a,h,A){let x=this.cells=[];if(a instanceof ArrayBuffer){this.arrayBuffer=a;let P=new Int32Array(this.arrayBuffer);a=P[0],this.d=(h=P[1])+2*(A=P[2]);for(let F=0;F=X[ct+0]&&x>=X[ct+1])?(D[at]=!0,P.push(q[at])):D[at]=!1}}}}_forEachCell(a,h,A,x,E,P,D,F){let V=this._convertToCellCoord(a),q=this._convertToCellCoord(h),X=this._convertToCellCoord(A),et=this._convertToCellCoord(x);for(let at=V;at<=X;at++)for(let ct=q;ct<=et;ct++){let mt=this.d*ct+at;if((!F||F(this._convertFromCellCoord(at),this._convertFromCellCoord(ct),this._convertFromCellCoord(at+1),this._convertFromCellCoord(ct+1)))&&E.call(this,a,h,A,x,mt,P,D,F))return}}_convertFromCellCoord(a){return(a-this.padding)/this.scale}_convertToCellCoord(a){return Math.max(0,Math.min(this.d-1,Math.floor(a*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let a=this.cells,h=3+this.cells.length+1+1,A=0;for(let P=0;P=0)continue;let P=u[E];x[E]=ro[A].shallow.indexOf(E)>=0?P:Vl(P,a)}u instanceof Error&&(x.message=u.message)}if(x.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return A!==\"Object\"&&(x.$name=A),x}throw new Error(\"can't serialize object of type \"+typeof u)}function yf(u){if(u==null||typeof u==\"boolean\"||typeof u==\"number\"||typeof u==\"string\"||u instanceof Boolean||u instanceof Number||u instanceof String||u instanceof Date||u instanceof RegExp||u instanceof Blob||kd(u)||Pc(u)||ArrayBuffer.isView(u)||u instanceof ImageData)return u;if(Array.isArray(u))return u.map(yf);if(typeof u==\"object\"){let a=u.$name||\"Object\";if(!ro[a])throw new Error(`can't deserialize unregistered class ${a}`);let{klass:h}=ro[a];if(!h)throw new Error(`can't deserialize unregistered class ${a}`);if(h.deserialize)return h.deserialize(u);let A=Object.create(h.prototype);for(let x of Object.keys(u)){if(x===\"$name\")continue;let E=u[x];A[x]=ro[a].shallow.indexOf(x)>=0?E:yf(E)}return A}throw new Error(\"can't deserialize object of type \"+typeof u)}class a_{constructor(){this.first=!0}update(a,h){let A=Math.floor(a);return this.first?(this.first=!1,this.lastIntegerZoom=A,this.lastIntegerZoomTime=0,this.lastZoom=a,this.lastFloorZoom=A,!0):(this.lastFloorZoom>A?(this.lastIntegerZoom=A+1,this.lastIntegerZoomTime=h):this.lastFloorZoomu>=128&&u<=255,Arabic:u=>u>=1536&&u<=1791,\"Arabic Supplement\":u=>u>=1872&&u<=1919,\"Arabic Extended-A\":u=>u>=2208&&u<=2303,\"Hangul Jamo\":u=>u>=4352&&u<=4607,\"Unified Canadian Aboriginal Syllabics\":u=>u>=5120&&u<=5759,Khmer:u=>u>=6016&&u<=6143,\"Unified Canadian Aboriginal Syllabics Extended\":u=>u>=6320&&u<=6399,\"General Punctuation\":u=>u>=8192&&u<=8303,\"Letterlike Symbols\":u=>u>=8448&&u<=8527,\"Number Forms\":u=>u>=8528&&u<=8591,\"Miscellaneous Technical\":u=>u>=8960&&u<=9215,\"Control Pictures\":u=>u>=9216&&u<=9279,\"Optical Character Recognition\":u=>u>=9280&&u<=9311,\"Enclosed Alphanumerics\":u=>u>=9312&&u<=9471,\"Geometric Shapes\":u=>u>=9632&&u<=9727,\"Miscellaneous Symbols\":u=>u>=9728&&u<=9983,\"Miscellaneous Symbols and Arrows\":u=>u>=11008&&u<=11263,\"CJK Radicals Supplement\":u=>u>=11904&&u<=12031,\"Kangxi Radicals\":u=>u>=12032&&u<=12255,\"Ideographic Description Characters\":u=>u>=12272&&u<=12287,\"CJK Symbols and Punctuation\":u=>u>=12288&&u<=12351,Hiragana:u=>u>=12352&&u<=12447,Katakana:u=>u>=12448&&u<=12543,Bopomofo:u=>u>=12544&&u<=12591,\"Hangul Compatibility Jamo\":u=>u>=12592&&u<=12687,Kanbun:u=>u>=12688&&u<=12703,\"Bopomofo Extended\":u=>u>=12704&&u<=12735,\"CJK Strokes\":u=>u>=12736&&u<=12783,\"Katakana Phonetic Extensions\":u=>u>=12784&&u<=12799,\"Enclosed CJK Letters and Months\":u=>u>=12800&&u<=13055,\"CJK Compatibility\":u=>u>=13056&&u<=13311,\"CJK Unified Ideographs Extension A\":u=>u>=13312&&u<=19903,\"Yijing Hexagram Symbols\":u=>u>=19904&&u<=19967,\"CJK Unified Ideographs\":u=>u>=19968&&u<=40959,\"Yi Syllables\":u=>u>=40960&&u<=42127,\"Yi Radicals\":u=>u>=42128&&u<=42191,\"Hangul Jamo Extended-A\":u=>u>=43360&&u<=43391,\"Hangul Syllables\":u=>u>=44032&&u<=55215,\"Hangul Jamo Extended-B\":u=>u>=55216&&u<=55295,\"Private Use Area\":u=>u>=57344&&u<=63743,\"CJK Compatibility Ideographs\":u=>u>=63744&&u<=64255,\"Arabic Presentation Forms-A\":u=>u>=64336&&u<=65023,\"Vertical Forms\":u=>u>=65040&&u<=65055,\"CJK Compatibility Forms\":u=>u>=65072&&u<=65103,\"Small Form Variants\":u=>u>=65104&&u<=65135,\"Arabic Presentation Forms-B\":u=>u>=65136&&u<=65279,\"Halfwidth and Fullwidth Forms\":u=>u>=65280&&u<=65519};function e0(u){for(let a of u)if(fh(a.charCodeAt(0)))return!0;return!1}function r0(u){for(let a of u)if(!Ix(a.charCodeAt(0)))return!1;return!0}function Ix(u){return!(Re.Arabic(u)||Re[\"Arabic Supplement\"](u)||Re[\"Arabic Extended-A\"](u)||Re[\"Arabic Presentation Forms-A\"](u)||Re[\"Arabic Presentation Forms-B\"](u))}function fh(u){return!(u!==746&&u!==747&&(u<4352||!(Re[\"Bopomofo Extended\"](u)||Re.Bopomofo(u)||Re[\"CJK Compatibility Forms\"](u)&&!(u>=65097&&u<=65103)||Re[\"CJK Compatibility Ideographs\"](u)||Re[\"CJK Compatibility\"](u)||Re[\"CJK Radicals Supplement\"](u)||Re[\"CJK Strokes\"](u)||!(!Re[\"CJK Symbols and Punctuation\"](u)||u>=12296&&u<=12305||u>=12308&&u<=12319||u===12336)||Re[\"CJK Unified Ideographs Extension A\"](u)||Re[\"CJK Unified Ideographs\"](u)||Re[\"Enclosed CJK Letters and Months\"](u)||Re[\"Hangul Compatibility Jamo\"](u)||Re[\"Hangul Jamo Extended-A\"](u)||Re[\"Hangul Jamo Extended-B\"](u)||Re[\"Hangul Jamo\"](u)||Re[\"Hangul Syllables\"](u)||Re.Hiragana(u)||Re[\"Ideographic Description Characters\"](u)||Re.Kanbun(u)||Re[\"Kangxi Radicals\"](u)||Re[\"Katakana Phonetic Extensions\"](u)||Re.Katakana(u)&&u!==12540||!(!Re[\"Halfwidth and Fullwidth Forms\"](u)||u===65288||u===65289||u===65293||u>=65306&&u<=65310||u===65339||u===65341||u===65343||u>=65371&&u<=65503||u===65507||u>=65512&&u<=65519)||!(!Re[\"Small Form Variants\"](u)||u>=65112&&u<=65118||u>=65123&&u<=65126)||Re[\"Unified Canadian Aboriginal Syllabics\"](u)||Re[\"Unified Canadian Aboriginal Syllabics Extended\"](u)||Re[\"Vertical Forms\"](u)||Re[\"Yijing Hexagram Symbols\"](u)||Re[\"Yi Syllables\"](u)||Re[\"Yi Radicals\"](u))))}function l_(u){return!(fh(u)||function(a){return!!(Re[\"Latin-1 Supplement\"](a)&&(a===167||a===169||a===174||a===177||a===188||a===189||a===190||a===215||a===247)||Re[\"General Punctuation\"](a)&&(a===8214||a===8224||a===8225||a===8240||a===8241||a===8251||a===8252||a===8258||a===8263||a===8264||a===8265||a===8273)||Re[\"Letterlike Symbols\"](a)||Re[\"Number Forms\"](a)||Re[\"Miscellaneous Technical\"](a)&&(a>=8960&&a<=8967||a>=8972&&a<=8991||a>=8996&&a<=9e3||a===9003||a>=9085&&a<=9114||a>=9150&&a<=9165||a===9167||a>=9169&&a<=9179||a>=9186&&a<=9215)||Re[\"Control Pictures\"](a)&&a!==9251||Re[\"Optical Character Recognition\"](a)||Re[\"Enclosed Alphanumerics\"](a)||Re[\"Geometric Shapes\"](a)||Re[\"Miscellaneous Symbols\"](a)&&!(a>=9754&&a<=9759)||Re[\"Miscellaneous Symbols and Arrows\"](a)&&(a>=11026&&a<=11055||a>=11088&&a<=11097||a>=11192&&a<=11243)||Re[\"CJK Symbols and Punctuation\"](a)||Re.Katakana(a)||Re[\"Private Use Area\"](a)||Re[\"CJK Compatibility Forms\"](a)||Re[\"Small Form Variants\"](a)||Re[\"Halfwidth and Fullwidth Forms\"](a)||a===8734||a===8756||a===8757||a>=9984&&a<=10087||a>=10102&&a<=10131||a===65532||a===65533)}(u))}function i0(u){return u>=1424&&u<=2303||Re[\"Arabic Presentation Forms-A\"](u)||Re[\"Arabic Presentation Forms-B\"](u)}function n0(u,a){return!(!a&&i0(u)||u>=2304&&u<=3583||u>=3840&&u<=4255||Re.Khmer(u))}function vf(u){for(let a of u)if(i0(a.charCodeAt(0)))return!0;return!1}let s0=\"deferred\",tA=\"loading\",eA=\"loaded\",dh=null,ls=\"unavailable\",Au=null,Rc=function(u){u&&typeof u==\"string\"&&u.indexOf(\"NetworkError\")>-1&&(ls=\"error\"),dh&&dh(u)};function o0(){Rd.fire(new ss(\"pluginStateChange\",{pluginStatus:ls,pluginURL:Au}))}let Rd=new Ol,a0=function(){return ls},c_=function(){if(ls!==s0||!Au)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ls=tA,o0(),Au&&ol({url:Au},u=>{u?Rc(u):(ls=eA,o0())})},ua={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>ls===eA||ua.applyArabicShaping!=null,isLoading:()=>ls===tA,setState(u){if(!zi())throw new Error(\"Cannot set the state of the rtl-text-plugin when not in the web-worker context\");ls=u.pluginStatus,Au=u.pluginURL},isParsed(){if(!zi())throw new Error(\"rtl-text-plugin is only parsed on the worker-threads\");return ua.applyArabicShaping!=null&&ua.processBidirectionalText!=null&&ua.processStyledBidirectionalText!=null},getPluginURL(){if(!zi())throw new Error(\"rtl-text-plugin url can only be queried from the worker threads\");return Au}};class ln{constructor(a,h){this.zoom=a,h?(this.now=h.now,this.fadeDuration=h.fadeDuration,this.zoomHistory=h.zoomHistory,this.transition=h.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new a_,this.transition={})}isSupportedScript(a){return function(h,A){for(let x of h)if(!n0(x.charCodeAt(0),A))return!1;return!0}(a,ua.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let a=this.zoom,h=a-Math.floor(a),A=this.crossFadingFactor();return a>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:h+(1-h)*A}:{fromScale:.5,toScale:1,t:1-(1-A)*h}}}class rA{constructor(a,h){this.property=a,this.value=h,this.expression=function(A,x){if(Qi(A))return new Td(A,x);if(Hp(A)){let E=$m(A,x);if(E.result===\"error\")throw new Error(E.value.map(P=>`${P.key}: ${P.message}`).join(\", \"));return E.value}{let E=A;return x.type===\"color\"&&typeof A==\"string\"?E=ai.parse(A):x.type!==\"padding\"||typeof A!=\"number\"&&!Array.isArray(A)?x.type===\"variableAnchorOffsetCollection\"&&Array.isArray(A)&&(E=Vo.parse(A)):E=kn.parse(A),{kind:\"constant\",evaluate:()=>E}}}(h===void 0?a.specification.default:h,a.specification)}isDataDriven(){return this.expression.kind===\"source\"||this.expression.kind===\"composite\"}possiblyEvaluate(a,h,A){return this.property.possiblyEvaluate(this,a,h,A)}}class l0{constructor(a){this.property=a,this.value=new rA(a,void 0)}transitioned(a,h){return new u_(this.property,this.value,h,Ot({},a.transition,this.transition),a.now)}untransitioned(){return new u_(this.property,this.value,null,{},0)}}class ph{constructor(a){this._properties=a,this._values=Object.create(a.defaultTransitionablePropertyValues)}getValue(a){return ue(this._values[a].value.value)}setValue(a,h){Object.prototype.hasOwnProperty.call(this._values,a)||(this._values[a]=new l0(this._values[a].property)),this._values[a].value=new rA(this._values[a].property,h===null?void 0:ue(h))}getTransition(a){return ue(this._values[a].transition)}setTransition(a,h){Object.prototype.hasOwnProperty.call(this._values,a)||(this._values[a]=new l0(this._values[a].property)),this._values[a].transition=ue(h)||void 0}serialize(){let a={};for(let h of Object.keys(this._values)){let A=this.getValue(h);A!==void 0&&(a[h]=A);let x=this.getTransition(h);x!==void 0&&(a[`${h}-transition`]=x)}return a}transitioned(a,h){let A=new h_(this._properties);for(let x of Object.keys(this._values))A._values[x]=this._values[x].transitioned(a,h._values[x]);return A}untransitioned(){let a=new h_(this._properties);for(let h of Object.keys(this._values))a._values[h]=this._values[h].untransitioned();return a}}class u_{constructor(a,h,A,x,E){this.property=a,this.value=h,this.begin=E+x.delay||0,this.end=this.begin+x.duration||0,a.specification.transition&&(x.delay||x.duration)&&(this.prior=A)}possiblyEvaluate(a,h,A){let x=a.now||0,E=this.value.possiblyEvaluate(a,h,A),P=this.prior;if(P){if(x>this.end)return this.prior=null,E;if(this.value.isDataDriven())return this.prior=null,E;if(x=1)return 1;let V=F*F,q=V*F;return 4*(F<.5?q:3*(F-V)+q-.75)}(D))}}return E}}class h_{constructor(a){this._properties=a,this._values=Object.create(a.defaultTransitioningPropertyValues)}possiblyEvaluate(a,h,A){let x=new iA(this._properties);for(let E of Object.keys(this._values))x._values[E]=this._values[E].possiblyEvaluate(a,h,A);return x}hasTransition(){for(let a of Object.keys(this._values))if(this._values[a].prior)return!0;return!1}}class Cx{constructor(a){this._properties=a,this._values=Object.create(a.defaultPropertyValues)}hasValue(a){return this._values[a].value!==void 0}getValue(a){return ue(this._values[a].value)}setValue(a,h){this._values[a]=new rA(this._values[a].property,h===null?void 0:ue(h))}serialize(){let a={};for(let h of Object.keys(this._values)){let A=this.getValue(h);A!==void 0&&(a[h]=A)}return a}possiblyEvaluate(a,h,A){let x=new iA(this._properties);for(let E of Object.keys(this._values))x._values[E]=this._values[E].possiblyEvaluate(a,h,A);return x}}class _o{constructor(a,h,A){this.property=a,this.value=h,this.parameters=A}isConstant(){return this.value.kind===\"constant\"}constantOr(a){return this.value.kind===\"constant\"?this.value.value:a}evaluate(a,h,A,x){return this.property.evaluate(this.value,this.parameters,a,h,A,x)}}class iA{constructor(a){this._properties=a,this._values=Object.create(a.defaultPossiblyEvaluatedValues)}get(a){return this._values[a]}}class rr{constructor(a){this.specification=a}possiblyEvaluate(a,h){if(a.isDataDriven())throw new Error(\"Value should not be data driven\");return a.expression.evaluate(h)}interpolate(a,h,A){let x=Ra[this.specification.type];return x?x(a,h,A):a}}class fr{constructor(a,h){this.specification=a,this.overrides=h}possiblyEvaluate(a,h,A,x){return new _o(this,a.expression.kind===\"constant\"||a.expression.kind===\"camera\"?{kind:\"constant\",value:a.expression.evaluate(h,null,{},A,x)}:a.expression,h)}interpolate(a,h,A){if(a.value.kind!==\"constant\"||h.value.kind!==\"constant\")return a;if(a.value.value===void 0||h.value.value===void 0)return new _o(this,{kind:\"constant\",value:void 0},a.parameters);let x=Ra[this.specification.type];if(x){let E=x(a.value.value,h.value.value,A);return new _o(this,{kind:\"constant\",value:E},a.parameters)}return a}evaluate(a,h,A,x,E,P){return a.kind===\"constant\"?a.value:a.evaluate(h,A,x,E,P)}}class xf extends fr{possiblyEvaluate(a,h,A,x){if(a.value===void 0)return new _o(this,{kind:\"constant\",value:void 0},h);if(a.expression.kind===\"constant\"){let E=a.expression.evaluate(h,null,{},A,x),P=a.property.specification.type===\"resolvedImage\"&&typeof E!=\"string\"?E.name:E,D=this._calculate(P,P,P,h);return new _o(this,{kind:\"constant\",value:D},h)}if(a.expression.kind===\"camera\"){let E=this._calculate(a.expression.evaluate({zoom:h.zoom-1}),a.expression.evaluate({zoom:h.zoom}),a.expression.evaluate({zoom:h.zoom+1}),h);return new _o(this,{kind:\"constant\",value:E},h)}return new _o(this,a.expression,h)}evaluate(a,h,A,x,E,P){if(a.kind===\"source\"){let D=a.evaluate(h,A,x,E,P);return this._calculate(D,D,D,h)}return a.kind===\"composite\"?this._calculate(a.evaluate({zoom:Math.floor(h.zoom)-1},A,x),a.evaluate({zoom:Math.floor(h.zoom)},A,x),a.evaluate({zoom:Math.floor(h.zoom)+1},A,x),h):a.value}_calculate(a,h,A,x){return x.zoom>x.zoomHistory.lastIntegerZoom?{from:a,to:h}:{from:A,to:h}}interpolate(a){return a}}class nA{constructor(a){this.specification=a}possiblyEvaluate(a,h,A,x){if(a.value!==void 0){if(a.expression.kind===\"constant\"){let E=a.expression.evaluate(h,null,{},A,x);return this._calculate(E,E,E,h)}return this._calculate(a.expression.evaluate(new ln(Math.floor(h.zoom-1),h)),a.expression.evaluate(new ln(Math.floor(h.zoom),h)),a.expression.evaluate(new ln(Math.floor(h.zoom+1),h)),h)}}_calculate(a,h,A,x){return x.zoom>x.zoomHistory.lastIntegerZoom?{from:a,to:h}:{from:A,to:h}}interpolate(a){return a}}class Dd{constructor(a){this.specification=a}possiblyEvaluate(a,h,A,x){return!!a.expression.evaluate(h,null,{},A,x)}interpolate(){return!1}}class Gn{constructor(a){this.properties=a,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let h in a){let A=a[h];A.specification.overridable&&this.overridableProperties.push(h);let x=this.defaultPropertyValues[h]=new rA(A,void 0),E=this.defaultTransitionablePropertyValues[h]=new l0(A);this.defaultTransitioningPropertyValues[h]=E.untransitioned(),this.defaultPossiblyEvaluatedValues[h]=x.possiblyEvaluate({})}}}Ue(\"DataDrivenProperty\",fr),Ue(\"DataConstantProperty\",rr),Ue(\"CrossFadedDataDrivenProperty\",xf),Ue(\"CrossFadedProperty\",nA),Ue(\"ColorRampProperty\",Dd);let io=\"-transition\";class Ui extends Ol{constructor(a,h){if(super(),this.id=a.id,this.type=a.type,this._featureFilter={filter:()=>!0,needGeometry:!1},a.type!==\"custom\"&&(this.metadata=a.metadata,this.minzoom=a.minzoom,this.maxzoom=a.maxzoom,a.type!==\"background\"&&(this.source=a.source,this.sourceLayer=a[\"source-layer\"],this.filter=a.filter),h.layout&&(this._unevaluatedLayout=new Cx(h.layout)),h.paint)){this._transitionablePaint=new ph(h.paint);for(let A in a.paint)this.setPaintProperty(A,a.paint[A],{validate:!1});for(let A in a.layout)this.setLayoutProperty(A,a.layout[A],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new iA(h.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(a){return a===\"visibility\"?this.visibility:this._unevaluatedLayout.getValue(a)}setLayoutProperty(a,h,A={}){h!=null&&this._validate(t0,`layers.${this.id}.layout.${a}`,a,h,A)||(a!==\"visibility\"?this._unevaluatedLayout.setValue(a,h):this.visibility=h)}getPaintProperty(a){return a.endsWith(io)?this._transitionablePaint.getTransition(a.slice(0,-11)):this._transitionablePaint.getValue(a)}setPaintProperty(a,h,A={}){if(h!=null&&this._validate(Jp,`layers.${this.id}.paint.${a}`,a,h,A))return!1;if(a.endsWith(io))return this._transitionablePaint.setTransition(a.slice(0,-11),h||void 0),!1;{let x=this._transitionablePaint._values[a],E=x.property.specification[\"property-type\"]===\"cross-faded-data-driven\",P=x.value.isDataDriven(),D=x.value;this._transitionablePaint.setValue(a,h),this._handleSpecialPaintPropertyUpdate(a);let F=this._transitionablePaint._values[a].value;return F.isDataDriven()||P||E||this._handleOverridablePaintPropertyUpdate(a,D,F)}}_handleSpecialPaintPropertyUpdate(a){}_handleOverridablePaintPropertyUpdate(a,h,A){return!1}isHidden(a){return!!(this.minzoom&&a=this.maxzoom)||this.visibility===\"none\"}updateTransitions(a){this._transitioningPaint=this._transitionablePaint.transitioned(a,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(a,h){a.getCrossfadeParameters&&(this._crossfadeParameters=a.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(a,void 0,h)),this.paint=this._transitioningPaint.possiblyEvaluate(a,void 0,h)}serialize(){let a={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(a.layout=a.layout||{},a.layout.visibility=this.visibility),le(a,(h,A)=>!(h===void 0||A===\"layout\"&&!Object.keys(h).length||A===\"paint\"&&!Object.keys(h).length))}_validate(a,h,A,x,E={}){return(!E||E.validate!==!1)&&hh(this,a.call(Fa,{key:h,layerType:this.type,objectKey:A,value:x,styleSpec:te,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let a in this.paint._values){let h=this.paint.get(a);if(h instanceof _o&&mf(h.property.specification)&&(h.value.kind===\"source\"||h.value.kind===\"composite\")&&h.value.isStateDependent)return!0}return!1}}let f_={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ah{constructor(a,h){this._structArray=a,this._pos1=h*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Cn{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(a,h){return a._trim(),h&&(a.isTransferred=!0,h.push(a.arrayBuffer)),{length:a.length,arrayBuffer:a.arrayBuffer}}static deserialize(a){let h=Object.create(this.prototype);return h.arrayBuffer=a.arrayBuffer,h.length=a.length,h.capacity=a.arrayBuffer.byteLength/h.bytesPerElement,h._refreshViews(),h}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(a){this.reserve(a),this.length=a}reserve(a){if(a>this.capacity){this.capacity=Math.max(a,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let h=this.uint8;this._refreshViews(),h&&this.uint8.set(h)}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function yn(u,a=1){let h=0,A=0;return{members:u.map(x=>{let E=f_[x.type].BYTES_PER_ELEMENT,P=h=bf(h,Math.max(a,E)),D=x.components||1;return A=Math.max(A,E),h+=E*D,{name:x.name,type:x.type,components:D,offset:P}}),size:bf(h,Math.max(A,a)),alignment:a}}function bf(u,a){return Math.ceil(u/a)*a}class Ms extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.int16[x+0]=h,this.int16[x+1]=A,a}}Ms.prototype.bytesPerElement=4,Ue(\"StructArrayLayout2i4\",Ms);class mh extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.int16[E+0]=h,this.int16[E+1]=A,this.int16[E+2]=x,a}}mh.prototype.bytesPerElement=6,Ue(\"StructArrayLayout3i6\",mh);class jo extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=4*a;return this.int16[P+0]=h,this.int16[P+1]=A,this.int16[P+2]=x,this.int16[P+3]=E,a}}jo.prototype.bytesPerElement=8,Ue(\"StructArrayLayout4i8\",jo);class c0 extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=6*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.int16[F+2]=x,this.int16[F+3]=E,this.int16[F+4]=P,this.int16[F+5]=D,a}}c0.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2i4i12\",c0);class Od extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=4*a,V=8*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.uint8[V+4]=x,this.uint8[V+5]=E,this.uint8[V+6]=P,this.uint8[V+7]=D,a}}Od.prototype.bytesPerElement=8,Ue(\"StructArrayLayout2i4ub8\",Od);class wf extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.float32[x+0]=h,this.float32[x+1]=A,a}}wf.prototype.bytesPerElement=8,Ue(\"StructArrayLayout2f8\",wf);class Go extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q){let X=this.length;return this.resize(X+1),this.emplace(X,a,h,A,x,E,P,D,F,V,q)}emplace(a,h,A,x,E,P,D,F,V,q,X){let et=10*a;return this.uint16[et+0]=h,this.uint16[et+1]=A,this.uint16[et+2]=x,this.uint16[et+3]=E,this.uint16[et+4]=P,this.uint16[et+5]=D,this.uint16[et+6]=F,this.uint16[et+7]=V,this.uint16[et+8]=q,this.uint16[et+9]=X,a}}Go.prototype.bytesPerElement=20,Ue(\"StructArrayLayout10ui20\",Go);class sA extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,et){let at=this.length;return this.resize(at+1),this.emplace(at,a,h,A,x,E,P,D,F,V,q,X,et)}emplace(a,h,A,x,E,P,D,F,V,q,X,et,at){let ct=12*a;return this.int16[ct+0]=h,this.int16[ct+1]=A,this.int16[ct+2]=x,this.int16[ct+3]=E,this.uint16[ct+4]=P,this.uint16[ct+5]=D,this.uint16[ct+6]=F,this.uint16[ct+7]=V,this.int16[ct+8]=q,this.int16[ct+9]=X,this.int16[ct+10]=et,this.int16[ct+11]=at,a}}sA.prototype.bytesPerElement=24,Ue(\"StructArrayLayout4i4ui4i24\",sA);class xi extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.float32[E+0]=h,this.float32[E+1]=A,this.float32[E+2]=x,a}}xi.prototype.bytesPerElement=12,Ue(\"StructArrayLayout3f12\",xi);class T extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.uint32[1*a+0]=h,a}}T.prototype.bytesPerElement=4,Ue(\"StructArrayLayout1ul4\",T);class l extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V){let q=this.length;return this.resize(q+1),this.emplace(q,a,h,A,x,E,P,D,F,V)}emplace(a,h,A,x,E,P,D,F,V,q){let X=10*a,et=5*a;return this.int16[X+0]=h,this.int16[X+1]=A,this.int16[X+2]=x,this.int16[X+3]=E,this.int16[X+4]=P,this.int16[X+5]=D,this.uint32[et+3]=F,this.uint16[X+8]=V,this.uint16[X+9]=q,a}}l.prototype.bytesPerElement=20,Ue(\"StructArrayLayout6i1ul2ui20\",l);class d extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=6*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.int16[F+2]=x,this.int16[F+3]=E,this.int16[F+4]=P,this.int16[F+5]=D,a}}d.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2i2i2i12\",d);class v extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E){let P=this.length;return this.resize(P+1),this.emplace(P,a,h,A,x,E)}emplace(a,h,A,x,E,P){let D=4*a,F=8*a;return this.float32[D+0]=h,this.float32[D+1]=A,this.float32[D+2]=x,this.int16[F+6]=E,this.int16[F+7]=P,a}}v.prototype.bytesPerElement=16,Ue(\"StructArrayLayout2f1f2i16\",v);class b extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=12*a,D=3*a;return this.uint8[P+0]=h,this.uint8[P+1]=A,this.float32[D+1]=x,this.float32[D+2]=E,a}}b.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2ub2f12\",b);class M extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.uint16[E+0]=h,this.uint16[E+1]=A,this.uint16[E+2]=x,a}}M.prototype.bytesPerElement=6,Ue(\"StructArrayLayout3ui6\",M);class O extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et){let Vt=this.length;return this.resize(Vt+1),this.emplace(Vt,a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et)}emplace(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt){let kt=24*a,jt=12*a,qt=48*a;return this.int16[kt+0]=h,this.int16[kt+1]=A,this.uint16[kt+2]=x,this.uint16[kt+3]=E,this.uint32[jt+2]=P,this.uint32[jt+3]=D,this.uint32[jt+4]=F,this.uint16[kt+10]=V,this.uint16[kt+11]=q,this.uint16[kt+12]=X,this.float32[jt+7]=et,this.float32[jt+8]=at,this.uint8[qt+36]=ct,this.uint8[qt+37]=mt,this.uint8[qt+38]=bt,this.uint32[jt+10]=Et,this.int16[kt+22]=Vt,a}}O.prototype.bytesPerElement=48,Ue(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",O);class B extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt,kt,jt,qt,ae,Be,Je,Oe,ke,Te,He){let Pe=this.length;return this.resize(Pe+1),this.emplace(Pe,a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt,kt,jt,qt,ae,Be,Je,Oe,ke,Te,He)}emplace(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt,kt,jt,qt,ae,Be,Je,Oe,ke,Te,He,Pe){let Ae=32*a,ur=16*a;return this.int16[Ae+0]=h,this.int16[Ae+1]=A,this.int16[Ae+2]=x,this.int16[Ae+3]=E,this.int16[Ae+4]=P,this.int16[Ae+5]=D,this.int16[Ae+6]=F,this.int16[Ae+7]=V,this.uint16[Ae+8]=q,this.uint16[Ae+9]=X,this.uint16[Ae+10]=et,this.uint16[Ae+11]=at,this.uint16[Ae+12]=ct,this.uint16[Ae+13]=mt,this.uint16[Ae+14]=bt,this.uint16[Ae+15]=Et,this.uint16[Ae+16]=Vt,this.uint16[Ae+17]=kt,this.uint16[Ae+18]=jt,this.uint16[Ae+19]=qt,this.uint16[Ae+20]=ae,this.uint16[Ae+21]=Be,this.uint16[Ae+22]=Je,this.uint32[ur+12]=Oe,this.float32[ur+13]=ke,this.float32[ur+14]=Te,this.uint16[Ae+30]=He,this.uint16[Ae+31]=Pe,a}}B.prototype.bytesPerElement=64,Ue(\"StructArrayLayout8i15ui1ul2f2ui64\",B);class U extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.float32[1*a+0]=h,a}}U.prototype.bytesPerElement=4,Ue(\"StructArrayLayout1f4\",U);class W extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.uint16[6*a+0]=h,this.float32[E+1]=A,this.float32[E+2]=x,a}}W.prototype.bytesPerElement=12,Ue(\"StructArrayLayout1ui2f12\",W);class Z extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=4*a;return this.uint32[2*a+0]=h,this.uint16[E+2]=A,this.uint16[E+3]=x,a}}Z.prototype.bytesPerElement=8,Ue(\"StructArrayLayout1ul2ui8\",Z);class Q extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.uint16[x+0]=h,this.uint16[x+1]=A,a}}Q.prototype.bytesPerElement=4,Ue(\"StructArrayLayout2ui4\",Q);class st extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.uint16[1*a+0]=h,a}}st.prototype.bytesPerElement=2,Ue(\"StructArrayLayout1ui2\",st);class At extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=4*a;return this.float32[P+0]=h,this.float32[P+1]=A,this.float32[P+2]=x,this.float32[P+3]=E,a}}At.prototype.bytesPerElement=16,Ue(\"StructArrayLayout4f16\",At);class pt extends Ah{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new w(this.anchorPointX,this.anchorPointY)}}pt.prototype.size=20;class yt extends l{get(a){return new pt(this,a)}}Ue(\"CollisionBoxArray\",yt);class dt extends Ah{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(a){this._structArray.uint8[this._pos1+37]=a}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(a){this._structArray.uint8[this._pos1+38]=a}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(a){this._structArray.uint32[this._pos4+10]=a}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}dt.prototype.size=48;class Ft extends O{get(a){return new dt(this,a)}}Ue(\"PlacedSymbolArray\",Ft);class Wt extends Ah{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(a){this._structArray.uint32[this._pos4+12]=a}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Wt.prototype.size=64;class St extends B{get(a){return new Wt(this,a)}}Ue(\"SymbolInstanceArray\",St);class Bt extends U{getoffsetX(a){return this.float32[1*a+0]}}Ue(\"GlyphOffsetArray\",Bt);class Yt extends mh{getx(a){return this.int16[3*a+0]}gety(a){return this.int16[3*a+1]}gettileUnitDistanceFromAnchor(a){return this.int16[3*a+2]}}Ue(\"SymbolLineVertexArray\",Yt);class Qt extends Ah{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Qt.prototype.size=12;class se extends W{get(a){return new Qt(this,a)}}Ue(\"TextAnchorOffsetArray\",se);class pe extends Ah{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}pe.prototype.size=8;class he extends Z{get(a){return new pe(this,a)}}Ue(\"FeatureIndexArray\",he);class xe extends Ms{}class We extends Ms{}class Kr extends Ms{}class Me extends c0{}class dr extends Od{}class Xe extends wf{}class Vi extends Go{}class Jr extends sA{}class Vr extends xi{}class ei extends T{}class Rn extends d{}class $i extends b{}class zs extends M{}class cs extends Q{}let Dn=yn([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Wo}=Dn;class jr{constructor(a=[]){this.segments=a}prepareSegment(a,h,A,x){let E=this.segments[this.segments.length-1];return a>jr.MAX_VERTEX_ARRAY_LENGTH&&tr(`Max vertices per segment is ${jr.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${a}`),(!E||E.vertexLength+a>jr.MAX_VERTEX_ARRAY_LENGTH||E.sortKey!==x)&&(E={vertexOffset:h.length,primitiveOffset:A.length,vertexLength:0,primitiveLength:0},x!==void 0&&(E.sortKey=x),this.segments.push(E)),E}get(){return this.segments}destroy(){for(let a of this.segments)for(let h in a.vaos)a.vaos[h].destroy()}static simpleSegment(a,h,A,x){return new jr([{vertexOffset:a,primitiveOffset:h,vertexLength:A,primitiveLength:x,vaos:{},sortKey:0}])}}function jl(u,a){return 256*(u=ut(Math.floor(u),0,255))+ut(Math.floor(a),0,255)}jr.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ue(\"SegmentVector\",jr);let Gl=yn([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]);var mu={exports:{}},gu={exports:{}};gu.exports=function(u,a){var h,A,x,E,P,D,F,V;for(A=u.length-(h=3&u.length),x=a,P=3432918353,D=461845907,V=0;V>>16)*P&65535)<<16)&4294967295)<<15|F>>>17))*D+(((F>>>16)*D&65535)<<16)&4294967295)<<13|x>>>19))+((5*(x>>>16)&65535)<<16)&4294967295))+((58964+(E>>>16)&65535)<<16);switch(F=0,h){case 3:F^=(255&u.charCodeAt(V+2))<<16;case 2:F^=(255&u.charCodeAt(V+1))<<8;case 1:x^=F=(65535&(F=(F=(65535&(F^=255&u.charCodeAt(V)))*P+(((F>>>16)*P&65535)<<16)&4294967295)<<15|F>>>17))*D+(((F>>>16)*D&65535)<<16)&4294967295}return x^=u.length,x=2246822507*(65535&(x^=x>>>16))+((2246822507*(x>>>16)&65535)<<16)&4294967295,x=3266489909*(65535&(x^=x>>>13))+((3266489909*(x>>>16)&65535)<<16)&4294967295,(x^=x>>>16)>>>0};var gh=gu.exports,Ns={exports:{}};Ns.exports=function(u,a){for(var h,A=u.length,x=a^A,E=0;A>=4;)h=1540483477*(65535&(h=255&u.charCodeAt(E)|(255&u.charCodeAt(++E))<<8|(255&u.charCodeAt(++E))<<16|(255&u.charCodeAt(++E))<<24))+((1540483477*(h>>>16)&65535)<<16),x=1540483477*(65535&x)+((1540483477*(x>>>16)&65535)<<16)^(h=1540483477*(65535&(h^=h>>>24))+((1540483477*(h>>>16)&65535)<<16)),A-=4,++E;switch(A){case 3:x^=(255&u.charCodeAt(E+2))<<16;case 2:x^=(255&u.charCodeAt(E+1))<<8;case 1:x=1540483477*(65535&(x^=255&u.charCodeAt(E)))+((1540483477*(x>>>16)&65535)<<16)}return x=1540483477*(65535&(x^=x>>>13))+((1540483477*(x>>>16)&65535)<<16),(x^=x>>>15)>>>0};var Es=gh,yo=Ns.exports;mu.exports=Es,mu.exports.murmur3=Es,mu.exports.murmur2=yo;var _h=c(mu.exports);class On{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(a,h,A,x){this.ids.push(us(a)),this.positions.push(h,A,x)}getPositions(a){if(!this.indexed)throw new Error(\"Trying to get index, but feature positions are not indexed\");let h=us(a),A=0,x=this.ids.length-1;for(;A>1;this.ids[P]>=h?x=P:A=P+1}let E=[];for(;this.ids[A]===h;)E.push({index:this.positions[3*A],start:this.positions[3*A+1],end:this.positions[3*A+2]}),A++;return E}static serialize(a,h){let A=new Float64Array(a.ids),x=new Uint32Array(a.positions);return Ho(A,x,0,A.length-1),h&&h.push(A.buffer,x.buffer),{ids:A,positions:x}}static deserialize(a){let h=new On;return h.ids=a.ids,h.positions=a.positions,h.indexed=!0,h}}function us(u){let a=+u;return!isNaN(a)&&a<=Number.MAX_SAFE_INTEGER?a:_h(String(u))}function Ho(u,a,h,A){for(;h>1],E=h-1,P=A+1;for(;;){do E++;while(u[E]x);if(E>=P)break;pn(u,E,P),pn(a,3*E,3*P),pn(a,3*E+1,3*P+1),pn(a,3*E+2,3*P+2)}P-h`u_${x}`),this.type=A}setUniform(a,h,A){a.set(A.constantOr(this.value))}getBinding(a,h,A){return this.type===\"color\"?new d_(a,h):new Gr(a,h)}}class qo{constructor(a,h){this.uniformNames=h.map(A=>`u_${A}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(a,h){this.pixelRatioFrom=h.pixelRatio,this.pixelRatioTo=a.pixelRatio,this.patternFrom=h.tlbr,this.patternTo=a.tlbr}setUniform(a,h,A,x){let E=x===\"u_pattern_to\"?this.patternTo:x===\"u_pattern_from\"?this.patternFrom:x===\"u_pixel_ratio_to\"?this.pixelRatioTo:x===\"u_pixel_ratio_from\"?this.pixelRatioFrom:null;E&&a.set(E)}getBinding(a,h,A){return A.substr(0,9)===\"u_pattern\"?new Na(a,h):new Gr(a,h)}}class me{constructor(a,h,A,x){this.expression=a,this.type=A,this.maxValue=0,this.paintVertexAttributes=h.map(E=>({name:`a_${E}`,type:\"Float32\",components:A===\"color\"?2:1,offset:0})),this.paintVertexArray=new x}populatePaintArray(a,h,A,x,E){let P=this.paintVertexArray.length,D=this.expression.evaluate(new ln(0),h,{},x,[],E);this.paintVertexArray.resize(a),this._setPaintValue(P,a,D)}updatePaintArray(a,h,A,x){let E=this.expression.evaluate({zoom:0},A,x);this._setPaintValue(a,h,E)}_setPaintValue(a,h,A){if(this.type===\"color\"){let x=oA(A);for(let E=a;E`u_${D}_t`),this.type=A,this.useIntegerZoom=x,this.zoom=E,this.maxValue=0,this.paintVertexAttributes=h.map(D=>({name:`a_${D}`,type:\"Float32\",components:A===\"color\"?4:2,offset:0})),this.paintVertexArray=new P}populatePaintArray(a,h,A,x,E){let P=this.expression.evaluate(new ln(this.zoom),h,{},x,[],E),D=this.expression.evaluate(new ln(this.zoom+1),h,{},x,[],E),F=this.paintVertexArray.length;this.paintVertexArray.resize(a),this._setPaintValue(F,a,P,D)}updatePaintArray(a,h,A,x){let E=this.expression.evaluate({zoom:this.zoom},A,x),P=this.expression.evaluate({zoom:this.zoom+1},A,x);this._setPaintValue(a,h,E,P)}_setPaintValue(a,h,A,x){if(this.type===\"color\"){let E=oA(A),P=oA(x);for(let D=a;D`#define HAS_UNIFORM_${x}`))}return a}getBinderAttributes(){let a=[];for(let h in this.binders){let A=this.binders[h];if(A instanceof me||A instanceof Le)for(let x=0;x!0){this.programConfigurations={};for(let x of a)this.programConfigurations[x.id]=new Sf(x,h,A);this.needsUpload=!1,this._featureMap=new On,this._bufferOffset=0}populatePaintArrays(a,h,A,x,E,P){for(let D in this.programConfigurations)this.programConfigurations[D].populatePaintArrays(a,h,x,E,P);h.id!==void 0&&this._featureMap.add(h.id,A,this._bufferOffset,a),this._bufferOffset=a,this.needsUpload=!0}updatePaintArrays(a,h,A,x){for(let E of A)this.needsUpload=this.programConfigurations[E.id].updatePaintArrays(a,this._featureMap,h,E,x)||this.needsUpload}get(a){return this.programConfigurations[a]}upload(a){if(this.needsUpload){for(let h in this.programConfigurations)this.programConfigurations[h].upload(a);this.needsUpload=!1}}destroy(){for(let a in this.programConfigurations)this.programConfigurations[a].destroy()}}function Dc(u,a){return{\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[u]||[u.replace(`${a}-`,\"\").replace(/-/g,\"_\")]}function Lx(u,a,h){let A={color:{source:wf,composite:At},number:{source:U,composite:wf}},x=function(E){return{\"line-pattern\":{source:Vi,composite:Vi},\"fill-pattern\":{source:Vi,composite:Vi},\"fill-extrusion-pattern\":{source:Vi,composite:Vi}}[E]}(u);return x&&x[h]||A[a][h]}Ue(\"ConstantBinder\",Wl),Ue(\"CrossFadedConstantBinder\",qo),Ue(\"SourceExpressionBinder\",me),Ue(\"CrossFadedCompositeBinder\",dl),Ue(\"CompositeExpressionBinder\",Le),Ue(\"ProgramConfiguration\",Sf,{omit:[\"_buffers\"]}),Ue(\"ProgramConfigurationSet\",Ua);let Xi=8192,p=Math.pow(2,14)-1,m=-p-1;function y(u){let a=Xi/u.extent,h=u.loadGeometry();for(let A=0;AP.x+1||FP.y+1)&&tr(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}}return h}function S(u,a){return{type:u.type,id:u.id,properties:u.properties,geometry:a?y(u):[]}}function I(u,a,h,A,x){u.emplaceBack(2*a+(A+1)/2,2*h+(x+1)/2)}class k{constructor(a){this.zoom=a.zoom,this.overscaling=a.overscaling,this.layers=a.layers,this.layerIds=this.layers.map(h=>h.id),this.index=a.index,this.hasPattern=!1,this.layoutVertexArray=new We,this.indexArray=new zs,this.segments=new jr,this.programConfigurations=new Ua(a.layers,a.zoom),this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){let x=this.layers[0],E=[],P=null,D=!1;x.type===\"circle\"&&(P=x.layout.get(\"circle-sort-key\"),D=!P.isConstant());for(let{feature:F,id:V,index:q,sourceLayerIndex:X}of a){let et=this.layers[0]._featureFilter.needGeometry,at=S(F,et);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),at,A))continue;let ct=D?P.evaluate(at,{},A):void 0,mt={id:V,properties:F.properties,type:F.type,sourceLayerIndex:X,index:q,geometry:et?at.geometry:y(F),patterns:{},sortKey:ct};E.push(mt)}D&&E.sort((F,V)=>F.sortKey-V.sortKey);for(let F of E){let{geometry:V,index:q,sourceLayerIndex:X}=F,et=a[q].feature;this.addFeature(F,V,q,A),h.featureIndex.insert(et,V,q,X,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,Wo),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(a,h,A,x){for(let E of h)for(let P of E){let D=P.x,F=P.y;if(D<0||D>=Xi||F<0||F>=Xi)continue;let V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,a.sortKey),q=V.vertexLength;I(this.layoutVertexArray,D,F,-1,-1),I(this.layoutVertexArray,D,F,1,-1),I(this.layoutVertexArray,D,F,1,1),I(this.layoutVertexArray,D,F,-1,1),this.indexArray.emplaceBack(q,q+1,q+2),this.indexArray.emplaceBack(q,q+3,q+2),V.vertexLength+=4,V.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,a,A,{},x)}}function L(u,a){for(let h=0;h1){if(ot(u,a))return!0;for(let A=0;A1?h:h.sub(a)._mult(x)._add(a))}function ee(u,a){let h,A,x,E=!1;for(let P=0;Pa.y!=x.y>a.y&&a.x<(x.x-A.x)*(a.y-A.y)/(x.y-A.y)+A.x&&(E=!E)}return E}function ie(u,a){let h=!1;for(let A=0,x=u.length-1;Aa.y!=P.y>a.y&&a.x<(P.x-E.x)*(a.y-E.y)/(P.y-E.y)+E.x&&(h=!h)}return h}function Ce(u,a,h){let A=h[0],x=h[2];if(u.xx.x&&a.x>x.x||u.yx.y&&a.y>x.y)return!1;let E=er(u,a,h[0]);return E!==er(u,a,h[1])||E!==er(u,a,h[2])||E!==er(u,a,h[3])}function Ve(u,a,h){let A=a.paint.get(u).value;return A.kind===\"constant\"?A.value:h.programConfigurations.get(a.id).getMaxValue(u)}function Jt(u){return Math.sqrt(u[0]*u[0]+u[1]*u[1])}function _e(u,a,h,A,x){if(!a[0]&&!a[1])return u;let E=w.convert(a)._mult(x);h===\"viewport\"&&E._rotate(-A);let P=[];for(let D=0;DAn(bt,mt))}(V,F),at=X?q*D:q;for(let ct of x)for(let mt of ct){let bt=X?mt:An(mt,F),Et=at,Vt=Ei([],[mt.x,mt.y,0,1],F);if(this.paint.get(\"circle-pitch-scale\")===\"viewport\"&&this.paint.get(\"circle-pitch-alignment\")===\"map\"?Et*=Vt[3]/P.cameraToCenterDistance:this.paint.get(\"circle-pitch-scale\")===\"map\"&&this.paint.get(\"circle-pitch-alignment\")===\"viewport\"&&(Et*=P.cameraToCenterDistance/Vt[3]),z(et,bt,Et))return!0}return!1}}function An(u,a){let h=Ei([],[u.x,u.y,0,1],a);return new w(h[0]/h[3],h[1]/h[3])}class Or extends k{}let b6;Ue(\"HeatmapBucket\",Or,{omit:[\"layers\"]});var Y$={get paint(){return b6=b6||new Gn({\"heatmap-radius\":new fr(te.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new fr(te.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new rr(te.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new Dd(te.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new rr(te.paint_heatmap[\"heatmap-opacity\"])})}};function HI(u,{width:a,height:h},A,x){if(x){if(x instanceof Uint8ClampedArray)x=new Uint8Array(x.buffer);else if(x.length!==a*h*A)throw new RangeError(`mismatched image size. expected: ${x.length} but got: ${a*h*A}`)}else x=new Uint8Array(a*h*A);return u.width=a,u.height=h,u.data=x,u}function w6(u,{width:a,height:h},A){if(a===u.width&&h===u.height)return;let x=HI({},{width:a,height:h},A);qI(u,x,{x:0,y:0},{x:0,y:0},{width:Math.min(u.width,a),height:Math.min(u.height,h)},A),u.width=a,u.height=h,u.data=x.data}function qI(u,a,h,A,x,E){if(x.width===0||x.height===0)return a;if(x.width>u.width||x.height>u.height||h.x>u.width-x.width||h.y>u.height-x.height)throw new RangeError(\"out of range source coordinates for image copy\");if(x.width>a.width||x.height>a.height||A.x>a.width-x.width||A.y>a.height-x.height)throw new RangeError(\"out of range destination coordinates for image copy\");let P=u.data,D=a.data;if(P===D)throw new Error(\"srcData equals dstData, so image is already copied\");for(let F=0;F{a[u.evaluationKey]=F;let V=u.expression.evaluate(a);x.data[P+D+0]=Math.floor(255*V.r/V.a),x.data[P+D+1]=Math.floor(255*V.g/V.a),x.data[P+D+2]=Math.floor(255*V.b/V.a),x.data[P+D+3]=Math.floor(255*V.a)};if(u.clips)for(let P=0,D=0;P80*h){A=E=u[0],x=P=u[1];for(var ct=h;ctE&&(E=D),F>P&&(P=F);V=(V=Math.max(E-A,P-x))!==0?32767/V:0}return Rx(et,at,h,A,x,V,0),at}function M6(u,a,h,A,x){var E,P;if(x===$I(u,a,h,A)>0)for(E=a;E=a;E-=A)P=I6(E,u[E],u[E+1],P);return P&&zS(P,P.next)&&(Ox(P),P=P.next),P}function u0(u,a){if(!u)return u;a||(a=u);var h,A=u;do if(h=!1,A.steiner||!zS(A,A.next)&&hs(A.prev,A,A.next)!==0)A=A.next;else{if(Ox(A),(A=a=A.prev)===A.next)break;h=!0}while(h||A!==a);return a}function Rx(u,a,h,A,x,E,P){if(u){!P&&E&&function(q,X,et,at){var ct=q;do ct.z===0&&(ct.z=YI(ct.x,ct.y,X,et,at)),ct.prevZ=ct.prev,ct.nextZ=ct.next,ct=ct.next;while(ct!==q);ct.prevZ.nextZ=null,ct.prevZ=null,function(mt){var bt,Et,Vt,kt,jt,qt,ae,Be,Je=1;do{for(Et=mt,mt=null,jt=null,qt=0;Et;){for(qt++,Vt=Et,ae=0,bt=0;bt0||Be>0&&Vt;)ae!==0&&(Be===0||!Vt||Et.z<=Vt.z)?(kt=Et,Et=Et.nextZ,ae--):(kt=Vt,Vt=Vt.nextZ,Be--),jt?jt.nextZ=kt:mt=kt,kt.prevZ=jt,jt=kt;Et=Vt}jt.nextZ=null,Je*=2}while(qt>1)}(ct)}(u,A,x,E);for(var D,F,V=u;u.prev!==u.next;)if(D=u.prev,F=u.next,E?eX(u,A,x,E):tX(u))a.push(D.i/h|0),a.push(u.i/h|0),a.push(F.i/h|0),Ox(u),u=F.next,V=F.next;else if((u=F)===V){P?P===1?Rx(u=rX(u0(u),a,h),a,h,A,x,E,2):P===2&&iX(u,a,h,A,x,E):Rx(u0(u),a,h,A,x,E,1);break}}}function tX(u){var a=u.prev,h=u,A=u.next;if(hs(a,h,A)>=0)return!1;for(var x=a.x,E=h.x,P=A.x,D=a.y,F=h.y,V=A.y,q=xE?x>P?x:P:E>P?E:P,at=D>F?D>V?D:V:F>V?F:V,ct=A.next;ct!==a;){if(ct.x>=q&&ct.x<=et&&ct.y>=X&&ct.y<=at&&p_(x,D,E,F,P,V,ct.x,ct.y)&&hs(ct.prev,ct,ct.next)>=0)return!1;ct=ct.next}return!0}function eX(u,a,h,A){var x=u.prev,E=u,P=u.next;if(hs(x,E,P)>=0)return!1;for(var D=x.x,F=E.x,V=P.x,q=x.y,X=E.y,et=P.y,at=DF?D>V?D:V:F>V?F:V,bt=q>X?q>et?q:et:X>et?X:et,Et=YI(at,ct,a,h,A),Vt=YI(mt,bt,a,h,A),kt=u.prevZ,jt=u.nextZ;kt&&kt.z>=Et&&jt&&jt.z<=Vt;){if(kt.x>=at&&kt.x<=mt&&kt.y>=ct&&kt.y<=bt&&kt!==x&&kt!==P&&p_(D,q,F,X,V,et,kt.x,kt.y)&&hs(kt.prev,kt,kt.next)>=0||(kt=kt.prevZ,jt.x>=at&&jt.x<=mt&&jt.y>=ct&&jt.y<=bt&&jt!==x&&jt!==P&&p_(D,q,F,X,V,et,jt.x,jt.y)&&hs(jt.prev,jt,jt.next)>=0))return!1;jt=jt.nextZ}for(;kt&&kt.z>=Et;){if(kt.x>=at&&kt.x<=mt&&kt.y>=ct&&kt.y<=bt&&kt!==x&&kt!==P&&p_(D,q,F,X,V,et,kt.x,kt.y)&&hs(kt.prev,kt,kt.next)>=0)return!1;kt=kt.prevZ}for(;jt&&jt.z<=Vt;){if(jt.x>=at&&jt.x<=mt&&jt.y>=ct&&jt.y<=bt&&jt!==x&&jt!==P&&p_(D,q,F,X,V,et,jt.x,jt.y)&&hs(jt.prev,jt,jt.next)>=0)return!1;jt=jt.nextZ}return!0}function rX(u,a,h){var A=u;do{var x=A.prev,E=A.next.next;!zS(x,E)&&E6(x,A,A.next,E)&&Dx(x,E)&&Dx(E,x)&&(a.push(x.i/h|0),a.push(A.i/h|0),a.push(E.i/h|0),Ox(A),Ox(A.next),A=u=E),A=A.next}while(A!==u);return u0(A)}function iX(u,a,h,A,x,E){var P=u;do{for(var D=P.next.next;D!==P.prev;){if(P.i!==D.i&&lX(P,D)){var F=P6(P,D);return P=u0(P,P.next),F=u0(F,F.next),Rx(P,a,h,A,x,E,0),void Rx(F,a,h,A,x,E,0)}D=D.next}P=P.next}while(P!==u)}function nX(u,a){return u.x-a.x}function sX(u,a){var h=function(x,E){var P,D=E,F=x.x,V=x.y,q=-1/0;do{if(V<=D.y&&V>=D.next.y&&D.next.y!==D.y){var X=D.x+(V-D.y)*(D.next.x-D.x)/(D.next.y-D.y);if(X<=F&&X>q&&(q=X,P=D.x=D.x&&D.x>=ct&&F!==D.x&&p_(VP.x||D.x===P.x&&oX(P,D)))&&(P=D,bt=et)),D=D.next;while(D!==at);return P}(u,a);if(!h)return a;var A=P6(h,u);return u0(A,A.next),u0(h,h.next)}function oX(u,a){return hs(u.prev,u,a.prev)<0&&hs(a.next,u,u.next)<0}function YI(u,a,h,A,x){return(u=1431655765&((u=858993459&((u=252645135&((u=16711935&((u=(u-h)*x|0)|u<<8))|u<<4))|u<<2))|u<<1))|(a=1431655765&((a=858993459&((a=252645135&((a=16711935&((a=(a-A)*x|0)|a<<8))|a<<4))|a<<2))|a<<1))<<1}function aX(u){var a=u,h=u;do(a.x=(u-P)*(E-D)&&(u-P)*(A-D)>=(h-P)*(a-D)&&(h-P)*(E-D)>=(x-P)*(A-D)}function lX(u,a){return u.next.i!==a.i&&u.prev.i!==a.i&&!function(h,A){var x=h;do{if(x.i!==h.i&&x.next.i!==h.i&&x.i!==A.i&&x.next.i!==A.i&&E6(x,x.next,h,A))return!0;x=x.next}while(x!==h);return!1}(u,a)&&(Dx(u,a)&&Dx(a,u)&&function(h,A){var x=h,E=!1,P=(h.x+A.x)/2,D=(h.y+A.y)/2;do x.y>D!=x.next.y>D&&x.next.y!==x.y&&P<(x.next.x-x.x)*(D-x.y)/(x.next.y-x.y)+x.x&&(E=!E),x=x.next;while(x!==h);return E}(u,a)&&(hs(u.prev,u,a.prev)||hs(u,a.prev,a))||zS(u,a)&&hs(u.prev,u,u.next)>0&&hs(a.prev,a,a.next)>0)}function hs(u,a,h){return(a.y-u.y)*(h.x-a.x)-(a.x-u.x)*(h.y-a.y)}function zS(u,a){return u.x===a.x&&u.y===a.y}function E6(u,a,h,A){var x=US(hs(u,a,h)),E=US(hs(u,a,A)),P=US(hs(h,A,u)),D=US(hs(h,A,a));return x!==E&&P!==D||!(x!==0||!NS(u,h,a))||!(E!==0||!NS(u,A,a))||!(P!==0||!NS(h,u,A))||!(D!==0||!NS(h,a,A))}function NS(u,a,h){return a.x<=Math.max(u.x,h.x)&&a.x>=Math.min(u.x,h.x)&&a.y<=Math.max(u.y,h.y)&&a.y>=Math.min(u.y,h.y)}function US(u){return u>0?1:u<0?-1:0}function Dx(u,a){return hs(u.prev,u,u.next)<0?hs(u,a,u.next)>=0&&hs(u,u.prev,a)>=0:hs(u,a,u.prev)<0||hs(u,u.next,a)<0}function P6(u,a){var h=new QI(u.i,u.x,u.y),A=new QI(a.i,a.x,a.y),x=u.next,E=a.prev;return u.next=a,a.prev=u,h.next=x,x.prev=h,A.next=h,h.prev=A,E.next=A,A.prev=E,A}function I6(u,a,h,A){var x=new QI(u,a,h);return A?(x.next=A.next,x.prev=A,A.next.prev=x,A.next=x):(x.prev=x,x.next=x),x}function Ox(u){u.next.prev=u.prev,u.prev.next=u.next,u.prevZ&&(u.prevZ.nextZ=u.nextZ),u.nextZ&&(u.nextZ.prevZ=u.prevZ)}function QI(u,a,h){this.i=u,this.x=a,this.y=h,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function $I(u,a,h,A){for(var x=0,E=a,P=h-A;E0&&h.holes.push(A+=u[x-1].length)}return h};var C6=c(ZI.exports);function cX(u,a,h,A,x){L6(u,a,h||0,A||u.length-1,x||uX)}function L6(u,a,h,A,x){for(;A>h;){if(A-h>600){var E=A-h+1,P=a-h+1,D=Math.log(E),F=.5*Math.exp(2*D/3),V=.5*Math.sqrt(D*F*(E-F)/E)*(P-E/2<0?-1:1);L6(u,a,Math.max(h,Math.floor(a-P*F/E+V)),Math.min(A,Math.floor(a+(E-P)*F/E+V)),x)}var q=u[a],X=h,et=A;for(Bx(u,h,a),x(u[A],q)>0&&Bx(u,h,A);X0;)et--}x(u[h],q)===0?Bx(u,h,et):Bx(u,++et,A),et<=a&&(h=et+1),a<=et&&(A=et-1)}}function Bx(u,a,h){var A=u[a];u[a]=u[h],u[h]=A}function uX(u,a){return ua?1:0}function XI(u,a){let h=u.length;if(h<=1)return[u];let A=[],x,E;for(let P=0;P1)for(let P=0;Ph.id),this.index=a.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Kr,this.indexArray=new zs,this.indexArray2=new cs,this.programConfigurations=new Ua(a.layers,a.zoom),this.segments=new jr,this.segments2=new jr,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.hasPattern=KI(\"fill\",this.layers,h);let x=this.layers[0].layout.get(\"fill-sort-key\"),E=!x.isConstant(),P=[];for(let{feature:D,id:F,index:V,sourceLayerIndex:q}of a){let X=this.layers[0]._featureFilter.needGeometry,et=S(D,X);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),et,A))continue;let at=E?x.evaluate(et,{},A,h.availableImages):void 0,ct={id:F,properties:D.properties,type:D.type,sourceLayerIndex:q,index:V,geometry:X?et.geometry:y(D),patterns:{},sortKey:at};P.push(ct)}E&&P.sort((D,F)=>D.sortKey-F.sortKey);for(let D of P){let{geometry:F,index:V,sourceLayerIndex:q}=D;if(this.hasPattern){let X=JI(\"fill\",this.layers,D,this.zoom,h);this.patternFeatures.push(X)}else this.addFeature(D,F,V,A,{});h.featureIndex.insert(a[V].feature,F,V,q,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}addFeatures(a,h,A){for(let x of this.patternFeatures)this.addFeature(x,x.geometry,x.index,h,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,J$),this.indexBuffer=a.createIndexBuffer(this.indexArray),this.indexBuffer2=a.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(a,h,A,x,E){for(let P of XI(h,500)){let D=0;for(let at of P)D+=at.length;let F=this.segments.prepareSegment(D,this.layoutVertexArray,this.indexArray),V=F.vertexLength,q=[],X=[];for(let at of P){if(at.length===0)continue;at!==P[0]&&X.push(q.length/2);let ct=this.segments2.prepareSegment(at.length,this.layoutVertexArray,this.indexArray2),mt=ct.vertexLength;this.layoutVertexArray.emplaceBack(at[0].x,at[0].y),this.indexArray2.emplaceBack(mt+at.length-1,mt),q.push(at[0].x),q.push(at[0].y);for(let bt=1;bt>3}if(x--,A===1||A===2)E+=u.readSVarint(),P+=u.readSVarint(),A===1&&(a&&D.push(a),a=[]),a.push(new gX(E,P));else{if(A!==7)throw new Error(\"unknown command \"+A);a&&a.push(a[0].clone())}}return a&&D.push(a),D},A_.prototype.bbox=function(){var u=this._pbf;u.pos=this._geometry;for(var a=u.readVarint()+u.pos,h=1,A=0,x=0,E=0,P=1/0,D=-1/0,F=1/0,V=-1/0;u.pos>3}if(A--,h===1||h===2)(x+=u.readSVarint())D&&(D=x),(E+=u.readSVarint())V&&(V=E);else if(h!==7)throw new Error(\"unknown command \"+h)}return[P,F,D,V]},A_.prototype.toGeoJSON=function(u,a,h){var A,x,E=this.extent*Math.pow(2,h),P=this.extent*u,D=this.extent*a,F=this.loadGeometry(),V=A_.types[this.type];function q(at){for(var ct=0;ct>3;x=P===1?A.readString():P===2?A.readFloat():P===3?A.readDouble():P===4?A.readVarint64():P===5?A.readVarint():P===6?A.readSVarint():P===7?A.readBoolean():null}return x}(h))}B6.prototype.feature=function(u){if(u<0||u>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[u];var a=this._pbf.readVarint()+this._pbf.pos;return new vX(this._pbf,a,this.extent,this._keys,this._values)};var bX=O6;function wX(u,a,h){if(u===3){var A=new bX(h,h.readVarint()+h.pos);A.length&&(a[A.name]=A)}}aA.VectorTile=function(u,a){this.layers=u.readFields(wX,{},a)},aA.VectorTileFeature=D6,aA.VectorTileLayer=O6;let SX=aA.VectorTileFeature.types,eC=Math.pow(2,13);function Fx(u,a,h,A,x,E,P,D){u.emplaceBack(a,h,2*Math.floor(A*eC)+P,x*eC*2,E*eC*2,Math.round(D))}class rC{constructor(a){this.zoom=a.zoom,this.overscaling=a.overscaling,this.layers=a.layers,this.layerIds=this.layers.map(h=>h.id),this.index=a.index,this.hasPattern=!1,this.layoutVertexArray=new Me,this.centroidVertexArray=new xe,this.indexArray=new zs,this.programConfigurations=new Ua(a.layers,a.zoom),this.segments=new jr,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.features=[],this.hasPattern=KI(\"fill-extrusion\",this.layers,h);for(let{feature:x,id:E,index:P,sourceLayerIndex:D}of a){let F=this.layers[0]._featureFilter.needGeometry,V=S(x,F);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),V,A))continue;let q={id:E,sourceLayerIndex:D,index:P,geometry:F?V.geometry:y(x),properties:x.properties,type:x.type,patterns:{}};this.hasPattern?this.features.push(JI(\"fill-extrusion\",this.layers,q,this.zoom,h)):this.addFeature(q,q.geometry,P,A,{}),h.featureIndex.insert(x,q.geometry,P,D,this.index,!0)}}addFeatures(a,h,A){for(let x of this.features){let{geometry:E}=x;this.addFeature(x,E,x.index,h,A)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,mX),this.centroidVertexBuffer=a.createVertexBuffer(this.centroidVertexArray,AX.members,!0),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(a,h,A,x,E){let P={x:0,y:0,vertexCount:0};for(let D of XI(h,500)){let F=0;for(let ct of D)F+=ct.length;let V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let ct of D){if(ct.length===0||MX(ct))continue;let mt=0;for(let bt=0;bt=1){let Vt=ct[bt-1];if(!TX(Et,Vt)){V.vertexLength+4>jr.MAX_VERTEX_ARRAY_LENGTH&&(V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let kt=Et.sub(Vt)._perp()._unit(),jt=Vt.dist(Et);mt+jt>32768&&(mt=0),Fx(this.layoutVertexArray,Et.x,Et.y,kt.x,kt.y,0,0,mt),Fx(this.layoutVertexArray,Et.x,Et.y,kt.x,kt.y,0,1,mt),P.x+=2*Et.x,P.y+=2*Et.y,P.vertexCount+=2,mt+=jt,Fx(this.layoutVertexArray,Vt.x,Vt.y,kt.x,kt.y,0,0,mt),Fx(this.layoutVertexArray,Vt.x,Vt.y,kt.x,kt.y,0,1,mt),P.x+=2*Vt.x,P.y+=2*Vt.y,P.vertexCount+=2;let qt=V.vertexLength;this.indexArray.emplaceBack(qt,qt+2,qt+1),this.indexArray.emplaceBack(qt+1,qt+2,qt+3),V.vertexLength+=4,V.primitiveLength+=2}}}}if(V.vertexLength+F>jr.MAX_VERTEX_ARRAY_LENGTH&&(V=this.segments.prepareSegment(F,this.layoutVertexArray,this.indexArray)),SX[a.type]!==\"Polygon\")continue;let q=[],X=[],et=V.vertexLength;for(let ct of D)if(ct.length!==0){ct!==D[0]&&X.push(q.length/2);for(let mt=0;mtXi)||u.y===a.y&&(u.y<0||u.y>Xi)}function MX(u){return u.every(a=>a.x<0)||u.every(a=>a.x>Xi)||u.every(a=>a.y<0)||u.every(a=>a.y>Xi)}let F6;Ue(\"FillExtrusionBucket\",rC,{omit:[\"layers\",\"features\"]});var EX={get paint(){return F6=F6||new Gn({\"fill-extrusion-opacity\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new xf(te[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})}};class PX extends Ui{constructor(a){super(a,EX)}createBucket(a){return new rC(a)}queryRadius(){return Jt(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return!0}queryIntersectsFeature(a,h,A,x,E,P,D,F){let V=_e(a,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),P.angle,D),q=this.paint.get(\"fill-extrusion-height\").evaluate(h,A),X=this.paint.get(\"fill-extrusion-base\").evaluate(h,A),et=function(ct,mt,bt,Et){let Vt=[];for(let kt of ct){let jt=[kt.x,kt.y,0,1];Ei(jt,jt,mt),Vt.push(new w(jt[0]/jt[3],jt[1]/jt[3]))}return Vt}(V,F),at=function(ct,mt,bt,Et){let Vt=[],kt=[],jt=Et[8]*mt,qt=Et[9]*mt,ae=Et[10]*mt,Be=Et[11]*mt,Je=Et[8]*bt,Oe=Et[9]*bt,ke=Et[10]*bt,Te=Et[11]*bt;for(let He of ct){let Pe=[],Ae=[];for(let ur of He){let ir=ur.x,ri=ur.y,xn=Et[0]*ir+Et[4]*ri+Et[12],Ln=Et[1]*ir+Et[5]*ri+Et[13],Vs=Et[2]*ir+Et[6]*ri+Et[14],Hl=Et[3]*ir+Et[7]*ri+Et[15],Va=Vs+ae,Ps=Hl+Be,vo=xn+Je,Yo=Ln+Oe,ja=Vs+ke,Ga=Hl+Te,js=new w((xn+jt)/Ps,(Ln+qt)/Ps);js.z=Va/Ps,Pe.push(js);let Gs=new w(vo/Ga,Yo/Ga);Gs.z=ja/Ga,Ae.push(Gs)}Vt.push(Pe),kt.push(Ae)}return[Vt,kt]}(x,X,q,F);return function(ct,mt,bt){let Et=1/0;H(bt,mt)&&(Et=z6(bt,mt[0]));for(let Vt=0;Vth.id),this.index=a.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(h=>{this.gradients[h.id]={}}),this.layoutVertexArray=new dr,this.layoutVertexArray2=new Xe,this.indexArray=new zs,this.programConfigurations=new Ua(a.layers,a.zoom),this.segments=new jr,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.hasPattern=KI(\"line\",this.layers,h);let x=this.layers[0].layout.get(\"line-sort-key\"),E=!x.isConstant(),P=[];for(let{feature:D,id:F,index:V,sourceLayerIndex:q}of a){let X=this.layers[0]._featureFilter.needGeometry,et=S(D,X);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),et,A))continue;let at=E?x.evaluate(et,{},A):void 0,ct={id:F,properties:D.properties,type:D.type,sourceLayerIndex:q,index:V,geometry:X?et.geometry:y(D),patterns:{},sortKey:at};P.push(ct)}E&&P.sort((D,F)=>D.sortKey-F.sortKey);for(let D of P){let{geometry:F,index:V,sourceLayerIndex:q}=D;if(this.hasPattern){let X=JI(\"line\",this.layers,D,this.zoom,h);this.patternFeatures.push(X)}else this.addFeature(D,F,V,A,{});h.featureIndex.insert(a[V].feature,F,V,q,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}addFeatures(a,h,A){for(let x of this.patternFeatures)this.addFeature(x,x.geometry,x.index,h,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=a.createVertexBuffer(this.layoutVertexArray2,kX)),this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,CX),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(a){if(a.properties&&Object.prototype.hasOwnProperty.call(a.properties,\"mapbox_clip_start\")&&Object.prototype.hasOwnProperty.call(a.properties,\"mapbox_clip_end\"))return{start:+a.properties.mapbox_clip_start,end:+a.properties.mapbox_clip_end}}addFeature(a,h,A,x,E){let P=this.layers[0].layout,D=P.get(\"line-join\").evaluate(a,{}),F=P.get(\"line-cap\"),V=P.get(\"line-miter-limit\"),q=P.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(a);for(let X of h)this.addLine(X,a,D,F,V,q);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,a,A,E,x)}addLine(a,h,A,x,E,P){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let Et=0;Et=2&&a[F-1].equals(a[F-2]);)F--;let V=0;for(;V0;if(Be&&Et>V){let Te=et.dist(at);if(Te>2*q){let He=et.sub(et.sub(at)._mult(q/Te)._round());this.updateDistance(at,He),this.addCurrentVertex(He,mt,0,0,X),at=He}}let Oe=at&&ct,ke=Oe?A:D?\"butt\":x;if(Oe&&ke===\"round\"&&(qtE&&(ke=\"bevel\"),ke===\"bevel\"&&(qt>2&&(ke=\"flipbevel\"),qt100)Vt=bt.mult(-1);else{let Te=qt*mt.add(bt).mag()/mt.sub(bt).mag();Vt._perp()._mult(Te*(Je?-1:1))}this.addCurrentVertex(et,Vt,0,0,X),this.addCurrentVertex(et,Vt.mult(-1),0,0,X)}else if(ke===\"bevel\"||ke===\"fakeround\"){let Te=-Math.sqrt(qt*qt-1),He=Je?Te:0,Pe=Je?0:Te;if(at&&this.addCurrentVertex(et,mt,He,Pe,X),ke===\"fakeround\"){let Ae=Math.round(180*ae/Math.PI/20);for(let ur=1;ur2*q){let He=et.add(ct.sub(et)._mult(q/Te)._round());this.updateDistance(et,He),this.addCurrentVertex(He,bt,0,0,X),et=He}}}}addCurrentVertex(a,h,A,x,E,P=!1){let D=h.y*x-h.x,F=-h.y-h.x*x;this.addHalfVertex(a,h.x+h.y*A,h.y-h.x*A,P,!1,A,E),this.addHalfVertex(a,D,F,P,!0,-x,E),this.distance>N6/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(a,h,A,x,E,P))}addHalfVertex({x:a,y:h},A,x,E,P,D,F){let V=.5*(this.lineClips?this.scaledDistance*(N6-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((a<<1)+(E?1:0),(h<<1)+(P?1:0),Math.round(63*A)+128,Math.round(63*x)+128,1+(D===0?0:D<0?-1:1)|(63&V)<<2,V>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let q=F.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,q),F.primitiveLength++),P?this.e2=q:this.e1=q}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(a,h){this.distance+=a.dist(h),this.updateScaledDistance()}}let U6,V6;Ue(\"LineBucket\",iC,{omit:[\"layers\",\"patternFeatures\"]});var j6={get paint(){return V6=V6||new Gn({\"line-opacity\":new fr(te.paint_line[\"line-opacity\"]),\"line-color\":new fr(te.paint_line[\"line-color\"]),\"line-translate\":new rr(te.paint_line[\"line-translate\"]),\"line-translate-anchor\":new rr(te.paint_line[\"line-translate-anchor\"]),\"line-width\":new fr(te.paint_line[\"line-width\"]),\"line-gap-width\":new fr(te.paint_line[\"line-gap-width\"]),\"line-offset\":new fr(te.paint_line[\"line-offset\"]),\"line-blur\":new fr(te.paint_line[\"line-blur\"]),\"line-dasharray\":new nA(te.paint_line[\"line-dasharray\"]),\"line-pattern\":new xf(te.paint_line[\"line-pattern\"]),\"line-gradient\":new Dd(te.paint_line[\"line-gradient\"])})},get layout(){return U6=U6||new Gn({\"line-cap\":new rr(te.layout_line[\"line-cap\"]),\"line-join\":new fr(te.layout_line[\"line-join\"]),\"line-miter-limit\":new rr(te.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new rr(te.layout_line[\"line-round-limit\"]),\"line-sort-key\":new fr(te.layout_line[\"line-sort-key\"])})}};class OX extends fr{possiblyEvaluate(a,h){return h=new ln(Math.floor(h.zoom),{now:h.now,fadeDuration:h.fadeDuration,zoomHistory:h.zoomHistory,transition:h.transition}),super.possiblyEvaluate(a,h)}evaluate(a,h,A,x){return h=Ot({},h,{zoom:Math.floor(h.zoom)}),super.evaluate(a,h,A,x)}}let VS;class BX extends Ui{constructor(a){super(a,j6),this.gradientVersion=0,VS||(VS=new OX(j6.paint.properties[\"line-width\"].specification),VS.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(a){if(a===\"line-gradient\"){let h=this.gradientExpression();this.stepInterpolant=!!function(A){return A._styleExpression!==void 0}(h)&&h._styleExpression.expression instanceof nh,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(a,h){super.recalculate(a,h),this.paint._values[\"line-floorwidth\"]=VS.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,a)}createBucket(a){return new iC(a)}queryRadius(a){let h=a,A=G6(Ve(\"line-width\",this,h),Ve(\"line-gap-width\",this,h)),x=Ve(\"line-offset\",this,h);return A/2+Math.abs(x)+Jt(this.paint.get(\"line-translate\"))}queryIntersectsFeature(a,h,A,x,E,P,D){let F=_e(a,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),P.angle,D),V=D/2*G6(this.paint.get(\"line-width\").evaluate(h,A),this.paint.get(\"line-gap-width\").evaluate(h,A)),q=this.paint.get(\"line-offset\").evaluate(h,A);return q&&(x=function(X,et){let at=[];for(let ct=0;ct=3){for(let bt=0;bt0?a+2*u:u}let FX=yn([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),zX=yn([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);yn([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);let NX=yn([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]);yn([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);let W6=yn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),UX=yn([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function VX(u,a,h){return u.sections.forEach(A=>{A.text=function(x,E,P){let D=E.layout.get(\"text-transform\").evaluate(P,{});return D===\"uppercase\"?x=x.toLocaleUpperCase():D===\"lowercase\"&&(x=x.toLocaleLowerCase()),ua.applyArabicShaping&&(x=ua.applyArabicShaping(x)),x}(A.text,a,h)}),u}yn([{name:\"triangle\",components:3,type:\"Uint16\"}]),yn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),yn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",name:\"collisionCircleDiameter\"},{type:\"Uint16\",name:\"textAnchorOffsetStartIndex\"},{type:\"Uint16\",name:\"textAnchorOffsetEndIndex\"}]),yn([{type:\"Float32\",name:\"offsetX\"}]),yn([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]),yn([{type:\"Uint16\",name:\"textAnchor\"},{type:\"Float32\",components:2,name:\"textOffset\"}]);let Nx={\"!\":\"\\uFE15\",\"#\":\"\\uFF03\",$:\"\\uFF04\",\"%\":\"\\uFF05\",\"&\":\"\\uFF06\",\"(\":\"\\uFE35\",\")\":\"\\uFE36\",\"*\":\"\\uFF0A\",\"+\":\"\\uFF0B\",\",\":\"\\uFE10\",\"-\":\"\\uFE32\",\".\":\"\\u30FB\",\"/\":\"\\uFF0F\",\":\":\"\\uFE13\",\";\":\"\\uFE14\",\"<\":\"\\uFE3F\",\"=\":\"\\uFF1D\",\">\":\"\\uFE40\",\"?\":\"\\uFE16\",\"@\":\"\\uFF20\",\"[\":\"\\uFE47\",\"\\\\\":\"\\uFF3C\",\"]\":\"\\uFE48\",\"^\":\"\\uFF3E\",_:\"\\uFE33\",\"`\":\"\\uFF40\",\"{\":\"\\uFE37\",\"|\":\"\\u2015\",\"}\":\"\\uFE38\",\"~\":\"\\uFF5E\",\"\\xA2\":\"\\uFFE0\",\"\\xA3\":\"\\uFFE1\",\"\\xA5\":\"\\uFFE5\",\"\\xA6\":\"\\uFFE4\",\"\\xAC\":\"\\uFFE2\",\"\\xAF\":\"\\uFFE3\",\"\\u2013\":\"\\uFE32\",\"\\u2014\":\"\\uFE31\",\"\\u2018\":\"\\uFE43\",\"\\u2019\":\"\\uFE44\",\"\\u201C\":\"\\uFE41\",\"\\u201D\":\"\\uFE42\",\"\\u2026\":\"\\uFE19\",\"\\u2027\":\"\\u30FB\",\"\\u20A9\":\"\\uFFE6\",\"\\u3001\":\"\\uFE11\",\"\\u3002\":\"\\uFE12\",\"\\u3008\":\"\\uFE3F\",\"\\u3009\":\"\\uFE40\",\"\\u300A\":\"\\uFE3D\",\"\\u300B\":\"\\uFE3E\",\"\\u300C\":\"\\uFE41\",\"\\u300D\":\"\\uFE42\",\"\\u300E\":\"\\uFE43\",\"\\u300F\":\"\\uFE44\",\"\\u3010\":\"\\uFE3B\",\"\\u3011\":\"\\uFE3C\",\"\\u3014\":\"\\uFE39\",\"\\u3015\":\"\\uFE3A\",\"\\u3016\":\"\\uFE17\",\"\\u3017\":\"\\uFE18\",\"\\uFF01\":\"\\uFE15\",\"\\uFF08\":\"\\uFE35\",\"\\uFF09\":\"\\uFE36\",\"\\uFF0C\":\"\\uFE10\",\"\\uFF0D\":\"\\uFE32\",\"\\uFF0E\":\"\\u30FB\",\"\\uFF1A\":\"\\uFE13\",\"\\uFF1B\":\"\\uFE14\",\"\\uFF1C\":\"\\uFE3F\",\"\\uFF1E\":\"\\uFE40\",\"\\uFF1F\":\"\\uFE16\",\"\\uFF3B\":\"\\uFE47\",\"\\uFF3D\":\"\\uFE48\",\"\\uFF3F\":\"\\uFE33\",\"\\uFF5B\":\"\\uFE37\",\"\\uFF5C\":\"\\u2015\",\"\\uFF5D\":\"\\uFE38\",\"\\uFF5F\":\"\\uFE35\",\"\\uFF60\":\"\\uFE36\",\"\\uFF61\":\"\\uFE12\",\"\\uFF62\":\"\\uFE41\",\"\\uFF63\":\"\\uFE42\"};var Us=24,H6=Ki,q6=function(u,a,h,A,x){var E,P,D=8*x-A-1,F=(1<>1,q=-7,X=h?x-1:0,et=h?-1:1,at=u[a+X];for(X+=et,E=at&(1<<-q)-1,at>>=-q,q+=D;q>0;E=256*E+u[a+X],X+=et,q-=8);for(P=E&(1<<-q)-1,E>>=-q,q+=A;q>0;P=256*P+u[a+X],X+=et,q-=8);if(E===0)E=1-V;else{if(E===F)return P?NaN:1/0*(at?-1:1);P+=Math.pow(2,A),E-=V}return(at?-1:1)*P*Math.pow(2,E-A)},Z6=function(u,a,h,A,x,E){var P,D,F,V=8*E-x-1,q=(1<>1,et=x===23?Math.pow(2,-24)-Math.pow(2,-77):0,at=A?0:E-1,ct=A?1:-1,mt=a<0||a===0&&1/a<0?1:0;for(a=Math.abs(a),isNaN(a)||a===1/0?(D=isNaN(a)?1:0,P=q):(P=Math.floor(Math.log(a)/Math.LN2),a*(F=Math.pow(2,-P))<1&&(P--,F*=2),(a+=P+X>=1?et/F:et*Math.pow(2,1-X))*F>=2&&(P++,F/=2),P+X>=q?(D=0,P=q):P+X>=1?(D=(a*F-1)*Math.pow(2,x),P+=X):(D=a*Math.pow(2,X-1)*Math.pow(2,x),P=0));x>=8;u[h+at]=255&D,at+=ct,D/=256,x-=8);for(P=P<0;u[h+at]=255&P,at+=ct,P/=256,V-=8);u[h+at-ct]|=128*mt};function Ki(u){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(u)?u:new Uint8Array(u||0),this.pos=0,this.type=0,this.length=this.buf.length}Ki.Varint=0,Ki.Fixed64=1,Ki.Bytes=2,Ki.Fixed32=5;var nC=4294967296,Y6=1/nC,Q6=typeof TextDecoder>\"u\"?null:new TextDecoder(\"utf8\");function Fd(u){return u.type===Ki.Bytes?u.readVarint()+u.pos:u.pos+1}function m_(u,a,h){return h?4294967296*a+(u>>>0):4294967296*(a>>>0)+(u>>>0)}function $6(u,a,h){var A=a<=16383?1:a<=2097151?2:a<=268435455?3:Math.floor(Math.log(a)/(7*Math.LN2));h.realloc(A);for(var x=h.pos-1;x>=u;x--)h.buf[x+A]=h.buf[x]}function jX(u,a){for(var h=0;h>>8,u[h+2]=a>>>16,u[h+3]=a>>>24}function X6(u,a){return(u[a]|u[a+1]<<8|u[a+2]<<16)+(u[a+3]<<24)}Ki.prototype={destroy:function(){this.buf=null},readFields:function(u,a,h){for(h=h||this.length;this.pos>3,E=this.pos;this.type=7&A,u(x,a,this),this.pos===E&&this.skip(A)}return a},readMessage:function(u,a){return this.readFields(u,a,this.readVarint()+this.pos)},readFixed32:function(){var u=jS(this.buf,this.pos);return this.pos+=4,u},readSFixed32:function(){var u=X6(this.buf,this.pos);return this.pos+=4,u},readFixed64:function(){var u=jS(this.buf,this.pos)+jS(this.buf,this.pos+4)*nC;return this.pos+=8,u},readSFixed64:function(){var u=jS(this.buf,this.pos)+X6(this.buf,this.pos+4)*nC;return this.pos+=8,u},readFloat:function(){var u=q6(this.buf,this.pos,!0,23,4);return this.pos+=4,u},readDouble:function(){var u=q6(this.buf,this.pos,!0,52,8);return this.pos+=8,u},readVarint:function(u){var a,h,A=this.buf;return a=127&(h=A[this.pos++]),h<128?a:(a|=(127&(h=A[this.pos++]))<<7,h<128?a:(a|=(127&(h=A[this.pos++]))<<14,h<128?a:(a|=(127&(h=A[this.pos++]))<<21,h<128?a:function(x,E,P){var D,F,V=P.buf;if(D=(112&(F=V[P.pos++]))>>4,F<128||(D|=(127&(F=V[P.pos++]))<<3,F<128)||(D|=(127&(F=V[P.pos++]))<<10,F<128)||(D|=(127&(F=V[P.pos++]))<<17,F<128)||(D|=(127&(F=V[P.pos++]))<<24,F<128)||(D|=(1&(F=V[P.pos++]))<<31,F<128))return m_(x,D,E);throw new Error(\"Expected varint not more than 10 bytes\")}(a|=(15&(h=A[this.pos]))<<28,u,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var u=this.readVarint();return u%2==1?(u+1)/-2:u/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var u=this.readVarint()+this.pos,a=this.pos;return this.pos=u,u-a>=12&&Q6?function(h,A,x){return Q6.decode(h.subarray(A,x))}(this.buf,a,u):function(h,A,x){for(var E=\"\",P=A;P239?4:q>223?3:q>191?2:1;if(P+et>x)break;et===1?q<128&&(X=q):et===2?(192&(D=h[P+1]))==128&&(X=(31&q)<<6|63&D)<=127&&(X=null):et===3?(F=h[P+2],(192&(D=h[P+1]))==128&&(192&F)==128&&((X=(15&q)<<12|(63&D)<<6|63&F)<=2047||X>=55296&&X<=57343)&&(X=null)):et===4&&(F=h[P+2],V=h[P+3],(192&(D=h[P+1]))==128&&(192&F)==128&&(192&V)==128&&((X=(15&q)<<18|(63&D)<<12|(63&F)<<6|63&V)<=65535||X>=1114112)&&(X=null)),X===null?(X=65533,et=1):X>65535&&(X-=65536,E+=String.fromCharCode(X>>>10&1023|55296),X=56320|1023&X),E+=String.fromCharCode(X),P+=et}return E}(this.buf,a,u)},readBytes:function(){var u=this.readVarint()+this.pos,a=this.buf.subarray(this.pos,u);return this.pos=u,a},readPackedVarint:function(u,a){if(this.type!==Ki.Bytes)return u.push(this.readVarint(a));var h=Fd(this);for(u=u||[];this.pos127;);else if(a===Ki.Bytes)this.pos=this.readVarint()+this.pos;else if(a===Ki.Fixed32)this.pos+=4;else{if(a!==Ki.Fixed64)throw new Error(\"Unimplemented type: \"+a);this.pos+=8}},writeTag:function(u,a){this.writeVarint(u<<3|a)},realloc:function(u){for(var a=this.length||16;a268435455||u<0?function(a,h){var A,x;if(a>=0?(A=a%4294967296|0,x=a/4294967296|0):(x=~(-a/4294967296),4294967295^(A=~(-a%4294967296))?A=A+1|0:(A=0,x=x+1|0)),a>=18446744073709552e3||a<-18446744073709552e3)throw new Error(\"Given varint doesn't fit into 10 bytes\");h.realloc(10),function(E,P,D){D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,D.buf[D.pos]=127&(E>>>=7)}(A,0,h),function(E,P){var D=(7&E)<<4;P.buf[P.pos++]|=D|((E>>>=3)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E)))))}(x,h)}(u,this):(this.realloc(4),this.buf[this.pos++]=127&u|(u>127?128:0),u<=127||(this.buf[this.pos++]=127&(u>>>=7)|(u>127?128:0),u<=127||(this.buf[this.pos++]=127&(u>>>=7)|(u>127?128:0),u<=127||(this.buf[this.pos++]=u>>>7&127))))},writeSVarint:function(u){this.writeVarint(u<0?2*-u-1:2*u)},writeBoolean:function(u){this.writeVarint(!!u)},writeString:function(u){u=String(u),this.realloc(4*u.length),this.pos++;var a=this.pos;this.pos=function(A,x,E){for(var P,D,F=0;F55295&&P<57344){if(!D){P>56319||F+1===x.length?(A[E++]=239,A[E++]=191,A[E++]=189):D=P;continue}if(P<56320){A[E++]=239,A[E++]=191,A[E++]=189,D=P;continue}P=D-55296<<10|P-56320|65536,D=null}else D&&(A[E++]=239,A[E++]=191,A[E++]=189,D=null);P<128?A[E++]=P:(P<2048?A[E++]=P>>6|192:(P<65536?A[E++]=P>>12|224:(A[E++]=P>>18|240,A[E++]=P>>12&63|128),A[E++]=P>>6&63|128),A[E++]=63&P|128)}return E}(this.buf,u,this.pos);var h=this.pos-a;h>=128&&$6(a,h,this),this.pos=a-1,this.writeVarint(h),this.pos+=h},writeFloat:function(u){this.realloc(4),Z6(this.buf,u,this.pos,!0,23,4),this.pos+=4},writeDouble:function(u){this.realloc(8),Z6(this.buf,u,this.pos,!0,52,8),this.pos+=8},writeBytes:function(u){var a=u.length;this.writeVarint(a),this.realloc(a);for(var h=0;h=128&&$6(h,A,this),this.pos=h-1,this.writeVarint(A),this.pos+=A},writeMessage:function(u,a,h){this.writeTag(u,Ki.Bytes),this.writeRawMessage(a,h)},writePackedVarint:function(u,a){a.length&&this.writeMessage(u,jX,a)},writePackedSVarint:function(u,a){a.length&&this.writeMessage(u,GX,a)},writePackedBoolean:function(u,a){a.length&&this.writeMessage(u,qX,a)},writePackedFloat:function(u,a){a.length&&this.writeMessage(u,WX,a)},writePackedDouble:function(u,a){a.length&&this.writeMessage(u,HX,a)},writePackedFixed32:function(u,a){a.length&&this.writeMessage(u,ZX,a)},writePackedSFixed32:function(u,a){a.length&&this.writeMessage(u,YX,a)},writePackedFixed64:function(u,a){a.length&&this.writeMessage(u,QX,a)},writePackedSFixed64:function(u,a){a.length&&this.writeMessage(u,$X,a)},writeBytesField:function(u,a){this.writeTag(u,Ki.Bytes),this.writeBytes(a)},writeFixed32Field:function(u,a){this.writeTag(u,Ki.Fixed32),this.writeFixed32(a)},writeSFixed32Field:function(u,a){this.writeTag(u,Ki.Fixed32),this.writeSFixed32(a)},writeFixed64Field:function(u,a){this.writeTag(u,Ki.Fixed64),this.writeFixed64(a)},writeSFixed64Field:function(u,a){this.writeTag(u,Ki.Fixed64),this.writeSFixed64(a)},writeVarintField:function(u,a){this.writeTag(u,Ki.Varint),this.writeVarint(a)},writeSVarintField:function(u,a){this.writeTag(u,Ki.Varint),this.writeSVarint(a)},writeStringField:function(u,a){this.writeTag(u,Ki.Bytes),this.writeString(a)},writeFloatField:function(u,a){this.writeTag(u,Ki.Fixed32),this.writeFloat(a)},writeDoubleField:function(u,a){this.writeTag(u,Ki.Fixed64),this.writeDouble(a)},writeBooleanField:function(u,a){this.writeVarintField(u,!!a)}};var sC=c(H6);let oC=3;function XX(u,a,h){u===1&&h.readMessage(KX,a)}function KX(u,a,h){if(u===3){let{id:A,bitmap:x,width:E,height:P,left:D,top:F,advance:V}=h.readMessage(JX,{});a.push({id:A,bitmap:new kx({width:E+2*oC,height:P+2*oC},x),metrics:{width:E,height:P,left:D,top:F,advance:V}})}}function JX(u,a,h){u===1?a.id=h.readVarint():u===2?a.bitmap=h.readBytes():u===3?a.width=h.readVarint():u===4?a.height=h.readVarint():u===5?a.left=h.readSVarint():u===6?a.top=h.readSVarint():u===7&&(a.advance=h.readVarint())}let K6=oC;function J6(u){let a=0,h=0;for(let P of u)a+=P.w*P.h,h=Math.max(h,P.w);u.sort((P,D)=>D.h-P.h);let A=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(a/.95)),h),h:1/0}],x=0,E=0;for(let P of u)for(let D=A.length-1;D>=0;D--){let F=A[D];if(!(P.w>F.w||P.h>F.h)){if(P.x=F.x,P.y=F.y,E=Math.max(E,P.y+P.h),x=Math.max(x,P.x+P.w),P.w===F.w&&P.h===F.h){let V=A.pop();D=0&&A>=a&&WS[this.text.charCodeAt(A)];A--)h--;this.text=this.text.substring(a,h),this.sectionIndex=this.sectionIndex.slice(a,h)}substring(a,h){let A=new __;return A.text=this.text.substring(a,h),A.sectionIndex=this.sectionIndex.slice(a,h),A.sections=this.sections,A}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((a,h)=>Math.max(a,this.sections[h].scale),0)}addTextSection(a,h){this.text+=a.text,this.sections.push(Vx.forText(a.scale,a.fontStack||h));let A=this.sections.length-1;for(let x=0;x=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function GS(u,a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt){let bt=__.fromFeature(u,x),Et;X===n.ai.vertical&&bt.verticalizePunctuation();let{processBidirectionalText:Vt,processStyledBidirectionalText:kt}=ua;if(Vt&&bt.sections.length===1){Et=[];let ae=Vt(bt.toString(),lC(bt,V,E,a,A,at,ct));for(let Be of ae){let Je=new __;Je.text=Be,Je.sections=bt.sections;for(let Oe=0;Oe0&&Nd>Al&&(Al=Nd)}else{let Fc=Je[di.fontStack],gl=Fc&&Fc[Qo];if(gl&&gl.rect)yh=gl.rect,_u=gl.metrics;else{let Nd=Be[di.fontStack],qx=Nd&&Nd[Qo];if(!qx)continue;_u=qx.metrics}Hs=(Gs-di.scale)*Us}yu?(ae.verticalizable=!0,fa.push({glyph:Qo,imageName:vh,x:xn,y:Ln+Hs,vertical:yu,scale:di.scale,fontStack:di.fontStack,sectionIndex:da,metrics:_u,rect:yh}),xn+=zd*di.scale+ur):(fa.push({glyph:Qo,imageName:vh,x:xn,y:Ln+Hs,vertical:yu,scale:di.scale,fontStack:di.fontStack,sectionIndex:da,metrics:_u,rect:yh}),xn+=_u.advance*di.scale+ur)}fa.length!==0&&(Vs=Math.max(xn-ur,Vs),rK(fa,0,fa.length-1,Va,Al)),xn=0;let ml=Te*Gs+Al;Wa.lineOffset=Math.max(Al,ha),Ln+=ml,Hl=Math.max(ml,Hl),++Ps}var vo;let Yo=Ln-Ux,{horizontalAlign:ja,verticalAlign:Ga}=cC(He);(function(js,Gs,ha,Wa,fa,Al,ml,Ws,di){let da=(Gs-ha)*fa,Qo=0;Qo=Al!==ml?-Ws*Wa-Ux:(-Wa*di+.5)*ml;for(let Hs of js)for(let _u of Hs.positionedGlyphs)_u.x+=da,_u.y+=Qo})(ae.positionedLines,Va,ja,Ga,Vs,Hl,Te,Yo,ke.length),ae.top+=-Ga*Yo,ae.bottom=ae.top+Yo,ae.left+=-ja*Vs,ae.right=ae.left+Vs}(qt,a,h,A,Et,P,D,F,X,V,et,mt),!function(ae){for(let Be of ae)if(Be.positionedGlyphs.length!==0)return!1;return!0}(jt)&&qt}let WS={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},tK={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function eF(u,a,h,A,x,E){if(a.imageName){let P=A[a.imageName];return P?P.displaySize[0]*a.scale*Us/E+x:0}{let P=h[a.fontStack],D=P&&P[u];return D?D.metrics.advance*a.scale+x:0}}function rF(u,a,h,A){let x=Math.pow(u-a,2);return A?u=0,q=0;for(let et=0;etP.id),this.index=a.index,this.pixelRatio=a.pixelRatio,this.sourceLayerIndex=a.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Zr([]),this.placementViewportMatrix=Zr([]);let h=this.layers[0]._unevaluatedLayout._values;this.textSizeData=oF(this.zoom,h[\"text-size\"]),this.iconSizeData=oF(this.zoom,h[\"icon-size\"]);let A=this.layers[0].layout,x=A.get(\"symbol-sort-key\"),E=A.get(\"symbol-z-order\");this.canOverlap=uC(A,\"text-overlap\",\"text-allow-overlap\")!==\"never\"||uC(A,\"icon-overlap\",\"icon-allow-overlap\")!==\"never\"||A.get(\"text-ignore-placement\")||A.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=E!==\"viewport-y\"&&!x.isConstant(),this.sortFeaturesByY=(E===\"viewport-y\"||E===\"auto\"&&!this.sortFeaturesByKey)&&this.canOverlap,A.get(\"symbol-placement\")===\"point\"&&(this.writingModes=A.get(\"text-writing-mode\").map(P=>n.ai[P])),this.stateDependentLayerIds=this.layers.filter(P=>P.isStateDependent()).map(P=>P.id),this.sourceID=a.sourceID}createArrays(){this.text=new fC(new Ua(this.layers,this.zoom,a=>/^text/.test(a))),this.icon=new fC(new Ua(this.layers,this.zoom,a=>/^icon/.test(a))),this.glyphOffsetArray=new Bt,this.lineVertexArray=new Yt,this.symbolInstances=new St,this.textAnchorOffsets=new se}calculateGlyphDependencies(a,h,A,x,E){for(let P=0;P0)&&(P.value.kind!==\"constant\"||P.value.value.length>0),q=F.value.kind!==\"constant\"||!!F.value.value||Object.keys(F.parameters).length>0,X=E.get(\"symbol-sort-key\");if(this.features=[],!V&&!q)return;let et=h.iconDependencies,at=h.glyphDependencies,ct=h.availableImages,mt=new ln(this.zoom);for(let{feature:bt,id:Et,index:Vt,sourceLayerIndex:kt}of a){let jt=x._featureFilter.needGeometry,qt=S(bt,jt);if(!x._featureFilter.filter(mt,qt,A))continue;let ae,Be;if(jt||(qt.geometry=y(bt)),V){let Oe=x.getValueAndResolveTokens(\"text-field\",qt,A,ct),ke=on.factory(Oe);oK(ke)&&(this.hasRTLText=!0),(!this.hasRTLText||a0()===\"unavailable\"||this.hasRTLText&&ua.isParsed())&&(ae=VX(ke,x,qt))}if(q){let Oe=x.getValueAndResolveTokens(\"icon-image\",qt,A,ct);Be=Oe instanceof Vn?Oe:Vn.fromString(Oe)}if(!ae&&!Be)continue;let Je=this.sortFeaturesByKey?X.evaluate(qt,{},A):void 0;if(this.features.push({id:Et,text:ae,icon:Be,index:Vt,sourceLayerIndex:kt,geometry:qt.geometry,properties:bt.properties,type:nK[bt.type],sortKey:Je}),Be&&(et[Be.name]=!0),ae){let Oe=P.evaluate(qt,{},A).join(\",\"),ke=E.get(\"text-rotation-alignment\")!==\"viewport\"&&E.get(\"symbol-placement\")!==\"point\";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(n.ai.vertical)>=0;for(let Te of ae.sections)if(Te.image)et[Te.image.name]=!0;else{let He=e0(ae.toString()),Pe=Te.fontStack||Oe,Ae=at[Pe]=at[Pe]||{};this.calculateGlyphDependencies(Te.text,Ae,ke,this.allowVerticalPlacement,He)}}}E.get(\"symbol-placement\")===\"line\"&&(this.features=function(bt){let Et={},Vt={},kt=[],jt=0;function qt(Oe){kt.push(bt[Oe]),jt++}function ae(Oe,ke,Te){let He=Vt[Oe];return delete Vt[Oe],Vt[ke]=He,kt[He].geometry[0].pop(),kt[He].geometry[0]=kt[He].geometry[0].concat(Te[0]),He}function Be(Oe,ke,Te){let He=Et[ke];return delete Et[ke],Et[Oe]=He,kt[He].geometry[0].shift(),kt[He].geometry[0]=Te[0].concat(kt[He].geometry[0]),He}function Je(Oe,ke,Te){let He=Te?ke[0][ke[0].length-1]:ke[0][0];return`${Oe}:${He.x}:${He.y}`}for(let Oe=0;OeOe.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((bt,Et)=>bt.sortKey-Et.sortKey)}update(a,h,A){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(a,h,this.layers,A),this.icon.programConfigurations.updatePaintArrays(a,h,this.layers,A))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(a){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(a),this.iconCollisionBox.upload(a)),this.text.upload(a,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(a,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(a,h){let A=this.lineVertexArray.length;if(a.segment!==void 0){let x=a.dist(h[a.segment+1]),E=a.dist(h[a.segment]),P={};for(let D=a.segment+1;D=0;D--)P[D]={x:h[D].x,y:h[D].y,tileUnitDistanceFromAnchor:E},D>0&&(E+=h[D-1].dist(h[D]));for(let D=0;D0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(a,h){let A=a.placedSymbolArray.get(h),x=A.vertexStartIndex+4*A.numGlyphs;for(let E=A.vertexStartIndex;Ex[D]-x[F]||E[F]-E[D]),P}addToSortKeyRanges(a,h){let A=this.sortKeyRanges[this.sortKeyRanges.length-1];A&&A.sortKey===h?A.symbolInstanceEnd=a+1:this.sortKeyRanges.push({sortKey:h,symbolInstanceStart:a,symbolInstanceEnd:a+1})}sortFeatures(a){if(this.sortFeaturesByY&&this.sortedAngle!==a&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(a),this.sortedAngle=a,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let h of this.symbolInstanceIndexes){let A=this.symbolInstances.get(h);this.featureSortOrder.push(A.featureIndex),[A.rightJustifiedTextSymbolIndex,A.centerJustifiedTextSymbolIndex,A.leftJustifiedTextSymbolIndex].forEach((x,E,P)=>{x>=0&&P.indexOf(x)===E&&this.addIndicesForPlacedSymbol(this.text,x)}),A.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,A.verticalPlacedTextSymbolIndex),A.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,A.placedIconSymbolIndex),A.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,A.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let aF,lF;Ue(\"SymbolBucket\",y_,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),y_.MAX_GLYPHS=65535,y_.addDynamicAttributes=hC;var pC={get paint(){return lF=lF||new Gn({\"icon-opacity\":new fr(te.paint_symbol[\"icon-opacity\"]),\"icon-color\":new fr(te.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new fr(te.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new fr(te.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new fr(te.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new rr(te.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new rr(te.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new fr(te.paint_symbol[\"text-opacity\"]),\"text-color\":new fr(te.paint_symbol[\"text-color\"],{runtimeType:Os,getOverride:u=>u.textColor,hasOverride:u=>!!u.textColor}),\"text-halo-color\":new fr(te.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new fr(te.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new fr(te.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new rr(te.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new rr(te.paint_symbol[\"text-translate-anchor\"])})},get layout(){return aF=aF||new Gn({\"symbol-placement\":new rr(te.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new rr(te.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new rr(te.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new fr(te.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new rr(te.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new rr(te.layout_symbol[\"icon-allow-overlap\"]),\"icon-overlap\":new rr(te.layout_symbol[\"icon-overlap\"]),\"icon-ignore-placement\":new rr(te.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new rr(te.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new rr(te.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new fr(te.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new rr(te.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new rr(te.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new fr(te.layout_symbol[\"icon-image\"]),\"icon-rotate\":new fr(te.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new fr(te.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new rr(te.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new fr(te.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new fr(te.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new rr(te.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new rr(te.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new rr(te.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new fr(te.layout_symbol[\"text-field\"]),\"text-font\":new fr(te.layout_symbol[\"text-font\"]),\"text-size\":new fr(te.layout_symbol[\"text-size\"]),\"text-max-width\":new fr(te.layout_symbol[\"text-max-width\"]),\"text-line-height\":new rr(te.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new fr(te.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new fr(te.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new fr(te.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new rr(te.layout_symbol[\"text-variable-anchor\"]),\"text-variable-anchor-offset\":new fr(te.layout_symbol[\"text-variable-anchor-offset\"]),\"text-anchor\":new fr(te.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new rr(te.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new rr(te.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new fr(te.layout_symbol[\"text-rotate\"]),\"text-padding\":new rr(te.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new rr(te.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new fr(te.layout_symbol[\"text-transform\"]),\"text-offset\":new fr(te.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new rr(te.layout_symbol[\"text-allow-overlap\"]),\"text-overlap\":new rr(te.layout_symbol[\"text-overlap\"]),\"text-ignore-placement\":new rr(te.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new rr(te.layout_symbol[\"text-optional\"])})}};class cF{constructor(a){if(a.property.overrides===void 0)throw new Error(\"overrides must be provided to instantiate FormatSectionOverride class\");this.type=a.property.overrides?a.property.overrides.runtimeType:Ia,this.defaultValue=a}evaluate(a){if(a.formattedSection){let h=this.defaultValue.property.overrides;if(h&&h.hasOverride(a.formattedSection))return h.getOverride(a.formattedSection)}return a.feature&&a.featureState?this.defaultValue.evaluate(a.feature,a.featureState):this.defaultValue.property.specification.default}eachChild(a){this.defaultValue.isConstant()||a(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ue(\"FormatSectionOverride\",cF,{omit:[\"defaultValue\"]});class qS extends Ui{constructor(a){super(a,pC)}recalculate(a,h){if(super.recalculate(a,h),this.layout.get(\"icon-rotation-alignment\")===\"auto\"&&(this.layout._values[\"icon-rotation-alignment\"]=this.layout.get(\"symbol-placement\")!==\"point\"?\"map\":\"viewport\"),this.layout.get(\"text-rotation-alignment\")===\"auto\"&&(this.layout._values[\"text-rotation-alignment\"]=this.layout.get(\"symbol-placement\")!==\"point\"?\"map\":\"viewport\"),this.layout.get(\"text-pitch-alignment\")===\"auto\"&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")===\"map\"?\"map\":\"viewport\"),this.layout.get(\"icon-pitch-alignment\")===\"auto\"&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),this.layout.get(\"symbol-placement\")===\"point\"){let A=this.layout.get(\"text-writing-mode\");if(A){let x=[];for(let E of A)x.indexOf(E)<0&&x.push(E);this.layout._values[\"text-writing-mode\"]=x}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"]}this._setPaintOverrides()}getValueAndResolveTokens(a,h,A,x){let E=this.layout.get(a).evaluate(h,{},A,x),P=this._unevaluatedLayout._values[a];return P.isDataDriven()||Hp(P.value)||!E?E:function(D,F){return F.replace(/{([^{}]+)}/g,(V,q)=>D&&q in D?String(D[q]):\"\")}(h.properties,E)}createBucket(a){return new y_(a)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error(\"Should take a different path in FeatureIndex\")}_setPaintOverrides(){for(let a of pC.paint.overridableProperties){if(!qS.hasPaintOverride(this.layout,a))continue;let h=this.paint.get(a),A=new cF(h),x=new Ym(A,h.property.specification),E=null;E=h.value.kind===\"constant\"||h.value.kind===\"source\"?new Qm(\"source\",x):new wt(\"composite\",x,h.value.zoomStops),this.paint._values[a]=new _o(h.property,E,h.parameters)}}_handleOverridablePaintPropertyUpdate(a,h,A){return!(!this.layout||h.isDataDriven()||A.isDataDriven())&&qS.hasPaintOverride(this.layout,a)}static hasPaintOverride(a,h){let A=a.get(\"text-field\"),x=pC.paint.properties[h],E=!1,P=D=>{for(let F of D)if(x.overrides&&x.overrides.hasOverride(F))return void(E=!0)};if(A.value.kind===\"constant\"&&A.value.value instanceof on)P(A.value.value.sections);else if(A.value.kind===\"source\"){let D=V=>{E||(V instanceof Nl&&Yi(V.value)===gt?P(V.value.sections):V instanceof Si?P(V.sections):V.eachChild(D))},F=A.value;F._styleExpression&&D(F._styleExpression.expression)}return E}}let uF;var aK={get paint(){return uF=uF||new Gn({\"background-color\":new rr(te.paint_background[\"background-color\"]),\"background-pattern\":new nA(te.paint_background[\"background-pattern\"]),\"background-opacity\":new rr(te.paint_background[\"background-opacity\"])})}};class lK extends Ui{constructor(a){super(a,aK)}}let hF;var cK={get paint(){return hF=hF||new Gn({\"raster-opacity\":new rr(te.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new rr(te.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new rr(te.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new rr(te.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new rr(te.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new rr(te.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new rr(te.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new rr(te.paint_raster[\"raster-fade-duration\"])})}};class uK extends Ui{constructor(a){super(a,cK)}}class hK extends Ui{constructor(a){super(a,{}),this.onAdd=h=>{this.implementation.onAdd&&this.implementation.onAdd(h,h.painter.context.gl)},this.onRemove=h=>{this.implementation.onRemove&&this.implementation.onRemove(h,h.painter.context.gl)},this.implementation=a}is3D(){return this.implementation.renderingMode===\"3d\"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error(\"Custom layers cannot be serialized\")}}class fK{constructor(a){this._callback=a,this._triggered=!1,typeof MessageChannel<\"u\"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._callback()},0))}remove(){delete this._channel,this._callback=()=>{}}}let AC=63710088e-1;class uA{constructor(a,h){if(isNaN(a)||isNaN(h))throw new Error(`Invalid LngLat object: (${a}, ${h})`);if(this.lng=+a,this.lat=+h,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new uA(Pt(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(a){let h=Math.PI/180,A=this.lat*h,x=a.lat*h,E=Math.sin(A)*Math.sin(x)+Math.cos(A)*Math.cos(x)*Math.cos((a.lng-this.lng)*h);return AC*Math.acos(Math.min(E,1))}static convert(a){if(a instanceof uA)return a;if(Array.isArray(a)&&(a.length===2||a.length===3))return new uA(Number(a[0]),Number(a[1]));if(!Array.isArray(a)&&typeof a==\"object\"&&a!==null)return new uA(Number(\"lng\"in a?a.lng:a.lon),Number(a.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")}}let fF=2*Math.PI*AC;function dF(u){return fF*Math.cos(u*Math.PI/180)}function pF(u){return(180+u)/360}function AF(u){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+u*Math.PI/360)))/360}function mF(u,a){return u/dF(a)}function gF(u){return 360*u-180}function mC(u){return 360/Math.PI*Math.atan(Math.exp((180-360*u)*Math.PI/180))-90}class ZS{constructor(a,h,A=0){this.x=+a,this.y=+h,this.z=+A}static fromLngLat(a,h=0){let A=uA.convert(a);return new ZS(pF(A.lng),AF(A.lat),mF(h,A.lat))}toLngLat(){return new uA(gF(this.x),mC(this.y))}toAltitude(){return this.z*dF(mC(this.y))}meterInMercatorCoordinateUnits(){return 1/fF*(a=mC(this.y),1/Math.cos(a*Math.PI/180));var a}}function _F(u,a,h){var A=2*Math.PI*6378137/256/Math.pow(2,h);return[u*A-2*Math.PI*6378137/2,a*A-2*Math.PI*6378137/2]}class gC{constructor(a,h,A){if(a<0||a>25||A<0||A>=Math.pow(2,a)||h<0||h>=Math.pow(2,a))throw new Error(`x=${h}, y=${A}, z=${a} outside of bounds. 0<=x<${Math.pow(2,a)}, 0<=y<${Math.pow(2,a)} 0<=z<=25 `);this.z=a,this.x=h,this.y=A,this.key=Gx(0,a,a,h,A)}equals(a){return this.z===a.z&&this.x===a.x&&this.y===a.y}url(a,h,A){let x=(P=this.y,D=this.z,F=_F(256*(E=this.x),256*(P=Math.pow(2,D)-P-1),D),V=_F(256*(E+1),256*(P+1),D),F[0]+\",\"+F[1]+\",\"+V[0]+\",\"+V[1]);var E,P,D,F,V;let q=function(X,et,at){let ct,mt=\"\";for(let bt=X;bt>0;bt--)ct=1<1?\"@2x\":\"\").replace(/{quadkey}/g,q).replace(/{bbox-epsg-3857}/g,x)}isChildOf(a){let h=this.z-a.z;return h>0&&a.x===this.x>>h&&a.y===this.y>>h}getTilePoint(a){let h=Math.pow(2,this.z);return new w((a.x*h-this.x)*Xi,(a.y*h-this.y)*Xi)}toString(){return`${this.z}/${this.x}/${this.y}`}}class yF{constructor(a,h){this.wrap=a,this.canonical=h,this.key=Gx(a,h.z,h.z,h.x,h.y)}}class Bc{constructor(a,h,A,x,E){if(a= z; overscaledZ = ${a}; z = ${A}`);this.overscaledZ=a,this.wrap=h,this.canonical=new gC(A,+x,+E),this.key=Gx(h,a,A,x,E)}clone(){return new Bc(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(a){return this.overscaledZ===a.overscaledZ&&this.wrap===a.wrap&&this.canonical.equals(a.canonical)}scaledTo(a){if(a>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${a}; overscaledZ = ${this.overscaledZ}`);let h=this.canonical.z-a;return a>this.canonical.z?new Bc(a,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Bc(a,this.wrap,a,this.canonical.x>>h,this.canonical.y>>h)}calculateScaledKey(a,h){if(a>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${a}; overscaledZ = ${this.overscaledZ}`);let A=this.canonical.z-a;return a>this.canonical.z?Gx(this.wrap*+h,a,this.canonical.z,this.canonical.x,this.canonical.y):Gx(this.wrap*+h,a,a,this.canonical.x>>A,this.canonical.y>>A)}isChildOf(a){if(a.wrap!==this.wrap)return!1;let h=this.canonical.z-a.canonical.z;return a.overscaledZ===0||a.overscaledZ>h&&a.canonical.y===this.canonical.y>>h}children(a){if(this.overscaledZ>=a)return[new Bc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let h=this.canonical.z+1,A=2*this.canonical.x,x=2*this.canonical.y;return[new Bc(h,this.wrap,h,A,x),new Bc(h,this.wrap,h,A+1,x),new Bc(h,this.wrap,h,A,x+1),new Bc(h,this.wrap,h,A+1,x+1)]}isLessThan(a){return this.wrapa.wrap)&&(this.overscaledZa.overscaledZ)&&(this.canonical.xa.canonical.x)&&this.canonical.ythis.max&&(this.max=X),X=this.dim+1||h<-1||h>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(h+1)*this.stride+(a+1)}unpack(a,h,A){return a*this.redFactor+h*this.greenFactor+A*this.blueFactor-this.baseShift}getPixels(){return new Oc({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(a,h,A){if(this.dim!==a.dim)throw new Error(\"dem dimension mismatch\");let x=h*this.dim,E=h*this.dim+this.dim,P=A*this.dim,D=A*this.dim+this.dim;switch(h){case-1:x=E-1;break;case 1:E=x+1}switch(A){case-1:P=D-1;break;case 1:D=P+1}let F=-h*this.dim,V=-A*this.dim;for(let q=P;q=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${a} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[a]}}class bF{constructor(a,h,A,x,E){this.type=\"Feature\",this._vectorTileFeature=a,a._z=h,a._x=A,a._y=x,this.properties=a.properties,this.id=E}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(a){this._geometry=a}toJSON(){let a={geometry:this.geometry};for(let h in this)h!==\"_geometry\"&&h!==\"_vectorTileFeature\"&&(a[h]=this[h]);return a}}class wF{constructor(a,h){this.tileID=a,this.x=a.canonical.x,this.y=a.canonical.y,this.z=a.canonical.z,this.grid=new za(Xi,16,0),this.grid3D=new za(Xi,16,0),this.featureIndexArray=new he,this.promoteId=h}insert(a,h,A,x,E,P){let D=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(A,x,E);let F=P?this.grid3D:this.grid;for(let V=0;V=0&&X[3]>=0&&F.insert(D,X[0],X[1],X[2],X[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new aA.VectorTile(new sC(this.rawTileData)).layers,this.sourceLayerCoder=new xF(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers}query(a,h,A,x){this.loadVTLayers();let E=a.params||{},P=Xi/a.tileSize/a.scale,D=Xm(E.filter),F=a.queryGeometry,V=a.queryPadding*P,q=TF(F),X=this.grid.query(q.minX-V,q.minY-V,q.maxX+V,q.maxY+V),et=TF(a.cameraQueryGeometry),at=this.grid3D.query(et.minX-V,et.minY-V,et.maxX+V,et.maxY+V,(bt,Et,Vt,kt)=>function(jt,qt,ae,Be,Je){for(let ke of jt)if(qt<=ke.x&&ae<=ke.y&&Be>=ke.x&&Je>=ke.y)return!0;let Oe=[new w(qt,ae),new w(qt,Je),new w(Be,Je),new w(Be,ae)];if(jt.length>2){for(let ke of Oe)if(ie(jt,ke))return!0}for(let ke=0;ke(kt||(kt=y(jt)),qt.queryIntersectsFeature(F,jt,ae,kt,this.z,a.transform,P,a.pixelPosMatrix)))}return ct}loadMatchingFeature(a,h,A,x,E,P,D,F,V,q,X){let et=this.bucketLayerIDs[h];if(P&&!function(bt,Et){for(let Vt=0;Vt=0)return!0;return!1}(P,et))return;let at=this.sourceLayerCoder.decode(A),ct=this.vtLayers[at].feature(x);if(E.needGeometry){let bt=S(ct,!0);if(!E.filter(new ln(this.tileID.overscaledZ),bt,this.tileID.canonical))return}else if(!E.filter(new ln(this.tileID.overscaledZ),ct))return;let mt=this.getId(ct,at);for(let bt=0;bt{let D=a instanceof iA?a.get(P):null;return D&&D.evaluate?D.evaluate(h,A,x):D})}function TF(u){let a=1/0,h=1/0,A=-1/0,x=-1/0;for(let E of u)a=Math.min(a,E.x),h=Math.min(h,E.y),A=Math.max(A,E.x),x=Math.max(x,E.y);return{minX:a,minY:h,maxX:A,maxY:x}}function dK(u,a){return a-u}function MF(u,a,h,A,x){let E=[];for(let P=0;P=A&&X.x>=A||(q.x>=A?q=new w(A,q.y+(A-q.x)/(X.x-q.x)*(X.y-q.y))._round():X.x>=A&&(X=new w(A,q.y+(A-q.x)/(X.x-q.x)*(X.y-q.y))._round()),q.y>=x&&X.y>=x||(q.y>=x?q=new w(q.x+(x-q.y)/(X.y-q.y)*(X.x-q.x),x)._round():X.y>=x&&(X=new w(q.x+(x-q.y)/(X.y-q.y)*(X.x-q.x),x)._round()),F&&q.equals(F[F.length-1])||(F=[q],E.push(F)),F.push(X)))))}}return E}Ue(\"FeatureIndex\",wF,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class hA extends w{constructor(a,h,A,x){super(a,h),this.angle=A,x!==void 0&&(this.segment=x)}clone(){return new hA(this.x,this.y,this.angle,this.segment)}}function EF(u,a,h,A,x){if(a.segment===void 0||h===0)return!0;let E=a,P=a.segment+1,D=0;for(;D>-h/2;){if(P--,P<0)return!1;D-=u[P].dist(E),E=u[P]}D+=u[P].dist(u[P+1]),P++;let F=[],V=0;for(;DA;)V-=F.shift().angleDelta;if(V>x)return!1;P++,D+=q.dist(X)}return!0}function PF(u){let a=0;for(let h=0;hV){let ct=(V-F)/at,mt=Ra.number(X.x,et.x,ct),bt=Ra.number(X.y,et.y,ct),Et=new hA(mt,bt,et.angleTo(X),q);return Et._round(),!P||EF(u,Et,D,P,a)?Et:void 0}F+=at}}function AK(u,a,h,A,x,E,P,D,F){let V=IF(A,E,P),q=CF(A,x),X=q*P,et=u[0].x===0||u[0].x===F||u[0].y===0||u[0].y===F;return a-X=0&&jt=0&&qt=0&&et+V<=q){let ae=new hA(jt,qt,Vt,ct);ae._round(),A&&!EF(u,ae,E,A,x)||at.push(ae)}}X+=Et}return D||at.length||P||(at=LF(u,X/2,h,A,x,E,P,!0,F)),at}Ue(\"Anchor\",hA);let v_=pl;function kF(u,a,h,A){let x=[],E=u.image,P=E.pixelRatio,D=E.paddedRect.w-2*v_,F=E.paddedRect.h-2*v_,V=u.right-u.left,q=u.bottom-u.top,X=E.stretchX||[[0,D]],et=E.stretchY||[[0,F]],at=(Te,He)=>Te+He[1]-He[0],ct=X.reduce(at,0),mt=et.reduce(at,0),bt=D-ct,Et=F-mt,Vt=0,kt=ct,jt=0,qt=mt,ae=0,Be=bt,Je=0,Oe=Et;if(E.content&&A){let Te=E.content;Vt=YS(X,0,Te[0]),jt=YS(et,0,Te[1]),kt=YS(X,Te[0],Te[2]),qt=YS(et,Te[1],Te[3]),ae=Te[0]-Vt,Je=Te[1]-jt,Be=Te[2]-Te[0]-kt,Oe=Te[3]-Te[1]-qt}let ke=(Te,He,Pe,Ae)=>{let ur=QS(Te.stretch-Vt,kt,V,u.left),ir=$S(Te.fixed-ae,Be,Te.stretch,ct),ri=QS(He.stretch-jt,qt,q,u.top),xn=$S(He.fixed-Je,Oe,He.stretch,mt),Ln=QS(Pe.stretch-Vt,kt,V,u.left),Vs=$S(Pe.fixed-ae,Be,Pe.stretch,ct),Hl=QS(Ae.stretch-jt,qt,q,u.top),Va=$S(Ae.fixed-Je,Oe,Ae.stretch,mt),Ps=new w(ur,ri),vo=new w(Ln,ri),Yo=new w(Ln,Hl),ja=new w(ur,Hl),Ga=new w(ir/P,xn/P),js=new w(Vs/P,Va/P),Gs=a*Math.PI/180;if(Gs){let fa=Math.sin(Gs),Al=Math.cos(Gs),ml=[Al,-fa,fa,Al];Ps._matMult(ml),vo._matMult(ml),ja._matMult(ml),Yo._matMult(ml)}let ha=Te.stretch+Te.fixed,Wa=He.stretch+He.fixed;return{tl:Ps,tr:vo,bl:ja,br:Yo,tex:{x:E.paddedRect.x+v_+ha,y:E.paddedRect.y+v_+Wa,w:Pe.stretch+Pe.fixed-ha,h:Ae.stretch+Ae.fixed-Wa},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Ga,pixelOffsetBR:js,minFontScaleX:Be/P/V,minFontScaleY:Oe/P/q,isSDF:h}};if(A&&(E.stretchX||E.stretchY)){let Te=RF(X,bt,ct),He=RF(et,Et,mt);for(let Pe=0;Pe0&&(ct=Math.max(10,ct),this.circleDiameter=ct)}else{let X=P.top*D-F[0],et=P.bottom*D+F[2],at=P.left*D-F[3],ct=P.right*D+F[1],mt=P.collisionPadding;if(mt&&(at-=mt[0]*D,X-=mt[1]*D,ct+=mt[2]*D,et+=mt[3]*D),q){let bt=new w(at,X),Et=new w(ct,X),Vt=new w(at,et),kt=new w(ct,et),jt=q*Math.PI/180;bt._rotate(jt),Et._rotate(jt),Vt._rotate(jt),kt._rotate(jt),at=Math.min(bt.x,Et.x,Vt.x,kt.x),ct=Math.max(bt.x,Et.x,Vt.x,kt.x),X=Math.min(bt.y,Et.y,Vt.y,kt.y),et=Math.max(bt.y,Et.y,Vt.y,kt.y)}a.emplaceBack(h.x,h.y,at,X,ct,et,A,x,E)}this.boxEndIndex=a.length}}class mK{constructor(a=[],h=gK){if(this.data=a,this.length=this.data.length,this.compare=h,this.length>0)for(let A=(this.length>>1)-1;A>=0;A--)this._down(A)}push(a){this.data.push(a),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;let a=this.data[0],h=this.data.pop();return this.length--,this.length>0&&(this.data[0]=h,this._down(0)),a}peek(){return this.data[0]}_up(a){let{data:h,compare:A}=this,x=h[a];for(;a>0;){let E=a-1>>1,P=h[E];if(A(x,P)>=0)break;h[a]=P,a=E}h[a]=x}_down(a){let{data:h,compare:A}=this,x=this.length>>1,E=h[a];for(;a=0)break;h[a]=D,a=P}h[a]=E}}function gK(u,a){return ua?1:0}function _K(u,a=1,h=!1){let A=1/0,x=1/0,E=-1/0,P=-1/0,D=u[0];for(let at=0;atE)&&(E=ct.x),(!at||ct.y>P)&&(P=ct.y)}let F=Math.min(E-A,P-x),V=F/2,q=new mK([],yK);if(F===0)return new w(A,x);for(let at=A;atX.d||!X.d)&&(X=at,h&&console.log(\"found best %d after %d probes\",Math.round(1e4*at.d)/1e4,et)),at.max-X.d<=a||(V=at.h/2,q.push(new x_(at.p.x-V,at.p.y-V,V,u)),q.push(new x_(at.p.x+V,at.p.y-V,V,u)),q.push(new x_(at.p.x-V,at.p.y+V,V,u)),q.push(new x_(at.p.x+V,at.p.y+V,V,u)),et+=4)}return h&&(console.log(`num probes: ${et}`),console.log(`best distance: ${X.d}`)),X.p}function yK(u,a){return a.max-u.max}function x_(u,a,h,A){this.p=new w(u,a),this.h=h,this.d=function(x,E){let P=!1,D=1/0;for(let F=0;Fx.y!=ct.y>x.y&&x.x<(ct.x-at.x)*(x.y-at.y)/(ct.y-at.y)+at.x&&(P=!P),D=Math.min(D,Gt(x,at,ct))}}return(P?1:-1)*Math.sqrt(D)}(this.p,A),this.max=this.d+this.h*Math.SQRT2}var Zo;n.aq=void 0,(Zo=n.aq||(n.aq={}))[Zo.center=1]=\"center\",Zo[Zo.left=2]=\"left\",Zo[Zo.right=3]=\"right\",Zo[Zo.top=4]=\"top\",Zo[Zo.bottom=5]=\"bottom\",Zo[Zo[\"top-left\"]=6]=\"top-left\",Zo[Zo[\"top-right\"]=7]=\"top-right\",Zo[Zo[\"bottom-left\"]=8]=\"bottom-left\",Zo[Zo[\"bottom-right\"]=9]=\"bottom-right\";let fA=7,_C=Number.POSITIVE_INFINITY;function DF(u,a){return a[1]!==_C?function(h,A,x){let E=0,P=0;switch(A=Math.abs(A),x=Math.abs(x),h){case\"top-right\":case\"top-left\":case\"top\":P=x-fA;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":P=-x+fA}switch(h){case\"top-right\":case\"bottom-right\":case\"right\":E=-A;break;case\"top-left\":case\"bottom-left\":case\"left\":E=A}return[E,P]}(u,a[0],a[1]):function(h,A){let x=0,E=0;A<0&&(A=0);let P=A/Math.SQRT2;switch(h){case\"top-right\":case\"top-left\":E=P-fA;break;case\"bottom-right\":case\"bottom-left\":E=-P+fA;break;case\"bottom\":E=-A+fA;break;case\"top\":E=A-fA}switch(h){case\"top-right\":case\"bottom-right\":x=-P;break;case\"top-left\":case\"bottom-left\":x=P;break;case\"left\":x=A;break;case\"right\":x=-A}return[x,E]}(u,a[0])}function OF(u,a,h){var A;let x=u.layout,E=(A=x.get(\"text-variable-anchor-offset\"))===null||A===void 0?void 0:A.evaluate(a,{},h);if(E){let D=E.values,F=[];for(let V=0;Vet*Us);q.startsWith(\"top\")?X[1]-=fA:q.startsWith(\"bottom\")&&(X[1]+=fA),F[V+1]=X}return new Vo(F)}let P=x.get(\"text-variable-anchor\");if(P){let D;D=u._unevaluatedLayout.getValue(\"text-radial-offset\")!==void 0?[x.get(\"text-radial-offset\").evaluate(a,{},h)*Us,_C]:x.get(\"text-offset\").evaluate(a,{},h).map(V=>V*Us);let F=[];for(let V of P)F.push(V,DF(V,D));return new Vo(F)}return null}function yC(u){switch(u){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function vK(u,a,h,A,x,E,P,D,F,V,q){let X=E.textMaxSize.evaluate(a,{});X===void 0&&(X=P);let et=u.layers[0].layout,at=et.get(\"icon-offset\").evaluate(a,{},q),ct=FF(h.horizontal),mt=P/24,bt=u.tilePixelRatio*mt,Et=u.tilePixelRatio*X/24,Vt=u.tilePixelRatio*D,kt=u.tilePixelRatio*et.get(\"symbol-spacing\"),jt=et.get(\"text-padding\")*u.tilePixelRatio,qt=function(Ae,ur,ir,ri=1){let xn=Ae.get(\"icon-padding\").evaluate(ur,{},ir),Ln=xn&&xn.values;return[Ln[0]*ri,Ln[1]*ri,Ln[2]*ri,Ln[3]*ri]}(et,a,q,u.tilePixelRatio),ae=et.get(\"text-max-angle\")/180*Math.PI,Be=et.get(\"text-rotation-alignment\")!==\"viewport\"&&et.get(\"symbol-placement\")!==\"point\",Je=et.get(\"icon-rotation-alignment\")===\"map\"&&et.get(\"symbol-placement\")!==\"point\",Oe=et.get(\"symbol-placement\"),ke=kt/2,Te=et.get(\"icon-text-fit\"),He;A&&Te!==\"none\"&&(u.allowVerticalPlacement&&h.vertical&&(He=sF(A,h.vertical,Te,et.get(\"icon-text-fit-padding\"),at,mt)),ct&&(A=sF(A,ct,Te,et.get(\"icon-text-fit-padding\"),at,mt)));let Pe=(Ae,ur)=>{ur.x<0||ur.x>=Xi||ur.y<0||ur.y>=Xi||function(ir,ri,xn,Ln,Vs,Hl,Va,Ps,vo,Yo,ja,Ga,js,Gs,ha,Wa,fa,Al,ml,Ws,di,da,Qo,Hs,_u){let yh=ir.addToLineVertexArray(ri,xn),vh,zd,yu,Fc,gl=0,Nd=0,qx=0,VF=0,EC=-1,PC=-1,Ud={},jF=_h(\"\");if(ir.allowVerticalPlacement&&Ln.vertical){let pa=Ps.layout.get(\"text-rotate\").evaluate(di,{},Hs)+90;yu=new XS(vo,ri,Yo,ja,Ga,Ln.vertical,js,Gs,ha,pa),Va&&(Fc=new XS(vo,ri,Yo,ja,Ga,Va,fa,Al,ha,pa))}if(Vs){let pa=Ps.layout.get(\"icon-rotate\").evaluate(di,{}),zc=Ps.layout.get(\"icon-text-fit\")!==\"none\",h0=kF(Vs,pa,Qo,zc),bh=Va?kF(Va,pa,Qo,zc):void 0;zd=new XS(vo,ri,Yo,ja,Ga,Vs,fa,Al,!1,pa),gl=4*h0.length;let f0=ir.iconSizeData,Mf=null;f0.kind===\"source\"?(Mf=[Tf*Ps.layout.get(\"icon-size\").evaluate(di,{})],Mf[0]>cA&&tr(`${ir.layerIds[0]}: Value for \"icon-size\" is >= ${jx}. Reduce your \"icon-size\".`)):f0.kind===\"composite\"&&(Mf=[Tf*da.compositeIconSizes[0].evaluate(di,{},Hs),Tf*da.compositeIconSizes[1].evaluate(di,{},Hs)],(Mf[0]>cA||Mf[1]>cA)&&tr(`${ir.layerIds[0]}: Value for \"icon-size\" is >= ${jx}. Reduce your \"icon-size\".`)),ir.addSymbols(ir.icon,h0,Mf,Ws,ml,di,n.ai.none,ri,yh.lineStartIndex,yh.lineLength,-1,Hs),EC=ir.icon.placedSymbolArray.length-1,bh&&(Nd=4*bh.length,ir.addSymbols(ir.icon,bh,Mf,Ws,ml,di,n.ai.vertical,ri,yh.lineStartIndex,yh.lineLength,-1,Hs),PC=ir.icon.placedSymbolArray.length-1)}let GF=Object.keys(Ln.horizontal);for(let pa of GF){let zc=Ln.horizontal[pa];if(!vh){jF=_h(zc.text);let bh=Ps.layout.get(\"text-rotate\").evaluate(di,{},Hs);vh=new XS(vo,ri,Yo,ja,Ga,zc,js,Gs,ha,bh)}let h0=zc.positionedLines.length===1;if(qx+=BF(ir,ri,zc,Hl,Ps,ha,di,Wa,yh,Ln.vertical?n.ai.horizontal:n.ai.horizontalOnly,h0?GF:[pa],Ud,EC,da,Hs),h0)break}Ln.vertical&&(VF+=BF(ir,ri,Ln.vertical,Hl,Ps,ha,di,Wa,yh,n.ai.vertical,[\"vertical\"],Ud,PC,da,Hs));let wK=vh?vh.boxStartIndex:ir.collisionBoxArray.length,SK=vh?vh.boxEndIndex:ir.collisionBoxArray.length,TK=yu?yu.boxStartIndex:ir.collisionBoxArray.length,MK=yu?yu.boxEndIndex:ir.collisionBoxArray.length,EK=zd?zd.boxStartIndex:ir.collisionBoxArray.length,PK=zd?zd.boxEndIndex:ir.collisionBoxArray.length,IK=Fc?Fc.boxStartIndex:ir.collisionBoxArray.length,CK=Fc?Fc.boxEndIndex:ir.collisionBoxArray.length,xh=-1,JS=(pa,zc)=>pa&&pa.circleDiameter?Math.max(pa.circleDiameter,zc):zc;xh=JS(vh,xh),xh=JS(yu,xh),xh=JS(zd,xh),xh=JS(Fc,xh);let WF=xh>-1?1:0;WF&&(xh*=_u/Us),ir.glyphOffsetArray.length>=y_.MAX_GLYPHS&&tr(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),di.sortKey!==void 0&&ir.addToSortKeyRanges(ir.symbolInstances.length,di.sortKey);let LK=OF(Ps,di,Hs),[kK,RK]=function(pa,zc){let h0=pa.length,bh=zc?.values;if(bh?.length>0)for(let f0=0;f0=0?Ud.right:-1,Ud.center>=0?Ud.center:-1,Ud.left>=0?Ud.left:-1,Ud.vertical||-1,EC,PC,jF,wK,SK,TK,MK,EK,PK,IK,CK,Yo,qx,VF,gl,Nd,WF,0,js,xh,kK,RK)}(u,ur,Ae,h,A,x,He,u.layers[0],u.collisionBoxArray,a.index,a.sourceLayerIndex,u.index,bt,[jt,jt,jt,jt],Be,F,Vt,qt,Je,at,a,E,V,q,P)};if(Oe===\"line\")for(let Ae of MF(a.geometry,0,0,Xi,Xi)){let ur=AK(Ae,kt,ae,h.vertical||ct,A,24,Et,u.overscaling,Xi);for(let ir of ur)ct&&xK(u,ct.text,ke,ir)||Pe(Ae,ir)}else if(Oe===\"line-center\"){for(let Ae of a.geometry)if(Ae.length>1){let ur=pK(Ae,ae,h.vertical||ct,A,24,Et);ur&&Pe(Ae,ur)}}else if(a.type===\"Polygon\")for(let Ae of XI(a.geometry,0)){let ur=_K(Ae,16);Pe(Ae[0],new hA(ur.x,ur.y,0))}else if(a.type===\"LineString\")for(let Ae of a.geometry)Pe(Ae,new hA(Ae[0].x,Ae[0].y,0));else if(a.type===\"Point\")for(let Ae of a.geometry)for(let ur of Ae)Pe([ur],new hA(ur.x,ur.y,0))}function BF(u,a,h,A,x,E,P,D,F,V,q,X,et,at,ct){let mt=function(Vt,kt,jt,qt,ae,Be,Je,Oe){let ke=qt.layout.get(\"text-rotate\").evaluate(Be,{})*Math.PI/180,Te=[];for(let He of kt.positionedLines)for(let Pe of He.positionedGlyphs){if(!Pe.rect)continue;let Ae=Pe.rect||{},ur=K6+1,ir=!0,ri=1,xn=0,Ln=(ae||Oe)&&Pe.vertical,Vs=Pe.metrics.advance*Pe.scale/2;if(Oe&&kt.verticalizable&&(xn=He.lineOffset/2-(Pe.imageName?-(Us-Pe.metrics.width*Pe.scale)/2:(Pe.scale-1)*Us)),Pe.imageName){let Ws=Je[Pe.imageName];ir=Ws.sdf,ri=Ws.pixelRatio,ur=pl/ri}let Hl=ae?[Pe.x+Vs,Pe.y]:[0,0],Va=ae?[0,0]:[Pe.x+Vs+jt[0],Pe.y+jt[1]-xn],Ps=[0,0];Ln&&(Ps=Va,Va=[0,0]);let vo=Pe.metrics.isDoubleResolution?2:1,Yo=(Pe.metrics.left-ur)*Pe.scale-Vs+Va[0],ja=(-Pe.metrics.top-ur)*Pe.scale+Va[1],Ga=Yo+Ae.w/vo*Pe.scale/ri,js=ja+Ae.h/vo*Pe.scale/ri,Gs=new w(Yo,ja),ha=new w(Ga,ja),Wa=new w(Yo,js),fa=new w(Ga,js);if(Ln){let Ws=new w(-Vs,Vs-Ux),di=-Math.PI/2,da=Us/2-Vs,Qo=new w(5-Ux-da,-(Pe.imageName?da:0)),Hs=new w(...Ps);Gs._rotateAround(di,Ws)._add(Qo)._add(Hs),ha._rotateAround(di,Ws)._add(Qo)._add(Hs),Wa._rotateAround(di,Ws)._add(Qo)._add(Hs),fa._rotateAround(di,Ws)._add(Qo)._add(Hs)}if(ke){let Ws=Math.sin(ke),di=Math.cos(ke),da=[di,-Ws,Ws,di];Gs._matMult(da),ha._matMult(da),Wa._matMult(da),fa._matMult(da)}let Al=new w(0,0),ml=new w(0,0);Te.push({tl:Gs,tr:ha,bl:Wa,br:fa,tex:Ae,writingMode:kt.writingMode,glyphOffset:Hl,sectionIndex:Pe.sectionIndex,isSDF:ir,pixelOffsetTL:Al,pixelOffsetBR:ml,minFontScaleX:0,minFontScaleY:0})}return Te}(0,h,D,x,E,P,A,u.allowVerticalPlacement),bt=u.textSizeData,Et=null;bt.kind===\"source\"?(Et=[Tf*x.layout.get(\"text-size\").evaluate(P,{})],Et[0]>cA&&tr(`${u.layerIds[0]}: Value for \"text-size\" is >= ${jx}. Reduce your \"text-size\".`)):bt.kind===\"composite\"&&(Et=[Tf*at.compositeTextSizes[0].evaluate(P,{},ct),Tf*at.compositeTextSizes[1].evaluate(P,{},ct)],(Et[0]>cA||Et[1]>cA)&&tr(`${u.layerIds[0]}: Value for \"text-size\" is >= ${jx}. Reduce your \"text-size\".`)),u.addSymbols(u.text,mt,Et,D,E,P,V,a,F.lineStartIndex,F.lineLength,et,ct);for(let Vt of q)X[Vt]=u.text.placedSymbolArray.length-1;return 4*mt.length}function FF(u){for(let a in u)return u[a];return null}function xK(u,a,h,A){let x=u.compareText;if(a in x){let E=x[a];for(let P=E.length-1;P>=0;P--)if(A.dist(E[P])>4;if(x!==1)throw new Error(`Got v${x} data when expected v1.`);let E=zF[15&A];if(!E)throw new Error(\"Unrecognized array type.\");let[P]=new Uint16Array(a,2,1),[D]=new Uint32Array(a,4,1);return new vC(D,P,E,a)}constructor(a,h=64,A=Float64Array,x){if(isNaN(a)||a<0)throw new Error(`Unpexpected numItems value: ${a}.`);this.numItems=+a,this.nodeSize=Math.min(Math.max(+h,2),65535),this.ArrayType=A,this.IndexArrayType=a<65536?Uint16Array:Uint32Array;let E=zF.indexOf(this.ArrayType),P=2*a*this.ArrayType.BYTES_PER_ELEMENT,D=a*this.IndexArrayType.BYTES_PER_ELEMENT,F=(8-D%8)%8;if(E<0)throw new Error(`Unexpected typed array class: ${A}.`);x&&x instanceof ArrayBuffer?(this.data=x,this.ids=new this.IndexArrayType(this.data,8,a),this.coords=new this.ArrayType(this.data,8+D+F,2*a),this._pos=2*a,this._finished=!0):(this.data=new ArrayBuffer(8+P+D+F),this.ids=new this.IndexArrayType(this.data,8,a),this.coords=new this.ArrayType(this.data,8+D+F,2*a),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+E]),new Uint16Array(this.data,2,1)[0]=h,new Uint32Array(this.data,4,1)[0]=a)}add(a,h){let A=this._pos>>1;return this.ids[A]=A,this.coords[this._pos++]=a,this.coords[this._pos++]=h,A}finish(){let a=this._pos>>1;if(a!==this.numItems)throw new Error(`Added ${a} items when expected ${this.numItems}.`);return xC(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(a,h,A,x){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");let{ids:E,coords:P,nodeSize:D}=this,F=[0,E.length-1,0],V=[];for(;F.length;){let q=F.pop()||0,X=F.pop()||0,et=F.pop()||0;if(X-et<=D){for(let bt=et;bt<=X;bt++){let Et=P[2*bt],Vt=P[2*bt+1];Et>=a&&Et<=A&&Vt>=h&&Vt<=x&&V.push(E[bt])}continue}let at=et+X>>1,ct=P[2*at],mt=P[2*at+1];ct>=a&&ct<=A&&mt>=h&&mt<=x&&V.push(E[at]),(q===0?a<=ct:h<=mt)&&(F.push(et),F.push(at-1),F.push(1-q)),(q===0?A>=ct:x>=mt)&&(F.push(at+1),F.push(X),F.push(1-q))}return V}within(a,h,A){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");let{ids:x,coords:E,nodeSize:P}=this,D=[0,x.length-1,0],F=[],V=A*A;for(;D.length;){let q=D.pop()||0,X=D.pop()||0,et=D.pop()||0;if(X-et<=P){for(let bt=et;bt<=X;bt++)UF(E[2*bt],E[2*bt+1],a,h)<=V&&F.push(x[bt]);continue}let at=et+X>>1,ct=E[2*at],mt=E[2*at+1];UF(ct,mt,a,h)<=V&&F.push(x[at]),(q===0?a-A<=ct:h-A<=mt)&&(D.push(et),D.push(at-1),D.push(1-q)),(q===0?a+A>=ct:h+A>=mt)&&(D.push(at+1),D.push(X),D.push(1-q))}return F}}function xC(u,a,h,A,x,E){if(x-A<=h)return;let P=A+x>>1;NF(u,a,P,A,x,E),xC(u,a,h,A,P-1,1-E),xC(u,a,h,P+1,x,1-E)}function NF(u,a,h,A,x,E){for(;x>A;){if(x-A>600){let V=x-A+1,q=h-A+1,X=Math.log(V),et=.5*Math.exp(2*X/3),at=.5*Math.sqrt(X*et*(V-et)/V)*(q-V/2<0?-1:1);NF(u,a,h,Math.max(A,Math.floor(h-q*et/V+at)),Math.min(x,Math.floor(h+(V-q)*et/V+at)),E)}let P=a[2*h+E],D=A,F=x;for(Wx(u,a,A,h),a[2*x+E]>P&&Wx(u,a,A,x);DP;)F--}a[2*A+E]===P?Wx(u,a,A,F):(F++,Wx(u,a,F,x)),F<=h&&(A=F+1),h<=F&&(x=F-1)}}function Wx(u,a,h,A){bC(u,h,A),bC(a,2*h,2*A),bC(a,2*h+1,2*A+1)}function bC(u,a,h){let A=u[a];u[a]=u[h],u[h]=A}function UF(u,a,h,A){let x=u-h,E=a-A;return x*x+E*E}var wC;n.bh=void 0,(wC=n.bh||(n.bh={})).create=\"create\",wC.load=\"load\",wC.fullLoad=\"fullLoad\";let KS=null,Hx=[],SC=1e3/60,TC=\"loadTime\",MC=\"fullLoadTime\",bK={mark(u){performance.mark(u)},frame(u){let a=u;KS!=null&&Hx.push(a-KS),KS=a},clearMetrics(){KS=null,Hx=[],performance.clearMeasures(TC),performance.clearMeasures(MC);for(let u in n.bh)performance.clearMarks(n.bh[u])},getPerformanceMetrics(){performance.measure(TC,n.bh.create,n.bh.load),performance.measure(MC,n.bh.create,n.bh.fullLoad);let u=performance.getEntriesByName(TC)[0].duration,a=performance.getEntriesByName(MC)[0].duration,h=Hx.length,A=1/(Hx.reduce((E,P)=>E+P,0)/h/1e3),x=Hx.filter(E=>E>SC).reduce((E,P)=>E+(P-SC)/SC,0);return{loadTime:u,fullLoadTime:a,fps:A,percentDroppedFrames:x/(h+x)*100,totalFrames:h}}};n.$=function(u,a,h){var A,x,E,P,D,F,V,q,X,et,at,ct,mt=h[0],bt=h[1],Et=h[2];return a===u?(u[12]=a[0]*mt+a[4]*bt+a[8]*Et+a[12],u[13]=a[1]*mt+a[5]*bt+a[9]*Et+a[13],u[14]=a[2]*mt+a[6]*bt+a[10]*Et+a[14],u[15]=a[3]*mt+a[7]*bt+a[11]*Et+a[15]):(x=a[1],E=a[2],P=a[3],D=a[4],F=a[5],V=a[6],q=a[7],X=a[8],et=a[9],at=a[10],ct=a[11],u[0]=A=a[0],u[1]=x,u[2]=E,u[3]=P,u[4]=D,u[5]=F,u[6]=V,u[7]=q,u[8]=X,u[9]=et,u[10]=at,u[11]=ct,u[12]=A*mt+D*bt+X*Et+a[12],u[13]=x*mt+F*bt+et*Et+a[13],u[14]=E*mt+V*bt+at*Et+a[14],u[15]=P*mt+q*bt+ct*Et+a[15]),u},n.A=ze,n.B=Ra,n.C=class{constructor(u,a,h){this.receive=A=>{let x=A.data,E=x.id;if(E&&(!x.targetMapId||this.mapId===x.targetMapId))if(x.type===\"\"){delete this.tasks[E];let P=this.cancelCallbacks[E];delete this.cancelCallbacks[E],P&&P()}else zi()||x.mustQueue?(this.tasks[E]=x,this.taskQueue.push(E),this.invoker.trigger()):this.processTask(E,x)},this.process=()=>{if(!this.taskQueue.length)return;let A=this.taskQueue.shift(),x=this.tasks[A];delete this.tasks[A],this.taskQueue.length&&this.invoker.trigger(),x&&this.processTask(A,x)},this.target=u,this.parent=a,this.mapId=h,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new fK(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=zi()?u:window}send(u,a,h,A,x=!1){let E=Math.round(1e18*Math.random()).toString(36).substring(0,10);h&&(this.callbacks[E]=h);let P=[],D={id:E,type:u,hasCallback:!!h,targetMapId:A,mustQueue:x,sourceMapId:this.mapId,data:Vl(a,P)};return this.target.postMessage(D,{transfer:P}),{cancel:()=>{h&&delete this.callbacks[E],this.target.postMessage({id:E,type:\"\",targetMapId:A,sourceMapId:this.mapId})}}}processTask(u,a){if(a.type===\"\"){let h=this.callbacks[u];delete this.callbacks[u],h&&(a.error?h(yf(a.error)):h(null,yf(a.data)))}else{let h=!1,A=[],x=a.hasCallback?(D,F)=>{h=!0,delete this.cancelCallbacks[u];let V={id:u,type:\"\",sourceMapId:this.mapId,error:D?Vl(D):null,data:Vl(F,A)};this.target.postMessage(V,{transfer:A})}:D=>{h=!0},E=null,P=yf(a.data);if(this.parent[a.type])E=this.parent[a.type](a.sourceMapId,P,x);else if(\"getWorkerSource\"in this.parent){let D=a.type.split(\".\");E=this.parent.getWorkerSource(a.sourceMapId,D[0],P.source)[D[1]](P,x)}else x(new Error(`Could not find function ${a.type}`));!h&&E&&E.cancel&&(this.cancelCallbacks[u]=E.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)}},n.D=rr,n.E=Ol,n.F=function(u,a){let h={};for(let A=0;A{}}},n.Y=ve,n.Z=function(){var u=new ze(16);return ze!=Float32Array&&(u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=0,u[12]=0,u[13]=0,u[14]=0),u[0]=1,u[5]=1,u[10]=1,u[15]=1,u},n._=o,n.a=Pc,n.a$=class extends st{},n.a0=function(u,a,h){var A=h[0],x=h[1],E=h[2];return u[0]=a[0]*A,u[1]=a[1]*A,u[2]=a[2]*A,u[3]=a[3]*A,u[4]=a[4]*x,u[5]=a[5]*x,u[6]=a[6]*x,u[7]=a[7]*x,u[8]=a[8]*E,u[9]=a[9]*E,u[10]=a[10]*E,u[11]=a[11]*E,u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15],u},n.a1=Gi,n.a2=function(){return Kt++},n.a3=yt,n.a4=y_,n.a5=function(){ua.isLoading()||ua.isLoaded()||a0()!==\"deferred\"||c_()},n.a6=Xm,n.a7=S,n.a8=ln,n.a9=bF,n.aA=Rc,n.aB=function(u){u=u.slice();let a=Object.create(null);for(let h=0;h{A[P.source]?h.push({command:oi.removeLayer,args:[P.id]}):E.push(P)}),h=h.concat(x),function(P,D,F){D=D||[];let V=(P=P||[]).map(Pa),q=D.map(Pa),X=P.reduce(Ao,{}),et=D.reduce(Ao,{}),at=V.slice(),ct=Object.create(null),mt,bt,Et,Vt,kt,jt,qt;for(mt=0,bt=0;mt@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(h,A,x,E)=>{let P=x||E;return a[A]=!P||P.toLowerCase(),\"\"}),a[\"max-age\"]){let h=parseInt(a[\"max-age\"],10);isNaN(h)?delete a[\"max-age\"]:a[\"max-age\"]=h}return a},n.ab=function(u,a){let h=[];for(let A in u)A in a||h.push(A);return h},n.ac=function(u){if(Bo==null){let a=u.navigator?u.navigator.userAgent:null;Bo=!!u.safari||!(!a||!(/\\b(iPad|iPhone|iPod)\\b/.test(a)||a.match(\"Safari\")&&!a.match(\"Chrome\")))}return Bo},n.ad=ut,n.ae=function(u,a,h){var A=Math.sin(h),x=Math.cos(h),E=a[0],P=a[1],D=a[2],F=a[3],V=a[4],q=a[5],X=a[6],et=a[7];return a!==u&&(u[8]=a[8],u[9]=a[9],u[10]=a[10],u[11]=a[11],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15]),u[0]=E*x+V*A,u[1]=P*x+q*A,u[2]=D*x+X*A,u[3]=F*x+et*A,u[4]=V*x-E*A,u[5]=q*x-P*A,u[6]=X*x-D*A,u[7]=et*x-F*A,u},n.af=function(u){var a=new ze(16);return a[0]=u[0],a[1]=u[1],a[2]=u[2],a[3]=u[3],a[4]=u[4],a[5]=u[5],a[6]=u[6],a[7]=u[7],a[8]=u[8],a[9]=u[9],a[10]=u[10],a[11]=u[11],a[12]=u[12],a[13]=u[13],a[14]=u[14],a[15]=u[15],a},n.ag=Ei,n.ah=function(u,a){let h=0,A=0;if(u.kind===\"constant\")A=u.layoutSize;else if(u.kind!==\"source\"){let{interpolationType:x,minZoom:E,maxZoom:P}=u,D=x?ut(Da.interpolationFactor(x,a,E,P),0,1):0;u.kind===\"camera\"?A=Ra.number(u.minSize,u.maxSize,D):h=D}return{uSizeT:h,uSize:A}},n.aj=function(u,{uSize:a,uSizeT:h},{lowerSize:A,upperSize:x}){return u.kind===\"source\"?A/Tf:u.kind===\"composite\"?Ra.number(A/Tf,x/Tf,h):a},n.ak=hC,n.al=function(u,a,h,A){let x=a.y-u.y,E=a.x-u.x,P=A.y-h.y,D=A.x-h.x,F=P*E-D*x;if(F===0)return null;let V=(D*(u.y-h.y)-P*(u.x-h.x))/F;return new w(u.x+V*E,u.y+V*x)},n.am=MF,n.an=L,n.ao=Zr,n.ap=Us,n.ar=uC,n.as=function(u,a){var h=a[0],A=a[1],x=a[2],E=a[3],P=a[4],D=a[5],F=a[6],V=a[7],q=a[8],X=a[9],et=a[10],at=a[11],ct=a[12],mt=a[13],bt=a[14],Et=a[15],Vt=h*D-A*P,kt=h*F-x*P,jt=h*V-E*P,qt=A*F-x*D,ae=A*V-E*D,Be=x*V-E*F,Je=q*mt-X*ct,Oe=q*bt-et*ct,ke=q*Et-at*ct,Te=X*bt-et*mt,He=X*Et-at*mt,Pe=et*Et-at*bt,Ae=Vt*Pe-kt*He+jt*Te+qt*ke-ae*Oe+Be*Je;return Ae?(u[0]=(D*Pe-F*He+V*Te)*(Ae=1/Ae),u[1]=(x*He-A*Pe-E*Te)*Ae,u[2]=(mt*Be-bt*ae+Et*qt)*Ae,u[3]=(et*ae-X*Be-at*qt)*Ae,u[4]=(F*ke-P*Pe-V*Oe)*Ae,u[5]=(h*Pe-x*ke+E*Oe)*Ae,u[6]=(bt*jt-ct*Be-Et*kt)*Ae,u[7]=(q*Be-et*jt+at*kt)*Ae,u[8]=(P*He-D*ke+V*Je)*Ae,u[9]=(A*ke-h*He-E*Je)*Ae,u[10]=(ct*ae-mt*jt+Et*Vt)*Ae,u[11]=(X*jt-q*ae-at*Vt)*Ae,u[12]=(D*Oe-P*Te-F*Je)*Ae,u[13]=(h*Te-A*Oe+x*Je)*Ae,u[14]=(mt*kt-ct*qt-bt*Vt)*Ae,u[15]=(q*qt-X*kt+et*Vt)*Ae,u):null},n.at=yC,n.au=cC,n.av=vC,n.aw=function(){let u={},a=te.$version;for(let h in te.$root){let A=te.$root[h];if(A.required){let x=null;x=h===\"version\"?a:A.type===\"array\"?[]:{},x!=null&&(u[h]=x)}}return u},n.ax=oi,n.ay=a_,n.az=$n,n.b=function(u,a){let h=new Blob([new Uint8Array(u)],{type:\"image/png\"});createImageBitmap(h).then(A=>{a(null,A)}).catch(A=>{a(new Error(`Could not load image because of ${A.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})},n.b0=zs,n.b1=function(u,a){var h=u[0],A=u[1],x=u[2],E=u[3],P=u[4],D=u[5],F=u[6],V=u[7],q=u[8],X=u[9],et=u[10],at=u[11],ct=u[12],mt=u[13],bt=u[14],Et=u[15],Vt=a[0],kt=a[1],jt=a[2],qt=a[3],ae=a[4],Be=a[5],Je=a[6],Oe=a[7],ke=a[8],Te=a[9],He=a[10],Pe=a[11],Ae=a[12],ur=a[13],ir=a[14],ri=a[15];return Math.abs(h-Vt)<=be*Math.max(1,Math.abs(h),Math.abs(Vt))&&Math.abs(A-kt)<=be*Math.max(1,Math.abs(A),Math.abs(kt))&&Math.abs(x-jt)<=be*Math.max(1,Math.abs(x),Math.abs(jt))&&Math.abs(E-qt)<=be*Math.max(1,Math.abs(E),Math.abs(qt))&&Math.abs(P-ae)<=be*Math.max(1,Math.abs(P),Math.abs(ae))&&Math.abs(D-Be)<=be*Math.max(1,Math.abs(D),Math.abs(Be))&&Math.abs(F-Je)<=be*Math.max(1,Math.abs(F),Math.abs(Je))&&Math.abs(V-Oe)<=be*Math.max(1,Math.abs(V),Math.abs(Oe))&&Math.abs(q-ke)<=be*Math.max(1,Math.abs(q),Math.abs(ke))&&Math.abs(X-Te)<=be*Math.max(1,Math.abs(X),Math.abs(Te))&&Math.abs(et-He)<=be*Math.max(1,Math.abs(et),Math.abs(He))&&Math.abs(at-Pe)<=be*Math.max(1,Math.abs(at),Math.abs(Pe))&&Math.abs(ct-Ae)<=be*Math.max(1,Math.abs(ct),Math.abs(Ae))&&Math.abs(mt-ur)<=be*Math.max(1,Math.abs(mt),Math.abs(ur))&&Math.abs(bt-ir)<=be*Math.max(1,Math.abs(bt),Math.abs(ir))&&Math.abs(Et-ri)<=be*Math.max(1,Math.abs(Et),Math.abs(ri))},n.b2=function(u,a){return u[0]=a[0],u[1]=a[1],u[2]=a[2],u[3]=a[3],u[4]=a[4],u[5]=a[5],u[6]=a[6],u[7]=a[7],u[8]=a[8],u[9]=a[9],u[10]=a[10],u[11]=a[11],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15],u},n.b3=function(u,a,h){return u[0]=a[0]*h[0],u[1]=a[1]*h[1],u[2]=a[2]*h[2],u[3]=a[3]*h[3],u},n.b4=function(u,a){return u[0]*a[0]+u[1]*a[1]+u[2]*a[2]+u[3]*a[3]},n.b5=Pt,n.b6=yF,n.b7=mF,n.b8=function(u,a,h,A,x){var E,P=1/Math.tan(a/2);return u[0]=P/h,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=P,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,x!=null&&x!==1/0?(u[10]=(x+A)*(E=1/(A-x)),u[14]=2*x*A*E):(u[10]=-1,u[14]=-2*A),u},n.b9=function(u,a,h){var A=Math.sin(h),x=Math.cos(h),E=a[4],P=a[5],D=a[6],F=a[7],V=a[8],q=a[9],X=a[10],et=a[11];return a!==u&&(u[0]=a[0],u[1]=a[1],u[2]=a[2],u[3]=a[3],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15]),u[4]=E*x+V*A,u[5]=P*x+q*A,u[6]=D*x+X*A,u[7]=F*x+et*A,u[8]=V*x-E*A,u[9]=q*x-P*A,u[10]=X*x-D*A,u[11]=et*x-F*A,u},n.bA=f,n.bB=H6,n.bC=qp,n.bD=ua,n.ba=K,n.bb=tt,n.bc=function(u,a){return u[0]=a[0],u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a[1],u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[10]=a[2],u[11]=0,u[12]=0,u[13]=0,u[14]=0,u[15]=1,u},n.bd=class extends mh{},n.be=AC,n.bf=gF,n.bg=bK,n.bi=Zi,n.bj=function(u,a,h=!1){if(ls===s0||ls===tA||ls===eA)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");Au=Ic.resolveURL(u),ls=s0,dh=a,o0(),h||c_()},n.bk=a0,n.bl=function(u,a){let h={};for(let x=0;xAe*Us)}let Oe=P?\"center\":h.get(\"text-justify\").evaluate(V,{},u.canonical),ke=h.get(\"symbol-placement\"),Te=ke===\"point\"?h.get(\"text-max-width\").evaluate(V,{},u.canonical)*Us:0,He=()=>{u.bucket.allowVerticalPlacement&&e0(jt)&&(ct.vertical=GS(mt,u.glyphMap,u.glyphPositions,u.imagePositions,q,Te,E,Be,\"left\",ae,Et,n.ai.vertical,!0,ke,et,X))};if(!P&&Je){let Pe=new Set;if(Oe===\"auto\")for(let ur=0;ur{a(null,h),URL.revokeObjectURL(h.src),h.onload=null,window.requestAnimationFrame(()=>{h.src=Fo})},h.onerror=()=>a(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));let A=new Blob([new Uint8Array(u)],{type:\"image/png\"});h.src=u.byteLength?URL.createObjectURL(A):Fo},n.e=Ot,n.f=function(u,a){return No(Ot(u,{type:\"json\"}),a)},n.g=Ii,n.h=Ic,n.i=zi,n.j=to,n.k=ss,n.l=ol,n.m=No,n.n=function(u){return new sC(u).readFields(XX,[])},n.o=function(u,a,h){if(!u.length)return h(null,[]);let A=u.length,x=new Array(u.length),E=null;u.forEach((P,D)=>{a(P,(F,V)=>{F&&(E=F),x[D]=V,--A==0&&h(E,x)})})},n.p=J6,n.q=kx,n.r=Gn,n.s=fo,n.t=uh,n.u=Re,n.v=te,n.w=tr,n.x=hh,n.y=Fa,n.z=function([u,a,h]){return a+=90,a*=Math.PI/180,h*=Math.PI/180,{x:u*Math.cos(a)*Math.sin(h),y:u*Math.sin(a)*Math.sin(h),z:u*Math.cos(h)}}}),i([\"./shared\"],function(n){\"use strict\";class o{constructor(J){this.keyCache={},J&&this.replace(J)}replace(J){this._layerConfigs={},this._layers={},this.update(J,[])}update(J,nt){for(let vt of J){this._layerConfigs[vt.id]=vt;let xt=this._layers[vt.id]=n.aC(vt);xt._featureFilter=n.a6(xt.filter),this.keyCache[vt.id]&&delete this.keyCache[vt.id]}for(let vt of nt)delete this.keyCache[vt],delete this._layerConfigs[vt],delete this._layers[vt];this.familiesBySource={};let ht=n.bl(Object.values(this._layerConfigs),this.keyCache);for(let vt of ht){let xt=vt.map(ne=>this._layers[ne.id]),_t=xt[0];if(_t.visibility===\"none\")continue;let Dt=_t.source||\"\",Mt=this.familiesBySource[Dt];Mt||(Mt=this.familiesBySource[Dt]={});let Ut=_t.sourceLayer||\"_geojsonTileLayer\",re=Mt[Ut];re||(re=Mt[Ut]=[]),re.push(xt)}}}class c{constructor(J){let nt={},ht=[];for(let Dt in J){let Mt=J[Dt],Ut=nt[Dt]={};for(let re in Mt){let ne=Mt[+re];if(!ne||ne.bitmap.width===0||ne.bitmap.height===0)continue;let oe={x:0,y:0,w:ne.bitmap.width+2,h:ne.bitmap.height+2};ht.push(oe),Ut[re]={rect:oe,metrics:ne.metrics}}}let{w:vt,h:xt}=n.p(ht),_t=new n.q({width:vt||1,height:xt||1});for(let Dt in J){let Mt=J[Dt];for(let Ut in Mt){let re=Mt[+Ut];if(!re||re.bitmap.width===0||re.bitmap.height===0)continue;let ne=nt[Dt][Ut].rect;n.q.copy(re.bitmap,_t,{x:0,y:0},{x:ne.x+1,y:ne.y+1},re.bitmap)}}this.image=_t,this.positions=nt}}n.bm(\"GlyphAtlas\",c);class f{constructor(J){this.tileID=new n.O(J.tileID.overscaledZ,J.tileID.wrap,J.tileID.canonical.z,J.tileID.canonical.x,J.tileID.canonical.y),this.uid=J.uid,this.zoom=J.zoom,this.pixelRatio=J.pixelRatio,this.tileSize=J.tileSize,this.source=J.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=J.showCollisionBoxes,this.collectResourceTiming=!!J.collectResourceTiming,this.returnDependencies=!!J.returnDependencies,this.promoteId=J.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1}parse(J,nt,ht,vt,xt){this.status=\"parsing\",this.data=J,this.collisionBoxArray=new n.a3;let _t=new n.bn(Object.keys(J.layers).sort()),Dt=new n.bo(this.tileID,this.promoteId);Dt.bucketLayerIDs=[];let Mt={},Ut={featureIndex:Dt,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:ht},re=nt.familiesBySource[this.source];for(let ni in re){let Hr=J.layers[ni];if(!Hr)continue;Hr.version===1&&n.w(`Vector tile source \"${this.source}\" layer \"${ni}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);let Un=_t.encode(ni),Li=[];for(let gn=0;gn=Kn.maxzoom||Kn.visibility!==\"none\"&&(_(gn,this.zoom,ht),(Mt[Kn.id]=Kn.createBucket({index:Dt.bucketLayerIDs.length,layers:gn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Un,sourceID:this.source})).populate(Li,Ut,this.tileID.canonical),Dt.bucketLayerIDs.push(gn.map(oa=>oa.id)))}}let ne,oe,ar,_r,Ye=n.aH(Ut.glyphDependencies,ni=>Object.keys(ni).map(Number));this.inFlightDependencies.forEach(ni=>ni?.cancel()),this.inFlightDependencies=[];let lr=++this.dependencySentinel;Object.keys(Ye).length?this.inFlightDependencies.push(vt.send(\"getGlyphs\",{uid:this.uid,stacks:Ye,source:this.source,tileID:this.tileID,type:\"glyphs\"},(ni,Hr)=>{lr===this.dependencySentinel&&(ne||(ne=ni,oe=Hr,Bi.call(this)))})):oe={};let xr=Object.keys(Ut.iconDependencies);xr.length?this.inFlightDependencies.push(vt.send(\"getImages\",{icons:xr,source:this.source,tileID:this.tileID,type:\"icons\"},(ni,Hr)=>{lr===this.dependencySentinel&&(ne||(ne=ni,ar=Hr,Bi.call(this)))})):ar={};let vi=Object.keys(Ut.patternDependencies);function Bi(){if(ne)return xt(ne);if(oe&&ar&&_r){let ni=new c(oe),Hr=new n.bp(ar,_r);for(let Un in Mt){let Li=Mt[Un];Li instanceof n.a4?(_(Li.layers,this.zoom,ht),n.bq({bucket:Li,glyphMap:oe,glyphPositions:ni.positions,imageMap:ar,imagePositions:Hr.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Li.hasPattern&&(Li instanceof n.br||Li instanceof n.bs||Li instanceof n.bt)&&(_(Li.layers,this.zoom,ht),Li.addFeatures(Ut,this.tileID.canonical,Hr.patternPositions))}this.status=\"done\",xt(null,{buckets:Object.values(Mt).filter(Un=>!Un.isEmpty()),featureIndex:Dt,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:ni.image,imageAtlas:Hr,glyphMap:this.returnDependencies?oe:null,iconMap:this.returnDependencies?ar:null,glyphPositions:this.returnDependencies?ni.positions:null})}}vi.length?this.inFlightDependencies.push(vt.send(\"getImages\",{icons:vi,source:this.source,tileID:this.tileID,type:\"patterns\"},(ni,Hr)=>{lr===this.dependencySentinel&&(ne||(ne=ni,_r=Hr,Bi.call(this)))})):_r={},Bi.call(this)}}function _(gt,J,nt){let ht=new n.a8(J);for(let vt of gt)vt.recalculate(ht,nt)}function w(gt,J){let nt=n.l(gt.request,(ht,vt,xt,_t)=>{if(ht)J(ht);else if(vt)try{let Dt=new n.bw.VectorTile(new n.bv(vt));J(null,{vectorTile:Dt,rawData:vt,cacheControl:xt,expires:_t})}catch(Dt){let Mt=new Uint8Array(vt),Ut=`Unable to parse the tile at ${gt.request.url}, `;Ut+=Mt[0]===31&&Mt[1]===139?\"please make sure the data is not gzipped and that you have configured the relevant header in the server\":`got error: ${Dt.messge}`,J(new Error(Ut))}});return()=>{nt.cancel(),J()}}class C{constructor(J,nt,ht,vt){this.actor=J,this.layerIndex=nt,this.availableImages=ht,this.loadVectorData=vt||w,this.fetching={},this.loading={},this.loaded={}}loadTile(J,nt){let ht=J.uid;this.loading||(this.loading={});let vt=!!(J&&J.request&&J.request.collectResourceTiming)&&new n.bu(J.request),xt=this.loading[ht]=new f(J);xt.abort=this.loadVectorData(J,(_t,Dt)=>{if(delete this.loading[ht],_t||!Dt)return xt.status=\"done\",this.loaded[ht]=xt,nt(_t);let Mt=Dt.rawData,Ut={};Dt.expires&&(Ut.expires=Dt.expires),Dt.cacheControl&&(Ut.cacheControl=Dt.cacheControl);let re={};if(vt){let ne=vt.finish();ne&&(re.resourceTiming=JSON.parse(JSON.stringify(ne)))}xt.vectorTile=Dt.vectorTile,xt.parse(Dt.vectorTile,this.layerIndex,this.availableImages,this.actor,(ne,oe)=>{if(delete this.fetching[ht],ne||!oe)return nt(ne);nt(null,n.e({rawTileData:Mt.slice(0)},oe,Ut,re))}),this.loaded=this.loaded||{},this.loaded[ht]=xt,this.fetching[ht]={rawTileData:Mt,cacheControl:Ut,resourceTiming:re}})}reloadTile(J,nt){let ht=this.loaded,vt=J.uid;if(ht&&ht[vt]){let xt=ht[vt];xt.showCollisionBoxes=J.showCollisionBoxes,xt.status===\"parsing\"?xt.parse(xt.vectorTile,this.layerIndex,this.availableImages,this.actor,(_t,Dt)=>{if(_t||!Dt)return nt(_t,Dt);let Mt;if(this.fetching[vt]){let{rawTileData:Ut,cacheControl:re,resourceTiming:ne}=this.fetching[vt];delete this.fetching[vt],Mt=n.e({rawTileData:Ut.slice(0)},Dt,re,ne)}else Mt=Dt;nt(null,Mt)}):xt.status===\"done\"&&(xt.vectorTile?xt.parse(xt.vectorTile,this.layerIndex,this.availableImages,this.actor,nt):nt())}}abortTile(J,nt){let ht=this.loading,vt=J.uid;ht&&ht[vt]&&ht[vt].abort&&(ht[vt].abort(),delete ht[vt]),nt()}removeTile(J,nt){let ht=this.loaded,vt=J.uid;ht&&ht[vt]&&delete ht[vt],nt()}}class R{constructor(){this.loaded={}}loadTile(J,nt){return n._(this,void 0,void 0,function*(){let{uid:ht,encoding:vt,rawImageData:xt,redFactor:_t,greenFactor:Dt,blueFactor:Mt,baseShift:Ut}=J,re=xt.width+2,ne=xt.height+2,oe=n.a(xt)?new n.R({width:re,height:ne},yield n.bx(xt,-1,-1,re,ne)):xt,ar=new n.by(ht,oe,vt,_t,Dt,Mt,Ut);this.loaded=this.loaded||{},this.loaded[ht]=ar,nt(null,ar)})}removeTile(J){let nt=this.loaded,ht=J.uid;nt&&nt[ht]&&delete nt[ht]}}function N(gt,J){if(gt.length!==0){j(gt[0],J);for(var nt=1;nt=Math.abs(Dt)?nt-Mt+Dt:Dt-Mt+nt,nt=Mt}nt+ht>=0!=!!J&>.reverse()}var Y=n.bz(function gt(J,nt){var ht,vt=J&&J.type;if(vt===\"FeatureCollection\")for(ht=0;ht>31}function zi(gt,J){for(var nt=gt.loadGeometry(),ht=gt.type,vt=0,xt=0,_t=nt.length,Dt=0;Dt<_t;Dt++){var Mt=nt[Dt],Ut=1;ht===1&&(Ut=Mt.length),J.writeVarint(er(1,Ut));for(var re=ht===3?Mt.length-1:Mt.length,ne=0;negt},rh=Math.fround||(zo=new Float32Array(1),gt=>(zo[0]=+gt,zo[0]));var zo;let wi=3,Ds=5,sl=6;class Ic{constructor(J){this.options=Object.assign(Object.create(Fo),J),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(J){let{log:nt,minZoom:ht,maxZoom:vt}=this.options;nt&&console.time(\"total time\");let xt=`prepare ${J.length} points`;nt&&console.time(xt),this.points=J;let _t=[];for(let Mt=0;Mt=ht;Mt--){let Ut=+Date.now();Dt=this.trees[Mt]=this._createTree(this._cluster(Dt,Mt)),nt&&console.log(\"z%d: %d clusters in %dms\",Mt,Dt.numItems,+Date.now()-Ut)}return nt&&console.timeEnd(\"total time\"),this}getClusters(J,nt){let ht=((J[0]+180)%360+360)%360-180,vt=Math.max(-90,Math.min(90,J[1])),xt=J[2]===180?180:((J[2]+180)%360+360)%360-180,_t=Math.max(-90,Math.min(90,J[3]));if(J[2]-J[0]>=360)ht=-180,xt=180;else if(ht>xt){let ne=this.getClusters([ht,vt,180,_t],nt),oe=this.getClusters([-180,vt,xt,_t],nt);return ne.concat(oe)}let Dt=this.trees[this._limitZoom(nt)],Mt=Dt.range($n(ht),Ii(_t),$n(xt),Ii(vt)),Ut=Dt.data,re=[];for(let ne of Mt){let oe=this.stride*ne;re.push(Ut[oe+Ds]>1?Cc(Ut,oe,this.clusterProps):this.points[Ut[oe+wi]])}return re}getChildren(J){let nt=this._getOriginId(J),ht=this._getOriginZoom(J),vt=\"No cluster with the specified id.\",xt=this.trees[ht];if(!xt)throw new Error(vt);let _t=xt.data;if(nt*this.stride>=_t.length)throw new Error(vt);let Dt=this.options.radius/(this.options.extent*Math.pow(2,ht-1)),Mt=xt.within(_t[nt*this.stride],_t[nt*this.stride+1],Dt),Ut=[];for(let re of Mt){let ne=re*this.stride;_t[ne+4]===J&&Ut.push(_t[ne+Ds]>1?Cc(_t,ne,this.clusterProps):this.points[_t[ne+wi]])}if(Ut.length===0)throw new Error(vt);return Ut}getLeaves(J,nt,ht){let vt=[];return this._appendLeaves(vt,J,nt=nt||10,ht=ht||0,0),vt}getTile(J,nt,ht){let vt=this.trees[this._limitZoom(J)],xt=Math.pow(2,J),{extent:_t,radius:Dt}=this.options,Mt=Dt/_t,Ut=(ht-Mt)/xt,re=(ht+1+Mt)/xt,ne={features:[]};return this._addTileFeatures(vt.range((nt-Mt)/xt,Ut,(nt+1+Mt)/xt,re),vt.data,nt,ht,xt,ne),nt===0&&this._addTileFeatures(vt.range(1-Mt/xt,Ut,1,re),vt.data,xt,ht,xt,ne),nt===xt-1&&this._addTileFeatures(vt.range(0,Ut,Mt/xt,re),vt.data,-1,ht,xt,ne),ne.features.length?ne:null}getClusterExpansionZoom(J){let nt=this._getOriginZoom(J)-1;for(;nt<=this.options.maxZoom;){let ht=this.getChildren(J);if(nt++,ht.length!==1)break;J=ht[0].properties.cluster_id}return nt}_appendLeaves(J,nt,ht,vt,xt){let _t=this.getChildren(nt);for(let Dt of _t){let Mt=Dt.properties;if(Mt&&Mt.cluster?xt+Mt.point_count<=vt?xt+=Mt.point_count:xt=this._appendLeaves(J,Mt.cluster_id,ht,vt,xt):xt1,re,ne,oe;if(Ut)re=Zi(nt,Mt,this.clusterProps),ne=nt[Mt],oe=nt[Mt+1];else{let Ye=this.points[nt[Mt+wi]];re=Ye.properties;let[lr,xr]=Ye.geometry.coordinates;ne=$n(lr),oe=Ii(xr)}let ar={type:1,geometry:[[Math.round(this.options.extent*(ne*xt-ht)),Math.round(this.options.extent*(oe*xt-vt))]],tags:re},_r;_r=Ut||this.options.generateId?nt[Mt+wi]:this.points[nt[Mt+wi]].id,_r!==void 0&&(ar.id=_r),_t.features.push(ar)}}_limitZoom(J){return Math.max(this.options.minZoom,Math.min(Math.floor(+J),this.options.maxZoom+1))}_cluster(J,nt){let{radius:ht,extent:vt,reduce:xt,minPoints:_t}=this.options,Dt=ht/(vt*Math.pow(2,nt)),Mt=J.data,Ut=[],re=this.stride;for(let ne=0;nent&&(lr+=Mt[vi+Ds])}if(lr>Ye&&lr>=_t){let xr,vi=oe*Ye,Bi=ar*Ye,ni=-1,Hr=((ne/re|0)<<5)+(nt+1)+this.points.length;for(let Un of _r){let Li=Un*re;if(Mt[Li+2]<=nt)continue;Mt[Li+2]=nt;let gn=Mt[Li+Ds];vi+=Mt[Li]*gn,Bi+=Mt[Li+1]*gn,Mt[Li+4]=Hr,xt&&(xr||(xr=this._map(Mt,ne,!0),ni=this.clusterProps.length,this.clusterProps.push(xr)),xt(xr,this._map(Mt,Li)))}Mt[ne+4]=Hr,Ut.push(vi/lr,Bi/lr,1/0,Hr,-1,lr),xt&&Ut.push(ni)}else{for(let xr=0;xr1)for(let xr of _r){let vi=xr*re;if(!(Mt[vi+2]<=nt)){Mt[vi+2]=nt;for(let Bi=0;Bi>5}_getOriginZoom(J){return(J-this.points.length)%32}_map(J,nt,ht){if(J[nt+Ds]>1){let _t=this.clusterProps[J[nt+sl]];return ht?Object.assign({},_t):_t}let vt=this.points[J[nt+wi]].properties,xt=this.options.map(vt);return ht&&xt===vt?Object.assign({},xt):xt}}function Cc(gt,J,nt){return{type:\"Feature\",id:gt[J+wi],properties:Zi(gt,J,nt),geometry:{type:\"Point\",coordinates:[(ht=gt[J],360*(ht-.5)),Xn(gt[J+1])]}};var ht}function Zi(gt,J,nt){let ht=gt[J+Ds],vt=ht>=1e4?`${Math.round(ht/1e3)}k`:ht>=1e3?Math.round(ht/100)/10+\"k\":ht,xt=gt[J+sl],_t=xt===-1?{}:Object.assign({},nt[xt]);return Object.assign(_t,{cluster:!0,cluster_id:gt[J+wi],point_count:ht,point_count_abbreviated:vt})}function $n(gt){return gt/360+.5}function Ii(gt){let J=Math.sin(gt*Math.PI/180),nt=.5-.25*Math.log((1+J)/(1-J))/Math.PI;return nt<0?0:nt>1?1:nt}function Xn(gt){let J=(180-360*gt)*Math.PI/180;return 360*Math.atan(Math.exp(J))/Math.PI-90}function No(gt,J,nt,ht){for(var vt,xt=ht,_t=nt-J>>1,Dt=nt-J,Mt=gt[J],Ut=gt[J+1],re=gt[nt],ne=gt[nt+1],oe=J+3;oext)vt=oe,xt=ar;else if(ar===xt){var _r=Math.abs(oe-_t);_rht&&(vt-J>3&&No(gt,J,vt,ht),gt[vt+2]=xt,nt-vt>3&&No(gt,vt,nt,ht))}function ol(gt,J,nt,ht,vt,xt){var _t=vt-nt,Dt=xt-ht;if(_t!==0||Dt!==0){var Mt=((gt-nt)*_t+(J-ht)*Dt)/(_t*_t+Dt*Dt);Mt>1?(nt=vt,ht=xt):Mt>0&&(nt+=_t*Mt,ht+=Dt*Mt)}return(_t=gt-nt)*_t+(Dt=J-ht)*Dt}function fo(gt,J,nt,ht){var vt={id:gt===void 0?null:gt,type:J,geometry:nt,tags:ht,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(xt){var _t=xt.geometry,Dt=xt.type;if(Dt===\"Point\"||Dt===\"MultiPoint\"||Dt===\"LineString\")Ea(xt,_t);else if(Dt===\"Polygon\"||Dt===\"MultiLineString\")for(var Mt=0;Mt<_t.length;Mt++)Ea(xt,_t[Mt]);else if(Dt===\"MultiPolygon\")for(Mt=0;Mt<_t.length;Mt++)for(var Ut=0;Ut<_t[Mt].length;Ut++)Ea(xt,_t[Mt][Ut])}(vt),vt}function Ea(gt,J){for(var nt=0;nt0&&(_t+=ht?(vt*Ut-Mt*xt)/2:Math.sqrt(Math.pow(Mt-vt,2)+Math.pow(Ut-xt,2))),vt=Mt,xt=Ut}var re=J.length-3;J[2]=1,No(J,0,re,nt),J[re+2]=1,J.size=Math.abs(_t),J.start=0,J.end=J.size}function Ol(gt,J,nt,ht){for(var vt=0;vt1?1:nt}function fn(gt,J,nt,ht,vt,xt,_t,Dt){if(ht/=J,xt>=(nt/=J)&&_t=ht)return null;for(var Mt=[],Ut=0;Ut=nt&&_r=ht)){var Ye=[];if(oe===\"Point\"||oe===\"MultiPoint\")gi(ne,Ye,nt,ht,vt);else if(oe===\"LineString\")oi(ne,Ye,nt,ht,vt,!1,Dt.lineMetrics);else if(oe===\"MultiLineString\")uu(ne,Ye,nt,ht,vt,!1);else if(oe===\"Polygon\")uu(ne,Ye,nt,ht,vt,!0);else if(oe===\"MultiPolygon\")for(var lr=0;lr=nt&&_t<=ht&&(J.push(gt[xt]),J.push(gt[xt+1]),J.push(gt[xt+2]))}}function oi(gt,J,nt,ht,vt,xt,_t){for(var Dt,Mt,Ut=eo(gt),re=vt===0?po:ll,ne=gt.start,oe=0;oent&&(Mt=re(Ut,ar,_r,lr,xr,nt),_t&&(Ut.start=ne+Dt*Mt)):vi>ht?Bi=nt&&(Mt=re(Ut,ar,_r,lr,xr,nt),ni=!0),Bi>ht&&vi<=ht&&(Mt=re(Ut,ar,_r,lr,xr,ht),ni=!0),!xt&&ni&&(_t&&(Ut.end=ne+Dt*Mt),J.push(Ut),Ut=eo(gt)),_t&&(ne+=Dt)}var Hr=gt.length-3;ar=gt[Hr],_r=gt[Hr+1],Ye=gt[Hr+2],(vi=vt===0?ar:_r)>=nt&&vi<=ht&&al(Ut,ar,_r,Ye),Hr=Ut.length-3,xt&&Hr>=3&&(Ut[Hr]!==Ut[0]||Ut[Hr+1]!==Ut[1])&&al(Ut,Ut[0],Ut[1],Ut[2]),Ut.length&&J.push(Ut)}function eo(gt){var J=[];return J.size=gt.size,J.start=gt.start,J.end=gt.end,J}function uu(gt,J,nt,ht,vt,xt){for(var _t=0;_t_t.maxX&&(_t.maxX=re),ne>_t.maxY&&(_t.maxY=ne)}return _t}function Bl(gt,J,nt,ht){var vt=J.geometry,xt=J.type,_t=[];if(xt===\"Point\"||xt===\"MultiPoint\")for(var Dt=0;Dt0&&J.size<(vt?_t:ht))nt.numPoints+=J.length/3;else{for(var Dt=[],Mt=0;Mt_t)&&(nt.numSimplified++,Dt.push(J[Mt]),Dt.push(J[Mt+1])),nt.numPoints++;vt&&function(Ut,re){for(var ne=0,oe=0,ar=Ut.length,_r=ar-2;oe0===re)for(oe=0,ar=Ut.length;oe24)throw new Error(\"maxZoom should be in the 0-24 range\");if(J.promoteId&&J.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var ht=function(vt,xt){var _t=[];if(vt.type===\"FeatureCollection\")for(var Dt=0;Dt1&&console.time(\"creation\"),oe=this.tiles[ne]=dn(gt,J,nt,ht,Mt),this.tileCoords.push({z:J,x:nt,y:ht}),Ut)){Ut>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",J,nt,ht,oe.numFeatures,oe.numPoints,oe.numSimplified),console.timeEnd(\"creation\"));var ar=\"z\"+J;this.stats[ar]=(this.stats[ar]||0)+1,this.total++}if(oe.source=gt,vt){if(J===Mt.maxZoom||J===vt)continue;var _r=1<1&&console.time(\"clipping\");var Ye,lr,xr,vi,Bi,ni,Hr=.5*Mt.buffer/Mt.extent,Un=.5-Hr,Li=.5+Hr,gn=1+Hr;Ye=lr=xr=vi=null,Bi=fn(gt,re,nt-Hr,nt+Li,0,oe.minX,oe.maxX,Mt),ni=fn(gt,re,nt+Un,nt+gn,0,oe.minX,oe.maxX,Mt),gt=null,Bi&&(Ye=fn(Bi,re,ht-Hr,ht+Li,1,oe.minY,oe.maxY,Mt),lr=fn(Bi,re,ht+Un,ht+gn,1,oe.minY,oe.maxY,Mt),Bi=null),ni&&(xr=fn(ni,re,ht-Hr,ht+Li,1,oe.minY,oe.maxY,Mt),vi=fn(ni,re,ht+Un,ht+gn,1,oe.minY,oe.maxY,Mt),ni=null),Ut>1&&console.timeEnd(\"clipping\"),Dt.push(Ye||[],J+1,2*nt,2*ht),Dt.push(lr||[],J+1,2*nt,2*ht+1),Dt.push(xr||[],J+1,2*nt+1,2*ht),Dt.push(vi||[],J+1,2*nt+1,2*ht+1)}}},Se.prototype.getTile=function(gt,J,nt){var ht=this.options,vt=ht.extent,xt=ht.debug;if(gt<0||gt>24)return null;var _t=1<1&&console.log(\"drilling down to z%d-%d-%d\",gt,J,nt);for(var Mt,Ut=gt,re=J,ne=nt;!Mt&&Ut>0;)Ut--,re=Math.floor(re/2),ne=Math.floor(ne/2),Mt=this.tiles[Dr(Ut,re,ne)];return Mt&&Mt.source?(xt>1&&console.log(\"found parent tile z%d-%d-%d\",Ut,re,ne),xt>1&&console.time(\"drilling down\"),this.splitTile(Mt.source,Ut,re,ne,gt,J,nt),xt>1&&console.timeEnd(\"drilling down\"),this.tiles[Dt]?ve(this.tiles[Dt],vt):null):null};class Tr extends C{constructor(J,nt,ht,vt){super(J,nt,ht),this._dataUpdateable=new Map,this.loadGeoJSON=(xt,_t)=>{let{promoteId:Dt}=xt;if(xt.request)return n.f(xt.request,(Mt,Ut,re,ne)=>{this._dataUpdateable=Os(Ut,Dt)?Ca(Ut,Dt):void 0,_t(Mt,Ut,re,ne)});if(typeof xt.data==\"string\")try{let Mt=JSON.parse(xt.data);this._dataUpdateable=Os(Mt,Dt)?Ca(Mt,Dt):void 0,_t(null,Mt)}catch{_t(new Error(`Input data given to '${xt.source}' is not a valid GeoJSON object.`))}else xt.dataDiff?this._dataUpdateable?(function(Mt,Ut,re){var ne,oe,ar,_r;if(Ut.removeAll&&Mt.clear(),Ut.remove)for(let Ye of Ut.remove)Mt.delete(Ye);if(Ut.add)for(let Ye of Ut.add){let lr=mr(Ye,re);lr!=null&&Mt.set(lr,Ye)}if(Ut.update)for(let Ye of Ut.update){let lr=Mt.get(Ye.id);if(lr==null)continue;let xr=!Ye.removeAllProperties&&(((ne=Ye.removeProperties)===null||ne===void 0?void 0:ne.length)>0||((oe=Ye.addOrUpdateProperties)===null||oe===void 0?void 0:oe.length)>0);if((Ye.newGeometry||Ye.removeAllProperties||xr)&&(lr=Object.assign({},lr),Mt.set(Ye.id,lr),xr&&(lr.properties=Object.assign({},lr.properties))),Ye.newGeometry&&(lr.geometry=Ye.newGeometry),Ye.removeAllProperties)lr.properties={};else if(((ar=Ye.removeProperties)===null||ar===void 0?void 0:ar.length)>0)for(let vi of Ye.removeProperties)Object.prototype.hasOwnProperty.call(lr.properties,vi)&&delete lr.properties[vi];if(((_r=Ye.addOrUpdateProperties)===null||_r===void 0?void 0:_r.length)>0)for(let{key:vi,value:Bi}of Ye.addOrUpdateProperties)lr.properties[vi]=Bi}}(this._dataUpdateable,xt.dataDiff,Dt),_t(null,{type:\"FeatureCollection\",features:Array.from(this._dataUpdateable.values())})):_t(new Error(`Cannot update existing geojson data in ${xt.source}`)):_t(new Error(`Input data given to '${xt.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,vt&&(this.loadGeoJSON=vt)}loadGeoJSONTile(J,nt){let ht=J.tileID.canonical;if(!this._geoJSONIndex)return nt(null,null);let vt=this._geoJSONIndex.getTile(ht.z,ht.x,ht.y);if(!vt)return nt(null,null);let xt=new class{constructor(Dt){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=n.N,this.length=Dt.length,this._features=Dt}feature(Dt){return new class{constructor(Mt){this._feature=Mt,this.extent=n.N,this.type=Mt.type,this.properties=Mt.tags,\"id\"in Mt&&!isNaN(Mt.id)&&(this.id=parseInt(Mt.id,10))}loadGeometry(){if(this._feature.type===1){let Mt=[];for(let Ut of this._feature.geometry)Mt.push([new n.P(Ut[0],Ut[1])]);return Mt}{let Mt=[];for(let Ut of this._feature.geometry){let re=[];for(let ne of Ut)re.push(new n.P(ne[0],ne[1]));Mt.push(re)}return Mt}}toGeoJSON(Mt,Ut,re){return rt.call(this,Mt,Ut,re)}}(this._features[Dt])}}(vt.features),_t=Pc(xt);_t.byteOffset===0&&_t.byteLength===_t.buffer.byteLength||(_t=new Uint8Array(_t)),nt(null,{vectorTile:xt,rawData:_t.buffer})}loadData(J,nt){var ht;(ht=this._pendingRequest)===null||ht===void 0||ht.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});let vt=!!(J&&J.request&&J.request.collectResourceTiming)&&new n.bu(J.request);this._pendingCallback=nt,this._pendingRequest=this.loadGeoJSON(J,(xt,_t)=>{if(delete this._pendingCallback,delete this._pendingRequest,xt||!_t)return nt(xt);if(typeof _t!=\"object\")return nt(new Error(`Input data given to '${J.source}' is not a valid GeoJSON object.`));{Y(_t,!0);try{if(J.filter){let Mt=n.bC(J.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(Mt.result===\"error\")throw new Error(Mt.value.map(re=>`${re.key}: ${re.message}`).join(\", \"));_t={type:\"FeatureCollection\",features:_t.features.filter(re=>Mt.value.evaluate({zoom:0},re))}}this._geoJSONIndex=J.cluster?new Ic(function({superclusterOptions:Mt,clusterProperties:Ut}){if(!Ut||!Mt)return Mt;let re={},ne={},oe={accumulated:null,zoom:0},ar={properties:null},_r=Object.keys(Ut);for(let Ye of _r){let[lr,xr]=Ut[Ye],vi=n.bC(xr),Bi=n.bC(typeof lr==\"string\"?[lr,[\"accumulated\"],[\"get\",Ye]]:lr);re[Ye]=vi.value,ne[Ye]=Bi.value}return Mt.map=Ye=>{ar.properties=Ye;let lr={};for(let xr of _r)lr[xr]=re[xr].evaluate(oe,ar);return lr},Mt.reduce=(Ye,lr)=>{ar.properties=lr;for(let xr of _r)oe.accumulated=Ye[xr],Ye[xr]=ne[xr].evaluate(oe,ar)},Mt}(J)).load(_t.features):function(Mt,Ut){return new Se(Mt,Ut)}(_t,J.geojsonVtOptions)}catch(Mt){return nt(Mt)}this.loaded={};let Dt={};if(vt){let Mt=vt.finish();Mt&&(Dt.resourceTiming={},Dt.resourceTiming[J.source]=JSON.parse(JSON.stringify(Mt)))}nt(null,Dt)}})}reloadTile(J,nt){let ht=this.loaded;return ht&&ht[J.uid]?super.reloadTile(J,nt):this.loadTile(J,nt)}removeSource(J,nt){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),nt()}getClusterExpansionZoom(J,nt){try{nt(null,this._geoJSONIndex.getClusterExpansionZoom(J.clusterId))}catch(ht){nt(ht)}}getClusterChildren(J,nt){try{nt(null,this._geoJSONIndex.getChildren(J.clusterId))}catch(ht){nt(ht)}}getClusterLeaves(J,nt){try{nt(null,this._geoJSONIndex.getLeaves(J.clusterId,J.limit,J.offset))}catch(ht){nt(ht)}}}class sa{constructor(J){this.self=J,this.actor=new n.C(J,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:C,geojson:Tr},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(nt,ht)=>{if(this.workerSourceTypes[nt])throw new Error(`Worker source with name \"${nt}\" already registered.`);this.workerSourceTypes[nt]=ht},this.self.registerRTLTextPlugin=nt=>{if(n.bD.isParsed())throw new Error(\"RTL text plugin already registered.\");n.bD.applyArabicShaping=nt.applyArabicShaping,n.bD.processBidirectionalText=nt.processBidirectionalText,n.bD.processStyledBidirectionalText=nt.processStyledBidirectionalText}}setReferrer(J,nt){this.referrer=nt}setImages(J,nt,ht){this.availableImages[J]=nt;for(let vt in this.workerSources[J]){let xt=this.workerSources[J][vt];for(let _t in xt)xt[_t].availableImages=nt}ht()}setLayers(J,nt,ht){this.getLayerIndex(J).replace(nt),ht()}updateLayers(J,nt,ht){this.getLayerIndex(J).update(nt.layers,nt.removedIds),ht()}loadTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).loadTile(nt,ht)}loadDEMTile(J,nt,ht){this.getDEMWorkerSource(J,nt.source).loadTile(nt,ht)}reloadTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).reloadTile(nt,ht)}abortTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).abortTile(nt,ht)}removeTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).removeTile(nt,ht)}removeDEMTile(J,nt){this.getDEMWorkerSource(J,nt.source).removeTile(nt)}removeSource(J,nt,ht){if(!this.workerSources[J]||!this.workerSources[J][nt.type]||!this.workerSources[J][nt.type][nt.source])return;let vt=this.workerSources[J][nt.type][nt.source];delete this.workerSources[J][nt.type][nt.source],vt.removeSource!==void 0?vt.removeSource(nt,ht):ht()}loadWorkerSource(J,nt,ht){try{this.self.importScripts(nt.url),ht()}catch(vt){ht(vt.toString())}}syncRTLPluginState(J,nt,ht){try{n.bD.setState(nt);let vt=n.bD.getPluginURL();if(n.bD.isLoaded()&&!n.bD.isParsed()&&vt!=null){this.self.importScripts(vt);let xt=n.bD.isParsed();ht(xt?void 0:new Error(`RTL Text Plugin failed to import scripts from ${vt}`),xt)}}catch(vt){ht(vt.toString())}}getAvailableImages(J){let nt=this.availableImages[J];return nt||(nt=[]),nt}getLayerIndex(J){let nt=this.layerIndexes[J];return nt||(nt=this.layerIndexes[J]=new o),nt}getWorkerSource(J,nt,ht){return this.workerSources[J]||(this.workerSources[J]={}),this.workerSources[J][nt]||(this.workerSources[J][nt]={}),this.workerSources[J][nt][ht]||(this.workerSources[J][nt][ht]=new this.workerSourceTypes[nt]({send:(vt,xt,_t)=>{this.actor.send(vt,xt,_t,J)}},this.getLayerIndex(J),this.getAvailableImages(J))),this.workerSources[J][nt][ht]}getDEMWorkerSource(J,nt){return this.demWorkerSources[J]||(this.demWorkerSources[J]={}),this.demWorkerSources[J][nt]||(this.demWorkerSources[J][nt]=new R),this.demWorkerSources[J][nt]}}return n.i()&&(self.worker=new sa(self)),sa}),i([\"./shared\"],function(n){\"use strict\";var o=\"3.6.2\";class c{static testProp(l){if(!c.docStyle)return l[0];for(let d=0;d{window.removeEventListener(\"click\",c.suppressClickInternal,!0)},0)}static mousePos(l,d){let v=l.getBoundingClientRect();return new n.P(d.clientX-v.left-l.clientLeft,d.clientY-v.top-l.clientTop)}static touchPos(l,d){let v=l.getBoundingClientRect(),b=[];for(let M=0;M{l=[],d=0,v=0,b={}},T.addThrottleControl=W=>{let Z=v++;return b[Z]=W,Z},T.removeThrottleControl=W=>{delete b[W],B()},T.getImage=(W,Z,Q=!0)=>{f.supported&&(W.headers||(W.headers={}),W.headers.accept=\"image/webp,*/*\");let st={requestParameters:W,supportImageRefresh:Q,callback:Z,cancelled:!1,completed:!1,cancel:()=>{st.completed||st.cancelled||(st.cancelled=!0,st.innerRequest&&(st.innerRequest.cancel(),d--),B())}};return l.push(st),B(),st};let M=W=>{let{requestParameters:Z,supportImageRefresh:Q,callback:st}=W;return n.e(Z,{type:\"image\"}),(Q!==!1||n.i()||n.g(Z.url)||Z.headers&&!Object.keys(Z.headers).reduce((At,pt)=>At&&pt===\"accept\",!0)?n.m:U)(Z,(At,pt,yt,dt)=>{O(W,st,At,pt,yt,dt)})},O=(W,Z,Q,st,At,pt)=>{Q?Z(Q):st instanceof HTMLImageElement||n.a(st)?Z(null,st):st&&((yt,dt)=>{typeof createImageBitmap==\"function\"?n.b(yt,dt):n.d(yt,dt)})(st,(yt,dt)=>{yt!=null?Z(yt):dt!=null&&Z(null,dt,{cacheControl:At,expires:pt})}),W.cancelled||(W.completed=!0,d--,B())},B=()=>{let W=(()=>{let Z=Object.keys(b),Q=!1;if(Z.length>0){for(let st of Z)if(Q=b[st](),Q)break}return Q})()?n.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:n.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let Z=d;Z0;Z++){let Q=l.shift();if(Q.cancelled){Z--;continue}let st=M(Q);d++,Q.innerRequest=st}},U=(W,Z)=>{let Q=new Image,st=W.url,At=!1,pt=W.credentials;return pt&&pt===\"include\"?Q.crossOrigin=\"use-credentials\":(pt&&pt===\"same-origin\"||!n.s(st))&&(Q.crossOrigin=\"anonymous\"),Q.fetchPriority=\"high\",Q.onload=()=>{Z(null,Q),Q.onerror=Q.onload=null},Q.onerror=()=>{At||Z(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\")),Q.onerror=Q.onload=null},Q.src=st,{cancel:()=>{At=!0,Q.src=\"\"}}}}(j||(j={})),j.resetRequestQueue(),function(T){T.Glyphs=\"Glyphs\",T.Image=\"Image\",T.Source=\"Source\",T.SpriteImage=\"SpriteImage\",T.SpriteJSON=\"SpriteJSON\",T.Style=\"Style\",T.Tile=\"Tile\",T.Unknown=\"Unknown\"}(Y||(Y={}));class rt{constructor(l){this._transformRequestFn=l}transformRequest(l,d){return this._transformRequestFn&&this._transformRequestFn(l,d)||{url:l}}normalizeSpriteURL(l,d,v){let b=function(M){let O=M.match($);if(!O)throw new Error(`Unable to parse URL \"${M}\"`);return{protocol:O[1],authority:O[2],path:O[3]||\"/\",params:O[4]?O[4].split(\"&\"):[]}}(l);return b.path+=`${d}${v}`,function(M){let O=M.params.length?`?${M.params.join(\"&\")}`:\"\";return`${M.protocol}://${M.authority}${M.path}${O}`}(b)}setTransformRequest(l){this._transformRequestFn=l}}let $=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function K(T){var l=new n.A(3);return l[0]=T[0],l[1]=T[1],l[2]=T[2],l}var tt,ut=function(T,l,d){return T[0]=l[0]-d[0],T[1]=l[1]-d[1],T[2]=l[2]-d[2],T};tt=new n.A(3),n.A!=Float32Array&&(tt[0]=0,tt[1]=0,tt[2]=0);var Pt=function(T){var l=T[0],d=T[1];return l*l+d*d};function Ot(T){let l=[];if(typeof T==\"string\")l.push({id:\"default\",url:T});else if(T&&T.length>0){let d=[];for(let{id:v,url:b}of T){let M=`${v}${b}`;d.indexOf(M)===-1&&(d.push(M),l.push({id:v,url:b}))}}return l}function Kt(T,l,d,v,b){if(v)return void T(v);if(b!==Object.values(l).length||b!==Object.values(d).length)return;let M={};for(let O in l){M[O]={};let B=n.h.getImageCanvasContext(d[O]),U=l[O];for(let W in U){let{width:Z,height:Q,x:st,y:At,sdf:pt,pixelRatio:yt,stretchX:dt,stretchY:Ft,content:Wt}=U[W];M[O][W]={data:null,pixelRatio:yt,sdf:pt,stretchX:dt,stretchY:Ft,content:Wt,spriteData:{width:Z,height:Q,x:st,y:At,context:B}}}}T(null,M)}(function(){var T=new n.A(2);n.A!=Float32Array&&(T[0]=0,T[1]=0)})();class Zt{constructor(l,d,v,b){this.context=l,this.format=v,this.texture=l.gl.createTexture(),this.update(d,b)}update(l,d,v){let{width:b,height:M}=l,O=!(this.size&&this.size[0]===b&&this.size[1]===M||v),{context:B}=this,{gl:U}=B;if(this.useMipmap=!!(d&&d.useMipmap),U.bindTexture(U.TEXTURE_2D,this.texture),B.pixelStoreUnpackFlipY.set(!1),B.pixelStoreUnpack.set(1),B.pixelStoreUnpackPremultiplyAlpha.set(this.format===U.RGBA&&(!d||d.premultiply!==!1)),O)this.size=[b,M],l instanceof HTMLImageElement||l instanceof HTMLCanvasElement||l instanceof HTMLVideoElement||l instanceof ImageData||n.a(l)?U.texImage2D(U.TEXTURE_2D,0,this.format,this.format,U.UNSIGNED_BYTE,l):U.texImage2D(U.TEXTURE_2D,0,this.format,b,M,0,this.format,U.UNSIGNED_BYTE,l.data);else{let{x:W,y:Z}=v||{x:0,y:0};l instanceof HTMLImageElement||l instanceof HTMLCanvasElement||l instanceof HTMLVideoElement||l instanceof ImageData||n.a(l)?U.texSubImage2D(U.TEXTURE_2D,0,W,Z,U.RGBA,U.UNSIGNED_BYTE,l):U.texSubImage2D(U.TEXTURE_2D,0,W,Z,b,M,U.RGBA,U.UNSIGNED_BYTE,l.data)}this.useMipmap&&this.isSizePowerOfTwo()&&U.generateMipmap(U.TEXTURE_2D)}bind(l,d,v){let{context:b}=this,{gl:M}=b;M.bindTexture(M.TEXTURE_2D,this.texture),v!==M.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(v=M.LINEAR),l!==this.filter&&(M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MAG_FILTER,l),M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MIN_FILTER,v||l),this.filter=l),d!==this.wrap&&(M.texParameteri(M.TEXTURE_2D,M.TEXTURE_WRAP_S,d),M.texParameteri(M.TEXTURE_2D,M.TEXTURE_WRAP_T,d),this.wrap=d)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:l}=this.context;l.deleteTexture(this.texture),this.texture=null}}function le(T){let{userImage:l}=T;return!!(l&&l.render&&l.render())&&(T.data.replace(new Uint8Array(l.data.buffer)),!0)}class ue extends n.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new n.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(l){if(this.loaded!==l&&(this.loaded=l,l)){for(let{ids:d,callback:v}of this.requestors)this._notify(d,v);this.requestors=[]}}getImage(l){let d=this.images[l];if(d&&!d.data&&d.spriteData){let v=d.spriteData;d.data=new n.R({width:v.width,height:v.height},v.context.getImageData(v.x,v.y,v.width,v.height).data),d.spriteData=null}return d}addImage(l,d){if(this.images[l])throw new Error(`Image id ${l} already exist, use updateImage instead`);this._validate(l,d)&&(this.images[l]=d)}_validate(l,d){let v=!0,b=d.data||d.spriteData;return this._validateStretch(d.stretchX,b&&b.width)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"stretchX\" value`))),v=!1),this._validateStretch(d.stretchY,b&&b.height)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"stretchY\" value`))),v=!1),this._validateContent(d.content,d)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"content\" value`))),v=!1),v}_validateStretch(l,d){if(!l)return!0;let v=0;for(let b of l){if(b[0]-1);U++,M[U]=B,O[U]=W,O[U+1]=Ge}for(let B=0,U=0;B{let B=this.entries[b];B||(B=this.entries[b]={glyphs:{},requests:{},ranges:{}});let U=B.glyphs[M];if(U!==void 0)return void O(null,{stack:b,id:M,glyph:U});if(U=this._tinySDF(B,b,M),U)return B.glyphs[M]=U,void O(null,{stack:b,id:M,glyph:U});let W=Math.floor(M/256);if(256*W>65535)return void O(new Error(\"glyphs > 65535 not supported\"));if(B.ranges[W])return void O(null,{stack:b,id:M,glyph:U});if(!this.url)return void O(new Error(\"glyphsUrl is not set\"));let Z=B.requests[W];Z||(Z=B.requests[W]=[],Lr.loadGlyphRange(b,W,this.url,this.requestManager,(Q,st)=>{if(st){for(let At in st)this._doesCharSupportLocalGlyph(+At)||(B.glyphs[+At]=st[+At]);B.ranges[W]=!0}for(let At of Z)At(Q,st);delete B.requests[W]})),Z.push((Q,st)=>{Q?O(Q):st&&O(null,{stack:b,id:M,glyph:st[M]||null})})},(b,M)=>{if(b)d(b);else if(M){let O={};for(let{stack:B,id:U,glyph:W}of M)(O[B]||(O[B]={}))[U]=W&&{id:W.id,bitmap:W.bitmap.clone(),metrics:W.metrics};d(null,O)}})}_doesCharSupportLocalGlyph(l){return!!this.localIdeographFontFamily&&(n.u[\"CJK Unified Ideographs\"](l)||n.u[\"Hangul Syllables\"](l)||n.u.Hiragana(l)||n.u.Katakana(l))}_tinySDF(l,d,v){let b=this.localIdeographFontFamily;if(!b||!this._doesCharSupportLocalGlyph(v))return;let M=l.tinySDF;if(!M){let B=\"400\";/bold/i.test(d)?B=\"900\":/medium/i.test(d)?B=\"500\":/light/i.test(d)&&(B=\"200\"),M=l.tinySDF=new Lr.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:b,fontWeight:B})}let O=M.draw(String.fromCharCode(v));return{id:v,bitmap:new n.q({width:O.width||60,height:O.height||60},O.data),metrics:{width:O.glyphWidth/2||24,height:O.glyphHeight/2||24,left:O.glyphLeft/2+.5||0,top:O.glyphTop/2-27.5||-8,advance:O.glyphAdvance/2||24,isDoubleResolution:!0}}}}Lr.loadGlyphRange=function(T,l,d,v,b){let M=256*l,O=M+255,B=v.transformRequest(d.replace(\"{fontstack}\",T).replace(\"{range}\",`${M}-${O}`),Y.Glyphs);n.l(B,(U,W)=>{if(U)b(U);else if(W){let Z={};for(let Q of n.n(W))Z[Q.id]=Q;b(null,Z)}})},Lr.TinySDF=class{constructor({fontSize:T=24,buffer:l=3,radius:d=8,cutoff:v=.25,fontFamily:b=\"sans-serif\",fontWeight:M=\"normal\",fontStyle:O=\"normal\"}={}){this.buffer=l,this.cutoff=v,this.radius=d;let B=this.size=T+4*l,U=this._createCanvas(B),W=this.ctx=U.getContext(\"2d\",{willReadFrequently:!0});W.font=`${O} ${M} ${T}px ${b}`,W.textBaseline=\"alphabetic\",W.textAlign=\"left\",W.fillStyle=\"black\",this.gridOuter=new Float64Array(B*B),this.gridInner=new Float64Array(B*B),this.f=new Float64Array(B),this.z=new Float64Array(B+1),this.v=new Uint16Array(B)}_createCanvas(T){let l=document.createElement(\"canvas\");return l.width=l.height=T,l}draw(T){let{width:l,actualBoundingBoxAscent:d,actualBoundingBoxDescent:v,actualBoundingBoxLeft:b,actualBoundingBoxRight:M}=this.ctx.measureText(T),O=Math.ceil(d),B=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(M-b))),U=Math.min(this.size-this.buffer,O+Math.ceil(v)),W=B+2*this.buffer,Z=U+2*this.buffer,Q=Math.max(W*Z,0),st=new Uint8ClampedArray(Q),At={data:st,width:W,height:Z,glyphWidth:B,glyphHeight:U,glyphTop:O,glyphLeft:0,glyphAdvance:l};if(B===0||U===0)return At;let{ctx:pt,buffer:yt,gridInner:dt,gridOuter:Ft}=this;pt.clearRect(yt,yt,B,U),pt.fillText(T,yt,yt+O);let Wt=pt.getImageData(yt,yt,B,U);Ft.fill(Ge,0,Q),dt.fill(0,0,Q);for(let St=0;St0?se*se:0,dt[Qt]=se<0?se*se:0}}tr(Ft,0,0,W,Z,W,this.f,this.v,this.z),tr(dt,yt,yt,B,U,W,this.f,this.v,this.z);for(let St=0;St1&&(U=l[++B]);let Z=Math.abs(W-U.left),Q=Math.abs(W-U.right),st=Math.min(Z,Q),At,pt=M/v*(b+1);if(U.isDash){let yt=b-Math.abs(pt);At=Math.sqrt(st*st+yt*yt)}else At=b-Math.sqrt(st*st+pt*pt);this.data[O+W]=Math.max(0,Math.min(255,At+128))}}}addRegularDash(l){for(let B=l.length-1;B>=0;--B){let U=l[B],W=l[B+1];U.zeroLength?l.splice(B,1):W&&W.isDash===U.isDash&&(W.left=U.left,l.splice(B,1))}let d=l[0],v=l[l.length-1];d.isDash===v.isDash&&(d.left=v.left-this.width,v.right=d.right+this.width);let b=this.width*this.nextRow,M=0,O=l[M];for(let B=0;B1&&(O=l[++M]);let U=Math.abs(B-O.left),W=Math.abs(B-O.right),Z=Math.min(U,W);this.data[b+B]=Math.max(0,Math.min(255,(O.isDash?Z:-Z)+128))}}addDash(l,d){let v=d?7:0,b=2*v+1;if(this.nextRow+b>this.height)return n.w(\"LineAtlas out of space\"),null;let M=0;for(let B=0;B{b.send(l,d,M)},v=v||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(l=!0){this.actors.forEach(d=>{d.remove()}),this.actors=[],l&&this.workerPool.release(this.id)}}function zo(T,l,d){let v=function(b,M){if(b)return d(b);if(M){let O=n.F(n.e(M,T),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);M.vector_layers&&(O.vectorLayers=M.vector_layers,O.vectorLayerIds=O.vectorLayers.map(B=>B.id)),d(null,O)}};return T.url?n.f(l.transformRequest(T.url,Y.Source),v):n.h.frame(()=>v(null,T))}class wi{constructor(l,d){l&&(d?this.setSouthWest(l).setNorthEast(d):Array.isArray(l)&&(l.length===4?this.setSouthWest([l[0],l[1]]).setNorthEast([l[2],l[3]]):this.setSouthWest(l[0]).setNorthEast(l[1])))}setNorthEast(l){return this._ne=l instanceof n.L?new n.L(l.lng,l.lat):n.L.convert(l),this}setSouthWest(l){return this._sw=l instanceof n.L?new n.L(l.lng,l.lat):n.L.convert(l),this}extend(l){let d=this._sw,v=this._ne,b,M;if(l instanceof n.L)b=l,M=l;else{if(!(l instanceof wi))return Array.isArray(l)?l.length===4||l.every(Array.isArray)?this.extend(wi.convert(l)):this.extend(n.L.convert(l)):l&&(\"lng\"in l||\"lon\"in l)&&\"lat\"in l?this.extend(n.L.convert(l)):this;if(b=l._sw,M=l._ne,!b||!M)return this}return d||v?(d.lng=Math.min(b.lng,d.lng),d.lat=Math.min(b.lat,d.lat),v.lng=Math.max(M.lng,v.lng),v.lat=Math.max(M.lat,v.lat)):(this._sw=new n.L(b.lng,b.lat),this._ne=new n.L(M.lng,M.lat)),this}getCenter(){return new n.L((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new n.L(this.getWest(),this.getNorth())}getSouthEast(){return new n.L(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(l){let{lng:d,lat:v}=n.L.convert(l),b=this._sw.lng<=d&&d<=this._ne.lng;return this._sw.lng>this._ne.lng&&(b=this._sw.lng>=d&&d>=this._ne.lng),this._sw.lat<=v&&v<=this._ne.lat&&b}static convert(l){return l instanceof wi?l:l&&new wi(l)}static fromLngLat(l,d=0){let v=360*d/40075017,b=v/Math.cos(Math.PI/180*l.lat);return new wi(new n.L(l.lng-b,l.lat-v),new n.L(l.lng+b,l.lat+v))}}class Ds{constructor(l,d,v){this.bounds=wi.convert(this.validateBounds(l)),this.minzoom=d||0,this.maxzoom=v||24}validateBounds(l){return Array.isArray(l)&&l.length===4?[Math.max(-180,l[0]),Math.max(-90,l[1]),Math.min(180,l[2]),Math.min(90,l[3])]:[-180,-90,180,90]}contains(l){let d=Math.pow(2,l.z),v=Math.floor(n.G(this.bounds.getWest())*d),b=Math.floor(n.H(this.bounds.getNorth())*d),M=Math.ceil(n.G(this.bounds.getEast())*d),O=Math.ceil(n.H(this.bounds.getSouth())*d);return l.x>=v&&l.x=b&&l.y{this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=zo(this._options,this.map._requestManager,(M,O)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),M?this.fire(new n.j(M)):O&&(n.e(this,O),O.bounds&&(this.tileBounds=new Ds(O.bounds,this.minzoom,this.maxzoom)),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})},this.serialize=()=>n.e({},this._options),this.id=l,this.dispatcher=v,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,n.e(this,n.F(d,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=n.e({type:\"vector\"},d),this._collectResourceTiming=d.collectResourceTiming,this.tileSize!==512)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(b)}loaded(){return this._loaded}hasTile(l){return!this.tileBounds||this.tileBounds.contains(l.canonical)}onAdd(l){this.map=l,this.load()}setSourceProperty(l){this._tileJSONRequest&&this._tileJSONRequest.cancel(),l(),this.load()}setTiles(l){return this.setSourceProperty(()=>{this._options.tiles=l}),this}setUrl(l){return this.setSourceProperty(()=>{this.url=l,this._options.url=l}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),b={request:this.map._requestManager.transformRequest(v,Y.Tile),uid:l.uid,tileID:l.tileID,zoom:l.tileID.overscaledZ,tileSize:this.tileSize*l.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function M(O,B){return delete l.request,l.aborted?d(null):O&&O.status!==404?d(O):(B&&B.resourceTiming&&(l.resourceTiming=B.resourceTiming),this.map._refreshExpiredTiles&&B&&l.setExpiryData(B),l.loadVectorData(B,this.map.painter),d(null),void(l.reloadCallback&&(this.loadTile(l,l.reloadCallback),l.reloadCallback=null)))}b.request.collectResourceTiming=this._collectResourceTiming,l.actor&&l.state!==\"expired\"?l.state===\"loading\"?l.reloadCallback=d:l.request=l.actor.send(\"reloadTile\",b,M.bind(this)):(l.actor=this.dispatcher.getActor(),l.request=l.actor.send(\"loadTile\",b,M.bind(this)))}abortTile(l){l.request&&(l.request.cancel(),delete l.request),l.actor&&l.actor.send(\"abortTile\",{uid:l.uid,type:this.type,source:this.id},void 0)}unloadTile(l){l.unloadVectorData(),l.actor&&l.actor.send(\"removeTile\",{uid:l.uid,type:this.type,source:this.id},void 0)}hasTransition(){return!1}}class Ic extends n.E{constructor(l,d,v,b){super(),this.id=l,this.dispatcher=v,this.setEventedParent(b),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=n.e({type:\"raster\"},d),n.e(this,n.F(d,[\"url\",\"scheme\",\"tileSize\"]))}load(){this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=zo(this._options,this.map._requestManager,(l,d)=>{this._tileJSONRequest=null,this._loaded=!0,l?this.fire(new n.j(l)):d&&(n.e(this,d),d.bounds&&(this.tileBounds=new Ds(d.bounds,this.minzoom,this.maxzoom)),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})}loaded(){return this._loaded}onAdd(l){this.map=l,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}setSourceProperty(l){this._tileJSONRequest&&this._tileJSONRequest.cancel(),l(),this.load()}setTiles(l){return this.setSourceProperty(()=>{this._options.tiles=l}),this}serialize(){return n.e({},this._options)}hasTile(l){return!this.tileBounds||this.tileBounds.contains(l.canonical)}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);l.request=j.getImage(this.map._requestManager.transformRequest(v,Y.Tile),(b,M,O)=>{if(delete l.request,l.aborted)l.state=\"unloaded\",d(null);else if(b)l.state=\"errored\",d(b);else if(M){this.map._refreshExpiredTiles&&O&&l.setExpiryData(O);let B=this.map.painter.context,U=B.gl;l.texture=this.map.painter.getTileTexture(M.width),l.texture?l.texture.update(M,{useMipmap:!0}):(l.texture=new Zt(B,M,U.RGBA,{useMipmap:!0}),l.texture.bind(U.LINEAR,U.CLAMP_TO_EDGE,U.LINEAR_MIPMAP_NEAREST),B.extTextureFilterAnisotropic&&U.texParameterf(U.TEXTURE_2D,B.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,B.extTextureFilterAnisotropicMax)),l.state=\"loaded\",d(null)}},this.map._refreshExpiredTiles)}abortTile(l,d){l.request&&(l.request.cancel(),delete l.request),d()}unloadTile(l,d){l.texture&&this.map.painter.saveTileTexture(l.texture),d()}hasTransition(){return!1}}class Cc extends Ic{constructor(l,d,v,b){super(l,d,v,b),this.type=\"raster-dem\",this.maxzoom=22,this._options=n.e({type:\"raster-dem\"},d),this.encoding=d.encoding||\"mapbox\",this.redFactor=d.redFactor,this.greenFactor=d.greenFactor,this.blueFactor=d.blueFactor,this.baseShift=d.baseShift}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),b=this.map._requestManager.transformRequest(v,Y.Tile);function M(O,B){O&&(l.state=\"errored\",d(O)),B&&(l.dem=B,l.needsHillshadePrepare=!0,l.needsTerrainPrepare=!0,l.state=\"loaded\",d(null))}l.neighboringTiles=this._getNeighboringTiles(l.tileID),l.request=j.getImage(b,(O,B,U)=>n._(this,void 0,void 0,function*(){if(delete l.request,l.aborted)l.state=\"unloaded\",d(null);else if(O)l.state=\"errored\",d(O);else if(B){this.map._refreshExpiredTiles&&l.setExpiryData(U);let W=n.a(B)&&n.J()?B:yield function(Q){return n._(this,void 0,void 0,function*(){if(typeof VideoFrame<\"u\"&&n.K()){let st=Q.width+2,At=Q.height+2;try{return new n.R({width:st,height:At},yield n.M(Q,-1,-1,st,At))}catch{}}return n.h.getImageData(Q,1)})}(B),Z={uid:l.uid,coord:l.tileID,source:this.id,rawImageData:W,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};l.actor&&l.state!==\"expired\"||(l.actor=this.dispatcher.getActor(),l.actor.send(\"loadDEMTile\",Z,M))}}),this.map._refreshExpiredTiles)}_getNeighboringTiles(l){let d=l.canonical,v=Math.pow(2,d.z),b=(d.x-1+v)%v,M=d.x===0?l.wrap-1:l.wrap,O=(d.x+1+v)%v,B=d.x+1===v?l.wrap+1:l.wrap,U={};return U[new n.O(l.overscaledZ,M,d.z,b,d.y).key]={backfilled:!1},U[new n.O(l.overscaledZ,B,d.z,O,d.y).key]={backfilled:!1},d.y>0&&(U[new n.O(l.overscaledZ,M,d.z,b,d.y-1).key]={backfilled:!1},U[new n.O(l.overscaledZ,l.wrap,d.z,d.x,d.y-1).key]={backfilled:!1},U[new n.O(l.overscaledZ,B,d.z,O,d.y-1).key]={backfilled:!1}),d.y+1{this._updateWorkerData()},this.serialize=()=>n.e({},this._options,{type:this.type,data:this._data}),this.id=l,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=v.getActor(),this.setEventedParent(b),this._data=d.data,this._options=n.e({},d),this._collectResourceTiming=d.collectResourceTiming,d.maxzoom!==void 0&&(this.maxzoom=d.maxzoom),d.type&&(this.type=d.type),d.attribution&&(this.attribution=d.attribution),this.promoteId=d.promoteId;let M=n.N/this.tileSize;this.workerOptions=n.e({source:this.id,cluster:d.cluster||!1,geojsonVtOptions:{buffer:(d.buffer!==void 0?d.buffer:128)*M,tolerance:(d.tolerance!==void 0?d.tolerance:.375)*M,extent:n.N,maxZoom:this.maxzoom,lineMetrics:d.lineMetrics||!1,generateId:d.generateId||!1},superclusterOptions:{maxZoom:d.clusterMaxZoom!==void 0?d.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,d.clusterMinPoints||2),extent:n.N,radius:(d.clusterRadius||50)*M,log:!1,generateId:d.generateId||!1},clusterProperties:d.clusterProperties,filter:d.filter},d.workerOptions),typeof this.promoteId==\"string\"&&(this.workerOptions.promoteId=this.promoteId)}onAdd(l){this.map=l,this.load()}setData(l){return this._data=l,this._updateWorkerData(),this}updateData(l){return this._updateWorkerData(l),this}setClusterOptions(l){return this.workerOptions.cluster=l.cluster,l&&(l.clusterRadius!==void 0&&(this.workerOptions.superclusterOptions.radius=l.clusterRadius),l.clusterMaxZoom!==void 0&&(this.workerOptions.superclusterOptions.maxZoom=l.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(l,d){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:l,source:this.id},d),this}getClusterChildren(l,d){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:l,source:this.id},d),this}getClusterLeaves(l,d,v,b){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:l,limit:d,offset:v},b),this}_updateWorkerData(l){let d=n.e({},this.workerOptions);l?d.dataDiff=l:typeof this._data==\"string\"?(d.request=this.map._requestManager.transformRequest(n.h.resolveURL(this._data),Y.Source),d.request.collectResourceTiming=this._collectResourceTiming):d.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this.actor.send(`${this.type}.loadData`,d,(v,b)=>{if(this._pendingLoads--,this._removed||b&&b.abandoned)return void this.fire(new n.k(\"dataabort\",{dataType:\"source\"}));let M=null;if(b&&b.resourceTiming&&b.resourceTiming[this.id]&&(M=b.resourceTiming[this.id].slice(0)),v)return void this.fire(new n.j(v));let O={dataType:\"source\"};this._collectResourceTiming&&M&&M.length>0&&n.e(O,{resourceTiming:M}),this.fire(new n.k(\"data\",Object.assign(Object.assign({},O),{sourceDataType:\"metadata\"}))),this.fire(new n.k(\"data\",Object.assign(Object.assign({},O),{sourceDataType:\"content\"})))})}loaded(){return this._pendingLoads===0}loadTile(l,d){let v=l.actor?\"reloadTile\":\"loadTile\";l.actor=this.actor;let b={type:this.type,uid:l.uid,tileID:l.tileID,zoom:l.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};l.request=this.actor.send(v,b,(M,O)=>(delete l.request,l.unloadVectorData(),l.aborted?d(null):M?d(M):(l.loadVectorData(O,this.map.painter,v===\"reloadTile\"),d(null))))}abortTile(l){l.request&&(l.request.cancel(),delete l.request),l.aborted=!0}unloadTile(l){l.unloadVectorData(),this.actor.send(\"removeTile\",{uid:l.uid,type:this.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})}hasTransition(){return!1}}var $n=n.Q([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);class Ii extends n.E{constructor(l,d,v,b){super(),this.load=(M,O)=>{this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,this._request=j.getImage(this.map._requestManager.transformRequest(this.url,Y.Image),(B,U)=>{this._request=null,this._loaded=!0,B?this.fire(new n.j(B)):U&&(this.image=U,M&&(this.coordinates=M),O&&O(),this._finishLoading())})},this.prepare=()=>{if(Object.keys(this.tiles).length===0||!this.image)return;let M=this.map.painter.context,O=M.gl;this.boundsBuffer||(this.boundsBuffer=M.createVertexBuffer(this._boundsArray,$n.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new Zt(M,this.image,O.RGBA),this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE));let B=!1;for(let U in this.tiles){let W=this.tiles[U];W.state!==\"loaded\"&&(W.state=\"loaded\",W.texture=this.texture,B=!0)}B&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"image\",url:this.options.url,coordinates:this.coordinates}),this.id=l,this.dispatcher=v,this.coordinates=d.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(b),this.options=d}loaded(){return this._loaded}updateImage(l){return l.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=l.url,this.load(l.coordinates,()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))}onAdd(l){this.map=l,this.load()}onRemove(){this._request&&(this._request.cancel(),this._request=null)}setCoordinates(l){this.coordinates=l;let d=l.map(n.U.fromLngLat);this.tileID=function(b){let M=1/0,O=1/0,B=-1/0,U=-1/0;for(let st of b)M=Math.min(M,st.x),O=Math.min(O,st.y),B=Math.max(B,st.x),U=Math.max(U,st.y);let W=Math.max(B-M,U-O),Z=Math.max(0,Math.floor(-Math.log(W)/Math.LN2)),Q=Math.pow(2,Z);return new n.W(Z,Math.floor((M+B)/2*Q),Math.floor((O+U)/2*Q))}(d),this.minzoom=this.maxzoom=this.tileID.z;let v=d.map(b=>this.tileID.getTilePoint(b)._round());return this._boundsArray=new n.V,this._boundsArray.emplaceBack(v[0].x,v[0].y,0,0),this._boundsArray.emplaceBack(v[1].x,v[1].y,n.N,0),this._boundsArray.emplaceBack(v[3].x,v[3].y,0,n.N),this._boundsArray.emplaceBack(v[2].x,v[2].y,n.N,n.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}loadTile(l,d){this.tileID&&this.tileID.equals(l.tileID.canonical)?(this.tiles[String(l.tileID.wrap)]=l,l.buckets={},d(null)):(l.state=\"errored\",d(null))}hasTransition(){return!1}}class Xn extends Ii{constructor(l,d,v,b){super(l,d,v,b),this.load=()=>{this._loaded=!1;let M=this.options;this.urls=[];for(let O of M.urls)this.urls.push(this.map._requestManager.transformRequest(O,Y.Source).url);n.X(this.urls,(O,B)=>{this._loaded=!0,O?this.fire(new n.j(O)):B&&(this.video=B,this.video.loop=!0,this.video.addEventListener(\"playing\",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})},this.prepare=()=>{if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let M=this.map.painter.context,O=M.gl;this.boundsBuffer||(this.boundsBuffer=M.createVertexBuffer(this._boundsArray,$n.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE),O.texSubImage2D(O.TEXTURE_2D,0,0,0,O.RGBA,O.UNSIGNED_BYTE,this.video)):(this.texture=new Zt(M,this.video,O.RGBA),this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE));let B=!1;for(let U in this.tiles){let W=this.tiles[U];W.state!==\"loaded\"&&(W.state=\"loaded\",W.texture=this.texture,B=!0)}B&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"video\",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type=\"video\",this.options=d}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(l){if(this.video){let d=this.video.seekable;ld.end(0)?this.fire(new n.j(new n.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${d.start(0)} and ${d.end(0)}-second mark.`))):this.video.currentTime=l}}getVideo(){return this.video}onAdd(l){this.map||(this.map=l,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}hasTransition(){return this.video&&!this.video.paused}}class No extends Ii{constructor(l,d,v,b){super(l,d,v,b),this.load=()=>{this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new n.j(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},this.prepare=()=>{let M=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,M=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,M=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let O=this.map.painter.context,B=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,$n.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture?(M||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new Zt(O,this.canvas,B.RGBA,{premultiply:!0});let U=!1;for(let W in this.tiles){let Z=this.tiles[W];Z.state!==\"loaded\"&&(Z.state=\"loaded\",Z.texture=this.texture,U=!0)}U&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"canvas\",coordinates:this.coordinates}),d.coordinates?Array.isArray(d.coordinates)&&d.coordinates.length===4&&!d.coordinates.some(M=>!Array.isArray(M)||M.length!==2||M.some(O=>typeof O!=\"number\"))||this.fire(new n.j(new n.Y(`sources.${l}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new n.j(new n.Y(`sources.${l}`,null,'missing required property \"coordinates\"'))),d.animate&&typeof d.animate!=\"boolean\"&&this.fire(new n.j(new n.Y(`sources.${l}`,null,'optional \"animate\" property must be a boolean value'))),d.canvas?typeof d.canvas==\"string\"||d.canvas instanceof HTMLCanvasElement||this.fire(new n.j(new n.Y(`sources.${l}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new n.j(new n.Y(`sources.${l}`,null,'missing required property \"canvas\"'))),this.options=d,this.animate=d.animate===void 0||d.animate}getCanvas(){return this.canvas}onAdd(l){this.map=l,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let l of[this.canvas.width,this.canvas.height])if(isNaN(l)||l<=0)return!0;return!1}}let ol={},fo=T=>{switch(T){case\"geojson\":return Zi;case\"image\":return Ii;case\"raster\":return Ic;case\"raster-dem\":return Cc;case\"vector\":return sl;case\"video\":return Xn;case\"canvas\":return No}return ol[T]};function Ea(T,l){let d=n.Z();return n.$(d,d,[1,1,0]),n.a0(d,d,[.5*T.width,.5*T.height,1]),n.a1(d,d,T.calculatePosMatrix(l.toUnwrapped()))}function na(T,l,d,v,b,M){let O=function(Q,st,At){if(Q)for(let pt of Q){let yt=st[pt];if(yt&&yt.source===At&&yt.type===\"fill-extrusion\")return!0}else for(let pt in st){let yt=st[pt];if(yt.source===At&&yt.type===\"fill-extrusion\")return!0}return!1}(b&&b.layers,l,T.id),B=M.maxPitchScaleFactor(),U=T.tilesIn(v,B,O);U.sort(ss);let W=[];for(let Q of U)W.push({wrappedTileID:Q.tileID.wrapped().key,queryResults:Q.tile.queryRenderedFeatures(l,d,T._state,Q.queryGeometry,Q.cameraQueryGeometry,Q.scale,b,M,B,Ea(T.transform,Q.tileID))});let Z=function(Q){let st={},At={};for(let pt of Q){let yt=pt.queryResults,dt=pt.wrappedTileID,Ft=At[dt]=At[dt]||{};for(let Wt in yt){let St=yt[Wt],Bt=Ft[Wt]=Ft[Wt]||{},Yt=st[Wt]=st[Wt]||[];for(let Qt of St)Bt[Qt.featureIndex]||(Bt[Qt.featureIndex]=!0,Yt.push(Qt))}}return st}(W);for(let Q in Z)Z[Q].forEach(st=>{let At=st.feature,pt=T.getFeatureState(At.layer[\"source-layer\"],At.id);At.source=At.layer.source,At.layer[\"source-layer\"]&&(At.sourceLayer=At.layer[\"source-layer\"]),At.state=pt});return Z}function ss(T,l){let d=T.tileID,v=l.tileID;return d.overscaledZ-v.overscaledZ||d.canonical.y-v.canonical.y||d.wrap-v.wrap||d.canonical.x-v.canonical.x}class to{constructor(l,d){this.timeAdded=0,this.fadeEndTime=0,this.tileID=l,this.uid=n.a2(),this.uses=0,this.tileSize=d,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state=\"loading\"}registerFadeDuration(l){let d=l+this.timeAdded;dM.getLayer(W)).filter(Boolean);if(U.length!==0){B.layers=U,B.stateDependentLayerIds&&(B.stateDependentLayers=B.stateDependentLayerIds.map(W=>U.filter(Z=>Z.id===W)[0]));for(let W of U)O[W.id]=B}}return O}(l.buckets,d.style),this.hasSymbolBuckets=!1;for(let b in this.buckets){let M=this.buckets[b];if(M instanceof n.a4){if(this.hasSymbolBuckets=!0,!v)break;M.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let b in this.buckets){let M=this.buckets[b];if(M instanceof n.a4&&M.hasRTLText){this.hasRTLText=!0,n.a5();break}}this.queryPadding=0;for(let b in this.buckets){let M=this.buckets[b];this.queryPadding=Math.max(this.queryPadding,d.style.getLayer(b).queryRadius(M))}l.imageAtlas&&(this.imageAtlas=l.imageAtlas),l.glyphAtlasImage&&(this.glyphAtlasImage=l.glyphAtlasImage)}else this.collisionBoxArray=new n.a3}unloadVectorData(){for(let l in this.buckets)this.buckets[l].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\"}getBucket(l){return this.buckets[l.id]}upload(l){for(let v in this.buckets){let b=this.buckets[v];b.uploadPending()&&b.upload(l)}let d=l.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Zt(l,this.imageAtlas.image,d.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Zt(l,this.glyphAtlasImage,d.ALPHA),this.glyphAtlasImage=null)}prepare(l){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(l,this.imageAtlasTexture)}queryRenderedFeatures(l,d,v,b,M,O,B,U,W,Z){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:b,cameraQueryGeometry:M,scale:O,tileSize:this.tileSize,pixelPosMatrix:Z,transform:U,params:B,queryPadding:this.queryPadding*W},l,d,v):{}}querySourceFeatures(l,d){let v=this.latestFeatureIndex;if(!v||!v.rawTileData)return;let b=v.loadVTLayers(),M=d&&d.sourceLayer?d.sourceLayer:\"\",O=b._geojsonTileLayer||b[M];if(!O)return;let B=n.a6(d&&d.filter),{z:U,x:W,y:Z}=this.tileID.canonical,Q={z:U,x:W,y:Z};for(let st=0;stv)b=!1;else if(d)if(this.expirationTime{this.remove(l,M)},v)),this.data[b].push(M),this.order.push(b),this.order.length>this.max){let O=this._getAndRemoveByKey(this.order[0]);O&&this.onRemove(O)}return this}has(l){return l.wrapped().key in this.data}getAndRemove(l){return this.has(l)?this._getAndRemoveByKey(l.wrapped().key):null}_getAndRemoveByKey(l){let d=this.data[l].shift();return d.timeout&&clearTimeout(d.timeout),this.data[l].length===0&&delete this.data[l],this.order.splice(this.order.indexOf(l),1),d.value}getByKey(l){let d=this.data[l];return d?d[0].value:null}get(l){return this.has(l)?this.data[l.wrapped().key][0].value:null}remove(l,d){if(!this.has(l))return this;let v=l.wrapped().key,b=d===void 0?0:this.data[v].indexOf(d),M=this.data[v][b];return this.data[v].splice(b,1),M.timeout&&clearTimeout(M.timeout),this.data[v].length===0&&delete this.data[v],this.onRemove(M.value),this.order.splice(this.order.indexOf(v),1),this}setMaxSize(l){for(this.max=l;this.order.length>this.max;){let d=this._getAndRemoveByKey(this.order[0]);d&&this.onRemove(d)}return this}filter(l){let d=[];for(let v in this.data)for(let b of this.data[v])l(b.value)||d.push(b);for(let v of d)this.remove(v.value.tileID,v)}}class te{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(l,d,v){let b=String(d);if(this.stateChanges[l]=this.stateChanges[l]||{},this.stateChanges[l][b]=this.stateChanges[l][b]||{},n.e(this.stateChanges[l][b],v),this.deletedStates[l]===null){this.deletedStates[l]={};for(let M in this.state[l])M!==b&&(this.deletedStates[l][M]=null)}else if(this.deletedStates[l]&&this.deletedStates[l][b]===null){this.deletedStates[l][b]={};for(let M in this.state[l][b])v[M]||(this.deletedStates[l][b][M]=null)}else for(let M in v)this.deletedStates[l]&&this.deletedStates[l][b]&&this.deletedStates[l][b][M]===null&&delete this.deletedStates[l][b][M]}removeFeatureState(l,d,v){if(this.deletedStates[l]===null)return;let b=String(d);if(this.deletedStates[l]=this.deletedStates[l]||{},v&&d!==void 0)this.deletedStates[l][b]!==null&&(this.deletedStates[l][b]=this.deletedStates[l][b]||{},this.deletedStates[l][b][v]=null);else if(d!==void 0)if(this.stateChanges[l]&&this.stateChanges[l][b])for(v in this.deletedStates[l][b]={},this.stateChanges[l][b])this.deletedStates[l][b][v]=null;else this.deletedStates[l][b]=null;else this.deletedStates[l]=null}getState(l,d){let v=String(d),b=n.e({},(this.state[l]||{})[v],(this.stateChanges[l]||{})[v]);if(this.deletedStates[l]===null)return{};if(this.deletedStates[l]){let M=this.deletedStates[l][d];if(M===null)return{};for(let O in M)delete b[O]}return b}initializeTileState(l,d){l.setFeatureState(this.state,d)}coalesceChanges(l,d){let v={};for(let b in this.stateChanges){this.state[b]=this.state[b]||{};let M={};for(let O in this.stateChanges[b])this.state[b][O]||(this.state[b][O]={}),n.e(this.state[b][O],this.stateChanges[b][O]),M[O]=this.state[b][O];v[b]=M}for(let b in this.deletedStates){this.state[b]=this.state[b]||{};let M={};if(this.deletedStates[b]===null)for(let O in this.state[b])M[O]={},this.state[b][O]={};else for(let O in this.deletedStates[b]){if(this.deletedStates[b][O]===null)this.state[b][O]={};else for(let B of Object.keys(this.deletedStates[b][O]))delete this.state[b][O][B];M[O]=this.state[b][O]}v[b]=v[b]||{},n.e(v[b],M)}if(this.stateChanges={},this.deletedStates={},Object.keys(v).length!==0)for(let b in l)l[b].setFeatureState(v,d)}}class os extends n.E{constructor(l,d,v){super(),this.id=l,this.dispatcher=v,this.on(\"data\",b=>{b.dataType===\"source\"&&b.sourceDataType===\"metadata\"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&b.dataType===\"source\"&&b.sourceDataType===\"content\"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}),this.on(\"dataloading\",()=>{this._sourceErrored=!1}),this.on(\"error\",()=>{this._sourceErrored=this._source.loaded()}),this._source=((b,M,O,B)=>{let U=new(fo(M.type))(b,M,O,B);if(U.id!==b)throw new Error(`Expected Source id to be ${b} instead of ${U.id}`);return U})(l,d,v,this),this._tiles={},this._cache=new Ol(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new te,this._didEmitContent=!1,this._updated=!1}onAdd(l){this.map=l,this._maxTileCacheSize=l?l._maxTileCacheSize:null,this._maxTileCacheZoomLevels=l?l._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(l)}onRemove(l){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(l)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let l in this._tiles){let d=this._tiles[l];if(d.state!==\"loaded\"&&d.state!==\"errored\")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let l=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,l&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(l,d){return this._source.loadTile(l,d)}_unloadTile(l){if(this._source.unloadTile)return this._source.unloadTile(l,()=>{})}_abortTile(l){this._source.abortTile&&this._source.abortTile(l,()=>{}),this._source.fire(new n.k(\"dataabort\",{tile:l,coord:l.tileID,dataType:\"source\"}))}serialize(){return this._source.serialize()}prepare(l){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let d in this._tiles){let v=this._tiles[d];v.upload(l),v.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(l=>l.tileID).sort(fn).map(l=>l.key)}getRenderableIds(l){let d=[];for(let v in this._tiles)this._isIdRenderable(v,l)&&d.push(this._tiles[v]);return l?d.sort((v,b)=>{let M=v.tileID,O=b.tileID,B=new n.P(M.canonical.x,M.canonical.y)._rotate(this.transform.angle),U=new n.P(O.canonical.x,O.canonical.y)._rotate(this.transform.angle);return M.overscaledZ-O.overscaledZ||U.y-B.y||U.x-B.x}).map(v=>v.tileID.key):d.map(v=>v.tileID).sort(fn).map(v=>v.key)}hasRenderableParent(l){let d=this.findLoadedParent(l,0);return!!d&&this._isIdRenderable(d.tileID.key)}_isIdRenderable(l,d){return this._tiles[l]&&this._tiles[l].hasData()&&!this._coveredTiles[l]&&(d||!this._tiles[l].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let l in this._tiles)this._tiles[l].state!==\"errored\"&&this._reloadTile(l,\"reloading\")}}_reloadTile(l,d){let v=this._tiles[l];v&&(v.state!==\"loading\"&&(v.state=d),this._loadTile(v,this._tileLoaded.bind(this,v,l,d)))}_tileLoaded(l,d,v,b){if(b)return l.state=\"errored\",void(b.status!==404?this._source.fire(new n.j(b,{tile:l})):this.update(this.transform,this.terrain));l.timeAdded=n.h.now(),v===\"expired\"&&(l.refreshedUponExpiration=!0),this._setTileReloadTimer(d,l),this.getSource().type===\"raster-dem\"&&l.dem&&this._backfillDEM(l),this._state.initializeTileState(l,this.map?this.map.painter:null),l.aborted||this._source.fire(new n.k(\"data\",{dataType:\"source\",tile:l,coord:l.tileID}))}_backfillDEM(l){let d=this.getRenderableIds();for(let b=0;b1||(Math.abs(O)>1&&(Math.abs(O+U)===1?O+=U:Math.abs(O-U)===1&&(O-=U)),M.dem&&b.dem&&(b.dem.backfillBorder(M.dem,O,B),b.neighboringTiles&&b.neighboringTiles[W]&&(b.neighboringTiles[W].backfilled=!0)))}}getTile(l){return this.getTileByID(l.key)}getTileByID(l){return this._tiles[l]}_retainLoadedChildren(l,d,v,b){for(let M in this._tiles){let O=this._tiles[M];if(b[M]||!O.hasData()||O.tileID.overscaledZ<=d||O.tileID.overscaledZ>v)continue;let B=O.tileID;for(;O&&O.tileID.overscaledZ>d+1;){let W=O.tileID.scaledTo(O.tileID.overscaledZ-1);O=this._tiles[W.key],O&&O.hasData()&&(B=W)}let U=B;for(;U.overscaledZ>d;)if(U=U.scaledTo(U.overscaledZ-1),l[U.key]){b[B.key]=B;break}}}findLoadedParent(l,d){if(l.key in this._loadedParentTiles){let v=this._loadedParentTiles[l.key];return v&&v.tileID.overscaledZ>=d?v:null}for(let v=l.overscaledZ-1;v>=d;v--){let b=l.scaledTo(v),M=this._getLoadedTile(b);if(M)return M}}_getLoadedTile(l){let d=this._tiles[l.key];return d&&d.hasData()?d:this._cache.getByKey(l.wrapped().key)}updateCacheSize(l){let d=Math.ceil(l.width/this._source.tileSize)+1,v=Math.ceil(l.height/this._source.tileSize)+1,b=Math.floor(d*v*(this._maxTileCacheZoomLevels===null?n.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),M=typeof this._maxTileCacheSize==\"number\"?Math.min(this._maxTileCacheSize,b):b;this._cache.setMaxSize(M)}handleWrapJump(l){let d=Math.round((l-(this._prevLng===void 0?l:this._prevLng))/360);if(this._prevLng=l,d){let v={};for(let b in this._tiles){let M=this._tiles[b];M.tileID=M.tileID.unwrapTo(M.tileID.wrap+d),v[M.tileID.key]=M}this._tiles=v;for(let b in this._timers)clearTimeout(this._timers[b]),delete this._timers[b];for(let b in this._tiles)this._setTileReloadTimer(b,this._tiles[b])}}update(l,d){if(this.transform=l,this.terrain=d,!this._sourceLoaded||this._paused)return;let v;this.updateCacheSize(l),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?v=l.getVisibleUnwrappedCoordinates(this._source.tileID).map(Z=>new n.O(Z.canonical.z,Z.wrap,Z.canonical.z,Z.canonical.x,Z.canonical.y)):(v=l.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:d}),this._source.hasTile&&(v=v.filter(Z=>this._source.hasTile(Z)))):v=[];let b=l.coveringZoomLevel(this._source),M=Math.max(b-os.maxOverzooming,this._source.minzoom),O=Math.max(b+os.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Z={};for(let Q of v)if(Q.canonical.z>this._source.minzoom){let st=Q.scaledTo(Q.canonical.z-1);Z[st.key]=st;let At=Q.scaledTo(Math.max(this._source.minzoom,Math.min(Q.canonical.z,5)));Z[At.key]=At}v=v.concat(Object.values(Z))}let B=v.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,B&&this.fire(new n.k(\"data\",{sourceDataType:\"idle\",dataType:\"source\",sourceId:this.id}));let U=this._updateRetainedTiles(v,b);if(gi(this._source.type)){let Z={},Q={},st=Object.keys(U),At=n.h.now();for(let pt of st){let yt=U[pt],dt=this._tiles[pt];if(!dt||dt.fadeEndTime!==0&&dt.fadeEndTime<=At)continue;let Ft=this.findLoadedParent(yt,M);Ft&&(this._addTile(Ft.tileID),Z[Ft.tileID.key]=Ft.tileID),Q[pt]=yt}this._retainLoadedChildren(Q,b,O,U);for(let pt in Z)U[pt]||(this._coveredTiles[pt]=!0,U[pt]=Z[pt]);if(d){let pt={},yt={};for(let dt of v)this._tiles[dt.key].hasData()?pt[dt.key]=dt:yt[dt.key]=dt;for(let dt in yt){let Ft=yt[dt].children(this._source.maxzoom);this._tiles[Ft[0].key]&&this._tiles[Ft[1].key]&&this._tiles[Ft[2].key]&&this._tiles[Ft[3].key]&&(pt[Ft[0].key]=U[Ft[0].key]=Ft[0],pt[Ft[1].key]=U[Ft[1].key]=Ft[1],pt[Ft[2].key]=U[Ft[2].key]=Ft[2],pt[Ft[3].key]=U[Ft[3].key]=Ft[3],delete yt[dt])}for(let dt in yt){let Ft=this.findLoadedParent(yt[dt],this._source.minzoom);if(Ft){pt[Ft.tileID.key]=U[Ft.tileID.key]=Ft.tileID;for(let Wt in pt)pt[Wt].isChildOf(Ft.tileID)&&delete pt[Wt]}}for(let dt in this._tiles)pt[dt]||(this._coveredTiles[dt]=!0)}}for(let Z in U)this._tiles[Z].clearFadeHold();let W=n.ab(this._tiles,U);for(let Z of W){let Q=this._tiles[Z];Q.hasSymbolBuckets&&!Q.holdingForFade()?Q.setHoldDuration(this.map._fadeDuration):Q.hasSymbolBuckets&&!Q.symbolFadeFinished()||this._removeTile(Z)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(let l in this._tiles)this._tiles[l].holdingForFade()&&this._removeTile(l)}_updateRetainedTiles(l,d){let v={},b={},M=Math.max(d-os.maxOverzooming,this._source.minzoom),O=Math.max(d+os.maxUnderzooming,this._source.minzoom),B={};for(let U of l){let W=this._addTile(U);v[U.key]=U,W.hasData()||dthis._source.maxzoom){let Q=U.children(this._source.maxzoom)[0],st=this.getTile(Q);if(st&&st.hasData()){v[Q.key]=Q;continue}}else{let Q=U.children(this._source.maxzoom);if(v[Q[0].key]&&v[Q[1].key]&&v[Q[2].key]&&v[Q[3].key])continue}let Z=W.wasRequested();for(let Q=U.overscaledZ-1;Q>=M;--Q){let st=U.scaledTo(Q);if(b[st.key])break;if(b[st.key]=!0,W=this.getTile(st),!W&&Z&&(W=this._addTile(st)),W){let At=W.hasData();if((Z||At)&&(v[st.key]=st),Z=W.wasRequested(),At)break}}}return v}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let l in this._tiles){let d=[],v,b=this._tiles[l].tileID;for(;b.overscaledZ>0;){if(b.key in this._loadedParentTiles){v=this._loadedParentTiles[b.key];break}d.push(b.key);let M=b.scaledTo(b.overscaledZ-1);if(v=this._getLoadedTile(M),v)break;b=M}for(let M of d)this._loadedParentTiles[M]=v}}_addTile(l){let d=this._tiles[l.key];if(d)return d;d=this._cache.getAndRemove(l),d&&(this._setTileReloadTimer(l.key,d),d.tileID=l,this._state.initializeTileState(d,this.map?this.map.painter:null),this._cacheTimers[l.key]&&(clearTimeout(this._cacheTimers[l.key]),delete this._cacheTimers[l.key],this._setTileReloadTimer(l.key,d)));let v=d;return d||(d=new to(l,this._source.tileSize*l.overscaleFactor()),this._loadTile(d,this._tileLoaded.bind(this,d,l.key,d.state))),d.uses++,this._tiles[l.key]=d,v||this._source.fire(new n.k(\"dataloading\",{tile:d,coord:d.tileID,dataType:\"source\"})),d}_setTileReloadTimer(l,d){l in this._timers&&(clearTimeout(this._timers[l]),delete this._timers[l]);let v=d.getExpiryTimeout();v&&(this._timers[l]=setTimeout(()=>{this._reloadTile(l,\"expired\"),delete this._timers[l]},v))}_removeTile(l){let d=this._tiles[l];d&&(d.uses--,delete this._tiles[l],this._timers[l]&&(clearTimeout(this._timers[l]),delete this._timers[l]),d.uses>0||(d.hasData()&&d.state!==\"reloading\"?this._cache.add(d.tileID,d,d.getExpiryTimeout()):(d.aborted=!0,this._abortTile(d),this._unloadTile(d))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let l in this._tiles)this._removeTile(l);this._cache.reset()}tilesIn(l,d,v){let b=[],M=this.transform;if(!M)return b;let O=v?M.getCameraQueryGeometry(l):l,B=l.map(pt=>M.pointCoordinate(pt,this.terrain)),U=O.map(pt=>M.pointCoordinate(pt,this.terrain)),W=this.getIds(),Z=1/0,Q=1/0,st=-1/0,At=-1/0;for(let pt of U)Z=Math.min(Z,pt.x),Q=Math.min(Q,pt.y),st=Math.max(st,pt.x),At=Math.max(At,pt.y);for(let pt=0;pt=0&&St[1].y+Wt>=0){let Bt=B.map(Qt=>dt.getTilePoint(Qt)),Yt=U.map(Qt=>dt.getTilePoint(Qt));b.push({tile:yt,tileID:dt,queryGeometry:Bt,cameraQueryGeometry:Yt,scale:Ft})}}return b}getVisibleCoordinates(l){let d=this.getRenderableIds(l).map(v=>this._tiles[v].tileID);for(let v of d)v.posMatrix=this.transform.calculatePosMatrix(v.toUnwrapped());return d}hasTransition(){if(this._source.hasTransition())return!0;if(gi(this._source.type)){let l=n.h.now();for(let d in this._tiles)if(this._tiles[d].fadeEndTime>=l)return!0}return!1}setFeatureState(l,d,v){this._state.updateState(l=l||\"_geojsonTileLayer\",d,v)}removeFeatureState(l,d,v){this._state.removeFeatureState(l=l||\"_geojsonTileLayer\",d,v)}getFeatureState(l,d){return this._state.getState(l=l||\"_geojsonTileLayer\",d)}setDependencies(l,d,v){let b=this._tiles[l];b&&b.setDependencies(d,v)}reloadTilesForDependencies(l,d){for(let v in this._tiles)this._tiles[v].hasDependency(l,d)&&this._reloadTile(v,\"reloading\");this._cache.filter(v=>!v.hasDependency(l,d))}}function fn(T,l){let d=Math.abs(2*T.wrap)-+(T.wrap<0),v=Math.abs(2*l.wrap)-+(l.wrap<0);return T.overscaledZ-l.overscaledZ||v-d||l.canonical.y-T.canonical.y||l.canonical.x-T.canonical.x}function gi(T){return T===\"raster\"||T===\"image\"||T===\"video\"}os.maxOverzooming=10,os.maxUnderzooming=3;let oi=\"mapboxgl_preloaded_worker_pool\";class eo{constructor(){this.active={}}acquire(l){if(!this.workers)for(this.workers=[];this.workers.length{d.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[oi]}numActive(){return Object.keys(this.active).length}}let uu=Math.floor(n.h.hardwareConcurrency/2),al;function po(){return al||(al=new eo),al}eo.workerCount=n.ac(globalThis)?Math.max(Math.min(uu,3),1):1;class ll{constructor(l,d){this.reset(l,d)}reset(l,d){this.points=l||[],this._distances=[0];for(let v=1;v0?(b-O)/B:0;return this.points[M].mult(1-U).add(this.points[d].mult(U))}}function Pa(T,l){let d=!0;return T===\"always\"||T!==\"never\"&&l!==\"never\"||(d=!1),d}class Ao{constructor(l,d,v){let b=this.boxCells=[],M=this.circleCells=[];this.xCellCount=Math.ceil(l/v),this.yCellCount=Math.ceil(d/v);for(let O=0;Othis.width||b<0||d>this.height)return[];let U=[];if(l<=0&&d<=0&&this.width<=v&&this.height<=b){if(M)return[{key:null,x1:l,y1:d,x2:v,y2:b}];for(let W=0;W0}hitTestCircle(l,d,v,b,M){let O=l-v,B=l+v,U=d-v,W=d+v;if(B<0||O>this.width||W<0||U>this.height)return!1;let Z=[];return this._forEachCell(O,U,B,W,this._queryCellCircle,Z,{hitTest:!0,overlapMode:b,circle:{x:l,y:d,radius:v},seenUids:{box:{},circle:{}}},M),Z.length>0}_queryCell(l,d,v,b,M,O,B,U){let{seenUids:W,hitTest:Z,overlapMode:Q}=B,st=this.boxCells[M];if(st!==null){let pt=this.bboxes;for(let yt of st)if(!W.box[yt]){W.box[yt]=!0;let dt=4*yt,Ft=this.boxKeys[yt];if(l<=pt[dt+2]&&d<=pt[dt+3]&&v>=pt[dt+0]&&b>=pt[dt+1]&&(!U||U(Ft))&&(!Z||!Pa(Q,Ft.overlapMode))&&(O.push({key:Ft,x1:pt[dt],y1:pt[dt+1],x2:pt[dt+2],y2:pt[dt+3]}),Z))return!0}}let At=this.circleCells[M];if(At!==null){let pt=this.circles;for(let yt of At)if(!W.circle[yt]){W.circle[yt]=!0;let dt=3*yt,Ft=this.circleKeys[yt];if(this._circleAndRectCollide(pt[dt],pt[dt+1],pt[dt+2],l,d,v,b)&&(!U||U(Ft))&&(!Z||!Pa(Q,Ft.overlapMode))){let Wt=pt[dt],St=pt[dt+1],Bt=pt[dt+2];if(O.push({key:Ft,x1:Wt-Bt,y1:St-Bt,x2:Wt+Bt,y2:St+Bt}),Z)return!0}}}return!1}_queryCellCircle(l,d,v,b,M,O,B,U){let{circle:W,seenUids:Z,overlapMode:Q}=B,st=this.boxCells[M];if(st!==null){let pt=this.bboxes;for(let yt of st)if(!Z.box[yt]){Z.box[yt]=!0;let dt=4*yt,Ft=this.boxKeys[yt];if(this._circleAndRectCollide(W.x,W.y,W.radius,pt[dt+0],pt[dt+1],pt[dt+2],pt[dt+3])&&(!U||U(Ft))&&!Pa(Q,Ft.overlapMode))return O.push(!0),!0}}let At=this.circleCells[M];if(At!==null){let pt=this.circles;for(let yt of At)if(!Z.circle[yt]){Z.circle[yt]=!0;let dt=3*yt,Ft=this.circleKeys[yt];if(this._circlesCollide(pt[dt],pt[dt+1],pt[dt+2],W.x,W.y,W.radius)&&(!U||U(Ft))&&!Pa(Q,Ft.overlapMode))return O.push(!0),!0}}}_forEachCell(l,d,v,b,M,O,B,U){let W=this._convertToXCellCoord(l),Z=this._convertToYCellCoord(d),Q=this._convertToXCellCoord(v),st=this._convertToYCellCoord(b);for(let At=W;At<=Q;At++)for(let pt=Z;pt<=st;pt++)if(M.call(this,l,d,v,b,this.xCellCount*pt+At,O,B,U))return}_convertToXCellCoord(l){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(l*this.xScale)))}_convertToYCellCoord(l){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(l*this.yScale)))}_circlesCollide(l,d,v,b,M,O){let B=b-l,U=M-d,W=v+O;return W*W>B*B+U*U}_circleAndRectCollide(l,d,v,b,M,O,B){let U=(O-b)/2,W=Math.abs(l-(b+U));if(W>U+v)return!1;let Z=(B-M)/2,Q=Math.abs(d-(M+Z));if(Q>Z+v)return!1;if(W<=U||Q<=Z)return!0;let st=W-U,At=Q-Z;return st*st+At*At<=v*v}}function ve(T,l,d,v,b){let M=n.Z();return l?(n.a0(M,M,[1/b,1/b,1]),d||n.ae(M,M,v.angle)):n.a1(M,v.labelPlaneMatrix,T),M}function Uo(T,l,d,v,b){if(l){let M=n.af(T);return n.a0(M,M,[b,b,1]),d||n.ae(M,M,-v.angle),M}return v.glCoordMatrix}function dn(T,l,d){let v;d?(v=[T.x,T.y,d(T.x,T.y),1],n.ag(v,v,l)):(v=[T.x,T.y,0,1],vt(v,v,l));let b=v[3];return{point:new n.P(v[0]/b,v[1]/b),signedDistanceFromCamera:b}}function Bl(T,l){return .5+T/l*.5}function Ia(T,l){let d=T[0]/T[3],v=T[1]/T[3];return d>=-l[0]&&d<=l[0]&&v>=-l[1]&&v<=l[1]}function Se(T,l,d,v,b,M,O,B,U,W){let Z=v?T.textSizeData:T.iconSizeData,Q=n.ah(Z,d.transform.zoom),st=[256/d.width*2+1,256/d.height*2+1],At=v?T.text.dynamicLayoutVertexArray:T.icon.dynamicLayoutVertexArray;At.clear();let pt=T.lineVertexArray,yt=v?T.text.placedSymbolArray:T.icon.placedSymbolArray,dt=d.transform.width/d.transform.height,Ft=!1;for(let Wt=0;WtMath.abs(d.x-l.x)*v?{useVertical:!0}:(T===n.ai.vertical?l.yd.x)?{needsFlipping:!0}:null}function Os(T,l,d,v,b,M,O,B,U,W,Z,Q,st,At,pt,yt){let dt=l/24,Ft=T.lineOffsetX*dt,Wt=T.lineOffsetY*dt,St;if(T.numGlyphs>1){let Bt=T.glyphStartIndex+T.numGlyphs,Yt=T.lineStartIndex,Qt=T.lineStartIndex+T.lineLength,se=Dr(dt,B,Ft,Wt,d,Z,Q,T,U,M,st,pt,yt);if(!se)return{notEnoughRoom:!0};let pe=dn(se.first.point,O,yt).point,he=dn(se.last.point,O,yt).point;if(v&&!d){let xe=mr(T.writingMode,pe,he,At);if(xe)return xe}St=[se.first];for(let xe=T.glyphStartIndex+1;xe0?pe.point:Ca(Q,se,Yt,1,b,yt),xe=mr(T.writingMode,Yt,he,At);if(xe)return xe}let Bt=J(dt*B.getoffsetX(T.glyphStartIndex),Ft,Wt,d,Z,Q,T.segment,T.lineStartIndex,T.lineStartIndex+T.lineLength,U,M,st,pt,yt);if(!Bt)return{notEnoughRoom:!0};St=[Bt]}for(let Bt of St)n.ak(W,Bt.point,Bt.angle);return{}}function Ca(T,l,d,v,b,M){let O=dn(T.add(T.sub(l)._unit()),b,M).point,B=d.sub(O);return d.add(B._mult(v/B.mag()))}function Tr(T,l){let{projectionCache:d,lineVertexArray:v,labelPlaneMatrix:b,tileAnchorPoint:M,distanceFromAnchor:O,getElevation:B,previousVertex:U,direction:W,absOffsetX:Z}=l;if(d.projections[T])return d.projections[T];let Q=new n.P(v.getx(T),v.gety(T)),st=dn(Q,b,B);if(st.signedDistanceFromCamera>0)return d.projections[T]=st.point,st.point;let At=T-W;return Ca(O===0?M:new n.P(v.getx(At),v.gety(At)),Q,U,Z-O+1,b,B)}function sa(T,l,d){return T._unit()._perp()._mult(l*d)}function gt(T,l,d,v,b,M,O,B){let{projectionCache:U,direction:W}=B;if(U.offsets[T])return U.offsets[T];let Z=d.add(l);if(T+W=b)return U.offsets[T]=Z,Z;let Q=Tr(T+W,B),st=sa(Q.sub(d),O,W),At=d.add(st),pt=Q.add(st);return U.offsets[T]=n.al(M,Z,At,pt)||Z,U.offsets[T]}function J(T,l,d,v,b,M,O,B,U,W,Z,Q,st,At){let pt=v?T-l:T+l,yt=pt>0?1:-1,dt=0;v&&(yt*=-1,dt=Math.PI),yt<0&&(dt+=Math.PI);let Ft,Wt,St=yt>0?B+O:B+O+1,Bt=b,Yt=b,Qt=0,se=0,pe=Math.abs(pt),he=[],xe;for(;Qt+se<=pe;){if(St+=yt,St=U)return null;Qt+=se,Yt=Bt,Wt=Ft;let Me={projectionCache:Q,lineVertexArray:W,labelPlaneMatrix:Z,tileAnchorPoint:M,distanceFromAnchor:Qt,getElevation:At,previousVertex:Yt,direction:yt,absOffsetX:pe};if(Bt=Tr(St,Me),d===0)he.push(Yt),xe=Bt.sub(Yt);else{let dr,Xe=Bt.sub(Yt);dr=Xe.mag()===0?sa(Tr(St+yt,Me).sub(Bt),d,yt):sa(Xe,d,yt),Wt||(Wt=Yt.add(dr)),Ft=gt(St,dr,Bt,B,U,Wt,d,Me),he.push(Wt),xe=Ft.sub(Wt)}se=xe.mag()}let We=xe._mult((pe-Qt)/se)._add(Wt||Yt),Kr=dt+Math.atan2(Bt.y-Yt.y,Bt.x-Yt.x);return he.push(We),{point:We,angle:st?Kr:0,path:he}}let nt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ht(T,l){for(let d=0;d=1;Vr--)Xe.push(Me.path[Vr]);for(let Vr=1;Vrdn(ei,U,pt));Xe=Vr.some(ei=>ei.signedDistanceFromCamera<=0)?[]:Vr.map(ei=>ei.point)}let Jr=[];if(Xe.length>0){let Vr=Xe[0].clone(),ei=Xe[0].clone();for(let Rn=1;Rn=xe.x&&ei.x<=We.x&&Vr.y>=xe.y&&ei.y<=We.y?[Xe]:ei.xWe.x||ei.yWe.y?[]:n.am([Xe],xe.x,xe.y,We.x,We.y)}for(let Vr of Jr){Kr.reset(Vr,.25*he);let ei=0;ei=Kr.length<=.5*he?1:Math.ceil(Kr.paddedLength/Vi)+1;for(let Rn=0;Rn=this.screenRightBoundary||bthis.screenBottomBoundary}isInsideGrid(l,d,v,b){return v>=0&&l=0&&dv.collisionGroupID===d}}return this.collisionGroups[l]}}function _r(T,l,d,v,b){let{horizontalAlign:M,verticalAlign:O}=n.au(T);return new n.P(-(M-.5)*l+v[0]*b,-(O-.5)*d+v[1]*b)}function Ye(T,l,d,v,b,M){let{x1:O,x2:B,y1:U,y2:W,anchorPointX:Z,anchorPointY:Q}=T,st=new n.P(l,d);return v&&st._rotate(b?M:-M),{x1:O+st.x,y1:U+st.y,x2:B+st.x,y2:W+st.y,anchorPointX:Z,anchorPointY:Q}}class lr{constructor(l,d,v,b,M){this.transform=l.clone(),this.terrain=d,this.collisionIndex=new _t(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=v,this.retainedQueryData={},this.collisionGroups=new ar(b),this.collisionCircleArrays={},this.prevPlacement=M,M&&(M.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(l,d,v,b){let M=v.getBucket(d),O=v.latestFeatureIndex;if(!M||!O||d.id!==M.layerIds[0])return;let B=v.collisionBoxArray,U=M.layers[0].layout,W=Math.pow(2,this.transform.zoom-v.tileID.overscaledZ),Z=v.tileSize/n.N,Q=this.transform.calculatePosMatrix(v.tileID.toUnwrapped()),st=U.get(\"text-pitch-alignment\")===\"map\",At=U.get(\"text-rotation-alignment\")===\"map\",pt=Dt(v,1,this.transform.zoom),yt=ve(Q,st,At,this.transform,pt),dt=null;if(st){let Wt=Uo(Q,st,At,this.transform,pt);dt=n.a1([],this.transform.labelPlaneMatrix,Wt)}this.retainedQueryData[M.bucketInstanceId]=new oe(M.bucketInstanceId,O,M.sourceLayerIndex,M.index,v.tileID);let Ft={bucket:M,layout:U,posMatrix:Q,textLabelPlaneMatrix:yt,labelToScreenMatrix:dt,scale:W,textPixelRatio:Z,holdingForFade:v.holdingForFade(),collisionBoxArray:B,partiallyEvaluatedTextSize:n.ah(M.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(M.sourceID)};if(b)for(let Wt of M.sortKeyRanges){let{sortKey:St,symbolInstanceStart:Bt,symbolInstanceEnd:Yt}=Wt;l.push({sortKey:St,symbolInstanceStart:Bt,symbolInstanceEnd:Yt,parameters:Ft})}else l.push({symbolInstanceStart:0,symbolInstanceEnd:M.symbolInstances.length,parameters:Ft})}attemptAnchorPlacement(l,d,v,b,M,O,B,U,W,Z,Q,st,At,pt,yt,dt){let Ft=n.aq[l.textAnchor],Wt=[l.textOffset0,l.textOffset1],St=_r(Ft,v,b,Wt,M),Bt=this.collisionIndex.placeCollisionBox(Ye(d,St.x,St.y,O,B,this.transform.angle),Q,U,W,Z.predicate,dt);if((!yt||this.collisionIndex.placeCollisionBox(Ye(yt,St.x,St.y,O,B,this.transform.angle),Q,U,W,Z.predicate,dt).box.length!==0)&&Bt.box.length>0){let Yt;if(this.prevPlacement&&this.prevPlacement.variableOffsets[st.crossTileID]&&this.prevPlacement.placements[st.crossTileID]&&this.prevPlacement.placements[st.crossTileID].text&&(Yt=this.prevPlacement.variableOffsets[st.crossTileID].anchor),st.crossTileID===0)throw new Error(\"symbolInstance.crossTileID can't be 0\");return this.variableOffsets[st.crossTileID]={textOffset:Wt,width:v,height:b,anchor:Ft,textBoxScale:M,prevAnchor:Yt},this.markUsedJustification(At,Ft,st,pt),At.allowVerticalPlacement&&(this.markUsedOrientation(At,pt,st),this.placedOrientations[st.crossTileID]=pt),{shift:St,placedGlyphBoxes:Bt}}}placeLayerBucketPart(l,d,v){let{bucket:b,layout:M,posMatrix:O,textLabelPlaneMatrix:B,labelToScreenMatrix:U,textPixelRatio:W,holdingForFade:Z,collisionBoxArray:Q,partiallyEvaluatedTextSize:st,collisionGroup:At}=l.parameters,pt=M.get(\"text-optional\"),yt=M.get(\"icon-optional\"),dt=n.ar(M,\"text-overlap\",\"text-allow-overlap\"),Ft=dt===\"always\",Wt=n.ar(M,\"icon-overlap\",\"icon-allow-overlap\"),St=Wt===\"always\",Bt=M.get(\"text-rotation-alignment\")===\"map\",Yt=M.get(\"text-pitch-alignment\")===\"map\",Qt=M.get(\"icon-text-fit\")!==\"none\",se=M.get(\"symbol-z-order\")===\"viewport-y\",pe=Ft&&(St||!b.hasIconData()||yt),he=St&&(Ft||!b.hasTextData()||pt);!b.collisionArrays&&Q&&b.deserializeCollisionBoxes(Q);let xe=this.retainedQueryData[b.bucketInstanceId].tileID,We=this.terrain?(Me,dr)=>this.terrain.getElevation(xe,Me,dr):null,Kr=(Me,dr)=>{var Xe,Vi;if(d[Me.crossTileID])return;if(Z)return void(this.placements[Me.crossTileID]=new re(!1,!1,!1));let Jr=!1,Vr=!1,ei=!0,Rn=null,$i={box:null,offscreen:null},zs={box:null,offscreen:null},cs=null,Dn=null,Wo=null,jr=0,jl=0,Gl=0;dr.textFeatureIndex?jr=dr.textFeatureIndex:Me.useRuntimeCollisionCircles&&(jr=Me.featureIndex),dr.verticalTextFeatureIndex&&(jl=dr.verticalTextFeatureIndex);let mu=dr.textBox;if(mu){let Ns=On=>{let us=n.ai.horizontal;if(b.allowVerticalPlacement&&!On&&this.prevPlacement){let Ho=this.prevPlacement.placedOrientations[Me.crossTileID];Ho&&(this.placedOrientations[Me.crossTileID]=Ho,us=Ho,this.markUsedOrientation(b,us,Me))}return us},Es=(On,us)=>{if(b.allowVerticalPlacement&&Me.numVerticalGlyphVertices>0&&dr.verticalTextBox){for(let Ho of b.writingModes)if(Ho===n.ai.vertical?($i=us(),zs=$i):$i=On(),$i&&$i.box&&$i.box.length)break}else $i=On()},yo=Me.textAnchorOffsetStartIndex,_h=Me.textAnchorOffsetEndIndex;if(_h===yo){let On=(us,Ho)=>{let pn=this.collisionIndex.placeCollisionBox(us,dt,W,O,At.predicate,We);return pn&&pn.box&&pn.box.length&&(this.markUsedOrientation(b,Ho,Me),this.placedOrientations[Me.crossTileID]=Ho),pn};Es(()=>On(mu,n.ai.horizontal),()=>{let us=dr.verticalTextBox;return b.allowVerticalPlacement&&Me.numVerticalGlyphVertices>0&&us?On(us,n.ai.vertical):{box:null,offscreen:null}}),Ns($i&&$i.box&&$i.box.length)}else{let On=n.aq[(Vi=(Xe=this.prevPlacement)===null||Xe===void 0?void 0:Xe.variableOffsets[Me.crossTileID])===null||Vi===void 0?void 0:Vi.anchor],us=(pn,no,Gr)=>{let Na=pn.x2-pn.x1,d_=pn.y2-pn.y1,Bd=Me.textBoxScale,oA=Qt&&Wt===\"never\"?no:null,Wl={box:[],offscreen:!1},qo=dt===\"never\"?1:2,me=\"never\";On&&qo++;for(let Le=0;Leus(mu,dr.iconBox,n.ai.horizontal),()=>{let pn=dr.verticalTextBox;return b.allowVerticalPlacement&&!($i&&$i.box&&$i.box.length)&&Me.numVerticalGlyphVertices>0&&pn?us(pn,dr.verticalIconBox,n.ai.vertical):{box:null,offscreen:null}}),$i&&(Jr=$i.box,ei=$i.offscreen);let Ho=Ns($i&&$i.box);if(!Jr&&this.prevPlacement){let pn=this.prevPlacement.variableOffsets[Me.crossTileID];pn&&(this.variableOffsets[Me.crossTileID]=pn,this.markUsedJustification(b,pn.anchor,Me,Ho))}}}if(cs=$i,Jr=cs&&cs.box&&cs.box.length>0,ei=cs&&cs.offscreen,Me.useRuntimeCollisionCircles){let Ns=b.text.placedSymbolArray.get(Me.centerJustifiedTextSymbolIndex),Es=n.aj(b.textSizeData,st,Ns),yo=M.get(\"text-padding\");Dn=this.collisionIndex.placeCollisionCircles(dt,Ns,b.lineVertexArray,b.glyphOffsetArray,Es,O,B,U,v,Yt,At.predicate,Me.collisionCircleDiameter,yo,We),Dn.circles.length&&Dn.collisionDetected&&!v&&n.w(\"Collisions detected, but collision boxes are not shown\"),Jr=Ft||Dn.circles.length>0&&!Dn.collisionDetected,ei=ei&&Dn.offscreen}if(dr.iconFeatureIndex&&(Gl=dr.iconFeatureIndex),dr.iconBox){let Ns=Es=>{let yo=Qt&&Rn?Ye(Es,Rn.x,Rn.y,Bt,Yt,this.transform.angle):Es;return this.collisionIndex.placeCollisionBox(yo,Wt,W,O,At.predicate,We)};zs&&zs.box&&zs.box.length&&dr.verticalIconBox?(Wo=Ns(dr.verticalIconBox),Vr=Wo.box.length>0):(Wo=Ns(dr.iconBox),Vr=Wo.box.length>0),ei=ei&&Wo.offscreen}let gu=pt||Me.numHorizontalGlyphVertices===0&&Me.numVerticalGlyphVertices===0,gh=yt||Me.numIconVertices===0;if(gu||gh?gh?gu||(Vr=Vr&&Jr):Jr=Vr&&Jr:Vr=Jr=Vr&&Jr,Jr&&cs&&cs.box&&this.collisionIndex.insertCollisionBox(cs.box,dt,M.get(\"text-ignore-placement\"),b.bucketInstanceId,zs&&zs.box&&jl?jl:jr,At.ID),Vr&&Wo&&this.collisionIndex.insertCollisionBox(Wo.box,Wt,M.get(\"icon-ignore-placement\"),b.bucketInstanceId,Gl,At.ID),Dn&&(Jr&&this.collisionIndex.insertCollisionCircles(Dn.circles,dt,M.get(\"text-ignore-placement\"),b.bucketInstanceId,jr,At.ID),v)){let Ns=b.bucketInstanceId,Es=this.collisionCircleArrays[Ns];Es===void 0&&(Es=this.collisionCircleArrays[Ns]=new ne);for(let yo=0;yo=0;--dr){let Xe=Me[dr];Kr(b.symbolInstances.get(Xe),b.collisionArrays[Xe])}}else for(let Me=l.symbolInstanceStart;Me=0&&(l.text.placedSymbolArray.get(B).crossTileID=M>=0&&B!==M?0:v.crossTileID)}markUsedOrientation(l,d,v){let b=d===n.ai.horizontal||d===n.ai.horizontalOnly?d:0,M=d===n.ai.vertical?d:0,O=[v.leftJustifiedTextSymbolIndex,v.centerJustifiedTextSymbolIndex,v.rightJustifiedTextSymbolIndex];for(let B of O)l.text.placedSymbolArray.get(B).placedOrientation=b;v.verticalPlacedTextSymbolIndex&&(l.text.placedSymbolArray.get(v.verticalPlacedTextSymbolIndex).placedOrientation=M)}commit(l){this.commitTime=l,this.zoomAtLastRecencyCheck=this.transform.zoom;let d=this.prevPlacement,v=!1;this.prevZoomAdjustment=d?d.zoomAdjustment(this.transform.zoom):0;let b=d?d.symbolFadeChange(l):1,M=d?d.opacities:{},O=d?d.variableOffsets:{},B=d?d.placedOrientations:{};for(let U in this.placements){let W=this.placements[U],Z=M[U];Z?(this.opacities[U]=new Ut(Z,b,W.text,W.icon),v=v||W.text!==Z.text.placed||W.icon!==Z.icon.placed):(this.opacities[U]=new Ut(null,b,W.text,W.icon,W.skipFade),v=v||W.text||W.icon)}for(let U in M){let W=M[U];if(!this.opacities[U]){let Z=new Ut(W,b,!1,!1);Z.isHidden()||(this.opacities[U]=Z,v=v||W.text.placed||W.icon.placed)}}for(let U in O)this.variableOffsets[U]||!this.opacities[U]||this.opacities[U].isHidden()||(this.variableOffsets[U]=O[U]);for(let U in B)this.placedOrientations[U]||!this.opacities[U]||this.opacities[U].isHidden()||(this.placedOrientations[U]=B[U]);if(d&&d.lastPlacementChangeTime===void 0)throw new Error(\"Last placement time for previous placement is not defined\");v?this.lastPlacementChangeTime=l:typeof this.lastPlacementChangeTime!=\"number\"&&(this.lastPlacementChangeTime=d?d.lastPlacementChangeTime:l)}updateLayerOpacities(l,d){let v={};for(let b of d){let M=b.getBucket(l);M&&b.latestFeatureIndex&&l.id===M.layerIds[0]&&this.updateBucketOpacities(M,v,b.collisionBoxArray)}}updateBucketOpacities(l,d,v){l.hasTextData()&&(l.text.opacityVertexArray.clear(),l.text.hasVisibleVertices=!1),l.hasIconData()&&(l.icon.opacityVertexArray.clear(),l.icon.hasVisibleVertices=!1),l.hasIconCollisionBoxData()&&l.iconCollisionBox.collisionVertexArray.clear(),l.hasTextCollisionBoxData()&&l.textCollisionBox.collisionVertexArray.clear();let b=l.layers[0],M=b.layout,O=new Ut(null,0,!1,!1,!0),B=M.get(\"text-allow-overlap\"),U=M.get(\"icon-allow-overlap\"),W=b._unevaluatedLayout.hasValue(\"text-variable-anchor\")||b._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),Z=M.get(\"text-rotation-alignment\")===\"map\",Q=M.get(\"text-pitch-alignment\")===\"map\",st=M.get(\"icon-text-fit\")!==\"none\",At=new Ut(null,0,B&&(U||!l.hasIconData()||M.get(\"icon-optional\")),U&&(B||!l.hasTextData()||M.get(\"text-optional\")),!0);!l.collisionArrays&&v&&(l.hasIconCollisionBoxData()||l.hasTextCollisionBoxData())&&l.deserializeCollisionBoxes(v);let pt=(yt,dt,Ft)=>{for(let Wt=0;Wt
0,Qt=this.placedOrientations[dt.crossTileID],se=Qt===n.ai.vertical,pe=Qt===n.ai.horizontal||Qt===n.ai.horizontalOnly;if(Ft>0||Wt>0){let he=Kn(Bt.text);pt(l.text,Ft,se?oa:he),pt(l.text,Wt,pe?oa:he);let xe=Bt.text.isHidden();[dt.rightJustifiedTextSymbolIndex,dt.centerJustifiedTextSymbolIndex,dt.leftJustifiedTextSymbolIndex].forEach(Me=>{Me>=0&&(l.text.placedSymbolArray.get(Me).hidden=xe||se?1:0)}),dt.verticalPlacedTextSymbolIndex>=0&&(l.text.placedSymbolArray.get(dt.verticalPlacedTextSymbolIndex).hidden=xe||pe?1:0);let We=this.variableOffsets[dt.crossTileID];We&&this.markUsedJustification(l,We.anchor,dt,Qt);let Kr=this.placedOrientations[dt.crossTileID];Kr&&(this.markUsedJustification(l,\"left\",dt,Kr),this.markUsedOrientation(l,Kr,dt))}if(Yt){let he=Kn(Bt.icon),xe=!(st&&dt.verticalPlacedIconSymbolIndex&&se);dt.placedIconSymbolIndex>=0&&(pt(l.icon,dt.numIconVertices,xe?he:oa),l.icon.placedSymbolArray.get(dt.placedIconSymbolIndex).hidden=Bt.icon.isHidden()),dt.verticalPlacedIconSymbolIndex>=0&&(pt(l.icon,dt.numVerticalIconVertices,xe?oa:he),l.icon.placedSymbolArray.get(dt.verticalPlacedIconSymbolIndex).hidden=Bt.icon.isHidden())}if(l.hasIconCollisionBoxData()||l.hasTextCollisionBoxData()){let he=l.collisionArrays[yt];if(he){let xe=new n.P(0,0);if(he.textBox||he.verticalTextBox){let Kr=!0;if(W){let Me=this.variableOffsets[St];Me?(xe=_r(Me.anchor,Me.width,Me.height,Me.textOffset,Me.textBoxScale),Z&&xe._rotate(Q?this.transform.angle:-this.transform.angle)):Kr=!1}he.textBox&&xr(l.textCollisionBox.collisionVertexArray,Bt.text.placed,!Kr||se,xe.x,xe.y),he.verticalTextBox&&xr(l.textCollisionBox.collisionVertexArray,Bt.text.placed,!Kr||pe,xe.x,xe.y)}let We=!!(!pe&&he.verticalIconBox);he.iconBox&&xr(l.iconCollisionBox.collisionVertexArray,Bt.icon.placed,We,st?xe.x:0,st?xe.y:0),he.verticalIconBox&&xr(l.iconCollisionBox.collisionVertexArray,Bt.icon.placed,!We,st?xe.x:0,st?xe.y:0)}}}if(l.sortFeatures(this.transform.angle),this.retainedQueryData[l.bucketInstanceId]&&(this.retainedQueryData[l.bucketInstanceId].featureSortOrder=l.featureSortOrder),l.hasTextData()&&l.text.opacityVertexBuffer&&l.text.opacityVertexBuffer.updateData(l.text.opacityVertexArray),l.hasIconData()&&l.icon.opacityVertexBuffer&&l.icon.opacityVertexBuffer.updateData(l.icon.opacityVertexArray),l.hasIconCollisionBoxData()&&l.iconCollisionBox.collisionVertexBuffer&&l.iconCollisionBox.collisionVertexBuffer.updateData(l.iconCollisionBox.collisionVertexArray),l.hasTextCollisionBoxData()&&l.textCollisionBox.collisionVertexBuffer&&l.textCollisionBox.collisionVertexBuffer.updateData(l.textCollisionBox.collisionVertexArray),l.text.opacityVertexArray.length!==l.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${l.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${l.text.layoutVertexArray.length}) / 4`);if(l.icon.opacityVertexArray.length!==l.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${l.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${l.icon.layoutVertexArray.length}) / 4`);if(l.bucketInstanceId in this.collisionCircleArrays){let yt=this.collisionCircleArrays[l.bucketInstanceId];l.placementInvProjMatrix=yt.invProjMatrix,l.placementViewportMatrix=yt.viewportMatrix,l.collisionCircleArray=yt.circles,delete this.collisionCircleArrays[l.bucketInstanceId]}}symbolFadeChange(l){return this.fadeDuration===0?1:(l-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(l){return Math.max(0,(this.transform.zoom-l)/1.5)}hasTransitions(l){return this.stale||l-this.lastPlacementChangeTimel}setStale(){this.stale=!0}}function xr(T,l,d,v,b){T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0)}let vi=Math.pow(2,25),Bi=Math.pow(2,24),ni=Math.pow(2,17),Hr=Math.pow(2,16),Un=Math.pow(2,9),Li=Math.pow(2,8),gn=Math.pow(2,1);function Kn(T){if(T.opacity===0&&!T.placed)return 0;if(T.opacity===1&&T.placed)return 4294967295;let l=T.placed?1:0,d=Math.floor(127*T.opacity);return d*vi+l*Bi+d*ni+l*Hr+d*Un+l*Li+d*gn+l}let oa=0;class Om{constructor(l){this._sortAcrossTiles=l.layout.get(\"symbol-z-order\")!==\"viewport-y\"&&!l.layout.get(\"symbol-sort-key\").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(l,d,v,b,M){let O=this._bucketParts;for(;this._currentTileIndexB.sortKey-U.sortKey));this._currentPartIndex!this._forceFullPlacement&&n.h.now()-b>2;for(;this._currentPlacementIndex>=0;){let O=d[l[this._currentPlacementIndex]],B=this.placement.collisionIndex.transform.zoom;if(O.type===\"symbol\"&&(!O.minzoom||O.minzoom<=B)&&(!O.maxzoom||O.maxzoom>B)){if(this._inProgressLayer||(this._inProgressLayer=new Om(O)),this._inProgressLayer.continuePlacement(v[O.source],this.placement,this._showCollisionBoxes,O,M))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(l){return this.placement.commit(l),this.placement}}let ws=512/n.N/2;class ih{constructor(l,d,v){this.tileID=l,this.bucketInstanceId=v,this._symbolsByKey={};let b=new Map;for(let M=0;M({x:Math.floor(U.anchorX*ws),y:Math.floor(U.anchorY*ws)})),crossTileIDs:O.map(U=>U.crossTileID)};if(B.positions.length>128){let U=new n.av(B.positions.length,16,Uint16Array);for(let{x:W,y:Z}of B.positions)U.add(W,Z);U.finish(),delete B.positions,B.index=U}this._symbolsByKey[M]=B}}getScaledCoordinates(l,d){let{x:v,y:b,z:M}=this.tileID.canonical,{x:O,y:B,z:U}=d.canonical,W=ws/Math.pow(2,U-M),Z=(B*n.N+l.anchorY)*W,Q=b*n.N*ws;return{x:Math.floor((O*n.N+l.anchorX)*W-v*n.N*ws),y:Math.floor(Z-Q)}}findMatches(l,d,v){let b=this.tileID.canonical.zl)}}class ai{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class La{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(l){let d=Math.round((l-this.lng)/360);if(d!==0)for(let v in this.indexes){let b=this.indexes[v],M={};for(let O in b){let B=b[O];B.tileID=B.tileID.unwrapTo(B.tileID.wrap+d),M[B.tileID.key]=B}this.indexes[v]=M}this.lng=l}addBucket(l,d,v){if(this.indexes[l.overscaledZ]&&this.indexes[l.overscaledZ][l.key]){if(this.indexes[l.overscaledZ][l.key].bucketInstanceId===d.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(l.overscaledZ,this.indexes[l.overscaledZ][l.key])}for(let M=0;Ml.overscaledZ)for(let B in O){let U=O[B];U.tileID.isChildOf(l)&&U.findMatches(d.symbolInstances,l,b)}else{let B=O[l.scaledTo(Number(M)).key];B&&B.findMatches(d.symbolInstances,l,b)}}for(let M=0;M{d[v]=!0});for(let v in this.layerIndexes)d[v]||delete this.layerIndexes[v]}}let on=(T,l)=>n.x(T,l&&l.filter(d=>d.identifier!==\"source.canvas\")),kn=n.F(n.ax,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setGlyphs\",\"setSprite\"]),Bm=n.F(n.ax,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Vo=n.aw();class Vn extends n.E{constructor(l,d={}){super(),this.map=l,this.dispatcher=new rh(po(),this,l._getMapId()),this.imageManager=new ue,this.imageManager.setEventedParent(this),this.glyphManager=new Lr(l._requestManager,d.localIdeographFontFamily),this.lineAtlas=new Fo(256,512),this.crossTileSymbolIndex=new Lc,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new n.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",n.az());let v=this;this._rtlTextPluginCallback=Vn.registerForPluginStateChange(b=>{v.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:b.pluginStatus,pluginURL:b.pluginURL},(M,O)=>{if(n.aA(M),O&&O.every(B=>B))for(let B in v.sourceCaches){let U=v.sourceCaches[B].getSource().type;U!==\"vector\"&&U!==\"geojson\"||v.sourceCaches[B].reload()}})}),this.on(\"data\",b=>{if(b.dataType!==\"source\"||b.sourceDataType!==\"metadata\")return;let M=this.sourceCaches[b.sourceId];if(!M)return;let O=M.getSource();if(O&&O.vectorLayerIds)for(let B in this._layers){let U=this._layers[B];U.source===O.id&&this._validateLayer(U)}})}loadURL(l,d={},v){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),d.validate=typeof d.validate!=\"boolean\"||d.validate;let b=this.map._requestManager.transformRequest(l,Y.Style);this._request=n.f(b,(M,O)=>{this._request=null,M?this.fire(new n.j(M)):O&&this._load(O,d,v)})}loadJSON(l,d={},v){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),this._request=n.h.frame(()=>{this._request=null,d.validate=d.validate!==!1,this._load(l,d,v)})}loadEmpty(){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),this._load(Vo,{validate:!1})}_load(l,d,v){var b;let M=d.transformStyle?d.transformStyle(v,l):l;if(!d.validate||!on(this,n.y(M))){this._loaded=!0,this.stylesheet=M;for(let O in M.sources)this.addSource(O,M.sources[O],{validate:!1});M.sprite?this._loadSprite(M.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(M.glyphs),this._createLayers(),this.light=new Pc(this.stylesheet.light),this.map.setTerrain((b=this.stylesheet.terrain)!==null&&b!==void 0?b:null),this.fire(new n.k(\"data\",{dataType:\"style\"})),this.fire(new n.k(\"style.load\"))}}_createLayers(){let l=n.aB(this.stylesheet.layers);this.dispatcher.broadcast(\"setLayers\",l),this._order=l.map(d=>d.id),this._layers={},this._serializedLayers=null;for(let d of l){let v=n.aC(d);v.setEventedParent(this,{layer:{id:d.id}}),this._layers[d.id]=v}}_loadSprite(l,d=!1,v=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(b,M,O,B){let U=Ot(b),W=U.length,Z=O>1?\"@2x\":\"\",Q={},st={},At={};for(let{id:pt,url:yt}of U){let dt=M.transformRequest(M.normalizeSpriteURL(yt,Z,\".json\"),Y.SpriteJSON),Ft=`${pt}_${dt.url}`;Q[Ft]=n.f(dt,(Bt,Yt)=>{delete Q[Ft],st[pt]=Yt,Kt(B,st,At,Bt,W)});let Wt=M.transformRequest(M.normalizeSpriteURL(yt,Z,\".png\"),Y.SpriteImage),St=`${pt}_${Wt.url}`;Q[St]=j.getImage(Wt,(Bt,Yt)=>{delete Q[St],At[pt]=Yt,Kt(B,st,At,Bt,W)})}return{cancel(){for(let pt of Object.values(Q))pt.cancel()}}}(l,this.map._requestManager,this.map.getPixelRatio(),(b,M)=>{if(this._spriteRequest=null,b)this.fire(new n.j(b));else if(M)for(let O in M){this._spritesImagesIds[O]=[];let B=this._spritesImagesIds[O]?this._spritesImagesIds[O].filter(U=>!(U in M)):[];for(let U of B)this.imageManager.removeImage(U),this._changedImages[U]=!0;for(let U in M[O]){let W=O===\"default\"?U:`${O}:${U}`;this._spritesImagesIds[O].push(W),W in this.imageManager.images?this.imageManager.updateImage(W,M[O][U],!1):this.imageManager.addImage(W,M[O][U]),d&&(this._changedImages[W]=!0)}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),d&&(this._changed=!0),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"})),v&&v(b)})}_unloadSprite(){for(let l of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(l),this._changedImages[l]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}_validateLayer(l){let d=this.sourceCaches[l.source];if(!d)return;let v=l.sourceLayer;if(!v)return;let b=d.getSource();(b.type===\"geojson\"||b.vectorLayerIds&&b.vectorLayerIds.indexOf(v)===-1)&&this.fire(new n.j(new Error(`Source layer \"${v}\" does not exist on source \"${b.id}\" as specified by style layer \"${l.id}\".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let l in this.sourceCaches)if(!this.sourceCaches[l].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(l){let d=this._serializedAllLayers();if(!l||l.length===0)return Object.values(d);let v=[];for(let b of l)d[b]&&v.push(d[b]);return v}_serializedAllLayers(){let l=this._serializedLayers;if(l)return l;l=this._serializedLayers={};let d=Object.keys(this._layers);for(let v of d){let b=this._layers[v];b.type!==\"custom\"&&(l[v]=b.serialize())}return l}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;for(let l in this.sourceCaches)if(this.sourceCaches[l].hasTransition())return!0;for(let l in this._layers)if(this._layers[l].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading.\")}update(l){if(!this._loaded)return;let d=this._changed;if(this._changed){let b=Object.keys(this._updatedLayers),M=Object.keys(this._removedLayers);(b.length||M.length)&&this._updateWorkerLayers(b,M);for(let O in this._updatedSources){let B=this._updatedSources[O];if(B===\"reload\")this._reloadSource(O);else{if(B!==\"clear\")throw new Error(`Invalid action ${B}`);this._clearSource(O)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let O in this._updatedPaintProps)this._layers[O].updateTransitions(l);this.light.updateTransitions(l),this._resetUpdates()}let v={};for(let b in this.sourceCaches){let M=this.sourceCaches[b];v[b]=M.used,M.used=!1}for(let b of this._order){let M=this._layers[b];M.recalculate(l,this._availableImages),!M.isHidden(l.zoom)&&M.source&&(this.sourceCaches[M.source].used=!0)}for(let b in v){let M=this.sourceCaches[b];v[b]!==M.used&&M.fire(new n.k(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:b}))}this.light.recalculate(l),this.z=l.zoom,d&&this.fire(new n.k(\"data\",{dataType:\"style\"}))}_updateTilesForChangedImages(){let l=Object.keys(this._changedImages);if(l.length){for(let d in this.sourceCaches)this.sourceCaches[d].reloadTilesForDependencies([\"icons\",\"patterns\"],l);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let l in this.sourceCaches)this.sourceCaches[l].reloadTilesForDependencies([\"glyphs\"],[\"\"]);this._glyphsDidChange=!1}}_updateWorkerLayers(l,d){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeByIds(l),removedIds:d})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(l,d={}){this._checkLoaded();let v=this.serialize();if(l=d.transformStyle?d.transformStyle(v,l):l,on(this,n.y(l)))return!1;(l=n.aD(l)).layers=n.aB(l.layers);let b=n.aE(v,l).filter(O=>!(O.command in Bm));if(b.length===0)return!1;let M=b.filter(O=>!(O.command in kn));if(M.length>0)throw new Error(`Unimplemented: ${M.map(O=>O.command).join(\", \")}.`);for(let O of b)O.command!==\"setTransition\"&&this[O.command].apply(this,O.args);return this.stylesheet=l,this._serializedLayers=null,!0}addImage(l,d){if(this.getImage(l))return this.fire(new n.j(new Error(`An image named \"${l}\" already exists.`)));this.imageManager.addImage(l,d),this._afterImageUpdated(l)}updateImage(l,d){this.imageManager.updateImage(l,d)}getImage(l){return this.imageManager.getImage(l)}removeImage(l){if(!this.getImage(l))return this.fire(new n.j(new Error(`An image named \"${l}\" does not exist.`)));this.imageManager.removeImage(l),this._afterImageUpdated(l)}_afterImageUpdated(l){this._availableImages=this.imageManager.listImages(),this._changedImages[l]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(l,d,v={}){if(this._checkLoaded(),this.sourceCaches[l]!==void 0)throw new Error(`Source \"${l}\" already exists.`);if(!d.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(d).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(d.type)>=0&&this._validate(n.y.source,`sources.${l}`,d,null,v))return;this.map&&this.map._collectResourceTiming&&(d.collectResourceTiming=!0);let b=this.sourceCaches[l]=new os(l,d,this.dispatcher);b.style=this,b.setEventedParent(this,()=>({isSourceLoaded:b.loaded(),source:b.serialize(),sourceId:l})),b.onAdd(this.map),this._changed=!0}removeSource(l){if(this._checkLoaded(),this.sourceCaches[l]===void 0)throw new Error(\"There is no source with this ID\");for(let v in this._layers)if(this._layers[v].source===l)return this.fire(new n.j(new Error(`Source \"${l}\" cannot be removed while layer \"${v}\" is using it.`)));let d=this.sourceCaches[l];delete this.sourceCaches[l],delete this._updatedSources[l],d.fire(new n.k(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:l})),d.setEventedParent(null),d.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(l,d){if(this._checkLoaded(),this.sourceCaches[l]===void 0)throw new Error(`There is no source with this ID=${l}`);let v=this.sourceCaches[l].getSource();if(v.type!==\"geojson\")throw new Error(`geojsonSource.type is ${v.type}, which is !== 'geojson`);v.setData(d),this._changed=!0}getSource(l){return this.sourceCaches[l]&&this.sourceCaches[l].getSource()}addLayer(l,d,v={}){this._checkLoaded();let b=l.id;if(this.getLayer(b))return void this.fire(new n.j(new Error(`Layer \"${b}\" already exists on this map.`)));let M;if(l.type===\"custom\"){if(on(this,n.aF(l)))return;M=n.aC(l)}else{if(\"source\"in l&&typeof l.source==\"object\"&&(this.addSource(b,l.source),l=n.aD(l),l=n.e(l,{source:b})),this._validate(n.y.layer,`layers.${b}`,l,{arrayIndex:-1},v))return;M=n.aC(l),this._validateLayer(M),M.setEventedParent(this,{layer:{id:b}})}let O=d?this._order.indexOf(d):this._order.length;if(d&&O===-1)this.fire(new n.j(new Error(`Cannot add layer \"${b}\" before non-existing layer \"${d}\".`)));else{if(this._order.splice(O,0,b),this._layerOrderChanged=!0,this._layers[b]=M,this._removedLayers[b]&&M.source&&M.type!==\"custom\"){let B=this._removedLayers[b];delete this._removedLayers[b],B.type!==M.type?this._updatedSources[M.source]=\"clear\":(this._updatedSources[M.source]=\"reload\",this.sourceCaches[M.source].pause())}this._updateLayer(M),M.onAdd&&M.onAdd(this.map)}}moveLayer(l,d){if(this._checkLoaded(),this._changed=!0,!this._layers[l])return void this.fire(new n.j(new Error(`The layer '${l}' does not exist in the map's style and cannot be moved.`)));if(l===d)return;let v=this._order.indexOf(l);this._order.splice(v,1);let b=d?this._order.indexOf(d):this._order.length;d&&b===-1?this.fire(new n.j(new Error(`Cannot move layer \"${l}\" before non-existing layer \"${d}\".`))):(this._order.splice(b,0,l),this._layerOrderChanged=!0)}removeLayer(l){this._checkLoaded();let d=this._layers[l];if(!d)return void this.fire(new n.j(new Error(`Cannot remove non-existing layer \"${l}\".`)));d.setEventedParent(null);let v=this._order.indexOf(l);this._order.splice(v,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[l]=d,delete this._layers[l],this._serializedLayers&&delete this._serializedLayers[l],delete this._updatedLayers[l],delete this._updatedPaintProps[l],d.onRemove&&d.onRemove(this.map)}getLayer(l){return this._layers[l]}getLayersOrder(){return[...this._order]}hasLayer(l){return l in this._layers}setLayerZoomRange(l,d,v){this._checkLoaded();let b=this.getLayer(l);b?b.minzoom===d&&b.maxzoom===v||(d!=null&&(b.minzoom=d),v!=null&&(b.maxzoom=v),this._updateLayer(b)):this.fire(new n.j(new Error(`Cannot set the zoom range of non-existing layer \"${l}\".`)))}setFilter(l,d,v={}){this._checkLoaded();let b=this.getLayer(l);if(b){if(!n.aG(b.filter,d))return d==null?(b.filter=void 0,void this._updateLayer(b)):void(this._validate(n.y.filter,`layers.${b.id}.filter`,d,null,v)||(b.filter=n.aD(d),this._updateLayer(b)))}else this.fire(new n.j(new Error(`Cannot filter non-existing layer \"${l}\".`)))}getFilter(l){return n.aD(this.getLayer(l).filter)}setLayoutProperty(l,d,v,b={}){this._checkLoaded();let M=this.getLayer(l);M?n.aG(M.getLayoutProperty(d),v)||(M.setLayoutProperty(d,v,b),this._updateLayer(M)):this.fire(new n.j(new Error(`Cannot style non-existing layer \"${l}\".`)))}getLayoutProperty(l,d){let v=this.getLayer(l);if(v)return v.getLayoutProperty(d);this.fire(new n.j(new Error(`Cannot get style of non-existing layer \"${l}\".`)))}setPaintProperty(l,d,v,b={}){this._checkLoaded();let M=this.getLayer(l);M?n.aG(M.getPaintProperty(d),v)||(M.setPaintProperty(d,v,b)&&this._updateLayer(M),this._changed=!0,this._updatedPaintProps[l]=!0):this.fire(new n.j(new Error(`Cannot style non-existing layer \"${l}\".`)))}getPaintProperty(l,d){return this.getLayer(l).getPaintProperty(d)}setFeatureState(l,d){this._checkLoaded();let v=l.source,b=l.sourceLayer,M=this.sourceCaches[v];if(M===void 0)return void this.fire(new n.j(new Error(`The source '${v}' does not exist in the map's style.`)));let O=M.getSource().type;O===\"geojson\"&&b?this.fire(new n.j(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):O!==\"vector\"||b?(l.id===void 0&&this.fire(new n.j(new Error(\"The feature id parameter must be provided.\"))),M.setFeatureState(b,l.id,d)):this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}removeFeatureState(l,d){this._checkLoaded();let v=l.source,b=this.sourceCaches[v];if(b===void 0)return void this.fire(new n.j(new Error(`The source '${v}' does not exist in the map's style.`)));let M=b.getSource().type,O=M===\"vector\"?l.sourceLayer:void 0;M!==\"vector\"||O?d&&typeof l.id!=\"string\"&&typeof l.id!=\"number\"?this.fire(new n.j(new Error(\"A feature id is required to remove its specific state property.\"))):b.removeFeatureState(O,l.id,d):this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}getFeatureState(l){this._checkLoaded();let d=l.source,v=l.sourceLayer,b=this.sourceCaches[d];if(b!==void 0)return b.getSource().type!==\"vector\"||v?(l.id===void 0&&this.fire(new n.j(new Error(\"The feature id parameter must be provided.\"))),b.getFeatureState(v,l.id)):void this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));this.fire(new n.j(new Error(`The source '${d}' does not exist in the map's style.`)))}getTransition(){return n.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let l=n.aH(this.sourceCaches,M=>M.serialize()),d=this._serializeByIds(this._order),v=this.map.getTerrain()||void 0,b=this.stylesheet;return n.aI({version:b.version,name:b.name,metadata:b.metadata,light:b.light,center:b.center,zoom:b.zoom,bearing:b.bearing,pitch:b.pitch,sprite:b.sprite,glyphs:b.glyphs,transition:b.transition,sources:l,layers:d,terrain:v},M=>M!==void 0)}_updateLayer(l){this._updatedLayers[l.id]=!0,l.source&&!this._updatedSources[l.source]&&this.sourceCaches[l.source].getSource().type!==\"raster\"&&(this._updatedSources[l.source]=\"reload\",this.sourceCaches[l.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(l){let d=O=>this._layers[O].type===\"fill-extrusion\",v={},b=[];for(let O=this._order.length-1;O>=0;O--){let B=this._order[O];if(d(B)){v[B]=O;for(let U of l){let W=U[B];if(W)for(let Z of W)b.push(Z)}}}b.sort((O,B)=>B.intersectionZ-O.intersectionZ);let M=[];for(let O=this._order.length-1;O>=0;O--){let B=this._order[O];if(d(B))for(let U=b.length-1;U>=0;U--){let W=b[U].feature;if(v[W.layer.id]{let pe=Ft.featureSortOrder;if(pe){let he=pe.indexOf(Qt.featureIndex);return pe.indexOf(se.featureIndex)-he}return se.featureIndex-Qt.featureIndex});for(let Qt of Yt)Bt.push(Qt)}}for(let Ft in pt)pt[Ft].forEach(Wt=>{let St=Wt.feature,Bt=W[B[Ft].source].getFeatureState(St.layer[\"source-layer\"],St.id);St.source=St.layer.source,St.layer[\"source-layer\"]&&(St.sourceLayer=St.layer[\"source-layer\"]),St.state=Bt});return pt}(this._layers,O,this.sourceCaches,l,d,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(M)}querySourceFeatures(l,d){d&&d.filter&&this._validate(n.y.filter,\"querySourceFeatures.filter\",d.filter,null,d);let v=this.sourceCaches[l];return v?function(b,M){let O=b.getRenderableIds().map(W=>b.getTileByID(W)),B=[],U={};for(let W=0;W{ol[b]=M})(l,d),d.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:l,url:d.workerSourceURL},v):v(null,null))}getLight(){return this.light.getLight()}setLight(l,d={}){this._checkLoaded();let v=this.light.getLight(),b=!1;for(let O in l)if(!n.aG(l[O],v[O])){b=!0;break}if(!b)return;let M={now:n.h.now(),transition:n.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(l,d),this.light.updateTransitions(M)}_validate(l,d,v,b,M={}){return(!M||M.validate!==!1)&&on(this,l.call(n.y,n.e({key:d,style:this.serialize(),value:v,styleSpec:n.v},b)))}_remove(l=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),n.aJ.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(let d in this._layers)this._layers[d].setEventedParent(null);for(let d in this.sourceCaches){let v=this.sourceCaches[d];v.setEventedParent(null),v.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(l)}_clearSource(l){this.sourceCaches[l].clearTiles()}_reloadSource(l){this.sourceCaches[l].resume(),this.sourceCaches[l].reload()}_updateSources(l){for(let d in this.sourceCaches)this.sourceCaches[d].update(l,this.map.terrain)}_generateCollisionBoxes(){for(let l in this.sourceCaches)this._reloadSource(l)}_updatePlacement(l,d,v,b,M=!1){let O=!1,B=!1,U={};for(let W of this._order){let Z=this._layers[W];if(Z.type!==\"symbol\")continue;if(!U[Z.source]){let st=this.sourceCaches[Z.source];U[Z.source]=st.getRenderableIds(!0).map(At=>st.getTileByID(At)).sort((At,pt)=>pt.tileID.overscaledZ-At.tileID.overscaledZ||(At.tileID.isLessThan(pt.tileID)?-1:1))}let Q=this.crossTileSymbolIndex.addLayer(Z,U[Z.source],l.center.lng);O=O||Q}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((M=M||this._layerOrderChanged||v===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(n.h.now(),l.zoom))&&(this.pauseablePlacement=new Fl(l,this.map.terrain,this._order,M,d,v,b,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,U),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(n.h.now()),B=!0),O&&this.pauseablePlacement.placement.setStale()),B||O)for(let W of this._order){let Z=this._layers[W];Z.type===\"symbol\"&&this.placement.updateLayerOpacities(Z,U[Z.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(n.h.now())}_releaseSymbolFadeTiles(){for(let l in this.sourceCaches)this.sourceCaches[l].releaseSymbolFadeTiles()}getImages(l,d,v){this.imageManager.getImages(d.icons,v),this._updateTilesForChangedImages();let b=this.sourceCaches[d.source];b&&b.setDependencies(d.tileID.key,d.type,d.icons)}getGlyphs(l,d,v){this.glyphManager.getGlyphs(d.stacks,v);let b=this.sourceCaches[d.source];b&&b.setDependencies(d.tileID.key,d.type,[\"\"])}getResource(l,d,v){return n.m(d,v)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(l,d={}){this._checkLoaded(),l&&this._validate(n.y.glyphs,\"glyphs\",l,null,d)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=l,this.glyphManager.entries={},this.glyphManager.setURL(l))}addSprite(l,d,v={},b){this._checkLoaded();let M=[{id:l,url:d}],O=[...Ot(this.stylesheet.sprite),...M];this._validate(n.y.sprite,\"sprite\",O,null,v)||(this.stylesheet.sprite=O,this._loadSprite(M,!0,b))}removeSprite(l){this._checkLoaded();let d=Ot(this.stylesheet.sprite);if(d.find(v=>v.id===l)){if(this._spritesImagesIds[l])for(let v of this._spritesImagesIds[l])this.imageManager.removeImage(v),this._changedImages[v]=!0;d.splice(d.findIndex(v=>v.id===l),1),this.stylesheet.sprite=d.length>0?d:void 0,delete this._spritesImagesIds[l],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}else this.fire(new n.j(new Error(`Sprite \"${l}\" doesn't exists on this map.`)))}getSprite(){return Ot(this.stylesheet.sprite)}setSprite(l,d={},v){this._checkLoaded(),l&&this._validate(n.y.sprite,\"sprite\",l,null,d)||(this.stylesheet.sprite=l,l?this._loadSprite(l,!0,v):(this._unloadSprite(),v&&v(null)))}}Vn.registerForPluginStateChange=n.aK;var mo=n.Q([{name:\"a_pos\",type:\"Int16\",components:2}]),zl=\"attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}\";let Yi={prelude:_i(`#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\n`,`#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}`),background:_i(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),backgroundPattern:_i(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),circle:_i(`varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:_i(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:_i(`uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`),heatmapTexture:_i(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),collisionBox:_i(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:_i(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:_i(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}\"),fill:_i(`#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:_i(`varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:_i(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:_i(`varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:_i(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:_i(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),line:_i(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}`),lineGradient:_i(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}`),linePattern:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:_i(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:_i(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),symbolIcon:_i(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:_i(`#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:_i(`#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:_i(\"uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}\",zl),terrainDepth:_i(\"varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}\",zl),terrainCoords:_i(\"precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}\",zl)};function _i(T,l){let d=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,v=l.match(/attribute ([\\w]+) ([\\w]+)/g),b=T.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),M=l.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),O=M?M.concat(b):b,B={};return{fragmentSource:T=T.replace(d,(U,W,Z,Q,st)=>(B[st]=!0,W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nvarying ${Z} ${Q} ${st};\n#else\nuniform ${Z} ${Q} u_${st};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${st}\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`)),vertexSource:l=l.replace(d,(U,W,Z,Q,st)=>{let At=Q===\"float\"?\"vec2\":\"vec4\",pt=st.match(/color/)?\"color\":At;return B[st]?W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nuniform lowp float u_${st}_t;\nattribute ${Z} ${At} a_${st};\nvarying ${Z} ${Q} ${st};\n#else\nuniform ${Z} ${Q} u_${st};\n#endif\n`:pt===\"vec4\"?`\n#ifndef HAS_UNIFORM_u_${st}\n ${st} = a_${st};\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${st}\n ${st} = unpack_mix_${pt}(a_${st}, u_${st}_t);\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`:W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nuniform lowp float u_${st}_t;\nattribute ${Z} ${At} a_${st};\n#else\nuniform ${Z} ${Q} u_${st};\n#endif\n`:pt===\"vec4\"?`\n#ifndef HAS_UNIFORM_u_${st}\n ${Z} ${Q} ${st} = a_${st};\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${st}\n ${Z} ${Q} ${st} = unpack_mix_${pt}(a_${st}, u_${st}_t);\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`}),staticAttributes:v,staticUniforms:O}}class Nl{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(l,d,v,b,M,O,B,U,W){this.context=l;let Z=this.boundPaintVertexBuffers.length!==b.length;for(let Q=0;!Z&&Q({u_depth:new n.aL(Qt,se.u_depth),u_terrain:new n.aL(Qt,se.u_terrain),u_terrain_dim:new n.aM(Qt,se.u_terrain_dim),u_terrain_matrix:new n.aN(Qt,se.u_terrain_matrix),u_terrain_unpack:new n.aO(Qt,se.u_terrain_unpack),u_terrain_exaggeration:new n.aM(Qt,se.u_terrain_exaggeration)}))(l,Yt),this.binderUniforms=v?v.getUniforms(l,Yt):[]}draw(l,d,v,b,M,O,B,U,W,Z,Q,st,At,pt,yt,dt,Ft,Wt){let St=l.gl;if(this.failedToCreate)return;if(l.program.set(this.program),l.setDepthMode(v),l.setStencilMode(b),l.setColorMode(M),l.setCullFace(O),U){l.activeTexture.set(St.TEXTURE2),St.bindTexture(St.TEXTURE_2D,U.depthTexture),l.activeTexture.set(St.TEXTURE3),St.bindTexture(St.TEXTURE_2D,U.texture);for(let Yt in this.terrainUniforms)this.terrainUniforms[Yt].set(U[Yt])}for(let Yt in this.fixedUniforms)this.fixedUniforms[Yt].set(B[Yt]);yt&&yt.setUniforms(l,this.binderUniforms,At,{zoom:pt});let Bt=0;switch(d){case St.LINES:Bt=2;break;case St.TRIANGLES:Bt=3;break;case St.LINE_STRIP:Bt=1}for(let Yt of st.get()){let Qt=Yt.vaos||(Yt.vaos={});(Qt[W]||(Qt[W]=new Nl)).bind(l,this,Z,yt?yt.getPaintVertexBuffers():[],Q,Yt.vertexOffset,dt,Ft,Wt),St.drawElements(d,Yt.primitiveLength*Bt,St.UNSIGNED_SHORT,Yt.primitiveOffset*Bt*2)}}}function Jn(T,l,d){let v=1/Dt(d,1,l.transform.tileZoom),b=Math.pow(2,d.tileID.overscaledZ),M=d.tileSize*Math.pow(2,l.transform.tileZoom)/b,O=M*(d.tileID.canonical.x+d.tileID.wrap*b),B=M*d.tileID.canonical.y;return{u_image:0,u_texsize:d.imageAtlasTexture.size,u_scale:[v,T.fromScale,T.toScale],u_fade:T.t,u_pixel_coord_upper:[O>>16,B>>16],u_pixel_coord_lower:[65535&O,65535&B]}}let Up=(T,l,d,v)=>{let b=l.style.light,M=b.properties.get(\"position\"),O=[M.x,M.y,M.z],B=function(){var W=new n.A(9);return n.A!=Float32Array&&(W[1]=0,W[2]=0,W[3]=0,W[5]=0,W[6]=0,W[7]=0),W[0]=1,W[4]=1,W[8]=1,W}();b.properties.get(\"anchor\")===\"viewport\"&&function(W,Z){var Q=Math.sin(Z),st=Math.cos(Z);W[0]=st,W[1]=Q,W[2]=0,W[3]=-Q,W[4]=st,W[5]=0,W[6]=0,W[7]=0,W[8]=1}(B,-l.transform.angle),function(W,Z,Q){var st=Z[0],At=Z[1],pt=Z[2];W[0]=st*Q[0]+At*Q[3]+pt*Q[6],W[1]=st*Q[1]+At*Q[4]+pt*Q[7],W[2]=st*Q[2]+At*Q[5]+pt*Q[8]}(O,O,B);let U=b.properties.get(\"color\");return{u_matrix:T,u_lightpos:O,u_lightintensity:b.properties.get(\"intensity\"),u_lightcolor:[U.r,U.g,U.b],u_vertical_gradient:+d,u_opacity:v}},Ul=(T,l,d,v,b,M,O)=>n.e(Up(T,l,d,v),Jn(M,l,O),{u_height_factor:-Math.pow(2,b.overscaledZ)/O.tileSize/8}),md=T=>({u_matrix:T}),gd=(T,l,d,v)=>n.e(md(T),Jn(d,l,v)),_d=(T,l)=>({u_matrix:T,u_world:l}),yd=(T,l,d,v,b)=>n.e(gd(T,l,d,v),{u_world:b}),lt=(T,l,d,v)=>{let b=T.transform,M,O;if(v.paint.get(\"circle-pitch-alignment\")===\"map\"){let B=Dt(d,1,b.zoom);M=!0,O=[B,B]}else M=!1,O=b.pixelsToGLUnits;return{u_camera_to_center_distance:b.cameraToCenterDistance,u_scale_with_map:+(v.paint.get(\"circle-pitch-scale\")===\"map\"),u_matrix:T.translatePosMatrix(l.posMatrix,d,v.paint.get(\"circle-translate\"),v.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+M,u_device_pixel_ratio:T.pixelRatio,u_extrude_scale:O}},ft=(T,l,d)=>{let v=Dt(d,1,l.zoom),b=Math.pow(2,l.zoom-d.tileID.overscaledZ),M=d.tileID.overscaleFactor();return{u_matrix:T,u_camera_to_center_distance:l.cameraToCenterDistance,u_pixels_to_tile_units:v,u_extrude_scale:[l.pixelsToGLUnits[0]/(v*b),l.pixelsToGLUnits[1]/(v*b)],u_overscale_factor:M}},Lt=(T,l,d=1)=>({u_matrix:T,u_color:l,u_overlay:0,u_overlay_scale:d}),$t=T=>({u_matrix:T}),ge=(T,l,d,v)=>({u_matrix:T,u_extrude_scale:Dt(l,1,d),u_intensity:v});function qe(T,l){let d=Math.pow(2,l.canonical.z),v=l.canonical.y;return[new n.U(0,v/d).toLngLat().lat,new n.U(0,(v+1)/d).toLngLat().lat]}let ti=(T,l,d,v)=>{let b=T.transform;return{u_matrix:Fm(T,l,d,v),u_ratio:1/Dt(l,1,b.zoom),u_device_pixel_ratio:T.pixelRatio,u_units_to_pixels:[1/b.pixelsToGLUnits[0],1/b.pixelsToGLUnits[1]]}},ts=(T,l,d,v,b)=>n.e(ti(T,l,d,b),{u_image:0,u_image_height:v}),Ss=(T,l,d,v,b)=>{let M=T.transform,O=ka(l,M);return{u_matrix:Fm(T,l,d,b),u_texsize:l.imageAtlasTexture.size,u_ratio:1/Dt(l,1,M.zoom),u_device_pixel_ratio:T.pixelRatio,u_image:0,u_scale:[O,v.fromScale,v.toScale],u_fade:v.t,u_units_to_pixels:[1/M.pixelsToGLUnits[0],1/M.pixelsToGLUnits[1]]}},Bs=(T,l,d,v,b,M)=>{let O=T.lineAtlas,B=ka(l,T.transform),U=d.layout.get(\"line-cap\")===\"round\",W=O.getDash(v.from,U),Z=O.getDash(v.to,U),Q=W.width*b.fromScale,st=Z.width*b.toScale;return n.e(ti(T,l,d,M),{u_patternscale_a:[B/Q,-W.height/2],u_patternscale_b:[B/st,-Z.height/2],u_sdfgamma:O.width/(256*Math.min(Q,st)*T.pixelRatio)/2,u_image:0,u_tex_y_a:W.y,u_tex_y_b:Z.y,u_mix:b.t})};function ka(T,l){return 1/Dt(T,1,l.tileZoom)}function Fm(T,l,d,v){return T.translatePosMatrix(v?v.posMatrix:l.tileID.posMatrix,l,d.paint.get(\"line-translate\"),d.paint.get(\"line-translate-anchor\"))}let Mx=(T,l,d,v,b)=>{return{u_matrix:T,u_tl_parent:l,u_scale_parent:d,u_buffer_scale:1,u_fade_t:v.mix,u_opacity:v.opacity*b.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:b.paint.get(\"raster-brightness-min\"),u_brightness_high:b.paint.get(\"raster-brightness-max\"),u_saturation_factor:(O=b.paint.get(\"raster-saturation\"),O>0?1-1/(1.001-O):-O),u_contrast_factor:(M=b.paint.get(\"raster-contrast\"),M>0?1/(1-M):1+M),u_spin_weights:Ex(b.paint.get(\"raster-hue-rotate\"))};var M,O};function Ex(T){T*=Math.PI/180;let l=Math.sin(T),d=Math.cos(T);return[(2*d+1)/3,(-Math.sqrt(3)*l-d+1)/3,(Math.sqrt(3)*l-d+1)/3]}let Xg=(T,l,d,v,b,M,O,B,U,W)=>{let Z=b.transform;return{u_is_size_zoom_constant:+(T===\"constant\"||T===\"source\"),u_is_size_feature_constant:+(T===\"constant\"||T===\"camera\"),u_size_t:l?l.uSizeT:0,u_size:l?l.uSize:0,u_camera_to_center_distance:Z.cameraToCenterDistance,u_pitch:Z.pitch/360*2*Math.PI,u_rotate_symbol:+d,u_aspect_ratio:Z.width/Z.height,u_fade_change:b.options.fadeDuration?b.symbolFadeChange:1,u_matrix:M,u_label_plane_matrix:O,u_coord_matrix:B,u_is_text:+U,u_pitch_with_map:+v,u_texsize:W,u_texture:0}},Kg=(T,l,d,v,b,M,O,B,U,W,Z)=>{let Q=b.transform;return n.e(Xg(T,l,d,v,b,M,O,B,U,W),{u_gamma_scale:v?Math.cos(Q._pitch)*Q.cameraToCenterDistance:1,u_device_pixel_ratio:b.pixelRatio,u_is_halo:+Z})},Af=(T,l,d,v,b,M,O,B,U,W)=>n.e(Kg(T,l,d,v,b,M,O,B,!0,U,!0),{u_texsize_icon:W,u_texture_icon:1}),zm=(T,l,d)=>({u_matrix:T,u_opacity:l,u_color:d}),cl=(T,l,d,v,b,M)=>n.e(function(O,B,U,W){let Z=U.imageManager.getPattern(O.from.toString()),Q=U.imageManager.getPattern(O.to.toString()),{width:st,height:At}=U.imageManager.getPixelSize(),pt=Math.pow(2,W.tileID.overscaledZ),yt=W.tileSize*Math.pow(2,U.transform.tileZoom)/pt,dt=yt*(W.tileID.canonical.x+W.tileID.wrap*pt),Ft=yt*W.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Z.tl,u_pattern_br_a:Z.br,u_pattern_tl_b:Q.tl,u_pattern_br_b:Q.br,u_texsize:[st,At],u_mix:B.t,u_pattern_size_a:Z.displaySize,u_pattern_size_b:Q.displaySize,u_scale_a:B.fromScale,u_scale_b:B.toScale,u_tile_units_to_pixels:1/Dt(W,1,U.transform.tileZoom),u_pixel_coord_upper:[dt>>16,Ft>>16],u_pixel_coord_lower:[65535&dt,65535&Ft]}}(v,M,d,b),{u_matrix:T,u_opacity:l}),Nm={fillExtrusion:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_lightpos:new n.aP(T,l.u_lightpos),u_lightintensity:new n.aM(T,l.u_lightintensity),u_lightcolor:new n.aP(T,l.u_lightcolor),u_vertical_gradient:new n.aM(T,l.u_vertical_gradient),u_opacity:new n.aM(T,l.u_opacity)}),fillExtrusionPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_lightpos:new n.aP(T,l.u_lightpos),u_lightintensity:new n.aM(T,l.u_lightintensity),u_lightcolor:new n.aP(T,l.u_lightcolor),u_vertical_gradient:new n.aM(T,l.u_vertical_gradient),u_height_factor:new n.aM(T,l.u_height_factor),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade),u_opacity:new n.aM(T,l.u_opacity)}),fill:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix)}),fillPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),fillOutline:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world)}),fillOutlinePattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),circle:(T,l)=>({u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_scale_with_map:new n.aL(T,l.u_scale_with_map),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_extrude_scale:new n.aQ(T,l.u_extrude_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_matrix:new n.aN(T,l.u_matrix)}),collisionBox:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pixels_to_tile_units:new n.aM(T,l.u_pixels_to_tile_units),u_extrude_scale:new n.aQ(T,l.u_extrude_scale),u_overscale_factor:new n.aM(T,l.u_overscale_factor)}),collisionCircle:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_inv_matrix:new n.aN(T,l.u_inv_matrix),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_viewport_size:new n.aQ(T,l.u_viewport_size)}),debug:(T,l)=>({u_color:new n.aR(T,l.u_color),u_matrix:new n.aN(T,l.u_matrix),u_overlay:new n.aL(T,l.u_overlay),u_overlay_scale:new n.aM(T,l.u_overlay_scale)}),clippingMask:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix)}),heatmap:(T,l)=>({u_extrude_scale:new n.aM(T,l.u_extrude_scale),u_intensity:new n.aM(T,l.u_intensity),u_matrix:new n.aN(T,l.u_matrix)}),heatmapTexture:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world),u_image:new n.aL(T,l.u_image),u_color_ramp:new n.aL(T,l.u_color_ramp),u_opacity:new n.aM(T,l.u_opacity)}),hillshade:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_latrange:new n.aQ(T,l.u_latrange),u_light:new n.aQ(T,l.u_light),u_shadow:new n.aR(T,l.u_shadow),u_highlight:new n.aR(T,l.u_highlight),u_accent:new n.aR(T,l.u_accent)}),hillshadePrepare:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_dimension:new n.aQ(T,l.u_dimension),u_zoom:new n.aM(T,l.u_zoom),u_unpack:new n.aO(T,l.u_unpack)}),line:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels)}),lineGradient:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_image:new n.aL(T,l.u_image),u_image_height:new n.aM(T,l.u_image_height)}),linePattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texsize:new n.aQ(T,l.u_texsize),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_image:new n.aL(T,l.u_image),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),lineSDF:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_patternscale_a:new n.aQ(T,l.u_patternscale_a),u_patternscale_b:new n.aQ(T,l.u_patternscale_b),u_sdfgamma:new n.aM(T,l.u_sdfgamma),u_image:new n.aL(T,l.u_image),u_tex_y_a:new n.aM(T,l.u_tex_y_a),u_tex_y_b:new n.aM(T,l.u_tex_y_b),u_mix:new n.aM(T,l.u_mix)}),raster:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_tl_parent:new n.aQ(T,l.u_tl_parent),u_scale_parent:new n.aM(T,l.u_scale_parent),u_buffer_scale:new n.aM(T,l.u_buffer_scale),u_fade_t:new n.aM(T,l.u_fade_t),u_opacity:new n.aM(T,l.u_opacity),u_image0:new n.aL(T,l.u_image0),u_image1:new n.aL(T,l.u_image1),u_brightness_low:new n.aM(T,l.u_brightness_low),u_brightness_high:new n.aM(T,l.u_brightness_high),u_saturation_factor:new n.aM(T,l.u_saturation_factor),u_contrast_factor:new n.aM(T,l.u_contrast_factor),u_spin_weights:new n.aP(T,l.u_spin_weights)}),symbolIcon:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texture:new n.aL(T,l.u_texture)}),symbolSDF:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texture:new n.aL(T,l.u_texture),u_gamma_scale:new n.aM(T,l.u_gamma_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_is_halo:new n.aL(T,l.u_is_halo)}),symbolTextAndIcon:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texsize_icon:new n.aQ(T,l.u_texsize_icon),u_texture:new n.aL(T,l.u_texture),u_texture_icon:new n.aL(T,l.u_texture_icon),u_gamma_scale:new n.aM(T,l.u_gamma_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_is_halo:new n.aL(T,l.u_is_halo)}),background:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_opacity:new n.aM(T,l.u_opacity),u_color:new n.aR(T,l.u_color)}),backgroundPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_opacity:new n.aM(T,l.u_opacity),u_image:new n.aL(T,l.u_image),u_pattern_tl_a:new n.aQ(T,l.u_pattern_tl_a),u_pattern_br_a:new n.aQ(T,l.u_pattern_br_a),u_pattern_tl_b:new n.aQ(T,l.u_pattern_tl_b),u_pattern_br_b:new n.aQ(T,l.u_pattern_br_b),u_texsize:new n.aQ(T,l.u_texsize),u_mix:new n.aM(T,l.u_mix),u_pattern_size_a:new n.aQ(T,l.u_pattern_size_a),u_pattern_size_b:new n.aQ(T,l.u_pattern_size_b),u_scale_a:new n.aM(T,l.u_scale_a),u_scale_b:new n.aM(T,l.u_scale_b),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_tile_units_to_pixels:new n.aM(T,l.u_tile_units_to_pixels)}),terrain:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texture:new n.aL(T,l.u_texture),u_ele_delta:new n.aM(T,l.u_ele_delta)}),terrainDepth:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ele_delta:new n.aM(T,l.u_ele_delta)}),terrainCoords:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texture:new n.aL(T,l.u_texture),u_terrain_coords_id:new n.aM(T,l.u_terrain_coords_id),u_ele_delta:new n.aM(T,l.u_ele_delta)})};class Um{constructor(l,d,v){this.context=l;let b=l.gl;this.buffer=b.createBuffer(),this.dynamicDraw=!!v,this.context.unbindVAO(),l.bindElementBuffer.set(this.buffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,d.arrayBuffer,this.dynamicDraw?b.DYNAMIC_DRAW:b.STATIC_DRAW),this.dynamicDraw||delete d.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(l){let d=this.context.gl;if(!this.dynamicDraw)throw new Error(\"Attempted to update data while not in dynamic mode.\");this.context.unbindVAO(),this.bind(),d.bufferSubData(d.ELEMENT_ARRAY_BUFFER,0,l.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let Vp={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class Vm{constructor(l,d,v,b){this.length=d.length,this.attributes=v,this.itemSize=d.bytesPerElement,this.dynamicDraw=b,this.context=l;let M=l.gl;this.buffer=M.createBuffer(),l.bindVertexBuffer.set(this.buffer),M.bufferData(M.ARRAY_BUFFER,d.arrayBuffer,this.dynamicDraw?M.DYNAMIC_DRAW:M.STATIC_DRAW),this.dynamicDraw||delete d.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(l){if(l.length!==this.length)throw new Error(`Length of new data is ${l.length}, which doesn't match current length of ${this.length}`);let d=this.context.gl;this.bind(),d.bufferSubData(d.ARRAY_BUFFER,0,l.arrayBuffer)}enableAttributes(l,d){for(let v=0;v0){let xe=n.Z(),We=se;n.aU(xe,Qt.placementInvProjMatrix,T.transform.glCoordMatrix),n.aU(xe,xe,Qt.placementViewportMatrix),Z.push({circleArray:he,circleOffset:st,transform:We,invTransform:xe,coord:Bt}),Q+=he.length/4,st=Q}pe&&W.draw(B,U.LINES,ci.disabled,$e.disabled,T.colorModeForRenderPass(),It.disabled,ft(se,T.transform,Yt),T.style.map.terrain&&T.style.map.terrain.getTerrainData(Bt),d.id,pe.layoutVertexBuffer,pe.indexBuffer,pe.segments,null,T.transform.zoom,null,null,pe.collisionVertexBuffer)}if(!O||!Z.length)return;let At=T.useProgram(\"collisionCircle\"),pt=new n.aV;pt.resize(4*Q),pt._trim();let yt=0;for(let St of Z)for(let Bt=0;Bt=0&&(pt[dt.associatedIconIndex]={shiftedAnchor:Kr,angle:Me})}else ht(dt.numGlyphs,st)}if(W){At.clear();let yt=T.icon.placedSymbolArray;for(let dt=0;dtT.style.map.terrain.getElevation(pe,Ho,pn):null,us=d.layout.get(\"text-rotation-alignment\")===\"map\";Se(xe,pe.posMatrix,T,b,jr,jl,dt,W,us,On)}let gu=T.translatePosMatrix(pe.posMatrix,he,M,O),gh=Ft||b&&Qt||mu?Ym:jr,Ns=T.translatePosMatrix(jl,he,M,O,!0),Es=Me&&d.paint.get(b?\"text-halo-width\":\"icon-halo-width\").constantOr(1)!==0,yo;yo=Me?xe.iconsInText?Af(dr.kind,Jr,Wt,dt,T,gu,gh,Ns,ei,cs):Kg(dr.kind,Jr,Wt,dt,T,gu,gh,Ns,b,ei,!0):Xg(dr.kind,Jr,Wt,dt,T,gu,gh,Ns,b,ei);let _h={program:Vi,buffers:We,uniformValues:yo,atlasTexture:Rn,atlasTextureIcon:Dn,atlasInterpolation:$i,atlasInterpolationIcon:zs,isSDF:Me,hasHalo:Es};if(St&&xe.canOverlap){Bt=!0;let On=We.segments.get();for(let us of On)se.push({segments:new n.S([us]),sortKey:us.sortKey,state:_h,terrainData:Vr})}else se.push({segments:We.segments,sortKey:0,state:_h,terrainData:Vr})}Bt&&se.sort((pe,he)=>pe.sortKey-he.sortKey);for(let pe of se){let he=pe.state;if(st.activeTexture.set(At.TEXTURE0),he.atlasTexture.bind(he.atlasInterpolation,At.CLAMP_TO_EDGE),he.atlasTextureIcon&&(st.activeTexture.set(At.TEXTURE1),he.atlasTextureIcon&&he.atlasTextureIcon.bind(he.atlasInterpolationIcon,At.CLAMP_TO_EDGE)),he.isSDF){let xe=he.uniformValues;he.hasHalo&&(xe.u_is_halo=1,$m(he.buffers,pe.segments,d,T,he.program,Yt,Z,Q,xe,pe.terrainData)),xe.u_is_halo=0}$m(he.buffers,pe.segments,d,T,he.program,Yt,Z,Q,he.uniformValues,pe.terrainData)}}function $m(T,l,d,v,b,M,O,B,U,W){let Z=v.context;b.draw(Z,Z.gl.TRIANGLES,M,O,B,It.disabled,U,W,d.id,T.layoutVertexBuffer,T.indexBuffer,l,d.paint,v.transform.zoom,T.programConfigurations.get(d.id),T.dynamicLayoutVertexBuffer,T.opacityVertexBuffer)}function Td(T,l,d,v,b){if(!d||!v||!v.imageAtlas)return;let M=v.imageAtlas.patternPositions,O=M[d.to.toString()],B=M[d.from.toString()];if(!O&&B&&(O=B),!B&&O&&(B=O),!O||!B){let U=b.getPaintProperty(l);O=M[U],B=M[U]}O&&B&&T.setConstantPatternPositions(O,B)}function Md(T,l,d,v,b,M,O){let B=T.context.gl,U=\"fill-pattern\",W=d.paint.get(U),Z=W&&W.constantOr(1),Q=d.getCrossfadeParameters(),st,At,pt,yt,dt;O?(At=Z&&!d.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",st=B.LINES):(At=Z?\"fillPattern\":\"fill\",st=B.TRIANGLES);let Ft=W.constantOr(null);for(let Wt of v){let St=l.getTile(Wt);if(Z&&!St.patternsLoaded())continue;let Bt=St.getBucket(d);if(!Bt)continue;let Yt=Bt.programConfigurations.get(d.id),Qt=T.useProgram(At,Yt),se=T.style.map.terrain&&T.style.map.terrain.getTerrainData(Wt);Z&&(T.context.activeTexture.set(B.TEXTURE0),St.imageAtlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE),Yt.updatePaintBuffers(Q)),Td(Yt,U,Ft,St,d);let pe=se?Wt:null,he=T.translatePosMatrix(pe?pe.posMatrix:Wt.posMatrix,St,d.paint.get(\"fill-translate\"),d.paint.get(\"fill-translate-anchor\"));if(O){yt=Bt.indexBuffer2,dt=Bt.segments2;let xe=[B.drawingBufferWidth,B.drawingBufferHeight];pt=At===\"fillOutlinePattern\"&&Z?yd(he,T,Q,St,xe):_d(he,xe)}else yt=Bt.indexBuffer,dt=Bt.segments,pt=Z?gd(he,T,Q,St):md(he);Qt.draw(T.context,st,b,T.stencilModeForClipping(Wt),M,It.disabled,pt,se,d.id,Bt.layoutVertexBuffer,yt,dt,d.paint,T.transform.zoom,Yt)}}function Ed(T,l,d,v,b,M,O){let B=T.context,U=B.gl,W=\"fill-extrusion-pattern\",Z=d.paint.get(W),Q=Z.constantOr(1),st=d.getCrossfadeParameters(),At=d.paint.get(\"fill-extrusion-opacity\"),pt=Z.constantOr(null);for(let yt of v){let dt=l.getTile(yt),Ft=dt.getBucket(d);if(!Ft)continue;let Wt=T.style.map.terrain&&T.style.map.terrain.getTerrainData(yt),St=Ft.programConfigurations.get(d.id),Bt=T.useProgram(Q?\"fillExtrusionPattern\":\"fillExtrusion\",St);Q&&(T.context.activeTexture.set(U.TEXTURE0),dt.imageAtlasTexture.bind(U.LINEAR,U.CLAMP_TO_EDGE),St.updatePaintBuffers(st)),Td(St,W,pt,dt,d);let Yt=T.translatePosMatrix(yt.posMatrix,dt,d.paint.get(\"fill-extrusion-translate\"),d.paint.get(\"fill-extrusion-translate-anchor\")),Qt=d.paint.get(\"fill-extrusion-vertical-gradient\"),se=Q?Ul(Yt,T,Qt,At,yt,st,dt):Up(Yt,T,Qt,At);Bt.draw(B,B.gl.TRIANGLES,b,M,O,It.backCCW,se,Wt,d.id,Ft.layoutVertexBuffer,Ft.indexBuffer,Ft.segments,d.paint,T.transform.zoom,St,T.style.map.terrain&&Ft.centroidVertexBuffer)}}function Px(T,l,d,v,b,M,O){let B=T.context,U=B.gl,W=d.fbo;if(!W)return;let Z=T.useProgram(\"hillshade\"),Q=T.style.map.terrain&&T.style.map.terrain.getTerrainData(l);B.activeTexture.set(U.TEXTURE0),U.bindTexture(U.TEXTURE_2D,W.colorAttachment.get()),Z.draw(B,U.TRIANGLES,b,M,O,It.disabled,((st,At,pt,yt)=>{let dt=pt.paint.get(\"hillshade-shadow-color\"),Ft=pt.paint.get(\"hillshade-highlight-color\"),Wt=pt.paint.get(\"hillshade-accent-color\"),St=pt.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);pt.paint.get(\"hillshade-illumination-anchor\")===\"viewport\"&&(St-=st.transform.angle);let Bt=!st.options.moving;return{u_matrix:yt?yt.posMatrix:st.transform.calculatePosMatrix(At.tileID.toUnwrapped(),Bt),u_image:0,u_latrange:qe(0,At.tileID),u_light:[pt.paint.get(\"hillshade-exaggeration\"),St],u_shadow:dt,u_highlight:Ft,u_accent:Wt}})(T,d,v,Q?l:null),Q,v.id,T.rasterBoundsBuffer,T.quadTriangleIndexBuffer,T.rasterBoundsSegments)}function Xm(T,l,d,v,b,M){let O=T.context,B=O.gl,U=l.dem;if(U&&U.data){let W=U.dim,Z=U.stride,Q=U.getPixels();if(O.activeTexture.set(B.TEXTURE1),O.pixelStoreUnpackPremultiplyAlpha.set(!1),l.demTexture=l.demTexture||T.getTileTexture(Z),l.demTexture){let At=l.demTexture;At.update(Q,{premultiply:!1}),At.bind(B.NEAREST,B.CLAMP_TO_EDGE)}else l.demTexture=new Zt(O,Q,B.RGBA,{premultiply:!1}),l.demTexture.bind(B.NEAREST,B.CLAMP_TO_EDGE);O.activeTexture.set(B.TEXTURE0);let st=l.fbo;if(!st){let At=new Zt(O,{width:W,height:W,data:null},B.RGBA);At.bind(B.LINEAR,B.CLAMP_TO_EDGE),st=l.fbo=O.createFramebuffer(W,W,!0,!1),st.colorAttachment.set(At.texture)}O.bindFramebuffer.set(st.framebuffer),O.viewport.set([0,0,W,W]),T.useProgram(\"hillshadePrepare\").draw(O,B.TRIANGLES,v,b,M,It.disabled,((At,pt)=>{let yt=pt.stride,dt=n.Z();return n.aS(dt,0,n.N,-n.N,0,0,1),n.$(dt,dt,[0,-n.N,0]),{u_matrix:dt,u_image:1,u_dimension:[yt,yt],u_zoom:At.overscaledZ,u_unpack:pt.getUnpackVector()}})(l.tileID,U),null,d.id,T.rasterBoundsBuffer,T.quadTriangleIndexBuffer,T.rasterBoundsSegments),l.needsHillshadePrepare=!1}}function e_(T,l,d,v,b,M){let O=v.paint.get(\"raster-fade-duration\");if(!M&&O>0){let B=n.h.now(),U=(B-T.timeAdded)/O,W=l?(B-l.timeAdded)/O:-1,Z=d.getSource(),Q=b.coveringZoomLevel({tileSize:Z.tileSize,roundZoom:Z.roundZoom}),st=!l||Math.abs(l.tileID.overscaledZ-Q)>Math.abs(T.tileID.overscaledZ-Q),At=st&&T.refreshedUponExpiration?1:n.ad(st?U:1-W,0,1);return T.refreshedUponExpiration&&U>=1&&(T.refreshedUponExpiration=!1),l?{opacity:1,mix:1-At}:{opacity:At,mix:0}}return{opacity:1,mix:0}}let r_=new n.aT(1,0,0,1),gf=new n.aT(0,1,0,1),Oa=new n.aT(0,0,1,1),jn=new n.aT(1,0,1,1),i_=new n.aT(0,1,1,1);function Pd(T,l,d,v){Yp(T,0,l+d/2,T.transform.width,d,v)}function Zp(T,l,d,v){Yp(T,l-d/2,0,d,T.transform.height,v)}function Yp(T,l,d,v,b,M){let O=T.context,B=O.gl;B.enable(B.SCISSOR_TEST),B.scissor(l*T.pixelRatio,d*T.pixelRatio,v*T.pixelRatio,b*T.pixelRatio),O.clear({color:M}),B.disable(B.SCISSOR_TEST)}function Km(T,l,d){let v=T.context,b=v.gl,M=d.posMatrix,O=T.useProgram(\"debug\"),B=ci.disabled,U=$e.disabled,W=T.colorModeForRenderPass(),Z=\"$debug\",Q=T.style.map.terrain&&T.style.map.terrain.getTerrainData(d);v.activeTexture.set(b.TEXTURE0);let st=l.getTileByID(d.key).latestRawTileData,At=Math.floor((st&&st.byteLength||0)/1024),pt=l.getTile(d).tileSize,yt=512/Math.min(pt,512)*(d.overscaledZ/T.transform.zoom)*.5,dt=d.canonical.toString();d.overscaledZ!==d.canonical.z&&(dt+=` => ${d.overscaledZ}`),function(Ft,Wt){Ft.initDebugOverlayCanvas();let St=Ft.debugOverlayCanvas,Bt=Ft.context.gl,Yt=Ft.debugOverlayCanvas.getContext(\"2d\");Yt.clearRect(0,0,St.width,St.height),Yt.shadowColor=\"white\",Yt.shadowBlur=2,Yt.lineWidth=1.5,Yt.strokeStyle=\"white\",Yt.textBaseline=\"top\",Yt.font=\"bold 36px Open Sans, sans-serif\",Yt.fillText(Wt,5,5),Yt.strokeText(Wt,5,5),Ft.debugOverlayTexture.update(St),Ft.debugOverlayTexture.bind(Bt.LINEAR,Bt.CLAMP_TO_EDGE)}(T,`${dt} ${At}kB`),O.draw(v,b.TRIANGLES,B,U,Qi.alphaBlended,It.disabled,Lt(M,n.aT.transparent,yt),null,Z,T.debugBuffer,T.quadTriangleIndexBuffer,T.debugSegments),O.draw(v,b.LINE_STRIP,B,U,W,It.disabled,Lt(M,n.aT.red),Q,Z,T.debugBuffer,T.tileBorderIndexBuffer,T.debugSegments)}function Pn(T,l,d){let v=T.context,b=v.gl,M=T.colorModeForRenderPass(),O=new ci(b.LEQUAL,ci.ReadWrite,T.depthRangeFor3D),B=T.useProgram(\"terrain\"),U=l.getTerrainMesh();v.bindFramebuffer.set(null),v.viewport.set([0,0,T.width,T.height]);for(let W of d){let Z=T.renderToTexture.getTexture(W),Q=l.getTerrainData(W.tileID);v.activeTexture.set(b.TEXTURE0),b.bindTexture(b.TEXTURE_2D,Z.texture);let st={u_matrix:T.transform.calculatePosMatrix(W.tileID.toUnwrapped()),u_texture:0,u_ele_delta:l.getMeshFrameDelta(T.transform.zoom)};B.draw(v,b.TRIANGLES,O,$e.disabled,M,It.backCCW,st,Q,\"terrain\",U.vertexBuffer,U.indexBuffer,U.segments)}}class oh{constructor(l,d){this.context=new kc(l),this.transform=d,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:n.Z(),renderTime:0},this.setup(),this.numSublayers=os.maxUnderzooming+os.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Lc}resize(l,d,v){if(this.width=Math.floor(l*v),this.height=Math.floor(d*v),this.pixelRatio=v,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let b of this.style._order)this.style._layers[b].resize()}setup(){let l=this.context,d=new n.a_;d.emplaceBack(0,0),d.emplaceBack(n.N,0),d.emplaceBack(0,n.N),d.emplaceBack(n.N,n.N),this.tileExtentBuffer=l.createVertexBuffer(d,mo.members),this.tileExtentSegments=n.S.simpleSegment(0,0,4,2);let v=new n.a_;v.emplaceBack(0,0),v.emplaceBack(n.N,0),v.emplaceBack(0,n.N),v.emplaceBack(n.N,n.N),this.debugBuffer=l.createVertexBuffer(v,mo.members),this.debugSegments=n.S.simpleSegment(0,0,4,5);let b=new n.V;b.emplaceBack(0,0,0,0),b.emplaceBack(n.N,0,n.N,0),b.emplaceBack(0,n.N,0,n.N),b.emplaceBack(n.N,n.N,n.N,n.N),this.rasterBoundsBuffer=l.createVertexBuffer(b,$n.members),this.rasterBoundsSegments=n.S.simpleSegment(0,0,4,2);let M=new n.a_;M.emplaceBack(0,0),M.emplaceBack(1,0),M.emplaceBack(0,1),M.emplaceBack(1,1),this.viewportBuffer=l.createVertexBuffer(M,mo.members),this.viewportSegments=n.S.simpleSegment(0,0,4,2);let O=new n.a$;O.emplaceBack(0),O.emplaceBack(1),O.emplaceBack(3),O.emplaceBack(2),O.emplaceBack(0),this.tileBorderIndexBuffer=l.createIndexBuffer(O);let B=new n.b0;B.emplaceBack(0,1,2),B.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=l.createIndexBuffer(B);let U=this.context.gl;this.stencilClearMode=new $e({func:U.ALWAYS,mask:0},0,255,U.ZERO,U.ZERO,U.ZERO)}clearStencil(){let l=this.context,d=l.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let v=n.Z();n.aS(v,0,this.width,this.height,0,0,1),n.a0(v,v,[d.drawingBufferWidth,d.drawingBufferHeight,0]),this.useProgram(\"clippingMask\").draw(l,d.TRIANGLES,ci.disabled,this.stencilClearMode,Qi.disabled,It.disabled,$t(v),null,\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(l,d){if(this.currentStencilSource===l.source||!l.isTileClipped()||!d||!d.length)return;this.currentStencilSource=l.source;let v=this.context,b=v.gl;this.nextStencilID+d.length>256&&this.clearStencil(),v.setColorMode(Qi.disabled),v.setDepthMode(ci.disabled);let M=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(let O of d){let B=this._tileClippingMaskIDs[O.key]=this.nextStencilID++,U=this.style.map.terrain&&this.style.map.terrain.getTerrainData(O);M.draw(v,b.TRIANGLES,ci.disabled,new $e({func:b.ALWAYS,mask:0},B,255,b.KEEP,b.KEEP,b.REPLACE),Qi.disabled,It.disabled,$t(O.posMatrix),U,\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let l=this.nextStencilID++,d=this.context.gl;return new $e({func:d.NOTEQUAL,mask:255},l,255,d.KEEP,d.KEEP,d.REPLACE)}stencilModeForClipping(l){let d=this.context.gl;return new $e({func:d.EQUAL,mask:255},this._tileClippingMaskIDs[l.key],0,d.KEEP,d.KEEP,d.REPLACE)}stencilConfigForOverlap(l){let d=this.context.gl,v=l.sort((O,B)=>B.overscaledZ-O.overscaledZ),b=v[v.length-1].overscaledZ,M=v[0].overscaledZ-b+1;if(M>1){this.currentStencilSource=void 0,this.nextStencilID+M>256&&this.clearStencil();let O={};for(let B=0;B=0;this.currentLayer--){let U=this.style._layers[v[this.currentLayer]],W=b[U.source],Z=M[U.source];this._renderTileClippingMasks(U,Z),this.renderLayer(this,W,U,Z)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayerdt.source&&!dt.isHidden(Z)?[W.sourceCaches[dt.source]]:[]),At=st.filter(dt=>dt.getSource().type===\"vector\"),pt=st.filter(dt=>dt.getSource().type!==\"vector\"),yt=dt=>{(!Q||Q.getSource().maxzoomyt(dt)),Q||pt.forEach(dt=>yt(dt)),Q}(this.style,this.transform.zoom);U&&function(W,Z,Q){for(let st=0;stAt.style.map.terrain.getElevation(Qt,dr,Xe):null)}}}(U,M,B,O,B.layout.get(\"text-rotation-alignment\"),B.layout.get(\"text-pitch-alignment\"),W),B.paint.get(\"icon-opacity\").constantOr(1)!==0&&wt(M,O,B,U,!1,B.paint.get(\"icon-translate\"),B.paint.get(\"icon-translate-anchor\"),B.layout.get(\"icon-rotation-alignment\"),B.layout.get(\"icon-pitch-alignment\"),B.layout.get(\"icon-keep-upright\"),Z,Q),B.paint.get(\"text-opacity\").constantOr(1)!==0&&wt(M,O,B,U,!0,B.paint.get(\"text-translate\"),B.paint.get(\"text-translate-anchor\"),B.layout.get(\"text-rotation-alignment\"),B.layout.get(\"text-pitch-alignment\"),B.layout.get(\"text-keep-upright\"),Z,Q),O.map.showCollisionBoxes&&(Zm(M,O,B,U,B.paint.get(\"text-translate\"),B.paint.get(\"text-translate-anchor\"),!0),Zm(M,O,B,U,B.paint.get(\"icon-translate\"),B.paint.get(\"icon-translate-anchor\"),!1))})(l,d,v,b,this.style.placement.variableOffsets);break;case\"circle\":(function(M,O,B,U){if(M.renderPass!==\"translucent\")return;let W=B.paint.get(\"circle-opacity\"),Z=B.paint.get(\"circle-stroke-width\"),Q=B.paint.get(\"circle-stroke-opacity\"),st=!B.layout.get(\"circle-sort-key\").isConstant();if(W.constantOr(1)===0&&(Z.constantOr(1)===0||Q.constantOr(1)===0))return;let At=M.context,pt=At.gl,yt=M.depthModeForSublayer(0,ci.ReadOnly),dt=$e.disabled,Ft=M.colorModeForRenderPass(),Wt=[];for(let St=0;StSt.sortKey-Bt.sortKey);for(let St of Wt){let{programConfiguration:Bt,program:Yt,layoutVertexBuffer:Qt,indexBuffer:se,uniformValues:pe,terrainData:he}=St.state;Yt.draw(At,pt.TRIANGLES,yt,dt,Ft,It.disabled,pe,he,B.id,Qt,se,St.segments,B.paint,M.transform.zoom,Bt)}})(l,d,v,b);break;case\"heatmap\":(function(M,O,B,U){if(B.paint.get(\"heatmap-opacity\")!==0)if(M.renderPass===\"offscreen\"){let W=M.context,Z=W.gl,Q=$e.disabled,st=new Qi([Z.ONE,Z.ONE],n.aT.transparent,[!0,!0,!0,!0]);(function(At,pt,yt){let dt=At.gl;At.activeTexture.set(dt.TEXTURE1),At.viewport.set([0,0,pt.width/4,pt.height/4]);let Ft=yt.heatmapFbo;if(Ft)dt.bindTexture(dt.TEXTURE_2D,Ft.colorAttachment.get()),At.bindFramebuffer.set(Ft.framebuffer);else{let Wt=dt.createTexture();dt.bindTexture(dt.TEXTURE_2D,Wt),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_WRAP_S,dt.CLAMP_TO_EDGE),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_WRAP_T,dt.CLAMP_TO_EDGE),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_MIN_FILTER,dt.LINEAR),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_MAG_FILTER,dt.LINEAR),Ft=yt.heatmapFbo=At.createFramebuffer(pt.width/4,pt.height/4,!1,!1),function(St,Bt,Yt,Qt){var se,pe;let he=St.gl,xe=(se=St.HALF_FLOAT)!==null&&se!==void 0?se:he.UNSIGNED_BYTE,We=(pe=St.RGBA16F)!==null&&pe!==void 0?pe:he.RGBA;he.texImage2D(he.TEXTURE_2D,0,We,Bt.width/4,Bt.height/4,0,he.RGBA,xe,null),Qt.colorAttachment.set(Yt)}(At,pt,Wt,Ft)}})(W,M,B),W.clear({color:n.aT.transparent});for(let At=0;At{let St=n.Z();n.aS(St,0,yt.width,yt.height,0,0,1);let Bt=yt.context.gl;return{u_matrix:St,u_world:[Bt.drawingBufferWidth,Bt.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:dt.paint.get(\"heatmap-opacity\")}})(W,Z),null,Z.id,W.viewportBuffer,W.quadTriangleIndexBuffer,W.viewportSegments,Z.paint,W.transform.zoom)}(M,B))})(l,d,v,b);break;case\"line\":(function(M,O,B,U){if(M.renderPass!==\"translucent\")return;let W=B.paint.get(\"line-opacity\"),Z=B.paint.get(\"line-width\");if(W.constantOr(1)===0||Z.constantOr(1)===0)return;let Q=M.depthModeForSublayer(0,ci.ReadOnly),st=M.colorModeForRenderPass(),At=B.paint.get(\"line-dasharray\"),pt=B.paint.get(\"line-pattern\"),yt=pt.constantOr(1),dt=B.paint.get(\"line-gradient\"),Ft=B.getCrossfadeParameters(),Wt=yt?\"linePattern\":At?\"lineSDF\":dt?\"lineGradient\":\"line\",St=M.context,Bt=St.gl,Yt=!0;for(let Qt of U){let se=O.getTile(Qt);if(yt&&!se.patternsLoaded())continue;let pe=se.getBucket(B);if(!pe)continue;let he=pe.programConfigurations.get(B.id),xe=M.context.program.get(),We=M.useProgram(Wt,he),Kr=Yt||We.program!==xe,Me=M.style.map.terrain&&M.style.map.terrain.getTerrainData(Qt),dr=pt.constantOr(null);if(dr&&se.imageAtlas){let Jr=se.imageAtlas,Vr=Jr.patternPositions[dr.to.toString()],ei=Jr.patternPositions[dr.from.toString()];Vr&&ei&&he.setConstantPatternPositions(Vr,ei)}let Xe=Me?Qt:null,Vi=yt?Ss(M,se,B,Ft,Xe):At?Bs(M,se,B,At,Ft,Xe):dt?ts(M,se,B,pe.lineClipsArray.length,Xe):ti(M,se,B,Xe);if(yt)St.activeTexture.set(Bt.TEXTURE0),se.imageAtlasTexture.bind(Bt.LINEAR,Bt.CLAMP_TO_EDGE),he.updatePaintBuffers(Ft);else if(At&&(Kr||M.lineAtlas.dirty))St.activeTexture.set(Bt.TEXTURE0),M.lineAtlas.bind(St);else if(dt){let Jr=pe.gradients[B.id],Vr=Jr.texture;if(B.gradientVersion!==Jr.version){let ei=256;if(B.stepInterpolant){let Rn=O.getSource().maxzoom,$i=Qt.canonical.z===Rn?Math.ceil(1<0?d.pop():null}isPatternMissing(l){if(!l)return!1;if(!l.from||!l.to)return!0;let d=this.imageManager.getPattern(l.from.toString()),v=this.imageManager.getPattern(l.to.toString());return!d||!v}useProgram(l,d){this.cache=this.cache||{};let v=l+(d?d.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\")+(this.style.map.terrain?\"/terrain\":\"\");return this.cache[v]||(this.cache[v]=new hu(this.context,Yi[l],d,Nm[l],this._showOverdrawInspector,this.style.map.terrain)),this.cache[v]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let l=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(l.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new Zt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:l,drawingBufferHeight:d}=this.context.gl;return this.width!==l||this.height!==d}}class fi{constructor(l,d){this.points=l,this.planes=d}static fromInvProjectionMatrix(l,d,v){let b=Math.pow(2,v),M=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(B=>{let U=1/(B=n.ag([],B,l))[3]/d*b;return n.b3(B,B,[U,U,1/B[3],U])}),O=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(B=>{let U=function(st,At){var pt=At[0],yt=At[1],dt=At[2],Ft=pt*pt+yt*yt+dt*dt;return Ft>0&&(Ft=1/Math.sqrt(Ft)),st[0]=At[0]*Ft,st[1]=At[1]*Ft,st[2]=At[2]*Ft,st}([],function(st,At,pt){var yt=At[0],dt=At[1],Ft=At[2],Wt=pt[0],St=pt[1],Bt=pt[2];return st[0]=dt*Bt-Ft*St,st[1]=Ft*Wt-yt*Bt,st[2]=yt*St-dt*Wt,st}([],ut([],M[B[0]],M[B[1]]),ut([],M[B[2]],M[B[1]]))),W=-((Z=U)[0]*(Q=M[B[1]])[0]+Z[1]*Q[1]+Z[2]*Q[2]);var Z,Q;return U.concat(W)});return new fi(M,O)}}class du{constructor(l,d){this.min=l,this.max=d,this.center=function(v,b,M){return v[0]=.5*b[0],v[1]=.5*b[1],v[2]=.5*b[2],v}([],function(v,b,M){return v[0]=b[0]+M[0],v[1]=b[1]+M[1],v[2]=b[2]+M[2],v}([],this.min,this.max))}quadrant(l){let d=[l%2==0,l<2],v=K(this.min),b=K(this.max);for(let M=0;M=0&&O++;if(O===0)return 0;O!==d.length&&(v=!1)}if(v)return 2;for(let b=0;b<3;b++){let M=Number.MAX_VALUE,O=-Number.MAX_VALUE;for(let B=0;Bthis.max[b]-this.min[b])return 0}return 1}}class _f{constructor(l=0,d=0,v=0,b=0){if(isNaN(l)||l<0||isNaN(d)||d<0||isNaN(v)||v<0||isNaN(b)||b<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=l,this.bottom=d,this.left=v,this.right=b}interpolate(l,d,v){return d.top!=null&&l.top!=null&&(this.top=n.B.number(l.top,d.top,v)),d.bottom!=null&&l.bottom!=null&&(this.bottom=n.B.number(l.bottom,d.bottom,v)),d.left!=null&&l.left!=null&&(this.left=n.B.number(l.left,d.left,v)),d.right!=null&&l.right!=null&&(this.right=n.B.number(l.right,d.right,v)),this}getCenter(l,d){let v=n.ad((this.left+l-this.right)/2,0,l),b=n.ad((this.top+d-this.bottom)/2,0,d);return new n.P(v,b)}equals(l){return this.top===l.top&&this.bottom===l.bottom&&this.left===l.left&&this.right===l.right}clone(){return new _f(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class Qp{constructor(l,d,v,b,M){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=M===void 0||!!M,this._minZoom=l||0,this._maxZoom=d||22,this._minPitch=v??0,this._maxPitch=b??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new n.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new _f,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0}clone(){let l=new Qp(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return l.apply(this),l}apply(l){this.tileSize=l.tileSize,this.latRange=l.latRange,this.width=l.width,this.height=l.height,this._center=l._center,this._elevation=l._elevation,this._minEleveationForCurrentTile=l._minEleveationForCurrentTile,this.zoom=l.zoom,this.angle=l.angle,this._fov=l._fov,this._pitch=l._pitch,this._unmodified=l._unmodified,this._edgeInsets=l._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(l){this._minZoom!==l&&(this._minZoom=l,this.zoom=Math.max(this.zoom,l))}get maxZoom(){return this._maxZoom}set maxZoom(l){this._maxZoom!==l&&(this._maxZoom=l,this.zoom=Math.min(this.zoom,l))}get minPitch(){return this._minPitch}set minPitch(l){this._minPitch!==l&&(this._minPitch=l,this.pitch=Math.max(this.pitch,l))}get maxPitch(){return this._maxPitch}set maxPitch(l){this._maxPitch!==l&&(this._maxPitch=l,this.pitch=Math.min(this.pitch,l))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(l){l===void 0?l=!0:l===null&&(l=!1),this._renderWorldCopies=l}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new n.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(l){let d=-n.b5(l,-180,180)*Math.PI/180;this.angle!==d&&(this._unmodified=!1,this.angle=d,this._calcMatrices(),this.rotationMatrix=function(){var v=new n.A(4);return n.A!=Float32Array&&(v[1]=0,v[2]=0),v[0]=1,v[3]=1,v}(),function(v,b,M){var O=b[0],B=b[1],U=b[2],W=b[3],Z=Math.sin(M),Q=Math.cos(M);v[0]=O*Q+U*Z,v[1]=B*Q+W*Z,v[2]=O*-Z+U*Q,v[3]=B*-Z+W*Q}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(l){let d=n.ad(l,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==d&&(this._unmodified=!1,this._pitch=d,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(l){l=Math.max(.01,Math.min(60,l)),this._fov!==l&&(this._unmodified=!1,this._fov=l/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(l){let d=Math.min(Math.max(l,this.minZoom),this.maxZoom);this._zoom!==d&&(this._unmodified=!1,this._zoom=d,this.tileZoom=Math.max(0,Math.floor(d)),this.scale=this.zoomScale(d),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(l){l.lat===this._center.lat&&l.lng===this._center.lng||(this._unmodified=!1,this._center=l,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(l){l!==this._elevation&&(this._elevation=l,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(l){this._edgeInsets.equals(l)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,l,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(l){return this._edgeInsets.equals(l)}interpolatePadding(l,d,v){this._unmodified=!1,this._edgeInsets.interpolate(l,d,v),this._constrain(),this._calcMatrices()}coveringZoomLevel(l){let d=(l.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/l.tileSize));return Math.max(0,d)}getVisibleUnwrappedCoordinates(l){let d=[new n.b6(0,l)];if(this._renderWorldCopies){let v=this.pointCoordinate(new n.P(0,0)),b=this.pointCoordinate(new n.P(this.width,0)),M=this.pointCoordinate(new n.P(this.width,this.height)),O=this.pointCoordinate(new n.P(0,this.height)),B=Math.floor(Math.min(v.x,b.x,M.x,O.x)),U=Math.floor(Math.max(v.x,b.x,M.x,O.x)),W=1;for(let Z=B-W;Z<=U+W;Z++)Z!==0&&d.push(new n.b6(Z,l))}return d}coveringTiles(l){var d,v;let b=this.coveringZoomLevel(l),M=b;if(l.minzoom!==void 0&&bl.maxzoom&&(b=l.maxzoom);let O=this.pointCoordinate(this.getCameraPoint()),B=n.U.fromLngLat(this.center),U=Math.pow(2,b),W=[U*O.x,U*O.y,0],Z=[U*B.x,U*B.y,0],Q=fi.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,b),st=l.minzoom||0;!l.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(st=b);let At=l.terrain?2/Math.min(this.tileSize,l.tileSize)*this.tileSize:3,pt=St=>({aabb:new du([St*U,0,0],[(St+1)*U,U,0]),zoom:0,x:0,y:0,wrap:St,fullyVisible:!1}),yt=[],dt=[],Ft=b,Wt=l.reparseOverscaled?M:b;if(this._renderWorldCopies)for(let St=1;St<=3;St++)yt.push(pt(-St)),yt.push(pt(St));for(yt.push(pt(0));yt.length>0;){let St=yt.pop(),Bt=St.x,Yt=St.y,Qt=St.fullyVisible;if(!Qt){let We=St.aabb.intersects(Q);if(We===0)continue;Qt=We===2}let se=l.terrain?W:Z,pe=St.aabb.distanceX(se),he=St.aabb.distanceY(se),xe=Math.max(Math.abs(pe),Math.abs(he));if(St.zoom===Ft||xe>At+(1<=st){let We=Ft-St.zoom,Kr=W[0]-.5-(Bt<>1),dr=St.zoom+1,Xe=St.aabb.quadrant(We);if(l.terrain){let Vi=new n.O(dr,St.wrap,dr,Kr,Me),Jr=l.terrain.getMinMaxElevation(Vi),Vr=(d=Jr.minElevation)!==null&&d!==void 0?d:this.elevation,ei=(v=Jr.maxElevation)!==null&&v!==void 0?v:this.elevation;Xe=new du([Xe.min[0],Xe.min[1],Vr],[Xe.max[0],Xe.max[1],ei])}yt.push({aabb:Xe,zoom:dr,x:Kr,y:Me,wrap:St.wrap,fullyVisible:Qt})}}return dt.sort((St,Bt)=>St.distanceSq-Bt.distanceSq).map(St=>St.tileID)}resize(l,d){this.width=l,this.height=d,this.pixelsToGLUnits=[2/l,-2/d],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(l){return Math.pow(2,l)}scaleZoom(l){return Math.log(l)/Math.LN2}project(l){let d=n.ad(l.lat,-this.maxValidLatitude,this.maxValidLatitude);return new n.P(n.G(l.lng)*this.worldSize,n.H(d)*this.worldSize)}unproject(l){return new n.U(l.x/this.worldSize,l.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(l){let d=this.pointLocation(this.centerPoint,l),v=l.getElevationForLngLatZoom(d,this.tileZoom);if(!(this.elevation-v))return;let b=this.getCameraPosition(),M=n.U.fromLngLat(b.lngLat,b.altitude),O=n.U.fromLngLat(d,v),B=M.x-O.x,U=M.y-O.y,W=M.z-O.z,Z=Math.sqrt(B*B+U*U+W*W),Q=this.scaleZoom(this.cameraToCenterDistance/Z/this.tileSize);this._elevation=v,this._center=d,this.zoom=Q}setLocationAtPoint(l,d){let v=this.pointCoordinate(d),b=this.pointCoordinate(this.centerPoint),M=this.locationCoordinate(l),O=new n.U(M.x-(v.x-b.x),M.y-(v.y-b.y));this.center=this.coordinateLocation(O),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(l,d){return d?this.coordinatePoint(this.locationCoordinate(l),d.getElevationForLngLatZoom(l,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(l))}pointLocation(l,d){return this.coordinateLocation(this.pointCoordinate(l,d))}locationCoordinate(l){return n.U.fromLngLat(l)}coordinateLocation(l){return l&&l.toLngLat()}pointCoordinate(l,d){if(d){let st=d.pointCoordinate(l);if(st!=null)return st}let v=[l.x,l.y,0,1],b=[l.x,l.y,1,1];n.ag(v,v,this.pixelMatrixInverse),n.ag(b,b,this.pixelMatrixInverse);let M=v[3],O=b[3],B=v[1]/M,U=b[1]/O,W=v[2]/M,Z=b[2]/O,Q=W===Z?0:(0-W)/(Z-W);return new n.U(n.B.number(v[0]/M,b[0]/O,Q)/this.worldSize,n.B.number(B,U,Q)/this.worldSize)}coordinatePoint(l,d=0,v=this.pixelMatrix){let b=[l.x*this.worldSize,l.y*this.worldSize,d,1];return n.ag(b,b,v),new n.P(b[0]/b[3],b[1]/b[3])}getBounds(){let l=Math.max(0,this.height/2-this.getHorizon());return new wi().extend(this.pointLocation(new n.P(0,l))).extend(this.pointLocation(new n.P(this.width,l))).extend(this.pointLocation(new n.P(this.width,this.height))).extend(this.pointLocation(new n.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new wi([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(l){l?(this.lngRange=[l.getWest(),l.getEast()],this.latRange=[l.getSouth(),l.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])}calculatePosMatrix(l,d=!1){let v=l.key,b=d?this._alignedPosMatrixCache:this._posMatrixCache;if(b[v])return b[v];let M=l.canonical,O=this.worldSize/this.zoomScale(M.z),B=M.x+Math.pow(2,M.z)*l.wrap,U=n.ao(new Float64Array(16));return n.$(U,U,[B*O,M.y*O,0]),n.a0(U,U,[O/n.N,O/n.N,1]),n.a1(U,d?this.alignedProjMatrix:this.projMatrix,U),b[v]=new Float32Array(U),b[v]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let l,d,v,b,M=-90,O=90,B=-180,U=180,W=this.size,Z=this._unmodified;if(this.latRange){let At=this.latRange;M=n.H(At[1])*this.worldSize,O=n.H(At[0])*this.worldSize,l=O-MO&&(b=O-pt)}if(this.lngRange){let At=(B+U)/2,pt=n.b5(Q.x,At-this.worldSize/2,At+this.worldSize/2),yt=W.x/2;pt-ytU&&(v=U-yt)}v===void 0&&b===void 0||(this.center=this.unproject(new n.P(v!==void 0?v:Q.x,b!==void 0?b:Q.y)).wrap()),this._unmodified=Z,this._constraining=!1}_calcMatrices(){if(!this.height)return;let l=this.centerOffset,d=this.point.x,v=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=n.b7(1,this.center.lat)*this.worldSize;let b=n.ao(new Float64Array(16));n.a0(b,b,[this.width/2,-this.height/2,1]),n.$(b,b,[1,-1,0]),this.labelPlaneMatrix=b,b=n.ao(new Float64Array(16)),n.a0(b,b,[1,-1,1]),n.$(b,b,[-1,-1,0]),n.a0(b,b,[2/this.width,2/this.height,1]),this.glCoordMatrix=b;let M=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),O=Math.min(this.elevation,this._minEleveationForCurrentTile),B=M-O*this._pixelPerMeter/Math.cos(this._pitch),U=O<0?B:M,W=Math.PI/2+this._pitch,Z=this._fov*(.5+l.y/this.height),Q=Math.sin(Z)*U/Math.sin(n.ad(Math.PI-W-Z,.01,Math.PI-.01)),st=this.getHorizon(),At=2*Math.atan(st/this.cameraToCenterDistance)*(.5+l.y/(2*st)),pt=Math.sin(At)*U/Math.sin(n.ad(Math.PI-W-At,.01,Math.PI-.01)),yt=Math.min(Q,pt),dt=1.01*(Math.cos(Math.PI/2-this._pitch)*yt+U),Ft=this.height/50;b=new Float64Array(16),n.b8(b,this._fov,this.width/this.height,Ft,dt),b[8]=2*-l.x/this.width,b[9]=2*l.y/this.height,n.a0(b,b,[1,-1,1]),n.$(b,b,[0,0,-this.cameraToCenterDistance]),n.b9(b,b,this._pitch),n.ae(b,b,this.angle),n.$(b,b,[-d,-v,0]),this.mercatorMatrix=n.a0([],b,[this.worldSize,this.worldSize,this.worldSize]),n.a0(b,b,[1,1,this._pixelPerMeter]),this.pixelMatrix=n.a1(new Float64Array(16),this.labelPlaneMatrix,b),n.$(b,b,[0,0,-this.elevation]),this.projMatrix=b,this.invProjMatrix=n.as([],b),this.pixelMatrix3D=n.a1(new Float64Array(16),this.labelPlaneMatrix,b);let Wt=this.width%2/2,St=this.height%2/2,Bt=Math.cos(this.angle),Yt=Math.sin(this.angle),Qt=d-Math.round(d)+Bt*Wt+Yt*St,se=v-Math.round(v)+Bt*St+Yt*Wt,pe=new Float64Array(b);if(n.$(pe,pe,[Qt>.5?Qt-1:Qt,se>.5?se-1:se,0]),this.alignedProjMatrix=pe,b=n.as(new Float64Array(16),this.pixelMatrix),!b)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=b,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let l=this.pointCoordinate(new n.P(0,0)),d=[l.x*this.worldSize,l.y*this.worldSize,0,1];return n.ag(d,d,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let l=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new n.P(0,l))}getCameraQueryGeometry(l){let d=this.getCameraPoint();if(l.length===1)return[l[0],d];{let v=d.x,b=d.y,M=d.x,O=d.y;for(let B of l)v=Math.min(v,B.x),b=Math.min(b,B.y),M=Math.max(M,B.x),O=Math.max(O,B.y);return[new n.P(v,b),new n.P(M,b),new n.P(M,O),new n.P(v,O),new n.P(v,b)]}}}function ah(T,l){let d,v=!1,b=null,M=null,O=()=>{b=null,v&&(T.apply(M,d),b=setTimeout(O,l),v=!1)};return(...B)=>(v=!0,M=this,d=B,b||O(),b)}class Id{constructor(l){this._getCurrentHash=()=>{let d=window.location.hash.replace(\"#\",\"\");if(this._hashName){let v;return d.split(\"&\").map(b=>b.split(\"=\")).forEach(b=>{b[0]===this._hashName&&(v=b)}),(v&&v[1]||\"\").split(\"/\")}return d.split(\"/\")},this._onHashChange=()=>{let d=this._getCurrentHash();if(d.length>=3&&!d.some(v=>isNaN(v))){let v=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(d[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+d[2],+d[1]],zoom:+d[0],bearing:v,pitch:+(d[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let d=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,d)}catch{}},this._updateHash=ah(this._updateHashUnthrottled,300),this._hashName=l&&encodeURIComponent(l)}addTo(l){return this._map=l,addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(l){let d=this._map.getCenter(),v=Math.round(100*this._map.getZoom())/100,b=Math.ceil((v*Math.LN2+Math.log(512/360/.5))/Math.LN10),M=Math.pow(10,b),O=Math.round(d.lng*M)/M,B=Math.round(d.lat*M)/M,U=this._map.getBearing(),W=this._map.getPitch(),Z=\"\";if(Z+=l?`/${O}/${B}/${v}`:`${v}/${B}/${O}`,(U||W)&&(Z+=\"/\"+Math.round(10*U)/10),W&&(Z+=`/${Math.round(W)}`),this._hashName){let Q=this._hashName,st=!1,At=window.location.hash.slice(1).split(\"&\").map(pt=>{let yt=pt.split(\"=\")[0];return yt===Q?(st=!0,`${yt}=${Z}`):pt}).filter(pt=>pt);return st||At.push(`${Q}=${Z}`),`#${At.join(\"&\")}`}return`#${Z}`}}let lh={linearity:.3,easing:n.ba(0,0,.3,1)},$p=n.e({deceleration:2500,maxSpeed:1400},lh),Xp=n.e({deceleration:20,maxSpeed:1400},lh),n_=n.e({deceleration:1e3,maxSpeed:360},lh),s_=n.e({deceleration:1e3,maxSpeed:90},lh);class Jm{constructor(l){this._map=l,this.clear()}clear(){this._inertiaBuffer=[]}record(l){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:n.h.now(),settings:l})}_drainInertiaBuffer(){let l=this._inertiaBuffer,d=n.h.now();for(;l.length>0&&d-l[0].time>160;)l.shift()}_onMoveEnd(l){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let d={zoom:0,bearing:0,pitch:0,pan:new n.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:M}of this._inertiaBuffer)d.zoom+=M.zoomDelta||0,d.bearing+=M.bearingDelta||0,d.pitch+=M.pitchDelta||0,M.panDelta&&d.pan._add(M.panDelta),M.around&&(d.around=M.around),M.pinchAround&&(d.pinchAround=M.pinchAround);let v=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,b={};if(d.pan.mag()){let M=ch(d.pan.mag(),v,n.e({},$p,l||{}));b.offset=d.pan.mult(M.amount/d.pan.mag()),b.center=this._map.transform.center,hl(b,M)}if(d.zoom){let M=ch(d.zoom,v,Xp);b.zoom=this._map.transform.zoom+M.amount,hl(b,M)}if(d.bearing){let M=ch(d.bearing,v,n_);b.bearing=this._map.transform.bearing+n.ad(M.amount,-179,179),hl(b,M)}if(d.pitch){let M=ch(d.pitch,v,s_);b.pitch=this._map.transform.pitch+M.amount,hl(b,M)}if(b.zoom||b.bearing){let M=d.pinchAround===void 0?d.around:d.pinchAround;b.around=M?this._map.unproject(M):this._map.getCenter()}return this.clear(),n.e(b,{noMoveStart:!0})}}function hl(T,l){(!T.duration||T.durationd.unproject(U)),B=M.reduce((U,W,Z,Q)=>U.add(W.div(Q.length)),new n.P(0,0));super(l,{points:M,point:B,lngLats:O,lngLat:d.unproject(B),originalEvent:v}),this._defaultPrevented=!1}}class o_ extends n.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(l,d,v){super(l,{originalEvent:v}),this._defaultPrevented=!1}}class Fs{constructor(l,d){this._map=l,this._clickTolerance=d.clickTolerance}reset(){delete this._mousedownPos}wheel(l){return this._firePreventable(new o_(l.type,this._map,l))}mousedown(l,d){return this._mousedownPos=d,this._firePreventable(new la(l.type,this._map,l))}mouseup(l){this._map.fire(new la(l.type,this._map,l))}click(l,d){this._mousedownPos&&this._mousedownPos.dist(d)>=this._clickTolerance||this._map.fire(new la(l.type,this._map,l))}dblclick(l){return this._firePreventable(new la(l.type,this._map,l))}mouseover(l){this._map.fire(new la(l.type,this._map,l))}mouseout(l){this._map.fire(new la(l.type,this._map,l))}touchstart(l){return this._firePreventable(new Cd(l.type,this._map,l))}touchmove(l){this._map.fire(new Cd(l.type,this._map,l))}touchend(l){this._map.fire(new Cd(l.type,this._map,l))}touchcancel(l){this._map.fire(new Cd(l.type,this._map,l))}_firePreventable(l){if(this._map.fire(l),l.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class pu{constructor(l){this._map=l}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(l){this._map.fire(new la(l.type,this._map,l))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new la(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(l){this._delayContextMenu?this._contextMenuEvent=l:this._ignoreContextMenu||this._map.fire(new la(l.type,this._map,l)),this._map.listens(\"contextmenu\")&&l.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class In{constructor(l){this._map=l}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(l){return this.transform.pointLocation(n.P.convert(l),this._map.terrain)}}class Kp{constructor(l,d){this._map=l,this._tr=new In(l),this._el=l.getCanvasContainer(),this._container=l.getContainer(),this._clickTolerance=d.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(l,d){this.isEnabled()&&l.shiftKey&&l.button===0&&(c.disableDrag(),this._startPos=this._lastPos=d,this._active=!0)}mousemoveWindow(l,d){if(!this._active)return;let v=d;if(this._lastPos.equals(v)||!this._box&&v.dist(this._startPos)M.fitScreenCoordinates(v,b,this._tr.bearing,{linear:!0})};this._fireEvent(\"boxzoomcancel\",l)}keydown(l){this._active&&l.keyCode===27&&(this.reset(),this._fireEvent(\"boxzoomcancel\",l))}reset(){this._active=!1,this._container.classList.remove(\"maplibregl-crosshair\"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(l,d){return this._map.fire(new n.k(l,{originalEvent:d}))}}function ca(T,l){if(T.length!==l.length)throw new Error(`The number of touches and points are not equal - touches ${T.length}, points ${l.length}`);let d={};for(let v=0;vthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=l.timeStamp),v.length===this.numTouches&&(this.centroid=function(b){let M=new n.P(0,0);for(let O of b)M._add(O);return M.div(b.length)}(d),this.touches=ca(v,d)))}touchmove(l,d,v){if(this.aborted||!this.centroid)return;let b=ca(v,d);for(let M in this.touches){let O=b[M];(!O||O.dist(this.touches[M])>30)&&(this.aborted=!0)}}touchend(l,d,v){if((!this.centroid||l.timeStamp-this.startTime>500)&&(this.aborted=!0),v.length===0){let b=!this.aborted&&this.centroid;if(this.reset(),b)return b}}}class Ld{constructor(l){this.singleTap=new Ba(l),this.numTaps=l.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(l,d,v){this.singleTap.touchstart(l,d,v)}touchmove(l,d,v){this.singleTap.touchmove(l,d,v)}touchend(l,d,v){let b=this.singleTap.touchend(l,d,v);if(b){let M=l.timeStamp-this.lastTime<500,O=!this.lastTap||this.lastTap.dist(b)<30;if(M&&O||this.reset(),this.count++,this.lastTime=l.timeStamp,this.lastTap=b,this.count===this.numTaps)return this.reset(),b}}}class fl{constructor(l){this._tr=new In(l),this._zoomIn=new Ld({numTouches:1,numTaps:2}),this._zoomOut=new Ld({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(l,d,v){this._zoomIn.touchstart(l,d,v),this._zoomOut.touchstart(l,d,v)}touchmove(l,d,v){this._zoomIn.touchmove(l,d,v),this._zoomOut.touchmove(l,d,v)}touchend(l,d,v){let b=this._zoomIn.touchend(l,d,v),M=this._zoomOut.touchend(l,d,v),O=this._tr;return b?(this._active=!0,l.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:O.zoom+1,around:O.unproject(b)},{originalEvent:l})}):M?(this._active=!0,l.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:O.zoom-1,around:O.unproject(M)},{originalEvent:l})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fa{constructor(l){this._enabled=!!l.enable,this._moveStateManager=l.moveStateManager,this._clickTolerance=l.clickTolerance||1,this._moveFunction=l.move,this._activateOnStart=!!l.activateOnStart,l.assignEvents(this),this.reset()}reset(l){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(l)}_move(...l){let d=this._moveFunction(...l);if(d.bearingDelta||d.pitchDelta||d.around||d.panDelta)return this._active=!0,d}dragStart(l,d){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(l)&&(this._moveStateManager.startMove(l),this._lastPoint=d.length?d[0]:d,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(l,d){if(!this.isEnabled())return;let v=this._lastPoint;if(!v)return;if(l.preventDefault(),!this._moveStateManager.isValidMoveEvent(l))return void this.reset(l);let b=d.length?d[0]:d;return!this._moved&&b.dist(v){T.mousedown=T.dragStart,T.mousemoveWindow=T.dragMove,T.mouseup=T.dragEnd,T.contextmenu=function(l){l.preventDefault()}},za=({enable:T,clickTolerance:l,bearingDegreesPerPixelMoved:d=.8})=>{let v=new Jp({checkCorrectEvent:b=>c.mouseButton(b)===0&&b.ctrlKey||c.mouseButton(b)===2});return new Fa({clickTolerance:l,move:(b,M)=>({bearingDelta:(M.x-b.x)*d}),moveStateManager:v,enable:T,assignEvents:hh})},ro=({enable:T,clickTolerance:l,pitchDegreesPerPixelMoved:d=-.5})=>{let v=new Jp({checkCorrectEvent:b=>c.mouseButton(b)===0&&b.ctrlKey||c.mouseButton(b)===2});return new Fa({clickTolerance:l,move:(b,M)=>({pitchDelta:(M.y-b.y)*d}),moveStateManager:v,enable:T,assignEvents:hh})};class Ue{constructor(l,d){this._minTouches=l.cooperativeGestures?2:1,this._clickTolerance=l.clickTolerance||1,this._map=d,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new n.P(0,0),setTimeout(()=>{this._cancelCooperativeMessage=!1},200)}touchstart(l,d,v){return this._calculateTransform(l,d,v)}touchmove(l,d,v){if(this._map._cooperativeGestures&&(this._minTouches===2&&v.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(l,!1,v.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(v.length0&&(this._active=!0);let b=ca(v,d),M=new n.P(0,0),O=new n.P(0,0),B=0;for(let W in b){let Z=b[W],Q=this._touches[W];Q&&(M._add(Z),O._add(Z.sub(Q)),B++,b[W]=Z)}if(this._touches=b,BMath.abs(T.x)}class Ix extends kd{constructor(l){super(),this._map=l}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(l,d,v){super.touchstart(l,d,v),this._currentTouchCount=v.length}_start(l){this._lastPoints=l,r0(l[0].sub(l[1]))&&(this._valid=!1)}_move(l,d,v){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;let b=l[0].sub(this._lastPoints[0]),M=l[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(b,M,v.timeStamp),this._valid?(this._lastPoints=l,this._active=!0,{pitchDelta:(b.y+M.y)/2*-.5}):void 0}gestureBeginsVertically(l,d,v){if(this._valid!==void 0)return this._valid;let b=l.mag()>=2,M=d.mag()>=2;if(!b&&!M)return;if(!b||!M)return this._firstMove===void 0&&(this._firstMove=v),v-this._firstMove<100&&void 0;let O=l.y>0==d.y>0;return r0(l)&&r0(d)&&O}}let fh={panStep:100,bearingStep:15,pitchStep:10};class l_{constructor(l){this._tr=new In(l);let d=fh;this._panStep=d.panStep,this._bearingStep=d.bearingStep,this._pitchStep=d.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(l){if(l.altKey||l.ctrlKey||l.metaKey)return;let d=0,v=0,b=0,M=0,O=0;switch(l.keyCode){case 61:case 107:case 171:case 187:d=1;break;case 189:case 109:case 173:d=-1;break;case 37:l.shiftKey?v=-1:(l.preventDefault(),M=-1);break;case 39:l.shiftKey?v=1:(l.preventDefault(),M=1);break;case 38:l.shiftKey?b=1:(l.preventDefault(),O=-1);break;case 40:l.shiftKey?b=-1:(l.preventDefault(),O=1);break;default:return}return this._rotationDisabled&&(v=0,b=0),{cameraAnimation:B=>{let U=this._tr;B.easeTo({duration:300,easeId:\"keyboardHandler\",easing:i0,zoom:d?Math.round(U.zoom)+d*(l.shiftKey?2:1):U.zoom,bearing:U.bearing+v*this._bearingStep,pitch:U.pitch+b*this._pitchStep,offset:[-M*this._panStep,-O*this._panStep],center:U.center},{originalEvent:l})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function i0(T){return T*(2-T)}let n0=4.000244140625;class vf{constructor(l,d){this._onTimeout=v=>{this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(v)},this._map=l,this._tr=new In(l),this._el=l.getCanvasContainer(),this._triggerRenderFrame=d,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(l){this._defaultZoomRate=l}setWheelZoomRate(l){this._wheelZoomRate=l}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(l){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!l&&l.around===\"center\")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(l){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!l[this._map._metaKey])return;l.preventDefault()}let d=l.deltaMode===WheelEvent.DOM_DELTA_LINE?40*l.deltaY:l.deltaY,v=n.h.now(),b=v-(this._lastWheelEventTime||0);this._lastWheelEventTime=v,d!==0&&d%n0==0?this._type=\"wheel\":d!==0&&Math.abs(d)<4?this._type=\"trackpad\":b>400?(this._type=null,this._lastValue=d,this._timeout=setTimeout(this._onTimeout,40,l)):this._type||(this._type=Math.abs(b*d)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,d+=this._lastValue)),l.shiftKey&&d&&(d/=4),this._type&&(this._lastWheelEvent=l,this._delta-=d,this._active||this._start(l)),l.preventDefault()}_start(l){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let d=c.mousePos(this._el,l),v=this._tr;this._around=n.L.convert(this._aroundCenter?v.center:v.unproject(d)),this._aroundPoint=v.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let l=this._tr.transform;if(this._delta!==0){let B=this._type===\"wheel\"&&Math.abs(this._delta)>n0?this._wheelZoomRate:this._defaultZoomRate,U=2/(1+Math.exp(-Math.abs(this._delta*B)));this._delta<0&&U!==0&&(U=1/U);let W=typeof this._targetZoom==\"number\"?l.zoomScale(this._targetZoom):l.scale;this._targetZoom=Math.min(l.maxZoom,Math.max(l.minZoom,l.scaleZoom(W*U))),this._type===\"wheel\"&&(this._startZoom=l.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let d=typeof this._targetZoom==\"number\"?this._targetZoom:l.zoom,v=this._startZoom,b=this._easing,M,O=!1;if(this._type===\"wheel\"&&v&&b){let B=Math.min((n.h.now()-this._lastWheelEventTime)/200,1),U=b(B);M=n.B.number(v,d,U),B<1?this._frameId||(this._frameId=!0):O=!0}else M=d,O=!0;return this._active=!0,O&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!O,zoomDelta:M-l.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(l){let d=n.bb;if(this._prevEase){let v=this._prevEase,b=(n.h.now()-v.start)/v.duration,M=v.easing(b+.01)-v.easing(b),O=.27/Math.sqrt(M*M+1e-4)*.01,B=Math.sqrt(.0729-O*O);d=n.ba(O,B,.25,1)}return this._prevEase={start:n.h.now(),duration:l,easing:d},d}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class s0{constructor(l,d){this._clickZoom=l,this._tapZoom=d}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class tA{constructor(l){this._tr=new In(l),this.reset()}reset(){this._active=!1}dblclick(l,d){return l.preventDefault(),{cameraAnimation:v=>{v.easeTo({duration:300,zoom:this._tr.zoom+(l.shiftKey?-1:1),around:this._tr.unproject(d)},{originalEvent:l})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class eA{constructor(){this._tap=new Ld({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(l,d,v){if(!this._swipePoint)if(this._tapTime){let b=d[0],M=l.timeStamp-this._tapTime<500,O=this._tapPoint.dist(b)<30;M&&O?v.length>0&&(this._swipePoint=b,this._swipeTouch=v[0].identifier):this.reset()}else this._tap.touchstart(l,d,v)}touchmove(l,d,v){if(this._tapTime){if(this._swipePoint){if(v[0].identifier!==this._swipeTouch)return;let b=d[0],M=b.y-this._swipePoint.y;return this._swipePoint=b,l.preventDefault(),this._active=!0,{zoomDelta:M/128}}}else this._tap.touchmove(l,d,v)}touchend(l,d,v){if(this._tapTime)this._swipePoint&&v.length===0&&this.reset();else{let b=this._tap.touchend(l,d,v);b&&(this._tapTime=l.timeStamp,this._tapPoint=b)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class dh{constructor(l,d,v){this._el=l,this._mousePan=d,this._touchPan=v}enable(l){this._inertiaOptions=l||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"maplibregl-touch-drag-pan\")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"maplibregl-touch-drag-pan\")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class ls{constructor(l,d,v){this._pitchWithRotate=l.pitchWithRotate,this._mouseRotate=d,this._mousePitch=v}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Au{constructor(l,d,v,b){this._el=l,this._touchZoom=d,this._touchRotate=v,this._tapDragZoom=b,this._rotationDisabled=!1,this._enabled=!0}enable(l){this._touchZoom.enable(l),this._rotationDisabled||this._touchRotate.enable(l),this._tapDragZoom.enable(),this._el.classList.add(\"maplibregl-touch-zoom-rotate\")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"maplibregl-touch-zoom-rotate\")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}let Rc=T=>T.zoom||T.drag||T.pitch||T.rotate;class o0 extends n.k{}function Rd(T){return T.panDelta&&T.panDelta.mag()||T.zoomDelta||T.bearingDelta||T.pitchDelta}class a0{constructor(l,d){this.handleWindowEvent=b=>{this.handleEvent(b,`${b.type}Window`)},this.handleEvent=(b,M)=>{if(b.type===\"blur\")return void this.stop(!0);this._updatingCamera=!0;let O=b.type===\"renderFrame\"?void 0:b,B={needsRenderFrame:!1},U={},W={},Z=b.touches,Q=Z?this._getMapTouches(Z):void 0,st=Q?c.touchPos(this._el,Q):c.mousePos(this._el,b);for(let{handlerName:yt,handler:dt,allowed:Ft}of this._handlers){if(!dt.isEnabled())continue;let Wt;this._blockedByActive(W,Ft,yt)?dt.reset():dt[M||b.type]&&(Wt=dt[M||b.type](b,st,Q),this.mergeHandlerResult(B,U,Wt,yt,O),Wt&&Wt.needsRenderFrame&&this._triggerRenderFrame()),(Wt||dt.isActive())&&(W[yt]=dt)}let At={};for(let yt in this._previousActiveHandlers)W[yt]||(At[yt]=O);this._previousActiveHandlers=W,(Object.keys(At).length||Rd(B))&&(this._changes.push([B,U,At]),this._triggerRenderFrame()),(Object.keys(W).length||Rd(B))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:pt}=B;pt&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],pt(this._map))},this._map=l,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Jm(l),this._bearingSnap=d.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(d);let v=this._el;this._listeners=[[v,\"touchstart\",{passive:!0}],[v,\"touchmove\",{passive:!1}],[v,\"touchend\",void 0],[v,\"touchcancel\",void 0],[v,\"mousedown\",void 0],[v,\"mousemove\",void 0],[v,\"mouseup\",void 0],[document,\"mousemove\",{capture:!0}],[document,\"mouseup\",void 0],[v,\"mouseover\",void 0],[v,\"mouseout\",void 0],[v,\"dblclick\",void 0],[v,\"click\",void 0],[v,\"keydown\",{capture:!1}],[v,\"keyup\",void 0],[v,\"wheel\",{passive:!1}],[v,\"contextmenu\",void 0],[window,\"blur\",void 0]];for(let[b,M,O]of this._listeners)c.addEventListener(b,M,b===document?this.handleWindowEvent:this.handleEvent,O)}destroy(){for(let[l,d,v]of this._listeners)c.removeEventListener(l,d,l===document?this.handleWindowEvent:this.handleEvent,v)}_addDefaultHandlers(l){let d=this._map,v=d.getCanvasContainer();this._add(\"mapEvent\",new Fs(d,l));let b=d.boxZoom=new Kp(d,l);this._add(\"boxZoom\",b),l.interactive&&l.boxZoom&&b.enable();let M=new fl(d),O=new tA(d);d.doubleClickZoom=new s0(O,M),this._add(\"tapZoom\",M),this._add(\"clickZoom\",O),l.interactive&&l.doubleClickZoom&&d.doubleClickZoom.enable();let B=new eA;this._add(\"tapDragZoom\",B);let U=d.touchPitch=new Ix(d);this._add(\"touchPitch\",U),l.interactive&&l.touchPitch&&d.touchPitch.enable(l.touchPitch);let W=za(l),Z=ro(l);d.dragRotate=new ls(l,W,Z),this._add(\"mouseRotate\",W,[\"mousePitch\"]),this._add(\"mousePitch\",Z,[\"mouseRotate\"]),l.interactive&&l.dragRotate&&d.dragRotate.enable();let Q=(({enable:Ft,clickTolerance:Wt})=>{let St=new Jp({checkCorrectEvent:Bt=>c.mouseButton(Bt)===0&&!Bt.ctrlKey});return new Fa({clickTolerance:Wt,move:(Bt,Yt)=>({around:Yt,panDelta:Yt.sub(Bt)}),activateOnStart:!0,moveStateManager:St,enable:Ft,assignEvents:hh})})(l),st=new Ue(l,d);d.dragPan=new dh(v,Q,st),this._add(\"mousePan\",Q),this._add(\"touchPan\",st,[\"touchZoom\",\"touchRotate\"]),l.interactive&&l.dragPan&&d.dragPan.enable(l.dragPan);let At=new e0,pt=new a_;d.touchZoomRotate=new Au(v,pt,At,B),this._add(\"touchRotate\",At,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",pt,[\"touchPan\",\"touchRotate\"]),l.interactive&&l.touchZoomRotate&&d.touchZoomRotate.enable(l.touchZoomRotate);let yt=d.scrollZoom=new vf(d,()=>this._triggerRenderFrame());this._add(\"scrollZoom\",yt,[\"mousePan\"]),l.interactive&&l.scrollZoom&&d.scrollZoom.enable(l.scrollZoom);let dt=d.keyboard=new l_(d);this._add(\"keyboard\",dt),l.interactive&&l.keyboard&&d.keyboard.enable(),this._add(\"blockableMapEvent\",new pu(d))}_add(l,d,v){this._handlers.push({handlerName:l,handler:d,allowed:v}),this._handlersById[l]=d}stop(l){if(!this._updatingCamera){for(let{handler:d}of this._handlers)d.reset();this._inertia.clear(),this._fireEvents({},{},l),this._changes=[]}}isActive(){for(let{handler:l}of this._handlers)if(l.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Rc(this._eventsInProgress)||this.isZooming()}_blockedByActive(l,d,v){for(let b in l)if(b!==v&&(!d||d.indexOf(b)<0))return!0;return!1}_getMapTouches(l){let d=[];for(let v of l)this._el.contains(v.target)&&d.push(v);return d}mergeHandlerResult(l,d,v,b,M){if(!v)return;n.e(l,v);let O={handlerName:b,originalEvent:v.originalEvent||M};v.zoomDelta!==void 0&&(d.zoom=O),v.panDelta!==void 0&&(d.drag=O),v.pitchDelta!==void 0&&(d.pitch=O),v.bearingDelta!==void 0&&(d.rotate=O)}_applyChanges(){let l={},d={},v={};for(let[b,M,O]of this._changes)b.panDelta&&(l.panDelta=(l.panDelta||new n.P(0,0))._add(b.panDelta)),b.zoomDelta&&(l.zoomDelta=(l.zoomDelta||0)+b.zoomDelta),b.bearingDelta&&(l.bearingDelta=(l.bearingDelta||0)+b.bearingDelta),b.pitchDelta&&(l.pitchDelta=(l.pitchDelta||0)+b.pitchDelta),b.around!==void 0&&(l.around=b.around),b.pinchAround!==void 0&&(l.pinchAround=b.pinchAround),b.noInertia&&(l.noInertia=b.noInertia),n.e(d,M),n.e(v,O);this._updateMapTransform(l,d,v),this._changes=[]}_updateMapTransform(l,d,v){let b=this._map,M=b._getTransformForUpdate(),O=b.terrain;if(!(Rd(l)||O&&this._terrainMovement))return this._fireEvents(d,v,!0);let{panDelta:B,zoomDelta:U,bearingDelta:W,pitchDelta:Z,around:Q,pinchAround:st}=l;st!==void 0&&(Q=st),b._stop(!0),Q=Q||b.transform.centerPoint;let At=M.pointLocation(B?Q.sub(B):Q);W&&(M.bearing+=W),Z&&(M.pitch+=Z),U&&(M.zoom+=U),O?this._terrainMovement||!d.drag&&!d.zoom?d.drag&&this._terrainMovement?M.center=M.pointLocation(M.centerPoint.sub(B)):M.setLocationAtPoint(At,Q):(this._terrainMovement=!0,this._map._elevationFreeze=!0,M.setLocationAtPoint(At,Q),this._map.once(\"moveend\",()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,M.recalculateZoom(b.terrain)})):M.setLocationAtPoint(At,Q),b._applyUpdatedTransform(M),this._map._update(),l.noInertia||this._inertia.record(l),this._fireEvents(d,v,!0)}_fireEvents(l,d,v){let b=Rc(this._eventsInProgress),M=Rc(l),O={};for(let Z in l){let{originalEvent:Q}=l[Z];this._eventsInProgress[Z]||(O[`${Z}start`]=Q),this._eventsInProgress[Z]=l[Z]}!b&&M&&this._fireEvent(\"movestart\",M.originalEvent);for(let Z in O)this._fireEvent(Z,O[Z]);M&&this._fireEvent(\"move\",M.originalEvent);for(let Z in l){let{originalEvent:Q}=l[Z];this._fireEvent(Z,Q)}let B={},U;for(let Z in this._eventsInProgress){let{handlerName:Q,originalEvent:st}=this._eventsInProgress[Z];this._handlersById[Q].isActive()||(delete this._eventsInProgress[Z],U=d[Q]||st,B[`${Z}end`]=U)}for(let Z in B)this._fireEvent(Z,B[Z]);let W=Rc(this._eventsInProgress);if(v&&(b||M)&&!W){this._updatingCamera=!0;let Z=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),Q=st=>st!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new o0(\"renderFrame\",{timeStamp:l})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class c_ extends n.E{constructor(l,d){super(),this._renderFrameCallback=()=>{let v=Math.min((n.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(v)),v<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=l,this._bearingSnap=d.bearingSnap,this.on(\"moveend\",()=>{delete this._requestedCameraState})}getCenter(){return new n.L(this.transform.center.lng,this.transform.center.lat)}setCenter(l,d){return this.jumpTo({center:l},d)}panBy(l,d,v){return l=n.P.convert(l).mult(-1),this.panTo(this.transform.center,n.e({offset:l},d),v)}panTo(l,d,v){return this.easeTo(n.e({center:l},d),v)}getZoom(){return this.transform.zoom}setZoom(l,d){return this.jumpTo({zoom:l},d),this}zoomTo(l,d,v){return this.easeTo(n.e({zoom:l},d),v)}zoomIn(l,d){return this.zoomTo(this.getZoom()+1,l,d),this}zoomOut(l,d){return this.zoomTo(this.getZoom()-1,l,d),this}getBearing(){return this.transform.bearing}setBearing(l,d){return this.jumpTo({bearing:l},d),this}getPadding(){return this.transform.padding}setPadding(l,d){return this.jumpTo({padding:l},d),this}rotateTo(l,d,v){return this.easeTo(n.e({bearing:l},d),v)}resetNorth(l,d){return this.rotateTo(0,n.e({duration:1e3},l),d),this}resetNorthPitch(l,d){return this.easeTo(n.e({bearing:0,pitch:0,duration:1e3},l),d),this}snapToNorth(l,d){return Math.abs(this.getBearing()){if(this._zooming&&(v.zoom=n.B.number(b,U,Qt)),this._rotating&&(v.bearing=n.B.number(M,W,Qt)),this._pitching&&(v.pitch=n.B.number(O,Z,Qt)),this._padding&&(v.interpolatePadding(B,Q,Qt),At=v.centerPoint.add(st)),this.terrain&&!l.freezeElevation&&this._updateElevation(Qt),St)v.setLocationAtPoint(St,Bt);else{let se=v.zoomScale(v.zoom-b),pe=U>b?Math.min(2,Wt):Math.max(.5,Wt),he=Math.pow(pe,1-Qt),xe=v.unproject(dt.add(Ft.mult(Qt*he)).mult(se));v.setLocationAtPoint(v.renderWorldCopies?xe.wrap():xe,At)}this._applyUpdatedTransform(v),this._fireMoveEvents(d)},Qt=>{this.terrain&&this._finalizeElevation(),this._afterEase(d,Qt)},l),this}_prepareEase(l,d,v={}){this._moving=!0,d||v.moving||this.fire(new n.k(\"movestart\",l)),this._zooming&&!v.zooming&&this.fire(new n.k(\"zoomstart\",l)),this._rotating&&!v.rotating&&this.fire(new n.k(\"rotatestart\",l)),this._pitching&&!v.pitching&&this.fire(new n.k(\"pitchstart\",l))}_prepareElevation(l){this._elevationCenter=l,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(l,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(l){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let d=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(l<1&&d!==this._elevationTarget){let v=this._elevationTarget-this._elevationStart;this._elevationStart+=l*(v-(d-(v*l+this._elevationStart))/(1-l)),this._elevationTarget=d}this.transform.elevation=n.B.number(this._elevationStart,this._elevationTarget,l)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(l){if(!this.transformCameraUpdate)return;let d=l.clone(),{center:v,zoom:b,pitch:M,bearing:O,elevation:B}=this.transformCameraUpdate(d);v&&(d.center=v),b!==void 0&&(d.zoom=b),M!==void 0&&(d.pitch=M),O!==void 0&&(d.bearing=O),B!==void 0&&(d.elevation=B),this.transform.apply(d)}_fireMoveEvents(l){this.fire(new n.k(\"move\",l)),this._zooming&&this.fire(new n.k(\"zoom\",l)),this._rotating&&this.fire(new n.k(\"rotate\",l)),this._pitching&&this.fire(new n.k(\"pitch\",l))}_afterEase(l,d){if(this._easeId&&d&&this._easeId===d)return;delete this._easeId;let v=this._zooming,b=this._rotating,M=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,v&&this.fire(new n.k(\"zoomend\",l)),b&&this.fire(new n.k(\"rotateend\",l)),M&&this.fire(new n.k(\"pitchend\",l)),this.fire(new n.k(\"moveend\",l))}flyTo(l,d){if(!l.essential&&n.h.prefersReducedMotion){let Xe=n.F(l,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(Xe,d)}this.stop(),l=n.e({offset:[0,0],speed:1.2,curve:1.42,easing:n.bb},l);let v=this._getTransformForUpdate(),b=this.getZoom(),M=this.getBearing(),O=this.getPitch(),B=this.getPadding(),U=\"zoom\"in l?n.ad(+l.zoom,v.minZoom,v.maxZoom):b,W=\"bearing\"in l?this._normalizeBearing(l.bearing,M):M,Z=\"pitch\"in l?+l.pitch:O,Q=\"padding\"in l?l.padding:v.padding,st=v.zoomScale(U-b),At=n.P.convert(l.offset),pt=v.centerPoint.add(At),yt=v.pointLocation(pt),dt=n.L.convert(l.center||yt);this._normalizeCenter(dt);let Ft=v.project(yt),Wt=v.project(dt).sub(Ft),St=l.curve,Bt=Math.max(v.width,v.height),Yt=Bt/st,Qt=Wt.mag();if(\"minZoom\"in l){let Xe=n.ad(Math.min(l.minZoom,b,U),v.minZoom,v.maxZoom),Vi=Bt/v.zoomScale(Xe-b);St=Math.sqrt(Vi/Qt*2)}let se=St*St;function pe(Xe){let Vi=(Yt*Yt-Bt*Bt+(Xe?-1:1)*se*se*Qt*Qt)/(2*(Xe?Yt:Bt)*se*Qt);return Math.log(Math.sqrt(Vi*Vi+1)-Vi)}function he(Xe){return(Math.exp(Xe)-Math.exp(-Xe))/2}function xe(Xe){return(Math.exp(Xe)+Math.exp(-Xe))/2}let We=pe(!1),Kr=function(Xe){return xe(We)/xe(We+St*Xe)},Me=function(Xe){return Bt*((xe(We)*(he(Vi=We+St*Xe)/xe(Vi))-he(We))/se)/Qt;var Vi},dr=(pe(!0)-We)/St;if(Math.abs(Qt)<1e-6||!isFinite(dr)){if(Math.abs(Bt-Yt)<1e-6)return this.easeTo(l,d);let Xe=Ytl.maxDuration&&(l.duration=0),this._zooming=!0,this._rotating=M!==W,this._pitching=Z!==O,this._padding=!v.isPaddingEqual(Q),this._prepareEase(d,!1),this.terrain&&this._prepareElevation(dt),this._ease(Xe=>{let Vi=Xe*dr,Jr=1/Kr(Vi);v.zoom=Xe===1?U:b+v.scaleZoom(Jr),this._rotating&&(v.bearing=n.B.number(M,W,Xe)),this._pitching&&(v.pitch=n.B.number(O,Z,Xe)),this._padding&&(v.interpolatePadding(B,Q,Xe),pt=v.centerPoint.add(At)),this.terrain&&!l.freezeElevation&&this._updateElevation(Xe);let Vr=Xe===1?dt:v.unproject(Ft.add(Wt.mult(Me(Vi))).mult(Jr));v.setLocationAtPoint(v.renderWorldCopies?Vr.wrap():Vr,pt),this._applyUpdatedTransform(v),this._fireMoveEvents(d)},()=>{this.terrain&&this._finalizeElevation(),this._afterEase(d)},l),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(l,d){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let v=this._onEaseEnd;delete this._onEaseEnd,v.call(this,d)}if(!l){let v=this.handlers;v&&v.stop(!1)}return this}_ease(l,d,v){v.animate===!1||v.duration===0?(l(1),d()):(this._easeStart=n.h.now(),this._easeOptions=v,this._onEaseFrame=l,this._onEaseEnd=d,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(l,d){l=n.b5(l,-180,180);let v=Math.abs(l-d);return Math.abs(l-360-d)180?-360:v<-180?360:0}queryTerrainElevation(l){return this.terrain?this.terrain.getElevationForLngLatZoom(n.L.convert(l),this.transform.tileZoom)-this.transform.elevation:null}}class ua{constructor(l={}){this._toggleAttribution=()=>{this._container.classList.contains(\"maplibregl-compact\")&&(this._container.classList.contains(\"maplibregl-compact-show\")?(this._container.setAttribute(\"open\",\"\"),this._container.classList.remove(\"maplibregl-compact-show\")):(this._container.classList.add(\"maplibregl-compact-show\"),this._container.removeAttribute(\"open\")))},this._updateData=d=>{!d||d.sourceDataType!==\"metadata\"&&d.sourceDataType!==\"visibility\"&&d.dataType!==\"style\"&&d.type!==\"terrain\"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute(\"open\",\"\"):this._container.classList.contains(\"maplibregl-compact\")||this._container.classList.contains(\"maplibregl-attrib-empty\")||(this._container.setAttribute(\"open\",\"\"),this._container.classList.add(\"maplibregl-compact\",\"maplibregl-compact-show\")):(this._container.setAttribute(\"open\",\"\"),this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.remove(\"maplibregl-compact\",\"maplibregl-compact-show\"))},this._updateCompactMinimize=()=>{this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.contains(\"maplibregl-compact-show\")&&this._container.classList.remove(\"maplibregl-compact-show\")},this.options=l}getDefaultPosition(){return\"bottom-right\"}onAdd(l){return this._map=l,this._compact=this.options&&this.options.compact,this._container=c.create(\"details\",\"maplibregl-ctrl maplibregl-ctrl-attrib\"),this._compactButton=c.create(\"summary\",\"maplibregl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=c.create(\"div\",\"maplibregl-ctrl-attrib-inner\",this._container),this._updateAttributions(),this._updateCompact(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"terrain\",this._updateData),this._map.on(\"resize\",this._updateCompact),this._map.on(\"drag\",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"terrain\",this._updateData),this._map.off(\"resize\",this._updateCompact),this._map.off(\"drag\",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(l,d){let v=this._map._getUIString(`AttributionControl.${d}`);l.title=v,l.setAttribute(\"aria-label\",v)}_updateAttributions(){if(!this._map.style)return;let l=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?l=l.concat(this.options.customAttribution.map(b=>typeof b!=\"string\"?\"\":b)):typeof this.options.customAttribution==\"string\"&&l.push(this.options.customAttribution)),this._map.style.stylesheet){let b=this._map.style.stylesheet;this.styleOwner=b.owner,this.styleId=b.id}let d=this._map.style.sourceCaches;for(let b in d){let M=d[b];if(M.used||M.usedForTerrain){let O=M.getSource();O.attribution&&l.indexOf(O.attribution)<0&&l.push(O.attribution)}}l=l.filter(b=>String(b).trim()),l.sort((b,M)=>b.length-M.length),l=l.filter((b,M)=>{for(let O=M+1;O=0)return!1;return!0});let v=l.join(\" | \");v!==this._attribHTML&&(this._attribHTML=v,l.length?(this._innerContainer.innerHTML=v,this._container.classList.remove(\"maplibregl-attrib-empty\")):this._container.classList.add(\"maplibregl-attrib-empty\"),this._updateCompact(),this._editLink=null)}}class ln{constructor(l={}){this._updateCompact=()=>{let d=this._container.children;if(d.length){let v=d[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&v.classList.add(\"maplibregl-compact\"):v.classList.remove(\"maplibregl-compact\")}},this.options=l}getDefaultPosition(){return\"bottom-left\"}onAdd(l){this._map=l,this._compact=this.options&&this.options.compact,this._container=c.create(\"div\",\"maplibregl-ctrl\");let d=c.create(\"a\",\"maplibregl-ctrl-logo\");return d.target=\"_blank\",d.rel=\"noopener nofollow\",d.href=\"https://maplibre.org/\",d.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),d.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(d),this._container.style.display=\"block\",this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._compact=void 0}}class rA{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(l){let d=++this._id;return this._queue.push({callback:l,id:d,cancelled:!1}),d}remove(l){let d=this._currentlyRunning,v=d?this._queue.concat(d):this._queue;for(let b of v)if(b.id===l)return void(b.cancelled=!0)}run(l=0){if(this._currentlyRunning)throw new Error(\"Attempting to run(), but is already running.\");let d=this._currentlyRunning=this._queue;this._queue=[];for(let v of d)if(!v.cancelled&&(v.callback(l),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}let l0={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"TerrainControl.enableTerrain\":\"Enable terrain\",\"TerrainControl.disableTerrain\":\"Disable terrain\"};var ph=n.Q([{name:\"a_pos3d\",type:\"Int16\",components:3}]);class u_ extends n.E{constructor(l){super(),this.sourceCache=l,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,l.usedForTerrain=!0,l.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(l,d){this.sourceCache.update(l,d),this._renderableTilesKeys=[];let v={};for(let b of l.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:d}))v[b.key]=!0,this._renderableTilesKeys.push(b.key),this._tiles[b.key]||(b.posMatrix=new Float64Array(16),n.aS(b.posMatrix,0,n.N,0,n.N,0,1),this._tiles[b.key]=new to(b,this.tileSize));for(let b in this._tiles)v[b]||delete this._tiles[b]}freeRtt(l){for(let d in this._tiles){let v=this._tiles[d];(!l||v.tileID.equals(l)||v.tileID.isChildOf(l)||l.isChildOf(v.tileID))&&(v.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(l=>this.getTileByID(l))}getTileByID(l){return this._tiles[l]}getTerrainCoords(l){let d={};for(let v of this._renderableTilesKeys){let b=this._tiles[v].tileID;if(b.canonical.equals(l.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16),n.aS(M.posMatrix,0,n.N,0,n.N,0,1),d[v]=M}else if(b.canonical.isChildOf(l.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16);let O=b.canonical.z-l.canonical.z,B=b.canonical.x-(b.canonical.x>>O<>O<>O;n.aS(M.posMatrix,0,W,0,W,0,1),n.$(M.posMatrix,M.posMatrix,[-B*W,-U*W,0]),d[v]=M}else if(l.canonical.isChildOf(b.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16);let O=l.canonical.z-b.canonical.z,B=l.canonical.x-(l.canonical.x>>O<>O<>O;n.aS(M.posMatrix,0,n.N,0,n.N,0,1),n.$(M.posMatrix,M.posMatrix,[B*W,U*W,0]),n.a0(M.posMatrix,M.posMatrix,[1/2**O,1/2**O,0]),d[v]=M}}return d}getSourceTile(l,d){let v=this.sourceCache._source,b=l.overscaledZ-this.deltaZoom;if(b>v.maxzoom&&(b=v.maxzoom),b=v.minzoom&&(!M||!M.dem);)M=this.sourceCache.getTileByID(l.scaledTo(b--).key);return M}tilesAfterTime(l=Date.now()){return Object.values(this._tiles).filter(d=>d.timeAdded>=l)}}class h_{constructor(l,d,v){this.painter=l,this.sourceCache=new u_(d),this.options=v,this.exaggeration=typeof v.exaggeration==\"number\"?v.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(l,d,v,b=n.N){var M;if(!(d>=0&&d=0&&vl.canonical.z&&(l.canonical.z>=b?M=l.canonical.z-b:n.w(\"cannot calculate elevation if elevation maxzoom > source.maxzoom\"));let O=l.canonical.x-(l.canonical.x>>M<>M<>8<<4|M>>8,d[O+3]=0;let v=new n.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(d.buffer)),b=new Zt(l,v,l.gl.RGBA,{premultiply:!1});return b.bind(l.gl.NEAREST,l.gl.CLAMP_TO_EDGE),this._coordsTexture=b,b}pointCoordinate(l){let d=new Uint8Array(4),v=this.painter.context,b=v.gl;v.bindFramebuffer.set(this.getFramebuffer(\"coords\").framebuffer),b.readPixels(l.x,this.painter.height/devicePixelRatio-l.y-1,1,1,b.RGBA,b.UNSIGNED_BYTE,d),v.bindFramebuffer.set(null);let M=d[0]+(d[2]>>4<<8),O=d[1]+((15&d[2])<<8),B=this.coordsIndex[255-d[3]],U=B&&this.sourceCache.getTileByID(B);if(!U)return null;let W=this._coordsTextureSize,Z=(1<0&&Math.sign(M)<0||!v&&Math.sign(b)<0&&Math.sign(M)>0?(b=360*Math.sign(M)+b,n.G(b)):d}}class Cx{constructor(l,d,v){this._context=l,this._size=d,this._tileSize=v,this._objects=[],this._recentlyUsed=[],this._stamp=0}destruct(){for(let l of this._objects)l.texture.destroy(),l.fbo.destroy()}_createObject(l){let d=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),v=new Zt(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return v.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),d.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),d.colorAttachment.set(v.texture),{id:l,fbo:d,texture:v,stamp:-1,inUse:!1}}getObjectForId(l){return this._objects[l]}useObject(l){l.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter(d=>l.id!==d),this._recentlyUsed.push(l.id)}stampObject(l){l.stamp=++this._stamp}getOrCreateFreeObject(){for(let d of this._recentlyUsed)if(!this._objects[d].inUse)return this._objects[d];if(this._objects.length>=this._size)throw new Error(\"No free RenderPool available, call freeAllObjects() required!\");let l=this._createObject(this._objects.length);return this._objects.push(l),l}freeObject(l){l.inUse=!1}freeAllObjects(){for(let l of this._objects)this.freeObject(l)}isFull(){return!(this._objects.length!l.inUse)===!1}}let _o={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class iA{constructor(l,d){this.painter=l,this.terrain=d,this.pool=new Cx(l.context,30,d.sourceCache.tileSize*d.qualityFactor)}destruct(){this.pool.destruct()}getTexture(l){return this.pool.getObjectForId(l.rtt[this._stacks.length-1].id).texture}prepareForRender(l,d){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=l._order.filter(v=>!l._layers[v].isHidden(d)),this._coordsDescendingInv={};for(let v in l.sourceCaches){this._coordsDescendingInv[v]={};let b=l.sourceCaches[v].getVisibleCoordinates();for(let M of b){let O=this.terrain.sourceCache.getTerrainCoords(M);for(let B in O)this._coordsDescendingInv[v][B]||(this._coordsDescendingInv[v][B]=[]),this._coordsDescendingInv[v][B].push(O[B])}}this._coordsDescendingInvStr={};for(let v of l._order){let b=l._layers[v],M=b.source;if(_o[b.type]&&!this._coordsDescendingInvStr[M]){this._coordsDescendingInvStr[M]={};for(let O in this._coordsDescendingInv[M])this._coordsDescendingInvStr[M][O]=this._coordsDescendingInv[M][O].map(B=>B.key).sort().join()}}for(let v of this._renderableTiles)for(let b in this._coordsDescendingInvStr){let M=this._coordsDescendingInvStr[b][v.tileID.key];M&&M!==v.rttCoords[b]&&(v.rtt=[])}}renderLayer(l){if(l.isHidden(this.painter.transform.zoom))return!1;let d=l.type,v=this.painter,b=this._renderableLayerIds[this._renderableLayerIds.length-1]===l.id;if(_o[d]&&(this._prevType&&_o[this._prevType]||this._stacks.push([]),this._prevType=d,this._stacks[this._stacks.length-1].push(l.id),!b))return!0;if(_o[this._prevType]||_o[d]&&b){this._prevType=d;let M=this._stacks.length-1,O=this._stacks[M]||[];for(let B of this._renderableTiles){if(this.pool.isFull()&&(Pn(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(B),B.rtt[M]){let W=this.pool.getObjectForId(B.rtt[M].id);if(W.stamp===B.rtt[M].stamp){this.pool.useObject(W);continue}}let U=this.pool.getOrCreateFreeObject();this.pool.useObject(U),this.pool.stampObject(U),B.rtt[M]={id:U.id,stamp:U.stamp},v.context.bindFramebuffer.set(U.fbo.framebuffer),v.context.clear({color:n.aT.transparent,stencil:0}),v.currentStencilSource=void 0;for(let W=0;W{T.touchstart=T.dragStart,T.touchmoveWindow=T.dragMove,T.touchend=T.dragEnd},nA={showCompass:!0,showZoom:!0,visualizePitch:!1};class Dd{constructor(l,d,v=!1){this.mousedown=O=>{this.startMouse(n.e({},O,{ctrlKey:!0,preventDefault:()=>O.preventDefault()}),c.mousePos(this.element,O)),c.addEventListener(window,\"mousemove\",this.mousemove),c.addEventListener(window,\"mouseup\",this.mouseup)},this.mousemove=O=>{this.moveMouse(O,c.mousePos(this.element,O))},this.mouseup=O=>{this.mouseRotate.dragEnd(O),this.mousePitch&&this.mousePitch.dragEnd(O),this.offTemp()},this.touchstart=O=>{O.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,O.targetTouches)[0],this.startTouch(O,this._startPos),c.addEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.addEventListener(window,\"touchend\",this.touchend))},this.touchmove=O=>{O.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,O.targetTouches)[0],this.moveTouch(O,this._lastPos))},this.touchend=O=>{O.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let b=l.dragRotate._mouseRotate.getClickTolerance(),M=l.dragRotate._mousePitch.getClickTolerance();this.element=d,this.mouseRotate=za({clickTolerance:b,enable:!0}),this.touchRotate=(({enable:O,clickTolerance:B,bearingDegreesPerPixelMoved:U=.8})=>{let W=new t0;return new Fa({clickTolerance:B,move:(Z,Q)=>({bearingDelta:(Q.x-Z.x)*U}),moveStateManager:W,enable:O,assignEvents:xf})})({clickTolerance:b,enable:!0}),this.map=l,v&&(this.mousePitch=ro({clickTolerance:M,enable:!0}),this.touchPitch=(({enable:O,clickTolerance:B,pitchDegreesPerPixelMoved:U=-.5})=>{let W=new t0;return new Fa({clickTolerance:B,move:(Z,Q)=>({pitchDelta:(Q.y-Z.y)*U}),moveStateManager:W,enable:O,assignEvents:xf})})({clickTolerance:M,enable:!0})),c.addEventListener(d,\"mousedown\",this.mousedown),c.addEventListener(d,\"touchstart\",this.touchstart,{passive:!1}),c.addEventListener(d,\"touchcancel\",this.reset)}startMouse(l,d){this.mouseRotate.dragStart(l,d),this.mousePitch&&this.mousePitch.dragStart(l,d),c.disableDrag()}startTouch(l,d){this.touchRotate.dragStart(l,d),this.touchPitch&&this.touchPitch.dragStart(l,d),c.disableDrag()}moveMouse(l,d){let v=this.map,{bearingDelta:b}=this.mouseRotate.dragMove(l,d)||{};if(b&&v.setBearing(v.getBearing()+b),this.mousePitch){let{pitchDelta:M}=this.mousePitch.dragMove(l,d)||{};M&&v.setPitch(v.getPitch()+M)}}moveTouch(l,d){let v=this.map,{bearingDelta:b}=this.touchRotate.dragMove(l,d)||{};if(b&&v.setBearing(v.getBearing()+b),this.touchPitch){let{pitchDelta:M}=this.touchPitch.dragMove(l,d)||{};M&&v.setPitch(v.getPitch()+M)}}off(){let l=this.element;c.removeEventListener(l,\"mousedown\",this.mousedown),c.removeEventListener(l,\"touchstart\",this.touchstart,{passive:!1}),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend),c.removeEventListener(l,\"touchcancel\",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,\"mousemove\",this.mousemove),c.removeEventListener(window,\"mouseup\",this.mouseup),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend)}}let Gn;function io(T,l,d){if(T=new n.L(T.lng,T.lat),l){let v=new n.L(T.lng-360,T.lat),b=new n.L(T.lng+360,T.lat),M=d.locationPoint(T).distSqr(l);d.locationPoint(v).distSqr(l)180;){let v=d.locationPoint(T);if(v.x>=0&&v.y>=0&&v.x<=d.width&&v.y<=d.height)break;T.lng>d.center.lng?T.lng-=360:T.lng+=360}return T}let Ui={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function f_(T,l,d){let v=T.classList;for(let b in Ui)v.remove(`maplibregl-${d}-anchor-${b}`);v.add(`maplibregl-${d}-anchor-${l}`)}class Ah extends n.E{constructor(l){if(super(),this._onKeyPress=d=>{let v=d.code,b=d.charCode||d.keyCode;v!==\"Space\"&&v!==\"Enter\"&&b!==32&&b!==13||this.togglePopup()},this._onMapClick=d=>{let v=d.originalEvent.target,b=this._element;this._popup&&(v===b||b.contains(v))&&this.togglePopup()},this._update=d=>{if(!this._map)return;let v=this._map.loaded()&&!this._map.isMoving();(d?.type===\"terrain\"||d?.type===\"render\"&&!v)&&this._map.once(\"render\",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=io(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let b=\"\";this._rotationAlignment===\"viewport\"||this._rotationAlignment===\"auto\"?b=`rotateZ(${this._rotation}deg)`:this._rotationAlignment===\"map\"&&(b=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let M=\"\";this._pitchAlignment===\"viewport\"||this._pitchAlignment===\"auto\"?M=\"rotateX(0deg)\":this._pitchAlignment===\"map\"&&(M=`rotateX(${this._map.getPitch()}deg)`),d&&d.type!==\"moveend\"||(this._pos=this._pos.round()),c.setTransform(this._element,`${Ui[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${M} ${b}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout(()=>{let O=this._map.unproject(this._pos),B=40075016686e-3*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=O.distanceTo(this._lngLat)>20*B?\"0.2\":\"1.0\",this._opacityTimeout=null},100))},this._onMove=d=>{if(!this._isDragging){let v=this._clickTolerance||this._map._clickTolerance;this._isDragging=d.point.dist(this._pointerdownPos)>=v}this._isDragging&&(this._pos=d.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",this._state===\"pending\"&&(this._state=\"active\",this.fire(new n.k(\"dragstart\"))),this.fire(new n.k(\"drag\")))},this._onUp=()=>{this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),this._state===\"active\"&&this.fire(new n.k(\"dragend\")),this._state=\"inactive\"},this._addDragHandler=d=>{this._element.contains(d.originalEvent.target)&&(d.preventDefault(),this._positionDelta=d.point.sub(this._pos).add(this._offset),this._pointerdownPos=d.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp))},this._anchor=l&&l.anchor||\"center\",this._color=l&&l.color||\"#3FB1CE\",this._scale=l&&l.scale||1,this._draggable=l&&l.draggable||!1,this._clickTolerance=l&&l.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=l&&l.rotation||0,this._rotationAlignment=l&&l.rotationAlignment||\"auto\",this._pitchAlignment=l&&l.pitchAlignment&&l.pitchAlignment!==\"auto\"?l.pitchAlignment:this._rotationAlignment,l&&l.element)this._element=l.element,this._offset=n.P.convert(l&&l.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");let d=c.createNS(\"http://www.w3.org/2000/svg\",\"svg\"),v=41,b=27;d.setAttributeNS(null,\"display\",\"block\"),d.setAttributeNS(null,\"height\",`${v}px`),d.setAttributeNS(null,\"width\",`${b}px`),d.setAttributeNS(null,\"viewBox\",`0 0 ${b} ${v}`);let M=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");M.setAttributeNS(null,\"stroke\",\"none\"),M.setAttributeNS(null,\"stroke-width\",\"1\"),M.setAttributeNS(null,\"fill\",\"none\"),M.setAttributeNS(null,\"fill-rule\",\"evenodd\");let O=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");O.setAttributeNS(null,\"fill-rule\",\"nonzero\");let B=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");B.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),B.setAttributeNS(null,\"fill\",\"#000000\");let U=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];for(let Ft of U){let Wt=c.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");Wt.setAttributeNS(null,\"opacity\",\"0.04\"),Wt.setAttributeNS(null,\"cx\",\"10.5\"),Wt.setAttributeNS(null,\"cy\",\"5.80029008\"),Wt.setAttributeNS(null,\"rx\",Ft.rx),Wt.setAttributeNS(null,\"ry\",Ft.ry),B.appendChild(Wt)}let W=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");W.setAttributeNS(null,\"fill\",this._color);let Z=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");Z.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),W.appendChild(Z);let Q=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");Q.setAttributeNS(null,\"opacity\",\"0.25\"),Q.setAttributeNS(null,\"fill\",\"#000000\");let st=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");st.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),Q.appendChild(st);let At=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");At.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),At.setAttributeNS(null,\"fill\",\"#FFFFFF\");let pt=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");pt.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");let yt=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");yt.setAttributeNS(null,\"fill\",\"#000000\"),yt.setAttributeNS(null,\"opacity\",\"0.25\"),yt.setAttributeNS(null,\"cx\",\"5.5\"),yt.setAttributeNS(null,\"cy\",\"5.5\"),yt.setAttributeNS(null,\"r\",\"5.4999962\");let dt=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");dt.setAttributeNS(null,\"fill\",\"#FFFFFF\"),dt.setAttributeNS(null,\"cx\",\"5.5\"),dt.setAttributeNS(null,\"cy\",\"5.5\"),dt.setAttributeNS(null,\"r\",\"5.4999962\"),pt.appendChild(yt),pt.appendChild(dt),O.appendChild(B),O.appendChild(W),O.appendChild(Q),O.appendChild(At),O.appendChild(pt),d.appendChild(O),d.setAttributeNS(null,\"height\",v*this._scale+\"px\"),d.setAttributeNS(null,\"width\",b*this._scale+\"px\"),this._element.appendChild(d),this._offset=n.P.convert(l&&l.offset||[0,-14])}if(this._element.classList.add(\"maplibregl-marker\"),this._element.addEventListener(\"dragstart\",d=>{d.preventDefault()}),this._element.addEventListener(\"mousedown\",d=>{d.preventDefault()}),f_(this._element,this._anchor,\"marker\"),l&&l.className)for(let d of l.className.split(\" \"))this._element.classList.add(d);this._popup=null}addTo(l){return this.remove(),this._map=l,l.getCanvasContainer().appendChild(this._element),l.on(\"move\",this._update),l.on(\"moveend\",this._update),l.on(\"terrain\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(l){return this._lngLat=n.L.convert(l),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(l){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),l){if(!(\"offset\"in l.options)){let b=Math.abs(13.5)/Math.SQRT2;l.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-38.1],\"bottom-left\":[b,-1*(38.1-13.5+b)],\"bottom-right\":[-b,-1*(38.1-13.5+b)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=l,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress)}return this}getPopup(){return this._popup}togglePopup(){let l=this._popup;return l?(l.isOpen()?l.remove():l.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(l){return this._offset=n.P.convert(l),this._update(),this}addClassName(l){this._element.classList.add(l)}removeClassName(l){this._element.classList.remove(l)}toggleClassName(l){return this._element.classList.toggle(l)}setDraggable(l){return this._draggable=!!l,this._map&&(l?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(l){return this._rotation=l||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(l){return this._rotationAlignment=l||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(l){return this._pitchAlignment=l&&l!==\"auto\"?l:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}let Cn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},yn=0,bf=!1,Ms={maxWidth:100,unit:\"metric\"};function mh(T,l,d){let v=d&&d.maxWidth||100,b=T._container.clientHeight/2,M=T.unproject([0,b]),O=T.unproject([v,b]),B=M.distanceTo(O);if(d&&d.unit===\"imperial\"){let U=3.2808*B;U>5280?jo(l,v,U/5280,T._getUIString(\"ScaleControl.Miles\")):jo(l,v,U,T._getUIString(\"ScaleControl.Feet\"))}else d&&d.unit===\"nautical\"?jo(l,v,B/1852,T._getUIString(\"ScaleControl.NauticalMiles\")):B>=1e3?jo(l,v,B/1e3,T._getUIString(\"ScaleControl.Kilometers\")):jo(l,v,B,T._getUIString(\"ScaleControl.Meters\"))}function jo(T,l,d,v){let b=function(M){let O=Math.pow(10,`${Math.floor(M)}`.length-1),B=M/O;return B=B>=10?10:B>=5?5:B>=3?3:B>=2?2:B>=1?1:function(U){let W=Math.pow(10,Math.ceil(-Math.log(U)/Math.LN10));return Math.round(U*W)/W}(B),O*B}(d);T.style.width=l*(b/d)+\"px\",T.innerHTML=`${b} ${v}`}let c0={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},Od=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function wf(T){if(T){if(typeof T==\"number\"){let l=Math.round(Math.abs(T)/Math.SQRT2);return{center:new n.P(0,0),top:new n.P(0,T),\"top-left\":new n.P(l,l),\"top-right\":new n.P(-l,l),bottom:new n.P(0,-T),\"bottom-left\":new n.P(l,-l),\"bottom-right\":new n.P(-l,-l),left:new n.P(T,0),right:new n.P(-T,0)}}if(T instanceof n.P||Array.isArray(T)){let l=n.P.convert(T);return{center:l,top:l,\"top-left\":l,\"top-right\":l,bottom:l,\"bottom-left\":l,\"bottom-right\":l,left:l,right:l}}return{center:n.P.convert(T.center||[0,0]),top:n.P.convert(T.top||[0,0]),\"top-left\":n.P.convert(T[\"top-left\"]||[0,0]),\"top-right\":n.P.convert(T[\"top-right\"]||[0,0]),bottom:n.P.convert(T.bottom||[0,0]),\"bottom-left\":n.P.convert(T[\"bottom-left\"]||[0,0]),\"bottom-right\":n.P.convert(T[\"bottom-right\"]||[0,0]),left:n.P.convert(T.left||[0,0]),right:n.P.convert(T.right||[0,0])}}return wf(new n.P(0,0))}let Go={extend:(T,...l)=>n.e(T,...l),run(T){T()},logToElement(T,l=!1,d=\"log\"){let v=window.document.getElementById(d);v&&(l&&(v.innerHTML=\"\"),v.innerHTML+=`
${T}`)}},sA=o;class xi{static get version(){return sA}static get workerCount(){return eo.workerCount}static set workerCount(l){eo.workerCount=l}static get maxParallelImageRequests(){return n.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(l){n.c.MAX_PARALLEL_IMAGE_REQUESTS=l}static get workerUrl(){return n.c.WORKER_URL}static set workerUrl(l){n.c.WORKER_URL=l}static addProtocol(l,d){n.c.REGISTERED_PROTOCOLS[l]=d}static removeProtocol(l){delete n.c.REGISTERED_PROTOCOLS[l]}}return xi.Map=class extends c_{constructor(T){if(n.bg.mark(n.bh.create),(T=n.e({},fr,T)).minZoom!=null&&T.maxZoom!=null&&T.minZoom>T.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(T.minPitch!=null&&T.maxPitch!=null&&T.minPitch>T.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(T.minPitch!=null&&T.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(T.maxPitch!=null&&T.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(super(new Qp(T.minZoom,T.maxZoom,T.minPitch,T.maxPitch,T.renderWorldCopies),{bearingSnap:T.bearingSnap}),this._cooperativeGesturesOnWheel=l=>{this._onCooperativeGesture(l,l[this._metaKey],1)},this._contextLost=l=>{l.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new n.k(\"webglcontextlost\",{originalEvent:l}))},this._contextRestored=l=>{this._setupPainter(),this.resize(),this._update(),this.fire(new n.k(\"webglcontextrestored\",{originalEvent:l}))},this._onMapScroll=l=>{if(l.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=T.interactive,this._cooperativeGestures=T.cooperativeGestures,this._metaKey=navigator.platform.indexOf(\"Mac\")===0?\"metaKey\":\"ctrlKey\",this._maxTileCacheSize=T.maxTileCacheSize,this._maxTileCacheZoomLevels=T.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=T.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=T.preserveDrawingBuffer,this._antialias=T.antialias,this._trackResize=T.trackResize,this._bearingSnap=T.bearingSnap,this._refreshExpiredTiles=T.refreshExpiredTiles,this._fadeDuration=T.fadeDuration,this._crossSourceCollisions=T.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=T.collectResourceTiming,this._renderTaskQueue=new rA,this._controls=[],this._mapId=n.a2(),this._locale=n.e({},l0,T.locale),this._clickTolerance=T.clickTolerance,this._overridePixelRatio=T.pixelRatio,this._maxCanvasSize=T.maxCanvasSize,this.transformCameraUpdate=T.transformCameraUpdate,this._imageQueueHandle=j.addThrottleControl(()=>this.isMoving()),this._requestManager=new rt(T.transformRequest),typeof T.container==\"string\"){if(this._container=document.getElementById(T.container),!this._container)throw new Error(`Container '${T.container}' not found.`)}else{if(!(T.container instanceof HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=T.container}if(T.maxBounds&&this.setMaxBounds(T.maxBounds),this._setupContainer(),this._setupPainter(),this.on(\"move\",()=>this._update(!1)),this.on(\"moveend\",()=>this._update(!1)),this.on(\"zoom\",()=>this._update(!0)),this.on(\"terrain\",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once(\"idle\",()=>{this._idleTriggered=!0}),typeof window<\"u\"){addEventListener(\"online\",this._onWindowOnline,!1);let l=!1,d=ah(v=>{this._trackResize&&!this._removed&&this.resize(v)._update()},50);this._resizeObserver=new ResizeObserver(v=>{l?d(v):l=!0}),this._resizeObserver.observe(this._container)}this.handlers=new a0(this,T),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=T.hash&&new Id(typeof T.hash==\"string\"&&T.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:T.center,zoom:T.zoom,bearing:T.bearing,pitch:T.pitch}),T.bounds&&(this.resize(),this.fitBounds(T.bounds,n.e({},T.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=T.localIdeographFontFamily,this._validateStyle=T.validateStyle,T.style&&this.setStyle(T.style,{localIdeographFontFamily:T.localIdeographFontFamily}),T.attributionControl&&this.addControl(new ua({customAttribution:T.customAttribution})),T.maplibreLogo&&this.addControl(new ln,T.logoPosition),this.on(\"style.load\",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on(\"data\",l=>{this._update(l.dataType===\"style\"),this.fire(new n.k(`${l.dataType}data`,l))}),this.on(\"dataloading\",l=>{this.fire(new n.k(`${l.dataType}dataloading`,l))}),this.on(\"dataabort\",l=>{this.fire(new n.k(\"sourcedataabort\",l))})}_getMapId(){return this._mapId}addControl(T,l){if(l===void 0&&(l=T.getDefaultPosition?T.getDefaultPosition():\"top-right\"),!T||!T.onAdd)return this.fire(new n.j(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));let d=T.onAdd(this);this._controls.push(T);let v=this._controlPositions[l];return l.indexOf(\"bottom\")!==-1?v.insertBefore(d,v.firstChild):v.appendChild(d),this}removeControl(T){if(!T||!T.onRemove)return this.fire(new n.j(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));let l=this._controls.indexOf(T);return l>-1&&this._controls.splice(l,1),T.onRemove(this),this}hasControl(T){return this._controls.indexOf(T)>-1}calculateCameraOptionsFromTo(T,l,d,v){return v==null&&this.terrain&&(v=this.terrain.getElevationForLngLatZoom(d,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(T,l,d,v)}resize(T){var l;let d=this._containerDimensions(),v=d[0],b=d[1],M=this._getClampedPixelRatio(v,b);if(this._resizeCanvas(v,b,M),this.painter.resize(v,b,M),this.painter.overLimit()){let B=this.painter.context.gl;this._maxCanvasSize=[B.drawingBufferWidth,B.drawingBufferHeight];let U=this._getClampedPixelRatio(v,b);this._resizeCanvas(v,b,U),this.painter.resize(v,b,U)}this.transform.resize(v,b),(l=this._requestedCameraState)===null||l===void 0||l.resize(v,b);let O=!this._moving;return O&&(this.stop(),this.fire(new n.k(\"movestart\",T)).fire(new n.k(\"move\",T))),this.fire(new n.k(\"resize\",T)),O&&this.fire(new n.k(\"moveend\",T)),this}_getClampedPixelRatio(T,l){let{0:d,1:v}=this._maxCanvasSize,b=this.getPixelRatio(),M=T*b,O=l*b;return Math.min(M>d?d/M:1,O>v?v/O:1)*b}getPixelRatio(){var T;return(T=this._overridePixelRatio)!==null&&T!==void 0?T:devicePixelRatio}setPixelRatio(T){this._overridePixelRatio=T,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(T){return this.transform.setMaxBounds(wi.convert(T)),this._update()}setMinZoom(T){if((T=T??-2)>=-2&&T<=this.transform.maxZoom)return this.transform.minZoom=T,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=T,this._update(),this.getZoom()>T&&this.setZoom(T),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(T){if((T=T??0)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(T>=0&&T<=this.transform.maxPitch)return this.transform.minPitch=T,this._update(),this.getPitch()85)throw new Error(\"maxPitch must be less than or equal to 85\");if(T>=this.transform.minPitch)return this.transform.maxPitch=T,this._update(),this.getPitch()>T&&this.setPitch(T),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(T){return this.transform.renderWorldCopies=T,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(T){return this._cooperativeGestures=T,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(T){return this.transform.locationPoint(n.L.convert(T),this.style&&this.terrain)}unproject(T){return this.transform.pointLocation(n.P.convert(T),this.terrain)}isMoving(){var T;return this._moving||((T=this.handlers)===null||T===void 0?void 0:T.isMoving())}isZooming(){var T;return this._zooming||((T=this.handlers)===null||T===void 0?void 0:T.isZooming())}isRotating(){var T;return this._rotating||((T=this.handlers)===null||T===void 0?void 0:T.isRotating())}_createDelegatedListener(T,l,d){if(T===\"mouseenter\"||T===\"mouseover\"){let v=!1;return{layer:l,listener:d,delegates:{mousemove:M=>{let O=this.getLayer(l)?this.queryRenderedFeatures(M.point,{layers:[l]}):[];O.length?v||(v=!0,d.call(this,new la(T,this,M.originalEvent,{features:O}))):v=!1},mouseout:()=>{v=!1}}}}if(T===\"mouseleave\"||T===\"mouseout\"){let v=!1;return{layer:l,listener:d,delegates:{mousemove:O=>{(this.getLayer(l)?this.queryRenderedFeatures(O.point,{layers:[l]}):[]).length?v=!0:v&&(v=!1,d.call(this,new la(T,this,O.originalEvent)))},mouseout:O=>{v&&(v=!1,d.call(this,new la(T,this,O.originalEvent)))}}}}{let v=b=>{let M=this.getLayer(l)?this.queryRenderedFeatures(b.point,{layers:[l]}):[];M.length&&(b.features=M,d.call(this,b),delete b.features)};return{layer:l,listener:d,delegates:{[T]:v}}}}on(T,l,d){if(d===void 0)return super.on(T,l);let v=this._createDelegatedListener(T,l,d);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[T]=this._delegatedListeners[T]||[],this._delegatedListeners[T].push(v);for(let b in v.delegates)this.on(b,v.delegates[b]);return this}once(T,l,d){if(d===void 0)return super.once(T,l);let v=this._createDelegatedListener(T,l,d);for(let b in v.delegates)this.once(b,v.delegates[b]);return this}off(T,l,d){return d===void 0?super.off(T,l):(this._delegatedListeners&&this._delegatedListeners[T]&&(v=>{let b=this._delegatedListeners[T];for(let M=0;Mthis._updateStyle(T,l));let d=this.style&&l.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!T)),T?(this.style=new Vn(this,l||{}),this.style.setEventedParent(this,{style:this.style}),typeof T==\"string\"?this.style.loadURL(T,l,d):this.style.loadJSON(T,l,d),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Vn(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(T,l){if(typeof T==\"string\"){let d=this._requestManager.transformRequest(T,Y.Style);n.f(d,(v,b)=>{v?this.fire(new n.j(v)):b&&this._updateDiff(b,l)})}else typeof T==\"object\"&&this._updateDiff(T,l)}_updateDiff(T,l){try{this.style.setState(T,l)&&this._update(!0)}catch(d){n.w(`Unable to perform style diff: ${d.message||d.error||d}. Rebuilding the style from scratch.`),this._updateStyle(T,l)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():n.w(\"There is no style added to the map.\")}addSource(T,l){return this._lazyInitEmptyStyle(),this.style.addSource(T,l),this._update(!0)}isSourceLoaded(T){let l=this.style&&this.style.sourceCaches[T];if(l!==void 0)return l.loaded();this.fire(new n.j(new Error(`There is no source with ID '${T}'`)))}setTerrain(T){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off(\"data\",this._terrainDataCallback),T){let l=this.style.sourceCaches[T.source];if(!l)throw new Error(`cannot load terrain, because there exists no source with ID: ${T.source}`);for(let d in this.style._layers){let v=this.style._layers[d];v.type===\"hillshade\"&&v.source===T.source&&n.w(\"You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.\")}this.terrain=new h_(this.painter,l,T),this.painter.renderToTexture=new iA(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=d=>{d.dataType===\"style\"?this.terrain.sourceCache.freeRtt():d.dataType===\"source\"&&d.tile&&(d.sourceId!==T.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(d.tile.tileID))},this.style.on(\"data\",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new n.k(\"terrain\",{terrain:T})),this}getTerrain(){var T,l;return(l=(T=this.terrain)===null||T===void 0?void 0:T.options)!==null&&l!==void 0?l:null}areTilesLoaded(){let T=this.style&&this.style.sourceCaches;for(let l in T){let d=T[l]._tiles;for(let v in d){let b=d[v];if(b.state!==\"loaded\"&&b.state!==\"errored\")return!1}}return!0}addSourceType(T,l,d){return this._lazyInitEmptyStyle(),this.style.addSourceType(T,l,d)}removeSource(T){return this.style.removeSource(T),this._update(!0)}getSource(T){return this.style.getSource(T)}addImage(T,l,d={}){let{pixelRatio:v=1,sdf:b=!1,stretchX:M,stretchY:O,content:B}=d;if(this._lazyInitEmptyStyle(),!(l instanceof HTMLImageElement||n.a(l))){if(l.width===void 0||l.height===void 0)return this.fire(new n.j(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{let{width:U,height:W,data:Z}=l,Q=l;return this.style.addImage(T,{data:new n.R({width:U,height:W},new Uint8Array(Z)),pixelRatio:v,stretchX:M,stretchY:O,content:B,sdf:b,version:0,userImage:Q}),Q.onAdd&&Q.onAdd(this,T),this}}{let{width:U,height:W,data:Z}=n.h.getImageData(l);this.style.addImage(T,{data:new n.R({width:U,height:W},Z),pixelRatio:v,stretchX:M,stretchY:O,content:B,sdf:b,version:0})}}updateImage(T,l){let d=this.style.getImage(T);if(!d)return this.fire(new n.j(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));let v=l instanceof HTMLImageElement||n.a(l)?n.h.getImageData(l):l,{width:b,height:M,data:O}=v;if(b===void 0||M===void 0)return this.fire(new n.j(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(b!==d.data.width||M!==d.data.height)return this.fire(new n.j(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));let B=!(l instanceof HTMLImageElement||n.a(l));return d.data.replace(O,B),this.style.updateImage(T,d),this}getImage(T){return this.style.getImage(T)}hasImage(T){return T?!!this.style.getImage(T):(this.fire(new n.j(new Error(\"Missing required image id\"))),!1)}removeImage(T){this.style.removeImage(T)}loadImage(T,l){j.getImage(this._requestManager.transformRequest(T,Y.Image),l)}listImages(){return this.style.listImages()}addLayer(T,l){return this._lazyInitEmptyStyle(),this.style.addLayer(T,l),this._update(!0)}moveLayer(T,l){return this.style.moveLayer(T,l),this._update(!0)}removeLayer(T){return this.style.removeLayer(T),this._update(!0)}getLayer(T){return this.style.getLayer(T)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(T,l,d){return this.style.setLayerZoomRange(T,l,d),this._update(!0)}setFilter(T,l,d={}){return this.style.setFilter(T,l,d),this._update(!0)}getFilter(T){return this.style.getFilter(T)}setPaintProperty(T,l,d,v={}){return this.style.setPaintProperty(T,l,d,v),this._update(!0)}getPaintProperty(T,l){return this.style.getPaintProperty(T,l)}setLayoutProperty(T,l,d,v={}){return this.style.setLayoutProperty(T,l,d,v),this._update(!0)}getLayoutProperty(T,l){return this.style.getLayoutProperty(T,l)}setGlyphs(T,l={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(T,l),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(T,l,d={}){return this._lazyInitEmptyStyle(),this.style.addSprite(T,l,d,v=>{v||this._update(!0)}),this}removeSprite(T){return this._lazyInitEmptyStyle(),this.style.removeSprite(T),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(T,l={}){return this._lazyInitEmptyStyle(),this.style.setSprite(T,l,d=>{d||this._update(!0)}),this}setLight(T,l={}){return this._lazyInitEmptyStyle(),this.style.setLight(T,l),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(T,l){return this.style.setFeatureState(T,l),this._update()}removeFeatureState(T,l){return this.style.removeFeatureState(T,l),this._update()}getFeatureState(T){return this.style.getFeatureState(T)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let T=0,l=0;return this._container&&(T=this._container.clientWidth||400,l=this._container.clientHeight||300),[T,l]}_setupContainer(){let T=this._container;T.classList.add(\"maplibregl-map\");let l=this._canvasContainer=c.create(\"div\",\"maplibregl-canvas-container\",T);this._interactive&&l.classList.add(\"maplibregl-interactive\"),this._canvas=c.create(\"canvas\",\"maplibregl-canvas\",l),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\");let d=this._containerDimensions(),v=this._getClampedPixelRatio(d[0],d[1]);this._resizeCanvas(d[0],d[1],v);let b=this._controlContainer=c.create(\"div\",\"maplibregl-control-container\",T),M=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(O=>{M[O]=c.create(\"div\",`maplibregl-ctrl-${O} `,b)}),this._container.addEventListener(\"scroll\",this._onMapScroll,!1)}_setupCooperativeGestures(){this._cooperativeGesturesScreen=c.create(\"div\",\"maplibregl-cooperative-gesture-screen\",this._container);let T=typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:\"Use Ctrl + scroll to zoom the map\";navigator.platform.indexOf(\"Mac\")===0&&(T=typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:\"Use \\u2318 + scroll to zoom the map\"),this._cooperativeGesturesScreen.innerHTML=`\n
${T}
\n
${typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:\"Use two fingers to move the map\"}
\n `,this._cooperativeGesturesScreen.setAttribute(\"aria-hidden\",\"true\"),this._canvasContainer.addEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add(\"maplibregl-cooperative-gestures\")}_destroyCooperativeGestures(){c.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove(\"maplibregl-cooperative-gestures\")}_resizeCanvas(T,l,d){this._canvas.width=Math.floor(d*T),this._canvas.height=Math.floor(d*l),this._canvas.style.width=`${T}px`,this._canvas.style.height=`${l}px`}_setupPainter(){let T={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},l=null;this._canvas.addEventListener(\"webglcontextcreationerror\",v=>{l={requestedAttributes:T},v&&(l.statusMessage=v.statusMessage,l.type=v.type)},{once:!0});let d=this._canvas.getContext(\"webgl2\",T)||this._canvas.getContext(\"webgl\",T);if(!d){let v=\"Failed to initialize WebGL\";throw l?(l.message=v,new Error(JSON.stringify(l))):new Error(v)}this.painter=new oh(d,this.transform),f.testSupport(d)}_onCooperativeGesture(T,l,d){return!l&&d<2&&(this._cooperativeGesturesScreen.classList.add(\"maplibregl-show\"),setTimeout(()=>{this._cooperativeGesturesScreen.classList.remove(\"maplibregl-show\")},100)),!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(T){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||T,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(T){return this._update(),this._renderTaskQueue.add(T)}_cancelRenderFrame(T){this._renderTaskQueue.remove(T)}_render(T){let l=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(T),this._removed)return;let d=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let b=this.transform.zoom,M=n.h.now();this.style.zoomHistory.update(b,M);let O=new n.a8(b,{now:M,fadeDuration:l,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),B=O.crossFadingFactor();B===1&&B===this._crossFadingFactor||(d=!0,this._crossFadingFactor=B),this.style.update(O)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,l,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:l,showPadding:this.showPadding}),this.fire(new n.k(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,n.bg.mark(n.bh.load),this.fire(new n.k(\"load\"))),this.style&&(this.style.hasTransitions()||d)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let v=this._sourcesDirty||this._styleDirty||this._placementDirty;return v||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new n.k(\"idle\")),!this._loaded||this._fullyLoaded||v||(this._fullyLoaded=!0,n.bg.mark(n.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var T;this._hash&&this._hash.remove();for(let d of this._controls)d.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<\"u\"&&removeEventListener(\"online\",this._onWindowOnline,!1),j.removeThrottleControl(this._imageQueueHandle),(T=this._resizeObserver)===null||T===void 0||T.disconnect();let l=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");l&&l.loseContext(),this._canvas.removeEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.removeEventListener(\"webglcontextlost\",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove(\"maplibregl-map\"),n.bg.clearMetrics(),this._removed=!0,this.fire(new n.k(\"remove\"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=n.h.frame(T=>{n.bg.frame(T),this._frame=null,this._render(T)}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(T){this._showTileBoundaries!==T&&(this._showTileBoundaries=T,this._update())}get showPadding(){return!!this._showPadding}set showPadding(T){this._showPadding!==T&&(this._showPadding=T,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(T){this._showCollisionBoxes!==T&&(this._showCollisionBoxes=T,T?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(T){this._showOverdrawInspector!==T&&(this._showOverdrawInspector=T,this._update())}get repaint(){return!!this._repaint}set repaint(T){this._repaint!==T&&(this._repaint=T,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(T){this._vertices=T,this._update()}get version(){return rr}getCameraTargetElevation(){return this.transform.elevation}},xi.NavigationControl=class{constructor(T){this._updateZoomButtons=()=>{let l=this._map.getZoom(),d=l===this._map.getMaxZoom(),v=l===this._map.getMinZoom();this._zoomInButton.disabled=d,this._zoomOutButton.disabled=v,this._zoomInButton.setAttribute(\"aria-disabled\",d.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",v.toString())},this._rotateCompassArrow=()=>{let l=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=l},this._setButtonTitle=(l,d)=>{let v=this._map._getUIString(`NavigationControl.${d}`);l.title=v,l.setAttribute(\"aria-label\",v)},this.options=n.e({},nA,T),this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",l=>l.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton(\"maplibregl-ctrl-zoom-in\",l=>this._map.zoomIn({},{originalEvent:l})),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"maplibregl-ctrl-zoom-out\",l=>this._map.zoomOut({},{originalEvent:l})),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(this._compass=this._createButton(\"maplibregl-ctrl-compass\",l=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:l}):this._map.resetNorth({},{originalEvent:l})}),this._compassIcon=c.create(\"span\",\"maplibregl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"))}onAdd(T){return this._map=T,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Dd(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(T,l){let d=c.create(\"button\",T,this._container);return d.type=\"button\",d.addEventListener(\"click\",l),d}},xi.GeolocateControl=class extends n.E{constructor(T){super(),this._onSuccess=l=>{if(this._map){if(this._isOutOfMapMaxBounds(l))return this._setErrorState(),this.fire(new n.k(\"outofmaxbounds\",l)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=l,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!==\"OFF\"&&this._updateMarker(l),this.options.trackUserLocation&&this._watchState!==\"ACTIVE_LOCK\"||this._updateCamera(l),this.options.showUserLocation&&this._dotElement.classList.remove(\"maplibregl-user-location-dot-stale\"),this.fire(new n.k(\"geolocate\",l)),this._finish()}},this._updateCamera=l=>{let d=new n.L(l.coords.longitude,l.coords.latitude),v=l.coords.accuracy,b=this._map.getBearing(),M=n.e({bearing:b},this.options.fitBoundsOptions),O=wi.fromLngLat(d,v);this._map.fitBounds(O,M,{geolocateSource:!0})},this._updateMarker=l=>{if(l){let d=new n.L(l.coords.longitude,l.coords.latitude);this._accuracyCircleMarker.setLngLat(d).addTo(this._map),this._userLocationDotMarker.setLngLat(d).addTo(this._map),this._accuracy=l.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=l=>{if(this._map){if(this.options.trackUserLocation)if(l.code===1){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;let d=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(l.code===3&&bf)return;this._setErrorState()}this._watchState!==\"OFF\"&&this.options.showUserLocation&&this._dotElement.classList.add(\"maplibregl-user-location-dot-stale\"),this.fire(new n.k(\"error\",l)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=l=>{if(this._map){if(this._container.addEventListener(\"contextmenu\",d=>d.preventDefault()),this._geolocateButton=c.create(\"button\",\"maplibregl-ctrl-geolocate\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",l===!1){n.w(\"Geolocation support is not available so the GeolocateControl will be disabled.\");let d=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d)}else{let d=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=c.create(\"div\",\"maplibregl-user-location-dot\"),this._userLocationDotMarker=new Ah({element:this._dotElement}),this._circleElement=c.create(\"div\",\"maplibregl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Ah({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",d=>{d.geolocateSource||this._watchState!==\"ACTIVE_LOCK\"||d.originalEvent&&d.originalEvent.type===\"resize\"||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this.fire(new n.k(\"trackuserlocationend\")))})}},this.options=n.e({},Cn,T)}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),function(l,d=!1){Gn===void 0||d?window.navigator.permissions!==void 0?window.navigator.permissions.query({name:\"geolocation\"}).then(v=>{Gn=v.state!==\"denied\",l(Gn)}).catch(()=>{Gn=!!window.navigator.geolocation,l(Gn)}):(Gn=!!window.navigator.geolocation,l(Gn)):l(Gn)}(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off(\"zoom\",this._onZoom),this._map=void 0,yn=0,bf=!1}_isOutOfMapMaxBounds(T){let l=this._map.getMaxBounds(),d=T.coords;return l&&(d.longitudel.getEast()||d.latitudel.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"ACTIVE_ERROR\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let T=this._map.getBounds(),l=T.getSouthEast(),d=T.getNorthEast(),v=l.distanceTo(d),b=Math.ceil(this._accuracy/(v/this._map._container.clientHeight)*2);this._circleElement.style.width=`${b}px`,this._circleElement.style.height=`${b}px`}trigger(){if(!this._setup)return n.w(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new n.k(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":yn--,bf=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this.fire(new n.k(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new n.k(\"trackuserlocationstart\"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"OFF\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState===\"OFF\"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let T;this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),yn++,yn>1?(T={maximumAge:6e5,timeout:0},bf=!0):(T=this.options.positionOptions,bf=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,T)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)}},xi.AttributionControl=ua,xi.LogoControl=ln,xi.ScaleControl=class{constructor(T){this._onMove=()=>{mh(this._map,this._container,this.options)},this.setUnit=l=>{this.options.unit=l,mh(this._map,this._container,this.options)},this.options=n.e({},Ms,T)}getDefaultPosition(){return\"bottom-left\"}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-scale\",T.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0}},xi.FullscreenControl=class extends n.E{constructor(T={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,T&&T.container&&(T.container instanceof HTMLElement?this._container=T.container:n.w(\"Full screen control 'container' must be a DOM element.\")),\"onfullscreenchange\"in document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in document&&(this._fullscreenchange=\"MSFullscreenChange\")}onAdd(T){return this._map=T,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let T=this._fullscreenButton=c.create(\"button\",\"maplibregl-ctrl-fullscreen\",this._controlContainer);c.create(\"span\",\"maplibregl-ctrl-icon\",T).setAttribute(\"aria-hidden\",\"true\"),T.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let T=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",T),this._fullscreenButton.title=T}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-fullscreen\"),this._updateTitle(),this._fullscreen?(this.fire(new n.k(\"fullscreenstart\")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new n.k(\"fullscreenend\")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures))}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle(\"maplibregl-pseudo-fullscreen\"),this._handleFullscreenChange(),this._map.resize()}},xi.TerrainControl=class{constructor(T){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain\"),this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain-enabled\"),this._map.terrain?(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain-enabled\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.disableTerrain\")):(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.enableTerrain\"))},this.options=T}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._terrainButton=c.create(\"button\",\"maplibregl-ctrl-terrain\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._terrainButton).setAttribute(\"aria-hidden\",\"true\"),this._terrainButton.type=\"button\",this._terrainButton.addEventListener(\"click\",this._toggleTerrain),this._updateTerrainIcon(),this._map.on(\"terrain\",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off(\"terrain\",this._updateTerrainIcon),this._map=void 0}},xi.Popup=class extends n.E{constructor(T){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new n.k(\"close\")),this),this._onMouseUp=l=>{this._update(l.point)},this._onMouseMove=l=>{this._update(l.point)},this._onDrag=l=>{this._update(l.point)},this._update=l=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create(\"div\",\"maplibregl-popup\",this._map.getContainer()),this._tip=c.create(\"div\",\"maplibregl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className)for(let O of this.options.className.split(\" \"))this._container.classList.add(O);this._trackPointer&&this._container.classList.add(\"maplibregl-popup-track-pointer\")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=io(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!l)return;let d=this._pos=this._trackPointer&&l?l:this._map.project(this._lngLat),v=this.options.anchor,b=wf(this.options.offset);if(!v){let O=this._container.offsetWidth,B=this._container.offsetHeight,U;U=d.y+b.bottom.ythis._map.transform.height-B?[\"bottom\"]:[],d.xthis._map.transform.width-O/2&&U.push(\"right\"),v=U.length===0?\"bottom\":U.join(\"-\")}let M=d.add(b[v]).round();c.setTransform(this._container,`${Ui[v]} translate(${M.x}px,${M.y}px)`),f_(this._container,v,\"popup\")},this._onClose=()=>{this.remove()},this.options=n.e(Object.create(c0),T)}addTo(T){return this._map&&this.remove(),this._map=T,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new n.k(\"open\")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(T){return this._lngLat=n.L.convert(T),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")),this}getElement(){return this._container}setText(T){return this.setDOMContent(document.createTextNode(T))}setHTML(T){let l=document.createDocumentFragment(),d=document.createElement(\"body\"),v;for(d.innerHTML=T;v=d.firstChild,v;)l.appendChild(v);return this.setDOMContent(l)}getMaxWidth(){var T;return(T=this._container)===null||T===void 0?void 0:T.style.maxWidth}setMaxWidth(T){return this.options.maxWidth=T,this._update(),this}setDOMContent(T){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create(\"div\",\"maplibregl-popup-content\",this._container);return this._content.appendChild(T),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(T){this._container&&this._container.classList.add(T)}removeClassName(T){this._container&&this._container.classList.remove(T)}setOffset(T){return this.options.offset=T,this._update(),this}toggleClassName(T){if(this._container)return this._container.classList.toggle(T)}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create(\"button\",\"maplibregl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let T=this._container.querySelector(Od);T&&T.focus()}},xi.Marker=Ah,xi.Style=Vn,xi.LngLat=n.L,xi.LngLatBounds=wi,xi.Point=n.P,xi.MercatorCoordinate=n.U,xi.Evented=n.E,xi.AJAXError=n.bi,xi.config=n.c,xi.CanvasSource=No,xi.GeoJSONSource=Zi,xi.ImageSource=Ii,xi.RasterDEMTileSource=Cc,xi.RasterTileSource=Ic,xi.VectorTileSource=sl,xi.VideoSource=Xn,xi.setRTLTextPlugin=n.bj,xi.getRTLTextPluginStatus=n.bk,xi.prewarm=function(){po().acquire(oi)},xi.clearPrewarmedResources=function(){let T=al;T&&(T.isPreloaded()&&T.numActive()===1?(T.release(oi),al=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},Go.extend(xi,{isSafari:n.ac,getPerformanceMetrics:n.bg.getPerformanceMetrics}),xi});var s=r;return s})});var eG=Br((d6t,GE)=>{(function(e,t,r,i){\"use strict\";var s=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],n=t.createElement(\"div\"),o=\"function\",c=Math.round,f=Math.abs,_=Date.now;function w(lt,ft,Lt){return setTimeout(K(lt,Lt),ft)}function C(lt,ft,Lt){return Array.isArray(lt)?(R(lt,Lt[ft],Lt),!0):!1}function R(lt,ft,Lt){var $t;if(lt)if(lt.forEach)lt.forEach(ft,Lt);else if(lt.length!==i)for($t=0;$t\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",ti=e.console&&(e.console.warn||e.console.log);return ti&&ti.call(e.console,$t,qe),lt.apply(this,arguments)}}var j;typeof Object.assign!=\"function\"?j=function(ft){if(ft===i||ft===null)throw new TypeError(\"Cannot convert undefined or null to object\");for(var Lt=Object(ft),$t=1;$t-1}function le(lt){return lt.trim().split(/\\s+/g)}function ue(lt,ft,Lt){if(lt.indexOf&&!Lt)return lt.indexOf(ft);for(var $t=0;$tBs[ft]}):$t=$t.sort()),$t}function er(lt,ft){for(var Lt,$t,ge=ft[0].toUpperCase()+ft.slice(1),qe=0;qe1&&!Lt.firstMultiple?Lt.firstMultiple=po(ft):ge===1&&(Lt.firstMultiple=!1);var qe=Lt.firstInput,ti=Lt.firstMultiple,ts=ti?ti.center:qe.center,Ss=ft.center=ll($t);ft.timeStamp=_(),ft.deltaTime=ft.timeStamp-qe.timeStamp,ft.angle=Uo(ts,Ss),ft.distance=ve(ts,Ss),uu(Lt,ft),ft.offsetDirection=Ao(ft.deltaX,ft.deltaY);var Bs=Pa(ft.deltaTime,ft.deltaX,ft.deltaY);ft.overallVelocityX=Bs.x,ft.overallVelocityY=Bs.y,ft.overallVelocity=f(Bs.x)>f(Bs.y)?Bs.x:Bs.y,ft.scale=ti?Bl(ti.pointers,$t):1,ft.rotation=ti?dn(ti.pointers,$t):0,ft.maxPointers=Lt.prevInput?ft.pointers.length>Lt.prevInput.maxPointers?ft.pointers.length:Lt.prevInput.maxPointers:ft.pointers.length,al(Lt,ft);var ka=lt.element;Kt(ft.srcEvent.target,ka)&&(ka=ft.srcEvent.target),ft.target=ka}function uu(lt,ft){var Lt=ft.center,$t=lt.offsetDelta||{},ge=lt.prevDelta||{},qe=lt.prevInput||{};(ft.eventType===Zi||qe.eventType===Ii)&&(ge=lt.prevDelta={x:qe.deltaX||0,y:qe.deltaY||0},$t=lt.offsetDelta={x:Lt.x,y:Lt.y}),ft.deltaX=ge.x+(Lt.x-$t.x),ft.deltaY=ge.y+(Lt.y-$t.y)}function al(lt,ft){var Lt=lt.lastInterval||ft,$t=ft.timeStamp-Lt.timeStamp,ge,qe,ti,ts;if(ft.eventType!=Xn&&($t>Cc||Lt.velocity===i)){var Ss=ft.deltaX-Lt.deltaX,Bs=ft.deltaY-Lt.deltaY,ka=Pa($t,Ss,Bs);qe=ka.x,ti=ka.y,ge=f(ka.x)>f(ka.y)?ka.x:ka.y,ts=Ao(Ss,Bs),lt.lastInterval=ft}else ge=Lt.velocity,qe=Lt.velocityX,ti=Lt.velocityY,ts=Lt.direction;ft.velocity=ge,ft.velocityX=qe,ft.velocityY=ti,ft.direction=ts}function po(lt){for(var ft=[],Lt=0;Lt=f(ft)?lt<0?ol:fo:ft<0?Ea:na}function ve(lt,ft,Lt){Lt||(Lt=te);var $t=ft[Lt[0]]-lt[Lt[0]],ge=ft[Lt[1]]-lt[Lt[1]];return Math.sqrt($t*$t+ge*ge)}function Uo(lt,ft,Lt){Lt||(Lt=te);var $t=ft[Lt[0]]-lt[Lt[0]],ge=ft[Lt[1]]-lt[Lt[1]];return Math.atan2(ge,$t)*180/Math.PI}function dn(lt,ft){return Uo(ft[1],ft[0],os)+Uo(lt[1],lt[0],os)}function Bl(lt,ft){return ve(ft[0],ft[1],os)/ve(lt[0],lt[1],os)}var Ia={mousedown:Zi,mousemove:$n,mouseup:Ii},Se=\"mousedown\",Dr=\"mousemove mouseup\";function mr(){this.evEl=Se,this.evWin=Dr,this.pressed=!1,fn.apply(this,arguments)}$(mr,fn,{handler:function(ft){var Lt=Ia[ft.type];Lt&Zi&&ft.button===0&&(this.pressed=!0),Lt&$n&&ft.which!==1&&(Lt=Ii),this.pressed&&(Lt&Ii&&(this.pressed=!1),this.callback(this.manager,Lt,{pointers:[ft],changedPointers:[ft],pointerType:sl,srcEvent:ft}))}});var Os={pointerdown:Zi,pointermove:$n,pointerup:Ii,pointercancel:Xn,pointerout:Xn},Ca={2:wi,3:Ds,4:sl,5:Ic},Tr=\"pointerdown\",sa=\"pointermove pointerup pointercancel\";e.MSPointerEvent&&!e.PointerEvent&&(Tr=\"MSPointerDown\",sa=\"MSPointerMove MSPointerUp MSPointerCancel\");function gt(){this.evEl=Tr,this.evWin=sa,fn.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}$(gt,fn,{handler:function(ft){var Lt=this.store,$t=!1,ge=ft.type.toLowerCase().replace(\"ms\",\"\"),qe=Os[ge],ti=Ca[ft.pointerType]||ft.pointerType,ts=ti==wi,Ss=ue(Lt,ft.pointerId,\"pointerId\");qe&Zi&&(ft.button===0||ts)?Ss<0&&(Lt.push(ft),Ss=Lt.length-1):qe&(Ii|Xn)&&($t=!0),!(Ss<0)&&(Lt[Ss]=ft,this.callback(this.manager,qe,{pointers:Lt,changedPointers:[ft],pointerType:ti,srcEvent:ft}),$t&&Lt.splice(Ss,1))}});var J={touchstart:Zi,touchmove:$n,touchend:Ii,touchcancel:Xn},nt=\"touchstart\",ht=\"touchstart touchmove touchend touchcancel\";function vt(){this.evTarget=nt,this.evWin=ht,this.started=!1,fn.apply(this,arguments)}$(vt,fn,{handler:function(ft){var Lt=J[ft.type];if(Lt===Zi&&(this.started=!0),!!this.started){var $t=xt.call(this,ft,Lt);Lt&(Ii|Xn)&&$t[0].length-$t[1].length===0&&(this.started=!1),this.callback(this.manager,Lt,{pointers:$t[0],changedPointers:$t[1],pointerType:wi,srcEvent:ft})}}});function xt(lt,ft){var Lt=Ge(lt.touches),$t=Ge(lt.changedTouches);return ft&(Ii|Xn)&&(Lt=tr(Lt.concat($t),\"identifier\",!0)),[Lt,$t]}var _t={touchstart:Zi,touchmove:$n,touchend:Ii,touchcancel:Xn},Dt=\"touchstart touchmove touchend touchcancel\";function Mt(){this.evTarget=Dt,this.targetIds={},fn.apply(this,arguments)}$(Mt,fn,{handler:function(ft){var Lt=_t[ft.type],$t=Ut.call(this,ft,Lt);$t&&this.callback(this.manager,Lt,{pointers:$t[0],changedPointers:$t[1],pointerType:wi,srcEvent:ft})}});function Ut(lt,ft){var Lt=Ge(lt.touches),$t=this.targetIds;if(ft&(Zi|$n)&&Lt.length===1)return $t[Lt[0].identifier]=!0,[Lt,Lt];var ge,qe,ti=Ge(lt.changedTouches),ts=[],Ss=this.target;if(qe=Lt.filter(function(Bs){return Kt(Bs.target,Ss)}),ft===Zi)for(ge=0;ge-1&&$t.splice(qe,1)};setTimeout(ge,re)}}function Ye(lt){for(var ft=lt.srcEvent.clientX,Lt=lt.srcEvent.clientY,$t=0;$t-1&&this.requireFail.splice(ft,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(lt){return!!this.simultaneous[lt.id]},emit:function(lt){var ft=this,Lt=this.state;function $t(ge){ft.manager.emit(ge,lt)}Lt=ai&&$t(ft.options.event+Bm(Lt))},tryEmit:function(lt){if(this.canEmit())return this.emit(lt);this.state=on},canEmit:function(){for(var lt=0;ltft.threshold&&ge&ft.direction},attrTest:function(lt){return mo.prototype.attrTest.call(this,lt)&&(this.state&ws||!(this.state&ws)&&this.directionTest(lt))},emit:function(lt){this.pX=lt.deltaX,this.pY=lt.deltaY;var ft=Vo(lt.direction);ft&&(lt.additionalEvent=this.options.event+ft),this._super.emit.call(this,lt)}});function Yi(){mo.apply(this,arguments)}$(Yi,mo,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[Hr]},attrTest:function(lt){return this._super.attrTest.call(this,lt)&&(Math.abs(lt.scale-1)>this.options.threshold||this.state&ws)},emit:function(lt){if(lt.scale!==1){var ft=lt.scale<1?\"in\":\"out\";lt.additionalEvent=this.options.event+ft}this._super.emit.call(this,lt)}});function _i(){kn.apply(this,arguments),this._timer=null,this._input=null}$(_i,kn,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Bi]},process:function(lt){var ft=this.options,Lt=lt.pointers.length===ft.pointers,$t=lt.distanceft.time;if(this._input=lt,!$t||!Lt||lt.eventType&(Ii|Xn)&&!ge)this.reset();else if(lt.eventType&Zi)this.reset(),this._timer=w(function(){this.state=La,this.tryEmit()},ft.time,this);else if(lt.eventType&Ii)return La;return on},reset:function(){clearTimeout(this._timer)},emit:function(lt){this.state===La&&(lt&<.eventType&Ii?this.manager.emit(this.options.event+\"up\",lt):(this._input.timeStamp=_(),this.manager.emit(this.options.event,this._input)))}});function Nl(){mo.apply(this,arguments)}$(Nl,mo,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[Hr]},attrTest:function(lt){return this._super.attrTest.call(this,lt)&&(Math.abs(lt.rotation)>this.options.threshold||this.state&ws)}});function an(){mo.apply(this,arguments)}$(an,mo,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:ss|to,pointers:1},getTouchAction:function(){return zl.prototype.getTouchAction.call(this)},attrTest:function(lt){var ft=this.options.direction,Lt;return ft&(ss|to)?Lt=lt.overallVelocity:ft&ss?Lt=lt.overallVelocityX:ft&to&&(Lt=lt.overallVelocityY),this._super.attrTest.call(this,lt)&&ft<.offsetDirection&<.distance>this.options.threshold&<.maxPointers==this.options.pointers&&f(Lt)>this.options.velocity&<.eventType&Ii},emit:function(lt){var ft=Vo(lt.offsetDirection);ft&&this.manager.emit(this.options.event+ft,lt),this.manager.emit(this.options.event,lt)}});function hu(){kn.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}$(hu,kn,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ni]},process:function(lt){var ft=this.options,Lt=lt.pointers.length===ft.pointers,$t=lt.distance{\"use strict\";QO.exports=b3;QO.exports.default=b3;function b3(e,t,r){r=r||2;var i=t&&t.length,s=i?t[0]*r:e.length,n=GH(e,0,s,r,!0),o=[];if(!n||n.next===n.prev)return o;var c,f,_,w,C,R,N;if(i&&(n=Sdt(e,t,n,r)),e.length>80*r){c=_=e[0],f=w=e[1];for(var j=r;j_&&(_=C),R>w&&(w=R);N=Math.max(_-c,w-f),N=N!==0?32767/N:0}return z2(n,o,r,c,f,N,0),o}function GH(e,t,r,i,s){var n,o;if(s===YO(e,t,r,i)>0)for(n=t;n=t;n-=i)o=jH(n,e[n],e[n+1],o);return o&&w3(o,o.next)&&(U2(o),o=o.next),o}function Rg(e,t){if(!e)return e;t||(t=e);var r=e,i;do if(i=!1,!r.steiner&&(w3(r,r.next)||_s(r.prev,r,r.next)===0)){if(U2(r),r=t=r.prev,r===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function z2(e,t,r,i,s,n,o){if(e){!o&&n&&Idt(e,i,s,n);for(var c=e,f,_;e.prev!==e.next;){if(f=e.prev,_=e.next,n?xdt(e,i,s,n):vdt(e)){t.push(f.i/r|0),t.push(e.i/r|0),t.push(_.i/r|0),U2(e),e=_.next,c=_.next;continue}if(e=_,e===c){o?o===1?(e=bdt(Rg(e),t,r),z2(e,t,r,i,s,n,2)):o===2&&wdt(e,t,r,i,s,n):z2(Rg(e),t,r,i,s,n,1);break}}}}function vdt(e){var t=e.prev,r=e,i=e.next;if(_s(t,r,i)>=0)return!1;for(var s=t.x,n=r.x,o=i.x,c=t.y,f=r.y,_=i.y,w=sn?s>o?s:o:n>o?n:o,N=c>f?c>_?c:_:f>_?f:_,j=i.next;j!==t;){if(j.x>=w&&j.x<=R&&j.y>=C&&j.y<=N&&jv(s,c,n,f,o,_,j.x,j.y)&&_s(j.prev,j,j.next)>=0)return!1;j=j.next}return!0}function xdt(e,t,r,i){var s=e.prev,n=e,o=e.next;if(_s(s,n,o)>=0)return!1;for(var c=s.x,f=n.x,_=o.x,w=s.y,C=n.y,R=o.y,N=cf?c>_?c:_:f>_?f:_,rt=w>C?w>R?w:R:C>R?C:R,$=qO(N,j,t,r,i),K=qO(Y,rt,t,r,i),tt=e.prevZ,ut=e.nextZ;tt&&tt.z>=$&&ut&&ut.z<=K;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&jv(c,w,f,C,_,R,tt.x,tt.y)&&_s(tt.prev,tt,tt.next)>=0||(tt=tt.prevZ,ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&jv(c,w,f,C,_,R,ut.x,ut.y)&&_s(ut.prev,ut,ut.next)>=0))return!1;ut=ut.nextZ}for(;tt&&tt.z>=$;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&jv(c,w,f,C,_,R,tt.x,tt.y)&&_s(tt.prev,tt,tt.next)>=0)return!1;tt=tt.prevZ}for(;ut&&ut.z<=K;){if(ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&jv(c,w,f,C,_,R,ut.x,ut.y)&&_s(ut.prev,ut,ut.next)>=0)return!1;ut=ut.nextZ}return!0}function bdt(e,t,r){var i=e;do{var s=i.prev,n=i.next.next;!w3(s,n)&&WH(s,i,i.next,n)&&N2(s,n)&&N2(n,s)&&(t.push(s.i/r|0),t.push(i.i/r|0),t.push(n.i/r|0),U2(i),U2(i.next),i=e=n),i=i.next}while(i!==e);return Rg(i)}function wdt(e,t,r,i,s,n){var o=e;do{for(var c=o.next.next;c!==o.prev;){if(o.i!==c.i&&kdt(o,c)){var f=HH(o,c);o=Rg(o,o.next),f=Rg(f,f.next),z2(o,t,r,i,s,n,0),z2(f,t,r,i,s,n,0);return}c=c.next}o=o.next}while(o!==e)}function Sdt(e,t,r,i){var s=[],n,o,c,f,_;for(n=0,o=t.length;n=r.next.y&&r.next.y!==r.y){var c=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(c<=i&&c>n&&(n=c,o=r.x=r.x&&r.x>=_&&i!==r.x&&jv(so.x||r.x===o.x&&Pdt(o,r)))&&(o=r,C=R)),r=r.next;while(r!==f);return o}function Pdt(e,t){return _s(e.prev,e,t.prev)<0&&_s(t.next,e,e.next)<0}function Idt(e,t,r,i){var s=e;do s.z===0&&(s.z=qO(s.x,s.y,t,r,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,Cdt(s)}function Cdt(e){var t,r,i,s,n,o,c,f,_=1;do{for(r=e,e=null,n=null,o=0;r;){for(o++,i=r,c=0,t=0;t<_&&(c++,i=i.nextZ,!!i);t++);for(f=_;c>0||f>0&&i;)c!==0&&(f===0||!i||r.z<=i.z)?(s=r,r=r.nextZ,c--):(s=i,i=i.nextZ,f--),n?n.nextZ=s:e=s,s.prevZ=n,n=s;r=i}n.nextZ=null,_*=2}while(o>1);return e}function qO(e,t,r,i,s){return e=(e-r)*s|0,t=(t-i)*s|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function Ldt(e){var t=e,r=e;do(t.x=(e-o)*(n-c)&&(e-o)*(i-c)>=(r-o)*(t-c)&&(r-o)*(n-c)>=(s-o)*(i-c)}function kdt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!Rdt(e,t)&&(N2(e,t)&&N2(t,e)&&Ddt(e,t)&&(_s(e.prev,e,t.prev)||_s(e,t.prev,t))||w3(e,t)&&_s(e.prev,e,e.next)>0&&_s(t.prev,t,t.next)>0)}function _s(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function w3(e,t){return e.x===t.x&&e.y===t.y}function WH(e,t,r,i){var s=x3(_s(e,t,r)),n=x3(_s(e,t,i)),o=x3(_s(r,i,e)),c=x3(_s(r,i,t));return!!(s!==n&&o!==c||s===0&&v3(e,r,t)||n===0&&v3(e,i,t)||o===0&&v3(r,e,i)||c===0&&v3(r,t,i))}function v3(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function x3(e){return e>0?1:e<0?-1:0}function Rdt(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&WH(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function N2(e,t){return _s(e.prev,e,e.next)<0?_s(e,t,e.next)>=0&&_s(e,e.prev,t)>=0:_s(e,t,e.prev)<0||_s(e,e.next,t)<0}function Ddt(e,t){var r=e,i=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do r.y>n!=r.next.y>n&&r.next.y!==r.y&&s<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next;while(r!==e);return i}function HH(e,t){var r=new ZO(e.i,e.x,e.y),i=new ZO(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,r.next=s,s.prev=r,i.next=r,r.prev=i,n.next=i,i.prev=n,i}function jH(e,t,r,i){var s=new ZO(e,t,r);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function U2(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function ZO(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}b3.deviation=function(e,t,r,i){var s=t&&t.length,n=s?t[0]*r:e.length,o=Math.abs(YO(e,0,n,r));if(s)for(var c=0,f=t.length;c0&&(i+=e[s-1].length,r.holes.push(i))}return r}});var jB=Br(Ax=>{\"use strict\";Object.defineProperty(Ax,\"__esModule\",{value:!0});Ax.DefaultSerializer=Ax.extendSerializer=void 0;function W_t(e,t){let r=e.deserialize.bind(e),i=e.serialize.bind(e);return{deserialize(s){return t.deserialize(s,r)},serialize(s){return t.serialize(s,i)}}}Ax.extendSerializer=W_t;var DQ={deserialize(e){return Object.assign(Error(e.message),{name:e.name,stack:e.stack})},serialize(e){return{__error_marker:\"$$error\",message:e.message,name:e.name,stack:e.stack}}},H_t=e=>e&&typeof e==\"object\"&&\"__error_marker\"in e&&e.__error_marker===\"$$error\";Ax.DefaultSerializer={deserialize(e){return H_t(e)?DQ.deserialize(e):e},serialize(e){return e instanceof Error?DQ.serialize(e):e}}});var mx=Br(Em=>{\"use strict\";Object.defineProperty(Em,\"__esModule\",{value:!0});Em.serialize=Em.deserialize=Em.registerSerializer=void 0;var OQ=jB(),vI=OQ.DefaultSerializer;function q_t(e){vI=OQ.extendSerializer(vI,e)}Em.registerSerializer=q_t;function Z_t(e){return vI.deserialize(e)}Em.deserialize=Z_t;function Y_t(e){return vI.serialize(e)}Em.serialize=Y_t});var FQ=Br(gx=>{\"use strict\";Object.defineProperty(gx,\"__esModule\",{value:!0});gx.getBundleURL=gx.getBaseURL=void 0;var GB;function Q_t(){return GB||(GB=$_t()),GB}gx.getBundleURL=Q_t;function $_t(){try{throw new Error}catch(e){let t=(\"\"+e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\\/\\/[^)\\n]+/g);if(t)return BQ(t[0])}return\"/\"}function BQ(e){return(\"\"+e).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\\/\\/.+)?\\/[^/]+(?:\\?.*)?$/,\"$1\")+\"/\"}gx.getBaseURL=BQ});var HB=Br(Pm=>{\"use strict\";Object.defineProperty(Pm,\"__esModule\",{value:!0});Pm.isWorkerRuntime=Pm.getWorkerImplementation=Pm.defaultPoolSize=void 0;var zQ=FQ();Pm.defaultPoolSize=typeof navigator<\"u\"&&navigator.hardwareConcurrency?navigator.hardwareConcurrency:4;var NQ=e=>/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(e);function UQ(e){let t=new Blob([e],{type:\"application/javascript\"});return URL.createObjectURL(t)}function X_t(){if(typeof Worker>\"u\")return class{constructor(){throw Error(\"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.\")}};class e extends Worker{constructor(i,s){var n,o;typeof i==\"string\"&&s&&s._baseURL?i=new URL(i,s._baseURL):typeof i==\"string\"&&!NQ(i)&&zQ.getBundleURL().match(/^file:\\/\\//i)&&(i=new URL(i,zQ.getBundleURL().replace(/\\/[^\\/]+$/,\"/\")),(!((n=s?.CORSWorkaround)!==null&&n!==void 0)||n)&&(i=UQ(`importScripts(${JSON.stringify(i)});`))),typeof i==\"string\"&&NQ(i)&&(!((o=s?.CORSWorkaround)!==null&&o!==void 0)||o)&&(i=UQ(`importScripts(${JSON.stringify(i)});`)),super(i,s)}}class t extends e{constructor(i,s){let n=window.URL.createObjectURL(i);super(n,s)}static fromText(i,s){let n=new window.Blob([i],{type:\"text/javascript\"});return new t(n,s)}}return{blob:t,default:e}}var WB;function K_t(){return WB||(WB=X_t()),WB}Pm.getWorkerImplementation=K_t;function J_t(){let e=typeof self<\"u\"&&typeof Window<\"u\"&&self instanceof Window;return!!(typeof self<\"u\"&&self.postMessage&&!e)}Pm.isWorkerRuntime=J_t});var jQ=Br((Qoe,VQ)=>{var _x=1e3,yx=_x*60,vx=yx*60,qg=vx*24,tyt=qg*7,eyt=qg*365.25;VQ.exports=function(e,t){t=t||{};var r=typeof e;if(r===\"string\"&&e.length>0)return ryt(e);if(r===\"number\"&&isFinite(e))return t.long?nyt(e):iyt(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))};function ryt(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),i=(t[2]||\"ms\").toLowerCase();switch(i){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*eyt;case\"weeks\":case\"week\":case\"w\":return r*tyt;case\"days\":case\"day\":case\"d\":return r*qg;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*vx;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*yx;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*_x;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function iyt(e){var t=Math.abs(e);return t>=qg?Math.round(e/qg)+\"d\":t>=vx?Math.round(e/vx)+\"h\":t>=yx?Math.round(e/yx)+\"m\":t>=_x?Math.round(e/_x)+\"s\":e+\"ms\"}function nyt(e){var t=Math.abs(e);return t>=qg?xI(e,t,qg,\"day\"):t>=vx?xI(e,t,vx,\"hour\"):t>=yx?xI(e,t,yx,\"minute\"):t>=_x?xI(e,t,_x,\"second\"):e+\" ms\"}function xI(e,t,r,i){var s=t>=r*1.5;return Math.round(e/r)+\" \"+i+(s?\"s\":\"\")}});var WQ=Br(($oe,GQ)=>{function syt(e){r.debug=r,r.default=r,r.coerce=f,r.disable=n,r.enable=s,r.enabled=o,r.humanize=jQ(),r.destroy=_,Object.keys(e).forEach(w=>{r[w]=e[w]}),r.names=[],r.skips=[],r.formatters={};function t(w){let C=0;for(let R=0;R{if(Ot===\"%%\")return\"%\";ut++;let Zt=r.formatters[Kt];if(typeof Zt==\"function\"){let le=rt[ut];Ot=Zt.call($,le),rt.splice(ut,1),ut--}return Ot}),r.formatArgs.call($,rt),($.log||r.log).apply($,rt)}return Y.namespace=w,Y.useColors=r.useColors(),Y.color=r.selectColor(w),Y.extend=i,Y.destroy=r.destroy,Object.defineProperty(Y,\"enabled\",{enumerable:!0,configurable:!1,get:()=>R!==null?R:(N!==r.namespaces&&(N=r.namespaces,j=r.enabled(w)),j),set:rt=>{R=rt}}),typeof r.init==\"function\"&&r.init(Y),Y}function i(w,C){let R=r(this.namespace+(typeof C>\"u\"?\":\":C)+w);return R.log=this.log,R}function s(w){r.save(w),r.namespaces=w,r.names=[],r.skips=[];let C,R=(typeof w==\"string\"?w:\"\").split(/[\\s,]+/),N=R.length;for(C=0;C\"-\"+C)].join(\",\");return r.enable(\"\"),w}function o(w){if(w[w.length-1]===\"*\")return!0;let C,R;for(C=0,R=r.skips.length;C{lu.formatArgs=ayt;lu.save=lyt;lu.load=cyt;lu.useColors=oyt;lu.storage=uyt();lu.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();lu.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function oyt(){return typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs)?!0:typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)?!1:typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function ayt(e){if(e[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+e[0]+(this.useColors?\"%c \":\" \")+\"+\"+bI.exports.humanize(this.diff),!this.useColors)return;let t=\"color: \"+this.color;e.splice(1,0,t,\"color: inherit\");let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,s=>{s!==\"%%\"&&(r++,s===\"%c\"&&(i=r))}),e.splice(i,0,t)}lu.log=console.debug||console.log||(()=>{});function lyt(e){try{e?lu.storage.setItem(\"debug\",e):lu.storage.removeItem(\"debug\")}catch{}}function cyt(){let e;try{e=lu.storage.getItem(\"debug\")}catch{}return!e&&typeof process<\"u\"&&\"env\"in process&&(e=process.env.DEBUG),e}function uyt(){try{return localStorage}catch{}}bI.exports=WQ()(lu);var{formatters:hyt}=bI.exports;hyt.j=function(e){try{return JSON.stringify(e)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}}});var _S=Br(xx=>{\"use strict\";var fyt=xx&&xx.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(xx,\"__esModule\",{value:!0});xx.AsyncSerialScheduler=void 0;var qB=class{constructor(t){this._baseObserver=t,this._pendingPromises=new Set}complete(){Promise.all(this._pendingPromises).then(()=>this._baseObserver.complete()).catch(t=>this._baseObserver.error(t))}error(t){this._baseObserver.error(t)}schedule(t){let r=Promise.all(this._pendingPromises),i=[],s=o=>i.push(o),n=Promise.resolve().then(()=>fyt(this,void 0,void 0,function*(){yield r,yield t(s),this._pendingPromises.delete(n);for(let o of i)this._baseObserver.next(o)})).catch(o=>{this._pendingPromises.delete(n),this._baseObserver.error(o)});this._pendingPromises.add(n)}};xx.AsyncSerialScheduler=qB});var qQ=Br(HQ=>{\"use strict\";Object.defineProperty(HQ,\"__esModule\",{value:!0})});var ZB=Br(Rl=>{\"use strict\";Object.defineProperty(Rl,\"__esModule\",{value:!0});Rl.registerObservableSymbol=Rl.getSymbol=Rl.hasSymbol=Rl.hasSymbols=void 0;var dyt=()=>typeof Symbol==\"function\";Rl.hasSymbols=dyt;var pyt=e=>Rl.hasSymbols()&&!!Symbol[e];Rl.hasSymbol=pyt;var Ayt=e=>Rl.hasSymbol(e)?Symbol[e]:\"@@\"+e;Rl.getSymbol=Ayt;function myt(){Rl.hasSymbols()&&!Rl.hasSymbol(\"observable\")&&(Symbol.observable=Symbol(\"observable\"))}Rl.registerObservableSymbol=myt;Rl.hasSymbol(\"asyncIterator\")||(Symbol.asyncIterator=Symbol.asyncIterator||Symbol.for(\"Symbol.asyncIterator\"))});var Ad=Br(Fp=>{\"use strict\";Object.defineProperty(Fp,\"__esModule\",{value:!0});Fp.Observable=Fp.SubscriptionObserver=Fp.Subscription=void 0;qQ();var vS=ZB(),gyt=vS.getSymbol(\"iterator\"),QB=vS.getSymbol(\"observable\"),ZQ=vS.getSymbol(\"species\");function TI(e,t){let r=e[t];if(r!=null){if(typeof r!=\"function\")throw new TypeError(r+\" is not a function\");return r}}function yS(e){let t=e.constructor;return t!==void 0&&(t=t[ZQ],t===null&&(t=void 0)),t!==void 0?t:Zg}function _yt(e){return e instanceof Zg}function bx(e){bx.log?bx.log(e):setTimeout(()=>{throw e},0)}function SI(e){Promise.resolve().then(()=>{try{e()}catch(t){bx(t)}})}function YQ(e){let t=e._cleanup;if(t!==void 0&&(e._cleanup=void 0,!!t))try{if(typeof t==\"function\")t();else{let r=TI(t,\"unsubscribe\");r&&r.call(t)}}catch(r){bx(r)}}function $B(e){e._observer=void 0,e._queue=void 0,e._state=\"closed\"}function yyt(e){let t=e._queue;if(t){e._queue=void 0,e._state=\"ready\";for(let r of t)if(QQ(e,r.type,r.value),e._state===\"closed\")break}}function QQ(e,t,r){e._state=\"running\";let i=e._observer;try{let s=i?TI(i,t):void 0;switch(t){case\"next\":s&&s.call(i,r);break;case\"error\":if($B(e),s)s.call(i,r);else throw r;break;case\"complete\":$B(e),s&&s.call(i);break}}catch(s){bx(s)}e._state===\"closed\"?YQ(e):e._state===\"running\"&&(e._state=\"ready\")}function YB(e,t,r){if(e._state!==\"closed\"){if(e._state===\"buffering\"){e._queue=e._queue||[],e._queue.push({type:t,value:r});return}if(e._state!==\"ready\"){e._state=\"buffering\",e._queue=[{type:t,value:r}],SI(()=>yyt(e));return}QQ(e,t,r)}}var MI=class{constructor(t,r){this._cleanup=void 0,this._observer=t,this._queue=void 0,this._state=\"initializing\";let i=new EI(this);try{this._cleanup=r.call(void 0,i)}catch(s){i.error(s)}this._state===\"initializing\"&&(this._state=\"ready\")}get closed(){return this._state===\"closed\"}unsubscribe(){this._state!==\"closed\"&&($B(this),YQ(this))}};Fp.Subscription=MI;var EI=class{constructor(t){this._subscription=t}get closed(){return this._subscription._state===\"closed\"}next(t){YB(this._subscription,\"next\",t)}error(t){YB(this._subscription,\"error\",t)}complete(){YB(this._subscription,\"complete\")}};Fp.SubscriptionObserver=EI;var Zg=class e{constructor(t){if(!(this instanceof e))throw new TypeError(\"Observable cannot be called as a function\");if(typeof t!=\"function\")throw new TypeError(\"Observable initializer must be a function\");this._subscriber=t}subscribe(t,r,i){return(typeof t!=\"object\"||t===null)&&(t={next:t,error:r,complete:i}),new MI(t,this._subscriber)}pipe(t,...r){let i=this;for(let s of[t,...r])i=s(i);return i}tap(t,r,i){let s=typeof t!=\"object\"||t===null?{next:t,error:r,complete:i}:t;return new e(n=>this.subscribe({next(o){s.next&&s.next(o),n.next(o)},error(o){s.error&&s.error(o),n.error(o)},complete(){s.complete&&s.complete(),n.complete()},start(o){s.start&&s.start(o)}}))}forEach(t){return new Promise((r,i)=>{if(typeof t!=\"function\"){i(new TypeError(t+\" is not a function\"));return}function s(){n.unsubscribe(),r(void 0)}let n=this.subscribe({next(o){try{t(o,s)}catch(c){i(c),n.unsubscribe()}},error(o){i(o)},complete(){r(void 0)}})})}map(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=yS(this);return new r(i=>this.subscribe({next(s){let n=s;try{n=t(s)}catch(o){return i.error(o)}i.next(n)},error(s){i.error(s)},complete(){i.complete()}}))}filter(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=yS(this);return new r(i=>this.subscribe({next(s){try{if(!t(s))return}catch(n){return i.error(n)}i.next(s)},error(s){i.error(s)},complete(){i.complete()}}))}reduce(t,r){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let i=yS(this),s=arguments.length>1,n=!1,o=r;return new i(c=>this.subscribe({next(f){let _=!n;if(n=!0,!_||s)try{o=t(o,f)}catch(w){return c.error(w)}else o=f},error(f){c.error(f)},complete(){if(!n&&!s)return c.error(new TypeError(\"Cannot reduce an empty sequence\"));c.next(o),c.complete()}}))}concat(...t){let r=yS(this);return new r(i=>{let s,n=0;function o(c){s=c.subscribe({next(f){i.next(f)},error(f){i.error(f)},complete(){n===t.length?(s=void 0,i.complete()):o(r.from(t[n++]))}})}return o(this),()=>{s&&(s.unsubscribe(),s=void 0)}})}flatMap(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=yS(this);return new r(i=>{let s=[],n=this.subscribe({next(c){let f;if(t)try{f=t(c)}catch(w){return i.error(w)}else f=c;let _=r.from(f).subscribe({next(w){i.next(w)},error(w){i.error(w)},complete(){let w=s.indexOf(_);w>=0&&s.splice(w,1),o()}});s.push(_)},error(c){i.error(c)},complete(){o()}});function o(){n.closed&&s.length===0&&i.complete()}return()=>{s.forEach(c=>c.unsubscribe()),n.unsubscribe()}})}[(Symbol.observable,QB)](){return this}static from(t){let r=typeof this==\"function\"?this:e;if(t==null)throw new TypeError(t+\" is not an object\");let i=TI(t,QB);if(i){let s=i.call(t);if(Object(s)!==s)throw new TypeError(s+\" is not an object\");return _yt(s)&&s.constructor===r?s:new r(n=>s.subscribe(n))}if(vS.hasSymbol(\"iterator\")){let s=TI(t,gyt);if(s)return new r(n=>{SI(()=>{if(!n.closed){for(let o of s.call(t))if(n.next(o),n.closed)return;n.complete()}})})}if(Array.isArray(t))return new r(s=>{SI(()=>{if(!s.closed){for(let n of t)if(s.next(n),s.closed)return;s.complete()}})});throw new TypeError(t+\" is not observable\")}static of(...t){let r=typeof this==\"function\"?this:e;return new r(i=>{SI(()=>{if(!i.closed){for(let s of t)if(i.next(s),i.closed)return;i.complete()}})})}static get[ZQ](){return this}};Fp.Observable=Zg;vS.hasSymbols()&&Object.defineProperty(Zg,Symbol(\"extensions\"),{value:{symbol:QB,hostReportError:bx},configurable:!0});Fp.default=Zg});var Im=Br(XB=>{\"use strict\";Object.defineProperty(XB,\"__esModule\",{value:!0});function vyt(e){typeof e==\"function\"?e():e&&typeof e.unsubscribe==\"function\"&&e.unsubscribe()}XB.default=vyt});var $Q=Br(xS=>{\"use strict\";var xyt=xS&&xS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(xS,\"__esModule\",{value:!0});var byt=_S(),wyt=Ad(),Syt=Im();function Tyt(e){return t=>new wyt.default(r=>{let i=new byt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>xyt(this,void 0,void 0,function*(){(yield e(n))&&o(n)}))}});return()=>Syt.default(s)})}xS.default=Tyt});var KQ=Br(wx=>{\"use strict\";Object.defineProperty(wx,\"__esModule\",{value:!0});wx.isIterator=wx.isAsyncIterator=void 0;var XQ=ZB();function Myt(e){return e&&XQ.hasSymbol(\"asyncIterator\")&&e[Symbol.asyncIterator]}wx.isAsyncIterator=Myt;function Eyt(e){return e&&XQ.hasSymbol(\"iterator\")&&e[Symbol.iterator]}wx.isIterator=Eyt});var t$=Br(Yg=>{\"use strict\";var Pyt=Yg&&Yg.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},Iyt=Yg&&Yg.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof __values==\"function\"?__values(e):e[Symbol.iterator](),r={},i(\"next\"),i(\"throw\"),i(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=e[n]&&function(o){return new Promise(function(c,f){o=e[n](o),s(c,f,o.done,o.value)})}}function s(n,o,c,f){Promise.resolve(f).then(function(_){n({value:_,done:c})},o)}};Object.defineProperty(Yg,\"__esModule\",{value:!0});var Cyt=_S(),JQ=KQ(),Lyt=Ad(),kyt=Im();function Ryt(e){return t=>new Lyt.default(r=>{let i=new Cyt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>Pyt(this,void 0,void 0,function*(){var c,f;let _=yield e(n);if(JQ.isIterator(_)||JQ.isAsyncIterator(_))try{for(var w=Iyt(_),C;C=yield w.next(),!C.done;){let R=C.value;o(R)}}catch(R){c={error:R}}finally{try{C&&!C.done&&(f=w.return)&&(yield f.call(w))}finally{if(c)throw c.error}}else _.map(R=>o(R))}))}});return()=>kyt.default(s)})}Yg.default=Ryt});var e$=Br(KB=>{\"use strict\";Object.defineProperty(KB,\"__esModule\",{value:!0});var Dyt=Ad();function Oyt(e){return new Dyt.Observable(t=>{let r=0,i=setInterval(()=>{t.next(r++)},e);return()=>clearInterval(i)})}KB.default=Oyt});var r$=Br(bS=>{\"use strict\";var Byt=bS&&bS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(bS,\"__esModule\",{value:!0});var Fyt=_S(),zyt=Ad(),Nyt=Im();function Uyt(e){return t=>new zyt.default(r=>{let i=new Fyt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>Byt(this,void 0,void 0,function*(){let c=yield e(n);o(c)}))}});return()=>Nyt.default(s)})}bS.default=Uyt});var n$=Br(JB=>{\"use strict\";Object.defineProperty(JB,\"__esModule\",{value:!0});var i$=Ad(),Vyt=Im();function jyt(...e){return e.length===0?i$.Observable.from([]):new i$.Observable(t=>{let r=0,i=e.map(n=>n.subscribe({error(o){t.error(o),s()},next(o){t.next(o)},complete(){++r===e.length&&(t.complete(),s())}})),s=()=>{i.forEach(n=>Vyt.default(n))};return s})}JB.default=jyt});var r6=Br(e6=>{\"use strict\";Object.defineProperty(e6,\"__esModule\",{value:!0});var Gyt=Ad(),t6=class extends Gyt.default{constructor(){super(t=>(this._observers.add(t),()=>this._observers.delete(t))),this._observers=new Set}next(t){for(let r of this._observers)r.next(t)}error(t){for(let r of this._observers)r.error(t)}complete(){for(let t of this._observers)t.complete()}};e6.default=t6});var s$=Br(i6=>{\"use strict\";Object.defineProperty(i6,\"__esModule\",{value:!0});var Wyt=Ad(),Hyt=r6(),qyt=Im();function Zyt(e){let t=new Hyt.default,r,i=0;return new Wyt.default(s=>{r||(r=e.subscribe(t));let n=t.subscribe(s);return i++,()=>{i--,n.unsubscribe(),i===0&&(qyt.default(r),r=void 0)}})}i6.default=Zyt});var o$=Br(wS=>{\"use strict\";var Yyt=wS&&wS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(wS,\"__esModule\",{value:!0});var Qyt=_S(),$yt=Ad(),Xyt=Im();function Kyt(e,t){return r=>new $yt.default(i=>{let s,n=0,o=new Qyt.AsyncSerialScheduler(i),c=r.subscribe({complete(){o.complete()},error(f){o.error(f)},next(f){o.schedule(_=>Yyt(this,void 0,void 0,function*(){s=yield e(n===0?typeof t>\"u\"?f:t:s,f,n++),_(s)}))}});return()=>Xyt.default(c)})}wS.default=Kyt});var a$=Br(Rs=>{\"use strict\";Object.defineProperty(Rs,\"__esModule\",{value:!0});Rs.unsubscribe=Rs.Subject=Rs.scan=Rs.Observable=Rs.multicast=Rs.merge=Rs.map=Rs.interval=Rs.flatMap=Rs.filter=void 0;var Jyt=$Q();Object.defineProperty(Rs,\"filter\",{enumerable:!0,get:function(){return Jyt.default}});var tvt=t$();Object.defineProperty(Rs,\"flatMap\",{enumerable:!0,get:function(){return tvt.default}});var evt=e$();Object.defineProperty(Rs,\"interval\",{enumerable:!0,get:function(){return evt.default}});var rvt=r$();Object.defineProperty(Rs,\"map\",{enumerable:!0,get:function(){return rvt.default}});var ivt=n$();Object.defineProperty(Rs,\"merge\",{enumerable:!0,get:function(){return ivt.default}});var nvt=s$();Object.defineProperty(Rs,\"multicast\",{enumerable:!0,get:function(){return nvt.default}});var svt=Ad();Object.defineProperty(Rs,\"Observable\",{enumerable:!0,get:function(){return svt.default}});var ovt=o$();Object.defineProperty(Rs,\"scan\",{enumerable:!0,get:function(){return ovt.default}});var avt=r6();Object.defineProperty(Rs,\"Subject\",{enumerable:!0,get:function(){return avt.default}});var lvt=Im();Object.defineProperty(Rs,\"unsubscribe\",{enumerable:!0,get:function(){return lvt.default}})});var SS=Br((fae,l$)=>{l$.exports=a$()});var c$=Br(PI=>{\"use strict\";Object.defineProperty(PI,\"__esModule\",{value:!0});PI.allSettled=void 0;function cvt(e){return Promise.all(e.map(t=>{let r=n=>({status:\"fulfilled\",value:n}),i=n=>({status:\"rejected\",reason:n}),s=Promise.resolve(t);try{return s.then(r,i)}catch(n){return Promise.reject(n)}}))}PI.allSettled=cvt});var u$=Br(TS=>{\"use strict\";Object.defineProperty(TS,\"__esModule\",{value:!0});TS.PoolEventType=void 0;var uvt;(function(e){e.initialized=\"initialized\",e.taskCanceled=\"taskCanceled\",e.taskCompleted=\"taskCompleted\",e.taskFailed=\"taskFailed\",e.taskQueued=\"taskQueued\",e.taskQueueDrained=\"taskQueueDrained\",e.taskStart=\"taskStart\",e.terminated=\"terminated\"})(uvt=TS.PoolEventType||(TS.PoolEventType={}))});var MS=Br(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.$worker=th.$transferable=th.$terminate=th.$events=th.$errors=void 0;th.$errors=Symbol(\"thread.errors\");th.$events=Symbol(\"thread.events\");th.$terminate=Symbol(\"thread.terminate\");th.$transferable=Symbol(\"thread.transferable\");th.$worker=Symbol(\"thread.worker\")});var s6=Br(II=>{\"use strict\";Object.defineProperty(II,\"__esModule\",{value:!0});II.Thread=void 0;var n6=MS();function h$(e){throw Error(e)}II.Thread={errors(e){return e[n6.$errors]||h$(\"Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\")},events(e){return e[n6.$events]||h$(\"Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\")},terminate(e){return e[n6.$terminate]()}}});var A$=Br(eh=>{\"use strict\";var Qg=eh&&eh.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},hvt=eh&&eh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eh,\"__esModule\",{value:!0});eh.Pool=eh.Thread=eh.PoolEventType=void 0;var fvt=hvt(wI()),o6=SS(),f$=c$(),dvt=HB(),ia=u$();Object.defineProperty(eh,\"PoolEventType\",{enumerable:!0,get:function(){return ia.PoolEventType}});var d$=s6();Object.defineProperty(eh,\"Thread\",{enumerable:!0,get:function(){return d$.Thread}});var pvt=1;function Avt(e){let t=[];for(let r=0;rsetTimeout(t,e))}function gvt(e,t){return e.reduce((r,i)=>[...r,...t(i)],[])}function _vt(e){return e.replace(/\\W/g,\" \").trim().replace(/\\s+/g,\"-\")}function yvt(e,t){return Avt(t).map(()=>({init:e(),runningTasks:[]}))}var CI=class{constructor(t,r){this.eventSubject=new o6.Subject,this.initErrors=[],this.isClosing=!1,this.nextTaskID=1,this.taskQueue=[];let i=typeof r==\"number\"?{size:r}:r||{},{size:s=dvt.defaultPoolSize}=i;this.debug=fvt.default(`threads:pool:${_vt(i.name||String(pvt++))}`),this.options=i,this.workers=yvt(t,s),this.eventObservable=o6.multicast(o6.Observable.from(this.eventSubject)),Promise.all(this.workers.map(n=>n.init)).then(()=>this.eventSubject.next({type:ia.PoolEventType.initialized,size:this.workers.length}),n=>{this.debug(\"Error while initializing pool worker:\",n),this.eventSubject.error(n),this.initErrors.push(n)})}findIdlingWorker(){let{concurrency:t=1}=this.options;return this.workers.find(r=>r.runningTasks.length{t.runningTasks=t.runningTasks.filter(n=>n!==i)};yield mvt(0);try{yield this.runPoolTask(t,r)}finally{s(),this.isClosing||this.scheduleWork()}});t.runningTasks.push(i)})}scheduleWork(){this.debug(\"Attempt de-queueing a task in order to run it...\");let t=this.findIdlingWorker();if(!t)return;let r=this.taskQueue.shift();if(!r){this.debug(\"Task queue is empty\"),this.eventSubject.next({type:ia.PoolEventType.taskQueueDrained});return}this.run(t,r)}taskCompletion(t){return new Promise((r,i)=>{let s=this.events().subscribe(n=>{n.type===ia.PoolEventType.taskCompleted&&n.taskID===t?(s.unsubscribe(),r(n.returnValue)):n.type===ia.PoolEventType.taskFailed&&n.taskID===t?(s.unsubscribe(),i(n.error)):n.type===ia.PoolEventType.terminated&&(s.unsubscribe(),i(Error(\"Pool has been terminated before task was run.\")))})})}settled(t=!1){return Qg(this,void 0,void 0,function*(){let r=()=>gvt(this.workers,n=>n.runningTasks),i=[],s=this.eventObservable.subscribe(n=>{n.type===ia.PoolEventType.taskFailed&&i.push(n.error)});return this.initErrors.length>0?Promise.reject(this.initErrors[0]):t&&this.taskQueue.length===0?(yield f$.allSettled(r()),i):(yield new Promise((n,o)=>{let c=this.eventObservable.subscribe({next(f){f.type===ia.PoolEventType.taskQueueDrained&&(c.unsubscribe(),n(void 0))},error:o})}),yield f$.allSettled(r()),s.unsubscribe(),i)})}completed(t=!1){return Qg(this,void 0,void 0,function*(){let r=this.settled(t),i=new Promise((n,o)=>{let c=this.eventObservable.subscribe({next(f){f.type===ia.PoolEventType.taskQueueDrained?(c.unsubscribe(),n(r)):f.type===ia.PoolEventType.taskFailed&&(c.unsubscribe(),o(f.error))},error:o})}),s=yield Promise.race([r,i]);if(s.length>0)throw s[0]})}events(){return this.eventObservable}queue(t){let{maxQueuedJobs:r=1/0}=this.options;if(this.isClosing)throw Error(\"Cannot schedule pool tasks after terminate() has been called.\");if(this.initErrors.length>0)throw this.initErrors[0];let i=this.nextTaskID++,s=this.taskCompletion(i);s.catch(o=>{this.debug(`Task #${i} errored:`,o)});let n={id:i,run:t,cancel:()=>{this.taskQueue.indexOf(n)!==-1&&(this.taskQueue=this.taskQueue.filter(o=>o!==n),this.eventSubject.next({type:ia.PoolEventType.taskCanceled,taskID:n.id}))},then:s.then.bind(s)};if(this.taskQueue.length>=r)throw Error(`Maximum number of pool tasks queued. Refusing to queue another one.\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool.`);return this.debug(`Queueing task #${n.id}...`),this.taskQueue.push(n),this.eventSubject.next({type:ia.PoolEventType.taskQueued,taskID:n.id}),this.scheduleWork(),n}terminate(t){return Qg(this,void 0,void 0,function*(){this.isClosing=!0,t||(yield this.completed(!0)),this.eventSubject.next({type:ia.PoolEventType.terminated,remainingQueue:[...this.taskQueue]}),this.eventSubject.complete(),yield Promise.all(this.workers.map(r=>Qg(this,void 0,void 0,function*(){return d$.Thread.terminate(yield r.init)})))})}};CI.EventType=ia.PoolEventType;function p$(e,t){return new CI(e,t)}p$.EventType=ia.PoolEventType;eh.Pool=p$});var m$=Br(LI=>{\"use strict\";Object.defineProperty(LI,\"__esModule\",{value:!0});LI.createPromiseWithResolver=void 0;var vvt=()=>{};function xvt(){let e=!1,t,r=vvt;return[new Promise(n=>{e?n(t):r=n}),n=>{e=!0,t=n,r(t)}]}LI.createPromiseWithResolver=xvt});var g$=Br(ES=>{\"use strict\";Object.defineProperty(ES,\"__esModule\",{value:!0});ES.WorkerEventType=void 0;var yae=MS(),bvt;(function(e){e.internalError=\"internalError\",e.message=\"message\",e.termination=\"termination\"})(bvt=ES.WorkerEventType||(ES.WorkerEventType={}))});var y$=Br(kI=>{\"use strict\";Object.defineProperty(kI,\"__esModule\",{value:!0});kI.ObservablePromise=void 0;var wvt=SS(),Svt=()=>{},Tvt=e=>e,_$=e=>Promise.resolve().then(e);function Mvt(e){throw e}function Evt(e){return e&&typeof e.then==\"function\"}var a6=class e extends wvt.Observable{constructor(t){super(r=>{let i=this,s=Object.assign(Object.assign({},r),{complete(){r.complete(),i.onCompletion()},error(n){r.error(n),i.onError(n)},next(n){r.next(n),i.onNext(n)}});try{return this.initHasRun=!0,t(s)}catch(n){s.error(n)}}),this.initHasRun=!1,this.fulfillmentCallbacks=[],this.rejectionCallbacks=[],this.firstValueSet=!1,this.state=\"pending\"}onNext(t){this.firstValueSet||(this.firstValue=t,this.firstValueSet=!0)}onError(t){this.state=\"rejected\",this.rejection=t;for(let r of this.rejectionCallbacks)_$(()=>r(t))}onCompletion(){this.state=\"fulfilled\";for(let t of this.fulfillmentCallbacks)_$(()=>t(this.firstValue))}then(t,r){let i=t||Tvt,s=r||Mvt,n=!1;return new Promise((o,c)=>{let f=w=>{if(!n){n=!0;try{o(s(w))}catch(C){c(C)}}},_=w=>{try{o(i(w))}catch(C){f(C)}};if(this.initHasRun||this.subscribe({error:f}),this.state===\"fulfilled\")return o(i(this.firstValue));if(this.state===\"rejected\")return n=!0,o(s(this.rejection));this.fulfillmentCallbacks.push(_),this.rejectionCallbacks.push(f)})}catch(t){return this.then(void 0,t)}finally(t){let r=t||Svt;return this.then(i=>(r(),i),()=>r())}static from(t){return Evt(t)?new e(r=>{let i=n=>{r.next(n),r.complete()},s=n=>{r.error(n)};t.then(i,s)}):super.from(t)}};kI.ObservablePromise=a6});var PS=Br(Sx=>{\"use strict\";Object.defineProperty(Sx,\"__esModule\",{value:!0});Sx.Transfer=Sx.isTransferDescriptor=void 0;var v$=MS();function Pvt(e){return!(!e||typeof e!=\"object\")}function Ivt(e){return e&&typeof e==\"object\"&&e[v$.$transferable]}Sx.isTransferDescriptor=Ivt;function Cvt(e,t){if(!t){if(!Pvt(e))throw Error();t=[e]}return{[v$.$transferable]:!0,send:e,transferables:t}}Sx.Transfer=Cvt});var l6=Br(Cm=>{\"use strict\";Object.defineProperty(Cm,\"__esModule\",{value:!0});Cm.WorkerMessageType=Cm.MasterMessageType=void 0;var Lvt;(function(e){e.cancel=\"cancel\",e.run=\"run\"})(Lvt=Cm.MasterMessageType||(Cm.MasterMessageType={}));var kvt;(function(e){e.error=\"error\",e.init=\"init\",e.result=\"result\",e.running=\"running\",e.uncaughtError=\"uncaughtError\"})(kvt=Cm.WorkerMessageType||(Cm.WorkerMessageType={}))});var T$=Br(Lm=>{\"use strict\";var Rvt=Lm&&Lm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Lm,\"__esModule\",{value:!0});Lm.createProxyModule=Lm.createProxyFunction=void 0;var Dvt=Rvt(wI()),b$=SS(),IS=mx(),x$=y$(),Ovt=PS(),CS=l6(),w$=Dvt.default(\"threads:master:messages\"),Bvt=1,Fvt=e=>Array.from(new Set(e)),zvt=e=>e&&e.type===CS.WorkerMessageType.error,Nvt=e=>e&&e.type===CS.WorkerMessageType.result,Uvt=e=>e&&e.type===CS.WorkerMessageType.running;function Vvt(e,t){return new b$.Observable(r=>{let i,s=n=>{if(w$(\"Message from worker:\",n.data),!(!n.data||n.data.uid!==t)){if(Uvt(n.data))i=n.data.resultType;else if(Nvt(n.data))i===\"promise\"?(typeof n.data.payload<\"u\"&&r.next(IS.deserialize(n.data.payload)),r.complete(),e.removeEventListener(\"message\",s)):(n.data.payload&&r.next(IS.deserialize(n.data.payload)),n.data.complete&&(r.complete(),e.removeEventListener(\"message\",s)));else if(zvt(n.data)){let o=IS.deserialize(n.data.error);r.error(o),e.removeEventListener(\"message\",s)}}};return e.addEventListener(\"message\",s),()=>{if(i===\"observable\"||!i){let n={type:CS.MasterMessageType.cancel,uid:t};e.postMessage(n)}e.removeEventListener(\"message\",s)}})}function jvt(e){if(e.length===0)return{args:[],transferables:[]};let t=[],r=[];for(let i of e)Ovt.isTransferDescriptor(i)?(t.push(IS.serialize(i.send)),r.push(...i.transferables)):t.push(IS.serialize(i));return{args:t,transferables:r.length===0?r:Fvt(r)}}function S$(e,t){return(...r)=>{let i=Bvt++,{args:s,transferables:n}=jvt(r),o={type:CS.MasterMessageType.run,uid:i,method:t,args:s};w$(\"Sending command to run function to worker:\",o);try{e.postMessage(o,n)}catch(c){return x$.ObservablePromise.from(Promise.reject(c))}return x$.ObservablePromise.from(b$.multicast(Vvt(e,i)))}}Lm.createProxyFunction=S$;function Gvt(e,t){let r={};for(let i of t)r[i]=S$(e,i);return r}Lm.createProxyModule=Gvt});var I$=Br(km=>{\"use strict\";var c6=km&&km.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},Wvt=km&&km.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(km,\"__esModule\",{value:!0});km.spawn=void 0;var u6=Wvt(wI()),Hvt=SS(),qvt=mx(),Zvt=m$(),RI=MS(),DI=g$(),M$=T$(),Yvt=u6.default(\"threads:master:messages\"),Qvt=u6.default(\"threads:master:spawn\"),P$=u6.default(\"threads:master:thread-utils\"),$vt=e=>e&&e.type===\"init\",Xvt=e=>e&&e.type===\"uncaughtError\",Kvt=typeof process<\"u\"&&process.env.THREADS_WORKER_INIT_TIMEOUT?Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT,10):1e4;function Jvt(e,t,r){return c6(this,void 0,void 0,function*(){let i,s=new Promise((o,c)=>{i=setTimeout(()=>c(Error(r)),t)}),n=yield Promise.race([e,s]);return clearTimeout(i),n})}function txt(e){return new Promise((t,r)=>{let i=s=>{Yvt(\"Message from worker before finishing initialization:\",s.data),$vt(s.data)?(e.removeEventListener(\"message\",i),t(s.data)):Xvt(s.data)&&(e.removeEventListener(\"message\",i),r(qvt.deserialize(s.data.error)))};e.addEventListener(\"message\",i)})}function ext(e,t){return new Hvt.Observable(r=>{let i=n=>{let o={type:DI.WorkerEventType.message,data:n.data};r.next(o)},s=n=>{P$(\"Unhandled promise rejection event in thread:\",n);let o={type:DI.WorkerEventType.internalError,error:Error(n.reason)};r.next(o)};e.addEventListener(\"message\",i),e.addEventListener(\"unhandledrejection\",s),t.then(()=>{let n={type:DI.WorkerEventType.termination};e.removeEventListener(\"message\",i),e.removeEventListener(\"unhandledrejection\",s),r.next(n),r.complete()})})}function rxt(e){let[t,r]=Zvt.createPromiseWithResolver();return{terminate:()=>c6(this,void 0,void 0,function*(){P$(\"Terminating worker\"),yield e.terminate(),r()}),termination:t}}function E$(e,t,r,i){let s=r.filter(n=>n.type===DI.WorkerEventType.internalError).map(n=>n.error);return Object.assign(e,{[RI.$errors]:s,[RI.$events]:r,[RI.$terminate]:i,[RI.$worker]:t})}function ixt(e,t){return c6(this,void 0,void 0,function*(){Qvt(\"Initializing new thread\");let r=t&&t.timeout?t.timeout:Kvt,s=(yield Jvt(txt(e),r,`Timeout: Did not receive an init message from worker after ${r}ms. Make sure the worker calls expose().`)).exposed,{termination:n,terminate:o}=rxt(e),c=ext(e,n);if(s.type===\"function\"){let f=M$.createProxyFunction(e);return E$(f,e,c,o)}else if(s.type===\"module\"){let f=M$.createProxyModule(e,s.methods);return E$(f,e,c,o)}else{let f=s.type;throw Error(`Worker init message states unexpected type of expose(): ${f}`)}})}km.spawn=ixt});var C$=Br(Mc=>{\"use strict\";Object.defineProperty(Mc,\"__esModule\",{value:!0});Mc.Worker=Mc.BlobWorker=Mc.isWorkerRuntime=Mc.Thread=Mc.spawn=Mc.Pool=void 0;var h6=HB();Object.defineProperty(Mc,\"isWorkerRuntime\",{enumerable:!0,get:function(){return h6.isWorkerRuntime}});var nxt=A$();Object.defineProperty(Mc,\"Pool\",{enumerable:!0,get:function(){return nxt.Pool}});var sxt=I$();Object.defineProperty(Mc,\"spawn\",{enumerable:!0,get:function(){return sxt.spawn}});var oxt=s6();Object.defineProperty(Mc,\"Thread\",{enumerable:!0,get:function(){return oxt.Thread}});Mc.BlobWorker=h6.getWorkerImplementation().blob;Mc.Worker=h6.getWorkerImplementation().default});var k$=Br((Eae,L$)=>{\"use strict\";L$.exports=e=>e?typeof Symbol.observable==\"symbol\"&&typeof e[Symbol.observable]==\"function\"?e===e[Symbol.observable]():typeof e[\"@@observable\"]==\"function\"?e===e[\"@@observable\"]():!1:!1});var R$=Br(f6=>{\"use strict\";Object.defineProperty(f6,\"__esModule\",{value:!0});var axt=function(){let t=typeof self<\"u\"&&typeof Window<\"u\"&&self instanceof Window;return!!(typeof self<\"u\"&&self.postMessage&&!t)},lxt=function(t,r){self.postMessage(t,r)},cxt=function(t){let r=s=>{t(s.data)},i=()=>{self.removeEventListener(\"message\",r)};return self.addEventListener(\"message\",r),i};f6.default={isWorkerRuntime:axt,postMessageToMaster:lxt,subscribeToMasterMessages:cxt}});var U$=Br(Ec=>{\"use strict\";var uxt=Ec&&Ec.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},z$=Ec&&Ec.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ec,\"__esModule\",{value:!0});Ec.expose=Ec.isWorkerRuntime=Ec.Transfer=Ec.registerSerializer=void 0;var hxt=z$(k$()),Rm=mx(),fxt=PS(),Dm=l6(),cu=z$(R$()),dxt=mx();Object.defineProperty(Ec,\"registerSerializer\",{enumerable:!0,get:function(){return dxt.registerSerializer}});var pxt=PS();Object.defineProperty(Ec,\"Transfer\",{enumerable:!0,get:function(){return pxt.Transfer}});Ec.isWorkerRuntime=cu.default.isWorkerRuntime;var D$=!1,LS=new Map,Axt=e=>e&&e.type===Dm.MasterMessageType.cancel,O$=e=>e&&e.type===Dm.MasterMessageType.run,B$=e=>hxt.default(e)||mxt(e);function mxt(e){return e&&typeof e==\"object\"&&typeof e.subscribe==\"function\"}function N$(e){return fxt.isTransferDescriptor(e)?{payload:e.send,transferables:e.transferables}:{payload:e,transferables:void 0}}function gxt(){let e={type:Dm.WorkerMessageType.init,exposed:{type:\"function\"}};cu.default.postMessageToMaster(e)}function _xt(e){let t={type:Dm.WorkerMessageType.init,exposed:{type:\"module\",methods:e}};cu.default.postMessageToMaster(t)}function d6(e,t){let{payload:r,transferables:i}=N$(t),s={type:Dm.WorkerMessageType.error,uid:e,error:Rm.serialize(r)};cu.default.postMessageToMaster(s,i)}function p6(e,t,r){let{payload:i,transferables:s}=N$(r),n={type:Dm.WorkerMessageType.result,uid:e,complete:t?!0:void 0,payload:i};cu.default.postMessageToMaster(n,s)}function yxt(e,t){let r={type:Dm.WorkerMessageType.running,uid:e,resultType:t};cu.default.postMessageToMaster(r)}function OI(e){try{let t={type:Dm.WorkerMessageType.uncaughtError,error:Rm.serialize(e)};cu.default.postMessageToMaster(t)}catch(t){console.error(`Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:`,t,`\nOriginal error:`,e)}}function F$(e,t,r){return uxt(this,void 0,void 0,function*(){let i;try{i=t(...r)}catch(n){return d6(e,n)}let s=B$(i)?\"observable\":\"promise\";if(yxt(e,s),B$(i)){let n=i.subscribe(o=>p6(e,!1,Rm.serialize(o)),o=>{d6(e,Rm.serialize(o)),LS.delete(e)},()=>{p6(e,!0),LS.delete(e)});LS.set(e,n)}else try{let n=yield i;p6(e,!0,Rm.serialize(n))}catch(n){d6(e,Rm.serialize(n))}})}function vxt(e){if(!cu.default.isWorkerRuntime())throw Error(\"expose() called in the master thread.\");if(D$)throw Error(\"expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.\");if(D$=!0,typeof e==\"function\")cu.default.subscribeToMasterMessages(t=>{O$(t)&&!t.method&&F$(t.uid,e,t.args.map(Rm.deserialize))}),gxt();else if(typeof e==\"object\"&&e){cu.default.subscribeToMasterMessages(r=>{O$(r)&&r.method&&F$(r.uid,e[r.method],r.args.map(Rm.deserialize))});let t=Object.keys(e).filter(r=>typeof e[r]==\"function\");_xt(t)}else throw Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${e}`);cu.default.subscribeToMasterMessages(t=>{if(Axt(t)){let r=t.uid,i=LS.get(r);i&&(i.unsubscribe(),LS.delete(r))}})}Ec.expose=vxt;typeof self<\"u\"&&typeof self.addEventListener==\"function\"&&cu.default.isWorkerRuntime()&&(self.addEventListener(\"error\",e=>{setTimeout(()=>OI(e.error||e),250)}),self.addEventListener(\"unhandledrejection\",e=>{let t=e.reason;t&&typeof t.message==\"string\"&&setTimeout(()=>OI(t),250)}));typeof process<\"u\"&&typeof process.on==\"function\"&&cu.default.isWorkerRuntime()&&(process.on(\"uncaughtException\",e=>{setTimeout(()=>OI(e),250)}),process.on(\"unhandledRejection\",e=>{e&&typeof e.message==\"string\"&&setTimeout(()=>OI(e),250)}))});var V$=Br(Dl=>{\"use strict\";var xxt=Dl&&Dl.__createBinding||(Object.create?function(e,t,r,i){i===void 0&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){i===void 0&&(i=r),e[i]=t[r]}),bxt=Dl&&Dl.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&xxt(t,e,r)};Object.defineProperty(Dl,\"__esModule\",{value:!0});Dl.Transfer=Dl.DefaultSerializer=Dl.expose=Dl.registerSerializer=void 0;var wxt=mx();Object.defineProperty(Dl,\"registerSerializer\",{enumerable:!0,get:function(){return wxt.registerSerializer}});bxt(C$(),Dl);var Sxt=U$();Object.defineProperty(Dl,\"expose\",{enumerable:!0,get:function(){return Sxt.expose}});var Txt=jB();Object.defineProperty(Dl,\"DefaultSerializer\",{enumerable:!0,get:function(){return Txt.DefaultSerializer}});var Mxt=PS();Object.defineProperty(Dl,\"Transfer\",{enumerable:!0,get:function(){return Mxt.Transfer}})});var WI=ki(Ji(),1),$g=ki(Ji(),1);var Xl=ki(Ji(),1),T8=ki(S8(),1),M8=Xl.createContext(null);function Qk(){let e=Xl.useContext(M8);if(!e)throw new Error(\"Model not found\");return e}function P0(e){let t=Qk(),[r,i]=Xl.useState(t.get(e));return Xl.useEffect(()=>{let s=()=>i(t.get(e));return t.on(`change:${e}`,s),()=>t.off(`change:${e}`,s)},[t,e]),[r,s=>{t.set(e,s),t.save_changes()}]}function E8(e){return({model:t,el:r})=>{let i=T8.createRoot(r);return i.render(Xl.createElement(Xl.StrictMode,null,Xl.createElement(M8.Provider,{value:t},Xl.createElement(e)))),()=>i.unmount()}}var V8=ki(Ji());var K_=ki(Ji()),Hc=ki(Ji());var $k=ki(Ji()),wM=ki(Ji());var P8=$k.createContext(null);function I8(e,t){let r=Array.isArray(e)?e[0]:e?e.x:0,i=Array.isArray(e)?e[1]:e?e.y:0,s=Array.isArray(t)?t[0]:t?t.x:0,n=Array.isArray(t)?t[1]:t?t.y:0;return r===s&&i===n}function Kl(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r{let s=null;\"interactive\"in i&&(s=Object.assign({},i),delete s.interactive);let n=t[i.ref];if(n){s=s||Object.assign({},i),delete s.ref;for(let o of ret)o in n&&(s[o]=n[o])}return s||i});return{...e,layers:r}}var L8={version:8,sources:{},layers:[]},k8={mousedown:\"onMouseDown\",mouseup:\"onMouseUp\",mouseover:\"onMouseOver\",mousemove:\"onMouseMove\",click:\"onClick\",dblclick:\"onDblClick\",mouseenter:\"onMouseEnter\",mouseleave:\"onMouseLeave\",mouseout:\"onMouseOut\",contextmenu:\"onContextMenu\",touchstart:\"onTouchStart\",touchend:\"onTouchEnd\",touchmove:\"onTouchMove\",touchcancel:\"onTouchCancel\"},e4={movestart:\"onMoveStart\",move:\"onMove\",moveend:\"onMoveEnd\",dragstart:\"onDragStart\",drag:\"onDrag\",dragend:\"onDragEnd\",zoomstart:\"onZoomStart\",zoom:\"onZoom\",zoomend:\"onZoomEnd\",rotatestart:\"onRotateStart\",rotate:\"onRotate\",rotateend:\"onRotateEnd\",pitchstart:\"onPitchStart\",pitch:\"onPitch\",pitchend:\"onPitchEnd\"},R8={wheel:\"onWheel\",boxzoomstart:\"onBoxZoomStart\",boxzoomend:\"onBoxZoomEnd\",boxzoomcancel:\"onBoxZoomCancel\",resize:\"onResize\",load:\"onLoad\",render:\"onRender\",idle:\"onIdle\",remove:\"onRemove\",data:\"onData\",styledata:\"onStyleData\",sourcedata:\"onSourceData\",error:\"onError\"},iet=[\"minZoom\",\"maxZoom\",\"minPitch\",\"maxPitch\",\"maxBounds\",\"projection\",\"renderWorldCopies\"],net=[\"scrollZoom\",\"boxZoom\",\"dragRotate\",\"dragPan\",\"keyboard\",\"doubleClickZoom\",\"touchZoomRotate\",\"touchPitch\"],I0=class e{constructor(t,r,i){this._map=null,this._internalUpdate=!1,this._inRender=!1,this._hoveredFeatures=null,this._deferredEvents={move:!1,zoom:!1,pitch:!1,rotate:!1},this._onEvent=s=>{let n=this.props[R8[s.type]];n?n(s):s.type===\"error\"&&console.error(s.error)},this._onPointerEvent=s=>{(s.type===\"mousemove\"||s.type===\"mouseout\")&&this._updateHover(s);let n=this.props[k8[s.type]];n&&(this.props.interactiveLayerIds&&s.type!==\"mouseover\"&&s.type!==\"mouseout\"&&(s.features=this._hoveredFeatures||this._queryRenderedFeatures(s.point)),n(s),delete s.features)},this._onCameraEvent=s=>{if(!this._internalUpdate){let n=this.props[e4[s.type]];n&&n(s)}s.type in this._deferredEvents&&(this._deferredEvents[s.type]=!1)},this._MapClass=t,this.props=r,this._initialize(i)}get map(){return this._map}get transform(){return this._renderTransform}setProps(t){let r=this.props;this.props=t;let i=this._updateSettings(t,r);i&&this._createShadowTransform(this._map);let s=this._updateSize(t),n=this._updateViewState(t,!0);this._updateStyle(t,r),this._updateStyleComponents(t,r),this._updateHandlers(t,r),(i||s||n&&!this._map.isMoving())&&this.redraw()}static reuse(t,r){let i=e.savedMaps.pop();if(!i)return null;let s=i.map,n=s.getContainer();for(r.className=n.className;n.childNodes.length>0;)r.appendChild(n.childNodes[0]);s._container=r;let o=s._resizeObserver;o&&(o.disconnect(),o.observe(r)),i.setProps({...t,styleDiffing:!1}),s.resize();let{initialViewState:c}=t;return c&&(c.bounds?s.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):i._updateViewState(c,!1)),s.isStyleLoaded()?s.fire(\"load\"):s.once(\"styledata\",()=>s.fire(\"load\")),s._update(),i}_initialize(t){let{props:r}=this,{mapStyle:i=L8}=r,s={...r,...r.initialViewState,accessToken:r.mapboxAccessToken||set()||null,container:t,style:t4(i)},n=s.initialViewState||s.viewState||s;if(Object.assign(s,{center:[n.longitude||0,n.latitude||0],zoom:n.zoom||0,pitch:n.pitch||0,bearing:n.bearing||0}),r.gl){let w=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=w,r.gl)}let o=new this._MapClass(s);n.padding&&o.setPadding(n.padding),r.cursor&&(o.getCanvas().style.cursor=r.cursor),this._createShadowTransform(o);let c=o._render;o._render=w=>{this._inRender=!0,c.call(o,w),this._inRender=!1};let f=o._renderTaskQueue.run;o._renderTaskQueue.run=w=>{f.call(o._renderTaskQueue,w),this._onBeforeRepaint()},o.on(\"render\",()=>this._onAfterRepaint());let _=o.fire;o.fire=this._fireEvent.bind(this,_),o.on(\"resize\",()=>{this._renderTransform.resize(o.transform.width,o.transform.height)}),o.on(\"styledata\",()=>{this._updateStyleComponents(this.props,{}),Xk(o.transform,this._renderTransform)}),o.on(\"sourcedata\",()=>this._updateStyleComponents(this.props,{}));for(let w in k8)o.on(w,this._onPointerEvent);for(let w in e4)o.on(w,this._onCameraEvent);for(let w in R8)o.on(w,this._onEvent);this._map=o}recycle(){let r=this.map.getContainer().querySelector(\"[mapboxgl-children]\");r?.remove(),e.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){let t=this._map;!this._inRender&&t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_createShadowTransform(t){let r=C8(t.transform);t.painter.transform=r,this._renderTransform=r}_updateSize(t){let{viewState:r}=t;if(r){let i=this._map;if(r.width!==i.transform.width||r.height!==i.transform.height)return i.resize(),!0}return!1}_updateViewState(t,r){if(this._internalUpdate)return!1;let i=this._map,s=this._renderTransform,{zoom:n,pitch:o,bearing:c}=s,f=i.isMoving();f&&(s.cameraElevationReference=\"sea\");let _=Jk(s,{...Kk(i.transform),...t});if(f&&(s.cameraElevationReference=\"ground\"),_&&r){let w=this._deferredEvents;w.move=!0,w.zoom||(w.zoom=n!==s.zoom),w.rotate||(w.rotate=c!==s.bearing),w.pitch||(w.pitch=o!==s.pitch)}return f||Jk(i.transform,t),_}_updateSettings(t,r){let i=this._map,s=!1;for(let n of iet)if(n in t&&!Kl(t[n],r[n])){s=!0;let o=i[`set${n[0].toUpperCase()}${n.slice(1)}`];o?.call(i,t[n])}return s}_updateStyle(t,r){if(t.cursor!==r.cursor&&(this._map.getCanvas().style.cursor=t.cursor||\"\"),t.mapStyle!==r.mapStyle){let{mapStyle:i=L8,styleDiffing:s=!0}=t,n={diff:s};return\"localIdeographFontFamily\"in t&&(n.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(t4(i),n),!0}return!1}_updateStyleComponents(t,r){let i=this._map,s=!1;return i.isStyleLoaded()&&(\"light\"in t&&i.setLight&&!Kl(t.light,r.light)&&(s=!0,i.setLight(t.light)),\"fog\"in t&&i.setFog&&!Kl(t.fog,r.fog)&&(s=!0,i.setFog(t.fog)),\"terrain\"in t&&i.setTerrain&&!Kl(t.terrain,r.terrain)&&(!t.terrain||i.getSource(t.terrain.source))&&(s=!0,i.setTerrain(t.terrain))),s}_updateHandlers(t,r){var i,s;let n=this._map,o=!1;for(let c of net){let f=(i=t[c])!==null&&i!==void 0?i:!0,_=(s=r[c])!==null&&s!==void 0?s:!0;Kl(f,_)||(o=!0,f?n[c].enable(f):n[c].disable())}return o}_queryRenderedFeatures(t){let r=this._map,i=r.transform,{interactiveLayerIds:s=[]}=this.props;try{return r.transform=this._renderTransform,r.queryRenderedFeatures(t,{layers:s.filter(r.getLayer.bind(r))})}catch{return[]}finally{r.transform=i}}_updateHover(t){var r;let{props:i}=this;if(i.interactiveLayerIds&&(i.onMouseMove||i.onMouseEnter||i.onMouseLeave)){let n=t.type,o=((r=this._hoveredFeatures)===null||r===void 0?void 0:r.length)>0,c=this._queryRenderedFeatures(t.point),f=c.length>0;!f&&o&&(t.type=\"mouseleave\",this._onPointerEvent(t)),this._hoveredFeatures=c,f&&!o&&(t.type=\"mouseenter\",this._onPointerEvent(t)),t.type=n}else this._hoveredFeatures=null}_fireEvent(t,r,i){let s=this._map,n=s.transform,o=typeof r==\"string\"?r:r.type;return o===\"move\"&&this._updateViewState(this.props,!1),o in e4&&(typeof r==\"object\"&&(r.viewState=Kk(n)),this._map.isMoving())?(s.transform=this._renderTransform,t.call(s,r,i),s.transform=n,s):(t.call(s,r,i),s)}_onBeforeRepaint(){let t=this._map;this._internalUpdate=!0;for(let i in this._deferredEvents)this._deferredEvents[i]&&t.fire(i);this._internalUpdate=!1;let r=this._map.transform;t.transform=this._renderTransform,this._onAfterRepaint=()=>{Xk(this._renderTransform,r),t.transform=r}}};I0.savedMaps=[];function set(){let e=null;if(typeof location<\"u\"){let t=/access_token=([^&\\/]*)/.exec(location.search);e=t&&t[1]}try{e=e||process.env.MapboxAccessToken}catch{}try{e=e||process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}catch{}return e}var oet=[\"setMaxBounds\",\"setMinZoom\",\"setMaxZoom\",\"setMinPitch\",\"setMaxPitch\",\"setRenderWorldCopies\",\"setProjection\",\"setStyle\",\"addSource\",\"removeSource\",\"addLayer\",\"removeLayer\",\"setLayerZoomRange\",\"setFilter\",\"setPaintProperty\",\"setLayoutProperty\",\"setLight\",\"setTerrain\",\"setFog\",\"remove\"];function r4(e){if(!e)return null;let t=e.map,r={getMap:()=>t,getCenter:()=>e.transform.center,getZoom:()=>e.transform.zoom,getBearing:()=>e.transform.bearing,getPitch:()=>e.transform.pitch,getPadding:()=>e.transform.padding,getBounds:()=>e.transform.getBounds(),project:i=>{let s=t.transform;t.transform=e.transform;let n=t.project(i);return t.transform=s,n},unproject:i=>{let s=t.transform;t.transform=e.transform;let n=t.unproject(i);return t.transform=s,n},queryTerrainElevation:(i,s)=>{let n=t.transform;t.transform=e.transform;let o=t.queryTerrainElevation(i,s);return t.transform=n,o},queryRenderedFeatures:(i,s)=>{let n=t.transform;t.transform=e.transform;let o=t.queryRenderedFeatures(i,s);return t.transform=n,o}};for(let i of aet(t))!(i in r)&&!oet.includes(i)&&(r[i]=t[i].bind(t));return r}function aet(e){let t=new Set,r=e;for(;r;){for(let i of Object.getOwnPropertyNames(r))i[0]!==\"_\"&&typeof e[i]==\"function\"&&i!==\"fire\"&&i!==\"setEventedParent\"&&t.add(i);r=Object.getPrototypeOf(r)}return Array.from(t)}var SM=ki(Ji()),cet=typeof document<\"u\"?SM.useLayoutEffect:SM.useEffect,D8=cet;var uet=[\"baseApiUrl\",\"maxParallelImageRequests\",\"workerClass\",\"workerCount\",\"workerUrl\"];function i4(e,t){for(let i of uet)i in t&&(e[i]=t[i]);let{RTLTextPlugin:r=\"https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js\"}=t;r&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()===\"unavailable\"&&e.setRTLTextPlugin(r,i=>{i&&console.error(i)},!0)}var Rf=K_.createContext(null);function n4(e,t,r){let i=(0,Hc.useContext)(P8),[s,n]=(0,Hc.useState)(null),o=(0,Hc.useRef)(),{current:c}=(0,Hc.useRef)({mapLib:null,map:null});(0,Hc.useEffect)(()=>{let w=e.mapLib,C=!0,R;return Promise.resolve(w||r).then(N=>{if(!C)return;if(!N)throw new Error(\"Invalid mapLib\");let j=\"Map\"in N?N:N.default;if(!j.Map)throw new Error(\"Invalid mapLib\");if(i4(j,e),!j.supported||j.supported(e))e.reuseMaps&&(R=I0.reuse(e,o.current)),R||(R=new I0(j.Map,e,o.current)),c.map=r4(R),c.mapLib=j,n(R),i?.onMapMount(c.map,e.id);else throw new Error(\"Map is not supported by this browser\")}).catch(N=>{let{onError:j}=e;j?j({type:\"error\",target:null,originalEvent:null,error:N}):console.error(N)}),()=>{C=!1,R&&(i?.onMapUnmount(e.id),e.reuseMaps?R.recycle():R.destroy())}},[]),D8(()=>{s&&s.setProps(e)}),(0,Hc.useImperativeHandle)(t,()=>c.map,[s]);let f=(0,Hc.useMemo)(()=>({position:\"relative\",width:\"100%\",height:\"100%\",...e.style}),[e.style]),_={height:\"100%\"};return K_.createElement(\"div\",{id:e.id,ref:o,style:f},s&&K_.createElement(Rf.Provider,{value:c},K_.createElement(\"div\",{\"mapboxgl-children\":\"\",style:_},e.children)))}var O8=ki(Ji()),B8=ki(bM()),bl=ki(Ji());var het=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function Jl(e,t){if(!e||!t)return;let r=e.style;for(let i in t){let s=t[i];Number.isFinite(s)&&!het.test(i)?r[i]=`${s}px`:r[i]=s}}function fet(e,t){let{map:r,mapLib:i}=(0,bl.useContext)(Rf),s=(0,bl.useRef)({props:e});s.current.props=e;let n=(0,bl.useMemo)(()=>{let Y=!1;O8.Children.forEach(e.children,K=>{K&&(Y=!0)});let rt={...e,element:Y?document.createElement(\"div\"):null},$=new i.Marker(rt);return $.setLngLat([e.longitude,e.latitude]),$.getElement().addEventListener(\"click\",K=>{var tt,ut;(ut=(tt=s.current.props).onClick)===null||ut===void 0||ut.call(tt,{type:\"click\",target:$,originalEvent:K})}),$.on(\"dragstart\",K=>{var tt,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(tt=s.current.props).onDragStart)===null||ut===void 0||ut.call(tt,Pt)}),$.on(\"drag\",K=>{var tt,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(tt=s.current.props).onDrag)===null||ut===void 0||ut.call(tt,Pt)}),$.on(\"dragend\",K=>{var tt,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(tt=s.current.props).onDragEnd)===null||ut===void 0||ut.call(tt,Pt)}),$},[]);(0,bl.useEffect)(()=>(n.addTo(r.getMap()),()=>{n.remove()}),[]);let{longitude:o,latitude:c,offset:f,style:_,draggable:w=!1,popup:C=null,rotation:R=0,rotationAlignment:N=\"auto\",pitchAlignment:j=\"auto\"}=e;return(0,bl.useEffect)(()=>{Jl(n.getElement(),_)},[_]),(0,bl.useImperativeHandle)(t,()=>n,[]),(n.getLngLat().lng!==o||n.getLngLat().lat!==c)&&n.setLngLat([o,c]),f&&!I8(n.getOffset(),f)&&n.setOffset(f),n.isDraggable()!==w&&n.setDraggable(w),n.getRotation()!==R&&n.setRotation(R),n.getRotationAlignment()!==N&&n.setRotationAlignment(N),n.getPitchAlignment()!==j&&n.setPitchAlignment(j),n.getPopup()!==C&&n.setPopup(C),(0,B8.createPortal)(e.children,n.getElement())}var det=(0,bl.memo)((0,bl.forwardRef)(fet));var z8=ki(bM()),$a=ki(Ji());function F8(e){return new Set(e?e.trim().split(/\\s+/):[])}function pet(e,t){let{map:r,mapLib:i}=(0,$a.useContext)(Rf),s=(0,$a.useMemo)(()=>document.createElement(\"div\"),[]),n=(0,$a.useRef)({props:e});n.current.props=e;let o=(0,$a.useMemo)(()=>{let c={...e},f=new i.Popup(c);return f.setLngLat([e.longitude,e.latitude]),f.once(\"open\",_=>{var w,C;(C=(w=n.current.props).onOpen)===null||C===void 0||C.call(w,_)}),f},[]);if((0,$a.useEffect)(()=>{let c=f=>{var _,w;(w=(_=n.current.props).onClose)===null||w===void 0||w.call(_,f)};return o.on(\"close\",c),o.setDOMContent(s).addTo(r.getMap()),()=>{o.off(\"close\",c),o.isOpen()&&o.remove()}},[]),(0,$a.useEffect)(()=>{Jl(o.getElement(),e.style)},[e.style]),(0,$a.useImperativeHandle)(t,()=>o,[]),o.isOpen()&&((o.getLngLat().lng!==e.longitude||o.getLngLat().lat!==e.latitude)&&o.setLngLat([e.longitude,e.latitude]),e.offset&&!Kl(o.options.offset,e.offset)&&o.setOffset(e.offset),(o.options.anchor!==e.anchor||o.options.maxWidth!==e.maxWidth)&&(o.options.anchor=e.anchor,o.setMaxWidth(e.maxWidth)),o.options.className!==e.className)){let c=F8(o.options.className),f=F8(e.className);for(let _ of c)f.has(_)||o.removeClassName(_);for(let _ of f)c.has(_)||o.addClassName(_);o.options.className=e.className}return(0,z8.createPortal)(e.children,s)}var Aet=(0,$a.memo)((0,$a.forwardRef)(pet));var TM=ki(Ji());var J_=ki(Ji());function met(e,t,r,i){let s=(0,J_.useContext)(Rf),n=(0,J_.useMemo)(()=>e(s),[]);return(0,J_.useEffect)(()=>{let o=i||r||t,c=typeof t==\"function\"&&typeof r==\"function\"?t:null,f=typeof r==\"function\"?r:typeof t==\"function\"?t:null,{map:_}=s;return _.hasControl(n)||(_.addControl(n,o?.position),c&&c(s)),()=>{f&&f(s),_.hasControl(n)&&_.removeControl(n)}},[]),n}var Lh=met;function get(e){let t=Lh(({mapLib:r})=>new r.AttributionControl(e),{position:e.position});return(0,TM.useEffect)(()=>{Jl(t._container,e.style)},[e.style]),null}var _et=(0,TM.memo)(get);var MM=ki(Ji());function yet(e){let t=Lh(({mapLib:r})=>new r.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return(0,MM.useEffect)(()=>{Jl(t._controlContainer,e.style)},[e.style]),null}var vet=(0,MM.memo)(yet);var Df=ki(Ji());function xet(e,t){let r=(0,Df.useRef)({props:e}),i=Lh(({mapLib:s})=>{let n=new s.GeolocateControl(e),o=n._setupUI;return n._setupUI=c=>{n._container.hasChildNodes()||o(c)},n.on(\"geolocate\",c=>{var f,_;(_=(f=r.current.props).onGeolocate)===null||_===void 0||_.call(f,c)}),n.on(\"error\",c=>{var f,_;(_=(f=r.current.props).onError)===null||_===void 0||_.call(f,c)}),n.on(\"outofmaxbounds\",c=>{var f,_;(_=(f=r.current.props).onOutOfMaxBounds)===null||_===void 0||_.call(f,c)}),n.on(\"trackuserlocationstart\",c=>{var f,_;(_=(f=r.current.props).onTrackUserLocationStart)===null||_===void 0||_.call(f,c)}),n.on(\"trackuserlocationend\",c=>{var f,_;(_=(f=r.current.props).onTrackUserLocationEnd)===null||_===void 0||_.call(f,c)}),n},{position:e.position});return r.current.props=e,(0,Df.useImperativeHandle)(t,()=>i,[]),(0,Df.useEffect)(()=>{Jl(i._container,e.style)},[e.style]),null}var bet=(0,Df.memo)((0,Df.forwardRef)(xet));var EM=ki(Ji());function wet(e){let t=Lh(({mapLib:r})=>new r.NavigationControl(e),{position:e.position});return(0,EM.useEffect)(()=>{Jl(t._container,e.style)},[e.style]),null}var Tet=(0,EM.memo)(wet);var ty=ki(Ji());function Met(e){let t=Lh(({mapLib:n})=>new n.ScaleControl(e),{position:e.position}),r=(0,ty.useRef)(e),i=r.current;r.current=e;let{style:s}=e;return e.maxWidth!==void 0&&e.maxWidth!==i.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==i.unit&&t.setUnit(e.unit),(0,ty.useEffect)(()=>{Jl(t._container,s)},[s]),null}var Eet=(0,ty.memo)(Met);var N1=ki(Ji());var Iet=ki(Ji()),U1=ki(Ji()),Cet=ki(Ji());var Let=Promise.resolve().then(()=>ki(U8())),ket=V8.forwardRef(function(t,r){return n4(t,r,Let)});var j8=ket;var Mo=ki(Ji());function OA(e,t){if(!e)throw new Error(t||\"loader assertion failed.\")}var Of={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document},Ret=Of.self||Of.window||Of.global||{},Det=Of.window||Of.self||Of.global||{},Oet=Of.global||Of.self||Of.window||{},Bet=Of.document||{};var C0=!!(typeof process!=\"object\"||String(process)!==\"[object process]\"||process.browser);var G8=typeof process<\"u\"&&process.version&&/v([0-9]*)/.exec(process.version),Fet=G8&&parseFloat(G8[1])||0;var W8=\"3.4.14\";function Xa(e,t){if(!e)throw new Error(t||\"loaders.gl assertion failed.\")}var Bf={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document},Zbt=Bf.self||Bf.window||Bf.global||{},Ybt=Bf.window||Bf.self||Bf.global||{},Qbt=Bf.global||Bf.self||Bf.window||{},$bt=Bf.document||{};var L0=typeof process!=\"object\"||String(process)!==\"[object process]\"||process.browser;var q8=typeof window<\"u\"&&typeof window.orientation<\"u\",H8=typeof process<\"u\"&&process.version&&/v([0-9]*)/.exec(process.version),Xbt=H8&&parseFloat(H8[1])||0;function BA(e){\"@babel/helpers - typeof\";return BA=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},BA(e)}function a4(e,t){if(BA(e)!=\"object\"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||\"default\");if(BA(i)!=\"object\")return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(t===\"string\"?String:Number)(e)}function l4(e){var t=a4(e,\"string\");return BA(t)==\"symbol\"?t:String(t)}function G(e,t,r){return t=l4(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var V1=class{constructor(t,r){G(this,\"name\",void 0),G(this,\"workerThread\",void 0),G(this,\"isRunning\",!0),G(this,\"result\",void 0),G(this,\"_resolve\",()=>{}),G(this,\"_reject\",()=>{}),this.name=t,this.workerThread=r,this.result=new Promise((i,s)=>{this._resolve=i,this._reject=s})}postMessage(t,r){this.workerThread.postMessage({source:\"loaders.gl\",type:t,payload:r})}done(t){Xa(this.isRunning),this.isRunning=!1,this._resolve(t)}error(t){Xa(this.isRunning),this.isRunning=!1,this._reject(t)}};var ey=class{terminate(){}};var c4=new Map;function Z8(e){Xa(e.source&&!e.url||!e.source&&e.url);let t=c4.get(e.source||e.url);return t||(e.url&&(t=zet(e.url),c4.set(e.url,t)),e.source&&(t=Y8(e.source),c4.set(e.source,t))),Xa(t),t}function zet(e){if(!e.startsWith(\"http\"))return e;let t=Net(e);return Y8(t)}function Y8(e){let t=new Blob([e],{type:\"application/javascript\"});return URL.createObjectURL(t)}function Net(e){return`try {\n importScripts('`.concat(e,`');\n} catch (error) {\n console.error(error);\n throw error;\n}`)}function u4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=arguments.length>2?arguments[2]:void 0,i=r||new Set;if(e){if(Q8(e))i.add(e);else if(Q8(e.buffer))i.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(t&&typeof e==\"object\")for(let s in e)u4(e[s],t,i)}}return r===void 0?Array.from(i):[]}function Q8(e){return e?e instanceof ArrayBuffer||typeof MessagePort<\"u\"&&e instanceof MessagePort||typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap||typeof OffscreenCanvas<\"u\"&&e instanceof OffscreenCanvas:!1}var h4=()=>{},FA=class{static isSupported(){return typeof Worker<\"u\"&&L0||typeof ey<\"u\"&&!L0}constructor(t){G(this,\"name\",void 0),G(this,\"source\",void 0),G(this,\"url\",void 0),G(this,\"terminated\",!1),G(this,\"worker\",void 0),G(this,\"onMessage\",void 0),G(this,\"onError\",void 0),G(this,\"_loadableURL\",\"\");let{name:r,source:i,url:s}=t;Xa(i||s),this.name=r,this.source=i,this.url=s,this.onMessage=h4,this.onError=n=>console.log(n),this.worker=L0?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=h4,this.onError=h4,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(t,r){r=r||u4(t),this.worker.postMessage(t,r)}_getErrorFromErrorEvent(t){let r=\"Failed to load \";return r+=\"worker \".concat(this.name,\" from \").concat(this.url,\". \"),t.message&&(r+=\"\".concat(t.message,\" in \")),t.lineno&&(r+=\":\".concat(t.lineno,\":\").concat(t.colno)),new Error(r)}_createBrowserWorker(){this._loadableURL=Z8({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error(\"No data received\"))},t.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},t.onmessageerror=r=>console.error(r),t}_createNodeWorker(){let t;if(this.url){let i=this.url.includes(\":/\")||this.url.startsWith(\"/\")?this.url:\"./\".concat(this.url);t=new ey(i,{eval:!1})}else if(this.source)t=new ey(this.source,{eval:!0});else throw new Error(\"no worker\");return t.on(\"message\",r=>{this.onMessage(r)}),t.on(\"error\",r=>{this.onError(r)}),t.on(\"exit\",r=>{}),t}};var j1=class{static isSupported(){return FA.isSupported()}constructor(t){G(this,\"name\",\"unnamed\"),G(this,\"source\",void 0),G(this,\"url\",void 0),G(this,\"maxConcurrency\",1),G(this,\"maxMobileConcurrency\",1),G(this,\"onDebug\",()=>{}),G(this,\"reuseWorkers\",!0),G(this,\"props\",{}),G(this,\"jobQueue\",[]),G(this,\"idleQueue\",[]),G(this,\"count\",0),G(this,\"isDestroyed\",!1),this.source=t.source,this.url=t.url,this.setProps(t)}destroy(){this.idleQueue.forEach(t=>t.destroy()),this.isDestroyed=!0}setProps(t){this.props={...this.props,...t},t.name!==void 0&&(this.name=t.name),t.maxConcurrency!==void 0&&(this.maxConcurrency=t.maxConcurrency),t.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=t.maxMobileConcurrency),t.reuseWorkers!==void 0&&(this.reuseWorkers=t.reuseWorkers),t.onDebug!==void 0&&(this.onDebug=t.onDebug)}async startJob(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(n,o,c)=>n.done(c),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(n,o)=>n.error(o),s=new Promise(n=>(this.jobQueue.push({name:t,onMessage:r,onError:i,onStart:n}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:\"Starting job\",name:r.name,workerThread:t,backlog:this.jobQueue.length});let i=new V1(r.name,t);t.onMessage=s=>r.onMessage(i,s.type,s.payload),t.onError=s=>r.onError(i,s),r.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(t.destroy(),this.count--):this.idleQueue.push(t),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}},zA=class e{static isSupported(){return FA.isSupported()}static getWorkerFarm(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e._workerFarm=e._workerFarm||new e({}),e._workerFarm.setProps(t),e._workerFarm}constructor(t){G(this,\"props\",void 0),G(this,\"workerPools\",new Map),this.props={...Uet},this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props={...this.props,...t};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:r,source:i,url:s}=t,n=this.workerPools.get(r);return n||(n=new j1({name:r,source:i,url:s}),n.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}};G(zA,\"_workerFarm\",void 0);var Vet=\"latest\";function f4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t[e.id]||{},i=\"\".concat(e.id,\"-worker.js\"),s=r.workerUrl;if(!s&&e.id===\"compression\"&&(s=t.workerUrl),t._workerType===\"test\"&&(s=\"modules/\".concat(e.module,\"/dist/\").concat(i)),!s){let n=e.version;n===\"latest\"&&(n=Vet);let o=n?\"@\".concat(n):\"\";s=\"https://unpkg.com/@loaders.gl/\".concat(e.module).concat(o,\"/dist/\").concat(i)}return Xa(s),s}function d4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:W8;Xa(e,\"no worker provided\");let r=e.version;return!(!t||!r)}function p4(e,t){return!zA.isSupported()||!L0&&!(t!=null&&t._nodeWorkers)?!1:e.worker&&t?.worker}async function A4(e,t,r,i,s){let n=e.id,o=f4(e,r),f=zA.getWorkerFarm(r).getWorkerPool({name:n,url:o});r=JSON.parse(JSON.stringify(r)),i=JSON.parse(JSON.stringify(i||{}));let _=await f.startJob(\"process-on-worker\",jet.bind(null,s));return _.postMessage(\"process\",{input:t,options:r,context:i}),await(await _.result).result}async function jet(e,t,r,i){switch(r){case\"done\":t.done(i);break;case\"error\":t.error(new Error(i.error));break;case\"process\":let{id:s,input:n,options:o}=i;try{let c=await e(n,o);t.postMessage(\"done\",{id:s,result:c})}catch(c){let f=c instanceof Error?c.message:\"unknown error\";t.postMessage(\"error\",{id:s,error:f})}break;default:console.warn(\"parse-with-worker unknown message \".concat(r))}}function m4(e,t,r){if(r=r||e.byteLength,e.byteLengthc instanceof ArrayBuffer?new Uint8Array(c):c),s=i.reduce((c,f)=>c+f.byteLength,0),n=new Uint8Array(s),o=0;for(let c of i)n.set(c,o),o+=c.byteLength;return n.buffer}async function _4(e){let t=[];for await(let r of e)t.push(r);return g4(...t)}function G1(){let e;if(typeof window<\"u\"&&window.performance)e=window.performance.now();else if(typeof process<\"u\"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var k0=class{constructor(t,r){this.name=void 0,this.type=void 0,this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=G1(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(G1()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var ry=class{constructor(t){this.id=void 0,this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"count\";return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let r of Object.values(this.stats))t(r)}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(r=>this._getOrCreate(r))}_getOrCreate(t){let{name:r,type:i}=t,s=this.stats[r];return s||(t instanceof k0?s=t:s=new k0(r,i),this.stats[r]=s),s}};var Get=\"Queued Requests\",Wet=\"Active Requests\",Het=\"Cancelled Requests\",qet=\"Queued Requests Ever\",Zet=\"Active Requests Ever\",Yet={id:\"request-scheduler\",throttleRequests:!0,maxRequests:6},iy=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};G(this,\"props\",void 0),G(this,\"stats\",void 0),G(this,\"activeRequestCount\",0),G(this,\"requestQueue\",[]),G(this,\"requestMap\",new Map),G(this,\"deferredUpdate\",null),this.props={...Yet,...t},this.stats=new ry({id:this.props.id}),this.stats.get(Get),this.stats.get(Wet),this.stats.get(Het),this.stats.get(qet),this.stats.get(Zet)}scheduleRequest(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:()=>0;if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let i={handle:t,priority:0,getPriority:r},s=new Promise(n=>(i.resolve=n,i));return this.requestQueue.push(i),this.requestMap.set(t,s),this._issueNewRequests(),s}_issueRequest(t){let{handle:r,resolve:i}=t,s=!1,n=()=>{s||(s=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,i?i({done:n}):Promise.resolve({done:n})}_issueNewRequests(){this.deferredUpdate||(this.deferredUpdate=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequestsAsync(){this.deferredUpdate=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let r=0;rr.priority-i.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var Qet=\"\",$8={};function y4(e){for(let t in $8)if(e.startsWith(t)){let r=$8[t];e=e.replace(t,r)}return!e.startsWith(\"http://\")&&!e.startsWith(\"https://\")&&(e=\"\".concat(Qet).concat(e)),e}function X8(e){return e&&typeof e==\"object\"&&e.isBuffer}function PM(e){if(X8(e))return e;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e==\"string\"){let t=e;return new TextEncoder().encode(t).buffer}if(e&&typeof e==\"object\"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error(\"toArrayBuffer\")}var R0={};dA(R0,{dirname:()=>Xet,filename:()=>$et,join:()=>Ket,resolve:()=>Jet});function K8(){var e;if(typeof process<\"u\"&&typeof process.cwd<\"u\")return process.cwd();let t=(e=window.location)===null||e===void 0?void 0:e.pathname;return t?.slice(0,t.lastIndexOf(\"/\")+1)||\"\"}function $et(e){let t=e?e.lastIndexOf(\"/\"):-1;return t>=0?e.substr(t+1):\"\"}function Xet(e){let t=e?e.lastIndexOf(\"/\"):-1;return t>=0?e.substr(0,t):\"\"}function Ket(){for(var e=arguments.length,t=new Array(e),r=0;r(n&&(s=s.replace(new RegExp(\"^\".concat(i)),\"\")),n!==t.length-1&&(s=s.replace(new RegExp(\"\".concat(i,\"$\")),\"\")),s)),t.join(i)}function Jet(){let e=[];for(let s=0;s=-1&&!r;s--){let n;s>=0?n=e[s]:(i===void 0&&(i=K8()),n=i),n.length!==0&&(t=\"\".concat(n,\"/\").concat(t),r=n.charCodeAt(0)===W1)}return t=trt(t,!r),r?\"/\".concat(t):t.length>0?t:\".\"}var W1=47,v4=46;function trt(e,t){let r=\"\",i=-1,s=0,n,o=!1;for(let c=0;c<=e.length;++c){if(c2){let f=r.length-1,_=f;for(;_>=0&&r.charCodeAt(_)!==W1;--_);if(_!==f){r=_===-1?\"\":r.slice(0,_),i=c,s=0,o=!1;continue}}else if(r.length===2||r.length===1){r=\"\",i=c,s=0,o=!1;continue}}t&&(r.length>0?r+=\"/..\":r=\"..\",o=!0)}else{let f=e.slice(i+1,c);r.length>0?r+=\"/\".concat(f):r=f,o=!1}i=c,s=0}else n===v4&&s!==-1?++s:s=-1}return r}var ert=e=>typeof e==\"boolean\",H1=e=>typeof e==\"function\",D0=e=>e!==null&&typeof e==\"object\",x4=e=>D0(e)&&e.constructor==={}.constructor;var J8=e=>e&&typeof e[Symbol.iterator]==\"function\",tU=e=>e&&typeof e[Symbol.asyncIterator]==\"function\";var Eu=e=>typeof Response<\"u\"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json;var Pu=e=>typeof Blob<\"u\"&&e instanceof Blob,eU=e=>e&&typeof e==\"object\"&&e.isBuffer;var rrt=e=>typeof ReadableStream<\"u\"&&e instanceof ReadableStream||D0(e)&&H1(e.tee)&&H1(e.cancel)&&H1(e.getReader);var irt=e=>D0(e)&&H1(e.read)&&H1(e.pipe)&&ert(e.readable),IM=e=>rrt(e)||irt(e);var nrt=/^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/,srt=/^([-\\w.]+\\/[-\\w.+]+)/;function rU(e){let t=srt.exec(e);return t?t[1]:e}function b4(e){let t=nrt.exec(e);return t?t[1]:\"\"}var iU=/\\?.*/;function nU(e){let t=e.match(iU);return t&&t[0]}function ny(e){return e.replace(iU,\"\")}function O0(e){return Eu(e)?e.url:Pu(e)?e.name||\"\":typeof e==\"string\"?e:\"\"}function q1(e){if(Eu(e)){let t=e,r=t.headers.get(\"content-type\")||\"\",i=ny(t.url);return rU(r)||b4(i)}return Pu(e)?e.type||\"\":typeof e==\"string\"?b4(e):\"\"}function sU(e){return Eu(e)?e.headers[\"content-length\"]||-1:Pu(e)?e.size:typeof e==\"string\"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function CM(e){if(Eu(e))return e;let t={},r=sU(e);r>=0&&(t[\"content-length\"]=String(r));let i=O0(e),s=q1(e);s&&(t[\"content-type\"]=s);let n=await art(e);n&&(t[\"x-first-bytes\"]=n),typeof e==\"string\"&&(e=new TextEncoder().encode(e));let o=new Response(e,{headers:t});return Object.defineProperty(o,\"url\",{value:i}),o}async function oU(e){if(!e.ok){let t=await ort(e);throw new Error(t)}}async function ort(e){let t=\"Failed to fetch resource \".concat(e.url,\" (\").concat(e.status,\"): \");try{let r=e.headers.get(\"Content-Type\"),i=e.statusText;r.includes(\"application/json\")&&(i+=\" \".concat(await e.text())),t+=i,t=t.length>60?\"\".concat(t.slice(0,60),\"...\"):t}catch{}return t}async function art(e){if(typeof e==\"string\")return\"data:,\".concat(e.slice(0,5));if(e instanceof Blob){let r=e.slice(0,5);return await new Promise(i=>{let s=new FileReader;s.onload=n=>{var o;return i(n==null||(o=n.target)===null||o===void 0?void 0:o.result)},s.readAsDataURL(r)})}if(e instanceof ArrayBuffer){let r=e.slice(0,5),i=lrt(r);return\"data:base64,\".concat(i)}return null}function lrt(e){let t=\"\",r=new Uint8Array(e);for(let i=0;i=0)}function kh(){return!(typeof process==\"object\"&&String(process)===\"[object process]\"&&!process.browser)||S4()}var crt=globalThis.self||globalThis.window||globalThis.global,sy=globalThis.window||globalThis.self||globalThis.global,urt=globalThis.document||{},B0=globalThis.process||{},hrt=globalThis.console,j2t=globalThis.navigator||{};var LM=typeof __VERSION__<\"u\"?__VERSION__:\"untranspiled source\",H2t=kh();function frt(e){try{let t=window[e],r=\"__storage_test__\";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var kM=class{constructor(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"sessionStorage\";this.storage=void 0,this.id=void 0,this.config=void 0,this.storage=frt(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}};function aU(e){let t;return e<10?t=\"\".concat(e.toFixed(2),\"ms\"):e<100?t=\"\".concat(e.toFixed(1),\"ms\"):e<1e3?t=\"\".concat(e.toFixed(0),\"ms\"):t=\"\".concat((e/1e3).toFixed(2),\"s\"),t}function lU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,r=Math.max(t-e.length,0);return\"\".concat(\" \".repeat(r)).concat(e)}function RM(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,s=e.src.replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\");e.width>i&&(r=Math.min(r,i/e.width));let n=e.width*r,o=e.height*r,c=[\"font-size:1px;\",\"padding:\".concat(Math.floor(o/2),\"px \").concat(Math.floor(n/2),\"px;\"),\"line-height:\".concat(o,\"px;\"),\"background:url(\".concat(s,\");\"),\"background-size:\".concat(n,\"px \").concat(o,\"px;\"),\"color:transparent;\"].join(\"\");return[\"\".concat(t,\" %c+\"),c]}var DM;(function(e){e[e.BLACK=30]=\"BLACK\",e[e.RED=31]=\"RED\",e[e.GREEN=32]=\"GREEN\",e[e.YELLOW=33]=\"YELLOW\",e[e.BLUE=34]=\"BLUE\",e[e.MAGENTA=35]=\"MAGENTA\",e[e.CYAN=36]=\"CYAN\",e[e.WHITE=37]=\"WHITE\",e[e.BRIGHT_BLACK=90]=\"BRIGHT_BLACK\",e[e.BRIGHT_RED=91]=\"BRIGHT_RED\",e[e.BRIGHT_GREEN=92]=\"BRIGHT_GREEN\",e[e.BRIGHT_YELLOW=93]=\"BRIGHT_YELLOW\",e[e.BRIGHT_BLUE=94]=\"BRIGHT_BLUE\",e[e.BRIGHT_MAGENTA=95]=\"BRIGHT_MAGENTA\",e[e.BRIGHT_CYAN=96]=\"BRIGHT_CYAN\",e[e.BRIGHT_WHITE=97]=\"BRIGHT_WHITE\"})(DM||(DM={}));var drt=10;function cU(e){return typeof e!=\"string\"?e:(e=e.toUpperCase(),DM[e]||DM.WHITE)}function uU(e,t,r){if(!kh&&typeof e==\"string\"){if(t){let i=cU(t);e=\"\\x1B[\".concat(i,\"m\").concat(e,\"\\x1B[39m\")}if(r){let i=cU(r);e=\"\\x1B[\".concat(i+drt,\"m\").concat(e,\"\\x1B[49m\")}}return e}function hU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[\"constructor\"],r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r),s=e;for(let n of i){let o=s[n];typeof o==\"function\"&&(t.find(c=>n===c)||(s[n]=o.bind(e)))}}function oy(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function F0(){let e;if(kh()&&sy.performance){var t,r;e=sy===null||sy===void 0||(t=sy.performance)===null||t===void 0||(r=t.now)===null||r===void 0?void 0:r.call(t)}else if(\"hrtime\"in B0){var i;let s=B0===null||B0===void 0||(i=B0.hrtime)===null||i===void 0?void 0:i.call(B0);e=s[0]*1e3+s[1]/1e6}else e=Date.now();return e}var ay={debug:kh()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},prt={enabled:!0,level:0};function Iu(){}var fU={},dU={once:!0},Ff=class{constructor(){let{id:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:\"\"};this.id=void 0,this.VERSION=LM,this._startTs=F0(),this._deltaTs=F0(),this._storage=void 0,this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=t,this.userData={},this._storage=new kM(\"__probe-\".concat(this.id,\"__\"),prt),this.timeStamp(\"\".concat(this.id,\" started\")),hU(this),Object.seal(this)}set level(t){this.setLevel(t)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((F0()-this._startTs).toPrecision(10))}getDelta(){return Number((F0()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:t}),this}setLevel(t){return this._storage.setConfiguration({level:t}),this}get(t){return this._storage.config[t]}set(t,r){this._storage.setConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){oy(t,r)}warn(t){return this._getLogFunction(0,t,ay.warn,arguments,dU)}error(t){return this._getLogFunction(0,t,ay.error,arguments)}deprecated(t,r){return this.warn(\"`\".concat(t,\"` is deprecated and will be removed in a later version. Use `\").concat(r,\"` instead\"))}removed(t,r){return this.error(\"`\".concat(t,\"` has been removed. Use `\").concat(r,\"` instead\"))}probe(t,r){return this._getLogFunction(t,r,ay.log,arguments,{time:!0,once:!0})}log(t,r){return this._getLogFunction(t,r,ay.debug,arguments)}info(t,r){return this._getLogFunction(t,r,console.info,arguments)}once(t,r){return this._getLogFunction(t,r,ay.debug||ay.info,arguments,dU)}table(t,r,i){return r?this._getLogFunction(t,r,console.table||Iu,i&&[i],{tag:_rt(r)}):Iu}image(t){let{logLevel:r,priority:i,image:s,message:n=\"\",scale:o=1}=t;return this._shouldLog(r||i)?kh()?grt({image:s,message:n,scale:o}):mrt({image:s,message:n,scale:o}):Iu}time(t,r){return this._getLogFunction(t,r,console.time?console.time:console.info)}timeEnd(t,r){return this._getLogFunction(t,r,console.timeEnd?console.timeEnd:console.info)}timeStamp(t,r){return this._getLogFunction(t,r,console.timeStamp||Iu)}group(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},s=pU({logLevel:t,message:r,opts:i}),{collapsed:n}=i;return s.method=(n?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._getLogFunction(t,\"\",console.groupEnd||Iu)}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&this.getLevel()>=AU(t)}_getLogFunction(t,r,i,s,n){if(this._shouldLog(t)){n=pU({logLevel:t,message:r,args:s,opts:n}),i=i||n.method,oy(i),n.total=this.getTotal(),n.delta=this.getDelta(),this._deltaTs=F0();let o=n.tag||n.message;if(n.once&&o)if(!fU[o])fU[o]=F0();else return Iu;return r=Art(this.id,n.message,n),i.bind(console,r,...n.args)}return Iu}};Ff.VERSION=LM;function AU(e){if(!e)return 0;let t;switch(typeof e){case\"number\":t=e;break;case\"object\":t=e.logLevel||e.priority||0;break;default:return 0}return oy(Number.isFinite(t)&&t>=0),t}function pU(e){let{logLevel:t,message:r}=e;e.logLevel=AU(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case\"string\":case\"function\":r!==void 0&&i.unshift(r),e.message=t;break;case\"object\":Object.assign(e,t);break;default:}typeof e.message==\"function\"&&(e.message=e.message());let s=typeof e.message;return oy(s===\"string\"||s===\"object\"),Object.assign(e,{args:i},e.opts)}function Art(e,t,r){if(typeof t==\"string\"){let i=r.time?lU(aU(r.total)):\"\";t=r.time?\"\".concat(e,\": \").concat(i,\" \").concat(t):\"\".concat(e,\": \").concat(t),t=uU(t,r.color,r.background)}return t}function mrt(e){let{image:t,message:r=\"\",scale:i=1}=e;return console.warn(\"removed\"),Iu}function grt(e){let{image:t,message:r=\"\",scale:i=1}=e;if(typeof t==\"string\"){let n=new Image;return n.onload=()=>{let o=RM(n,r,i);console.log(...o)},n.src=t,Iu}let s=t.nodeName||\"\";if(s.toLowerCase()===\"img\")return console.log(...RM(t,r,i)),Iu;if(s.toLowerCase()===\"canvas\"){let n=new Image;return n.onload=()=>console.log(...RM(n,r,i)),n.src=t.toDataURL(),Iu}return Iu}function _rt(e){for(let t in e)for(let r in e[t])return r||\"untitled\";return\"empty\"}var mSt=new Ff({id:\"@probe.gl/log\"});var T4=new Ff({id:\"loaders.gl\"}),OM=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},BM=class{constructor(){G(this,\"console\",void 0),this.console=console}log(){for(var t=arguments.length,r=new Array(t),i=0;i{let e=E4();return e.globalOptions=e.globalOptions||{...M4},e.globalOptions};function yU(e,t,r,i){return r=r||[],r=Array.isArray(r)?r:[r],yrt(e,r),xrt(t,e,i)}function yrt(e,t){gU(e,null,M4,mU,t);for(let r of t){let i=e&&e[r.id]||{},s=r.options&&r.options[r.id]||{},n=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};gU(i,r.id,s,n,t)}}function gU(e,t,r,i,s){let n=t||\"Top level\",o=t?\"\".concat(t,\".\"):\"\";for(let c in e){let f=!t&&D0(e[c]),_=c===\"baseUri\"&&!t,w=c===\"workerUrl\"&&t;if(!(c in r)&&!_&&!w){if(c in i)T4.warn(\"\".concat(n,\" loader option '\").concat(o).concat(c,\"' no longer supported, use '\").concat(i[c],\"'\"))();else if(!f){let C=vrt(c,s);T4.warn(\"\".concat(n,\" loader option '\").concat(o).concat(c,\"' not recognized. \").concat(C))()}}}}function vrt(e,t){let r=e.toLowerCase(),i=\"\";for(let s of t)for(let n in s.options){if(e===n)return\"Did you mean '\".concat(s.id,\".\").concat(n,\"'?\");let o=n.toLowerCase();(r.startsWith(o)||o.startsWith(r))&&(i=i||\"Did you mean '\".concat(s.id,\".\").concat(n,\"'?\"))}return i}function xrt(e,t,r){let s={...e.options||{}};return brt(s,r),s.log===null&&(s.log=new OM),_U(s,P4()),_U(s,t),s}function _U(e,t){for(let r in t)if(r in t){let i=t[r];x4(i)&&x4(e[r])?e[r]={...e[r],...t[r]}:e[r]=t[r]}}function brt(e,t){t&&!(\"baseUri\"in e)&&(e.baseUri=t)}function Z1(e){var t;return e?(Array.isArray(e)&&(e=e[0]),Array.isArray((t=e)===null||t===void 0?void 0:t.extensions)):!1}function Y1(e){var t,r;OA(e,\"null loader\"),OA(Z1(e),\"invalid loader\");let i;return Array.isArray(e)&&(i=e[1],e=e[0],e={...e,options:{...e.options,...i}}),((t=e)!==null&&t!==void 0&&t.parseTextSync||(r=e)!==null&&r!==void 0&&r.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var vU=()=>{let e=E4();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function I4(e){let t=vU();e=Array.isArray(e)?e:[e];for(let r of e){let i=Y1(r);t.find(s=>i===s)||t.unshift(i)}}function xU(){return vU()}var bU=new Ff({id:\"loaders.gl\"});var wrt=/\\.([^.]+)$/;async function TU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(!MU(e))return null;let s=wU(e,t,{...r,nothrow:!0},i);if(s)return s;if(Pu(e)&&(e=await e.slice(0,10).arrayBuffer(),s=wU(e,t,r,i)),!s&&!(r!=null&&r.nothrow))throw new Error(EU(e));return s}function wU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(!MU(e))return null;if(t&&!Array.isArray(t))return Y1(t);let s=[];t&&(s=s.concat(t)),r!=null&&r.ignoreRegisteredLoaders||s.push(...xU()),Trt(s);let n=Srt(e,s,r,i);if(!n&&!(r!=null&&r.nothrow))throw new Error(EU(e));return n}function Srt(e,t,r,i){let s=O0(e),n=q1(e),o=ny(s)||i?.url,c=null,f=\"\";if(r!=null&&r.mimeType&&(c=C4(t,r?.mimeType),f=\"match forced by supplied MIME type \".concat(r?.mimeType)),c=c||Mrt(t,o),f=f||(c?\"matched url \".concat(o):\"\"),c=c||C4(t,n),f=f||(c?\"matched MIME type \".concat(n):\"\"),c=c||Prt(t,e),f=f||(c?\"matched initial data \".concat(PU(e)):\"\"),c=c||C4(t,r?.fallbackMimeType),f=f||(c?\"matched fallback MIME type \".concat(n):\"\"),f){var _;bU.log(1,\"selectLoader selected \".concat((_=c)===null||_===void 0?void 0:_.name,\": \").concat(f,\".\"))}return c}function MU(e){return!(e instanceof Response&&e.status===204)}function EU(e){let t=O0(e),r=q1(e),i=\"No valid loader found (\";i+=t?\"\".concat(R0.filename(t),\", \"):\"no url provided, \",i+=\"MIME type: \".concat(r?'\"'.concat(r,'\"'):\"not provided\",\", \");let s=e?PU(e):\"\";return i+=s?' first bytes: \"'.concat(s,'\"'):\"first bytes: not available\",i+=\")\",i}function Trt(e){for(let t of e)Y1(t)}function Mrt(e,t){let r=t&&wrt.exec(t),i=r&&r[1];return i?Ert(e,i):null}function Ert(e,t){t=t.toLowerCase();for(let r of e)for(let i of r.extensions)if(i.toLowerCase()===t)return r;return null}function C4(e,t){for(let r of e)if(r.mimeTypes&&r.mimeTypes.includes(t)||t===\"application/x.\".concat(r.id))return r;return null}function Prt(e,t){if(!t)return null;for(let r of e)if(typeof t==\"string\"){if(Irt(t,r))return r}else if(ArrayBuffer.isView(t)){if(SU(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer&&SU(t,0,r))return r;return null}function Irt(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(i=>e.startsWith(i))}function SU(e,t,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>Crt(e,t,r,s))}function Crt(e,t,r,i){if(i instanceof ArrayBuffer)return m4(i,e,i.byteLength);switch(typeof i){case\"function\":return i(e,r);case\"string\":let s=L4(e,t,i.length);return i===s;default:return!1}}function PU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5;return typeof e==\"string\"?e.slice(0,t):ArrayBuffer.isView(e)?L4(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?L4(e,0,t):\"\"}function L4(e,t,r){if(e.byteLength1&&arguments[1]!==void 0?arguments[1]:{};return function*(){let{chunkSize:r=262144}=t,i=0;for(;iw4(s,i):t!=null&&t.fetch?t?.fetch:w4}function OU(e,t,r){if(r)return r;let i={fetch:FM(t,e),...e};if(i.url){let s=ny(i.url);i.baseUrl=s,i.queryString=nU(i.url),i.filename=R0.filename(s),i.baseUrl=R0.dirname(s)}return Array.isArray(i.loaders)||(i.loaders=null),i}function BU(e,t){if(!t&&e&&!Array.isArray(e))return e;let r;if(e&&(r=Array.isArray(e)?e:[e]),t&&t.loaders){let i=Array.isArray(t.loaders)?t.loaders:[t.loaders];r=r?[...r,...i]:i}return r&&r.length?r:null}async function zM(e,t,r,i){Xa(!i||typeof i==\"object\"),t&&!Array.isArray(t)&&!Z1(t)&&(i=void 0,r=t,t=void 0),e=await e,r=r||{};let s=O0(e),o=BU(t,i),c=await TU(e,o,r);return c?(r=yU(r,c,o,s),i=OU({url:s,parse:zM,loaders:o},r,i||null),await Drt(c,e,r,i)):null}async function Drt(e,t,r,i){if(d4(e),Eu(t)){let s=t,{ok:n,redirected:o,status:c,statusText:f,type:_,url:w}=s,C=Object.fromEntries(s.headers.entries());i.response={headers:C,ok:n,redirected:o,status:c,statusText:f,type:_,url:w}}if(t=await DU(t,e,r),e.parseTextSync&&typeof t==\"string\")return r.dataType=\"text\",e.parseTextSync(t,r,i,e);if(p4(e,r))return await A4(e,t,r,i,zM);if(e.parseText&&typeof t==\"string\")return await e.parseText(t,r,i,e);if(e.parse)return await e.parse(t,r,i,e);throw Xa(!e.parseSync),new Error(\"\".concat(e.id,\" loader - no parser found and worker is disabled\"))}async function NA(e,t,r,i){!Array.isArray(t)&&!Z1(t)&&(i=void 0,r=t,t=void 0);let s=FM(r),n=e;return typeof e==\"string\"&&(n=await s(e)),Pu(e)&&(n=await s(e)),await zM(n,t,r)}var FU=\"3.4.14\";var{_parseImageNode:Ort}=globalThis,R4=typeof Image<\"u\",D4=typeof ImageBitmap<\"u\",Brt=!!Ort,O4=C0?!0:Brt;function zU(e){switch(e){case\"auto\":return D4||R4||O4;case\"imagebitmap\":return D4;case\"image\":return R4;case\"data\":return O4;default:throw new Error(\"@loaders.gl/images: image \".concat(e,\" not supported in this environment\"))}}function NU(){if(D4)return\"imagebitmap\";if(R4)return\"image\";if(O4)return\"data\";throw new Error(\"Install '@loaders.gl/polyfills' to parse images under Node.js\")}function Frt(e){let t=zrt(e);if(!t)throw new Error(\"Not an image\");return t}function UU(e){switch(Frt(e)){case\"data\":return e;case\"image\":case\"imagebitmap\":let t=document.createElement(\"canvas\"),r=t.getContext(\"2d\");if(!r)throw new Error(\"getImageData\");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error(\"getImageData\")}}function zrt(e){return typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap?\"imagebitmap\":typeof Image<\"u\"&&e instanceof Image?\"image\":e&&typeof e==\"object\"&&e.data&&e.width&&e.height?\"data\":null}var Nrt=/^data:image\\/svg\\+xml/,Urt=/\\.svg((\\?|#).*)?$/;function NM(e){return e&&(Nrt.test(e)||Urt.test(e))}function VU(e,t){if(NM(t)){let i=new TextDecoder().decode(e);try{typeof unescape==\"function\"&&typeof encodeURIComponent==\"function\"&&(i=unescape(encodeURIComponent(i)))}catch(n){throw new Error(n.message)}return\"data:image/svg+xml;base64,\".concat(btoa(i))}return B4(e,t)}function B4(e,t){if(NM(t))throw new Error(\"SVG cannot be parsed directly to imagebitmap\");return new Blob([new Uint8Array(e)])}async function UM(e,t,r){let i=VU(e,r),s=self.URL||self.webkitURL,n=typeof i!=\"string\"&&s.createObjectURL(i);try{return await Vrt(n||i,t)}finally{n&&s.revokeObjectURL(n)}}async function Vrt(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((i,s)=>{try{r.onload=()=>i(r),r.onerror=n=>s(new Error(\"Could not load image \".concat(e,\": \").concat(n)))}catch(n){s(n)}})}var jrt={},jU=!0;async function GU(e,t,r){let i;NM(r)?i=await UM(e,t,r):i=B4(e,r);let s=t&&t.imagebitmap;return await Grt(i,s)}async function Grt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if((Wrt(t)||!jU)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),jU=!1}return await createImageBitmap(e)}function Wrt(e){for(let t in e||jrt)return!1;return!0}function WU(e){return!Yrt(e,\"ftyp\",4)||!(e[8]&96)?null:Hrt(e)}function Hrt(e){switch(qrt(e,8,12).replace(\"\\0\",\" \").trim()){case\"avif\":case\"avis\":return{extension:\"avif\",mimeType:\"image/avif\"};default:return null}}function qrt(e,t,r){return String.fromCharCode(...e.slice(t,r))}function Zrt(e){return[...e].map(t=>t.charCodeAt(0))}function Yrt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=Zrt(t);for(let s=0;s=24&&t.getUint32(0,zf)===2303741511?{mimeType:\"image/png\",width:t.getUint32(16,zf),height:t.getUint32(20,zf)}:null}function Xrt(e){let t=$1(e);return t.byteLength>=10&&t.getUint32(0,zf)===1195984440?{mimeType:\"image/gif\",width:t.getUint16(6,Q1),height:t.getUint16(8,Q1)}:null}function Krt(e){let t=$1(e);return t.byteLength>=14&&t.getUint16(0,zf)===16973&&t.getUint32(2,Q1)===t.byteLength?{mimeType:\"image/bmp\",width:t.getUint32(18,Q1),height:t.getUint32(22,Q1)}:null}function Jrt(e){let t=$1(e);if(!(t.byteLength>=3&&t.getUint16(0,zf)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:s}=tit(),n=2;for(;n+9!!VM(new DataView(e))],options:nit};function X1(e){if(typeof window<\"u\"&&typeof window.process==\"object\"&&window.process.type===\"renderer\"||typeof process<\"u\"&&typeof process.versions==\"object\"&&process.versions.electron)return!0;let t=typeof navigator==\"object\"&&typeof navigator.userAgent==\"string\"&&navigator.userAgent,r=e||t;return!!(r&&r.indexOf(\"Electron\")>=0)}function wo(){return!(typeof process==\"object\"&&String(process)===\"[object process]\"&&!process.browser)||X1()}var UA={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document,process:typeof process==\"object\"&&process};var sit=UA.self||UA.window||UA.global,ly=UA.window||UA.self||UA.global,oit=UA.document||{},z0=UA.process||{};var jM=typeof __VERSION__<\"u\"?__VERSION__:\"untranspiled source\",dMt=wo();var z4=globalThis;function cy(e){if(!e&&!wo())return\"Node\";if(X1(e))return\"Electron\";let r=e||(typeof navigator<\"u\"?navigator:{}).userAgent||\"\";if(r.indexOf(\"Edge\")>-1)return\"Edge\";let i=r.indexOf(\"MSIE \")!==-1,s=r.indexOf(\"Trident/\")!==-1;return i||s?\"IE\":z4.chrome?\"Chrome\":z4.safari?\"Safari\":z4.mozInnerScreenX?\"Firefox\":\"Unknown\"}function ait(e){try{let t=window[e],r=\"__storage_test__\";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var GM=class{constructor(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"sessionStorage\";G(this,\"storage\",void 0),G(this,\"id\",void 0),G(this,\"config\",void 0),this.storage=ait(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}};function ZU(e){let t;return e<10?t=\"\".concat(e.toFixed(2),\"ms\"):e<100?t=\"\".concat(e.toFixed(1),\"ms\"):e<1e3?t=\"\".concat(e.toFixed(0),\"ms\"):t=\"\".concat((e/1e3).toFixed(2),\"s\"),t}function YU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,r=Math.max(t-e.length,0);return\"\".concat(\" \".repeat(r)).concat(e)}function WM(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,s=e.src.replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\");e.width>i&&(r=Math.min(r,i/e.width));let n=e.width*r,o=e.height*r,c=[\"font-size:1px;\",\"padding:\".concat(Math.floor(o/2),\"px \").concat(Math.floor(n/2),\"px;\"),\"line-height:\".concat(o,\"px;\"),\"background:url(\".concat(s,\");\"),\"background-size:\".concat(n,\"px \").concat(o,\"px;\"),\"color:transparent;\"].join(\"\");return[\"\".concat(t,\" %c+\"),c]}var HM;(function(e){e[e.BLACK=30]=\"BLACK\",e[e.RED=31]=\"RED\",e[e.GREEN=32]=\"GREEN\",e[e.YELLOW=33]=\"YELLOW\",e[e.BLUE=34]=\"BLUE\",e[e.MAGENTA=35]=\"MAGENTA\",e[e.CYAN=36]=\"CYAN\",e[e.WHITE=37]=\"WHITE\",e[e.BRIGHT_BLACK=90]=\"BRIGHT_BLACK\",e[e.BRIGHT_RED=91]=\"BRIGHT_RED\",e[e.BRIGHT_GREEN=92]=\"BRIGHT_GREEN\",e[e.BRIGHT_YELLOW=93]=\"BRIGHT_YELLOW\",e[e.BRIGHT_BLUE=94]=\"BRIGHT_BLUE\",e[e.BRIGHT_MAGENTA=95]=\"BRIGHT_MAGENTA\",e[e.BRIGHT_CYAN=96]=\"BRIGHT_CYAN\",e[e.BRIGHT_WHITE=97]=\"BRIGHT_WHITE\"})(HM||(HM={}));function QU(e){return typeof e==\"string\"?HM[e.toUpperCase()]||HM.WHITE:e}function $U(e,t,r){return!wo&&typeof e==\"string\"&&(t&&(t=QU(t),e=\"\\x1B[\".concat(t,\"m\").concat(e,\"\\x1B[39m\")),r&&(t=QU(r),e=\"\\x1B[\".concat(r+10,\"m\").concat(e,\"\\x1B[49m\"))),e}function XU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[\"constructor\"],r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r);for(let s of i)typeof e[s]==\"function\"&&(t.find(n=>s===n)||(e[s]=e[s].bind(e)))}function uy(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function N0(){let e;if(wo&&\"performance\"in ly){var t,r;e=ly===null||ly===void 0||(t=ly.performance)===null||t===void 0||(r=t.now)===null||r===void 0?void 0:r.call(t)}else if(\"hrtime\"in z0){var i;let s=z0===null||z0===void 0||(i=z0.hrtime)===null||i===void 0?void 0:i.call(z0);e=s[0]*1e3+s[1]/1e6}else e=Date.now();return e}var hy={debug:wo&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},lit={enabled:!0,level:0};function Cu(){}var KU={},JU={once:!0},Nf=class{constructor(){let{id:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:\"\"};G(this,\"id\",void 0),G(this,\"VERSION\",jM),G(this,\"_startTs\",N0()),G(this,\"_deltaTs\",N0()),G(this,\"_storage\",void 0),G(this,\"userData\",{}),G(this,\"LOG_THROTTLE_TIMEOUT\",0),this.id=t,this.userData={},this._storage=new GM(\"__probe-\".concat(this.id,\"__\"),lit),this.timeStamp(\"\".concat(this.id,\" started\")),XU(this),Object.seal(this)}set level(t){this.setLevel(t)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((N0()-this._startTs).toPrecision(10))}getDelta(){return Number((N0()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:t}),this}setLevel(t){return this._storage.setConfiguration({level:t}),this}get(t){return this._storage.config[t]}set(t,r){this._storage.setConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){uy(t,r)}warn(t){return this._getLogFunction(0,t,hy.warn,arguments,JU)}error(t){return this._getLogFunction(0,t,hy.error,arguments)}deprecated(t,r){return this.warn(\"`\".concat(t,\"` is deprecated and will be removed in a later version. Use `\").concat(r,\"` instead\"))}removed(t,r){return this.error(\"`\".concat(t,\"` has been removed. Use `\").concat(r,\"` instead\"))}probe(t,r){return this._getLogFunction(t,r,hy.log,arguments,{time:!0,once:!0})}log(t,r){return this._getLogFunction(t,r,hy.debug,arguments)}info(t,r){return this._getLogFunction(t,r,console.info,arguments)}once(t,r){for(var i=arguments.length,s=new Array(i>2?i-2:0),n=2;n2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},s=tV({logLevel:t,message:r,opts:i}),{collapsed:n}=i;return s.method=(n?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._getLogFunction(t,\"\",console.groupEnd||Cu)}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&this.getLevel()>=eV(t)}_getLogFunction(t,r,i,s,n){if(this._shouldLog(t)){n=tV({logLevel:t,message:r,args:s,opts:n}),i=i||n.method,uy(i),n.total=this.getTotal(),n.delta=this.getDelta(),this._deltaTs=N0();let o=n.tag||n.message;if(n.once)if(!KU[o])KU[o]=N0();else return Cu;return r=cit(this.id,n.message,n),i.bind(console,r,...n.args)}return Cu}};G(Nf,\"VERSION\",jM);function eV(e){if(!e)return 0;let t;switch(typeof e){case\"number\":t=e;break;case\"object\":t=e.logLevel||e.priority||0;break;default:return 0}return uy(Number.isFinite(t)&&t>=0),t}function tV(e){let{logLevel:t,message:r}=e;e.logLevel=eV(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case\"string\":case\"function\":r!==void 0&&i.unshift(r),e.message=t;break;case\"object\":Object.assign(e,t);break;default:}typeof e.message==\"function\"&&(e.message=e.message());let s=typeof e.message;return uy(s===\"string\"||s===\"object\"),Object.assign(e,{args:i},e.opts)}function cit(e,t,r){if(typeof t==\"string\"){let i=r.time?YU(ZU(r.total)):\"\";t=r.time?\"\".concat(e,\": \").concat(i,\" \").concat(t):\"\".concat(e,\": \").concat(t),t=$U(t,r.color,r.background)}return t}function uit(e){let{image:t,message:r=\"\",scale:i=1}=e;return console.warn(\"removed\"),Cu}function hit(e){let{image:t,message:r=\"\",scale:i=1}=e;if(typeof t==\"string\"){let n=new Image;return n.onload=()=>{let o=WM(n,r,i);console.log(...o)},n.src=t,Cu}let s=t.nodeName||\"\";if(s.toLowerCase()===\"img\")return console.log(...WM(t,r,i)),Cu;if(s.toLowerCase()===\"canvas\"){let n=new Image;return n.onload=()=>console.log(...WM(n,r,i)),n.src=t.toDataURL(),Cu}return Cu}function fit(e){for(let t in e)for(let r in e[t])return r||\"untitled\";return\"empty\"}var qMt=new Nf({id:\"@probe.gl/log\"});var nr=new Nf({id:\"deck\"});var N4={};function rV(e){N4=e}function Cs(e,t,r,i){nr.level>0&&N4[e]&&N4[e].call(null,t,r,i)}function dit(e){let t=e[0],r=e[e.length-1];return t===\"{\"&&r===\"}\"||t===\"[\"&&r===\"]\"}var iV={id:\"JSON\",name:\"JSON\",module:\"\",version:\"\",options:{},extensions:[\"json\",\"geojson\"],mimeTypes:[\"application/json\",\"application/geo+json\"],testText:dit,parseTextSync:JSON.parse};function pit(){let e=\"8.9.34\",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(\"deck.gl - multiple versions detected: \".concat(t,\" vs \").concat(e));return t||(nr.log(1,\"deck.gl \".concat(e))(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:nr,_registerLoggers:rV},I4([iV,[F4,{imagebitmap:{premultiplyAlpha:\"none\"}}]])),e}var nV=pit();var Yr={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(Yr,\"IDENTITY\",{get:()=>(nr.deprecated(\"COORDINATE_SYSTEM.IDENTITY\",\"COORDINATE_SYSTEM.CARTESIAN\")(),0)});var Ka={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},Ko={common:0,meters:1,pixels:2},U4={click:{handler:\"onClick\"},panstart:{handler:\"onDragStart\"},panmove:{handler:\"onDrag\"},panend:{handler:\"onDragEnd\"}};var je=new Nf({id:\"luma.gl\"});function Zs(e,t){if(!e)throw new Error(t||\"luma.gl: assertion failed.\")}var Ait=\"Invalid WebGLRenderingContext\";var mit=\"Requires WebGL2\";function Xd(e){return typeof WebGLRenderingContext<\"u\"&&e instanceof WebGLRenderingContext||typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&Number.isFinite(e._version))}function hr(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function V4(e){return hr(e)?e:null}function Kd(e){return Zs(Xd(e),Ait),e}function qn(e){return Zs(hr(e),mit),e}var K1={};function git(e){globalThis.console&&globalThis.console.error&&globalThis.console.error(e)}function _it(e){globalThis.console&&globalThis.console.log&&globalThis.console.log(e)}function yit(e,t){K1[e]=!0,t!==void 0&&git(t)}function vit(e){let t=e.getError;e.getError=function(){let i;do i=t.apply(e),i!==0&&(K1[i]=!0);while(i!==0);for(i in K1)if(K1[i])return delete K1[i],parseInt(i,10);return 0}}var J1=function e(t){let r=t.gl;this.ext=t,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(t.maxVertexAttribs);for(let i=0;i{_it(\"OESVertexArrayObject emulation library context restored\"),r.reset_()},!0),this.reset_()};U0.prototype.VERTEX_ARRAY_BINDING_OES=34229;U0.prototype.reset_=function(){if(this.vertexArrayObjects!==void 0)for(let i=0;ihr(e)?void 0:0,Cit={3074:e=>hr(e)?void 0:36064,[Sit]:e=>hr(e)?void 0:Tit,35977:zn,32937:zn,[Mit]:(e,t)=>{let r=hr(e)?e.getExtension(bit):e.getExtension(xit);return r&&r.GPU_DISJOINT_EXT?t(r.GPU_DISJOINT_EXT):0},[Pit]:(e,t)=>{let r=e.getExtension(lV);return t(r&&r.UNMASKED_VENDOR_WEBGL||7936)},[Iit]:(e,t)=>{let r=e.getExtension(lV);return t(r&&r.UNMASKED_RENDERER_WEBGL||7937)},[Eit]:(e,t)=>{let r=e.luma.extensions[wit];return r?t(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1},32883:zn,35071:zn,37447:zn,36063:(e,t)=>{if(!hr(e)){let r=e.getExtension(aV);return r?t(r.MAX_COLOR_ATTACHMENTS_WEBGL):0}},35379:zn,35374:zn,35377:zn,34852:e=>{if(!hr(e)){let t=e.getExtension(aV);return t?t.MAX_DRAW_BUFFERS_WEBGL:0}},36203:e=>e.getExtension(oV)?2147483647:65535,33001:e=>e.getExtension(oV)?16777216:65535,33e3:e=>16777216,37157:zn,35373:zn,35657:zn,36183:zn,37137:zn,34045:zn,35978:zn,35979:zn,35968:zn,35376:zn,35375:zn,35659:zn,37154:zn,35371:zn,35658:zn,35076:zn,35077:zn,35380:zn};function cV(e,t,r){let i=Cit[r],s=typeof i==\"function\"?i(e,t,r):i;return s!==void 0?s:t(r)}var Lit=\"OES_vertex_array_object\",uV=\"ANGLE_instanced_arrays\",kit=\"WEBGL_draw_buffers\",Rit=\"EXT_disjoint_timer_query\",Dit=\"EXT_texture_filter_anisotropic\",Oit=\"VertexArray requires WebGL2 or OES_vertex_array_object extension\";function Bit(e,t){return{webgl2:hr(e),ext:e.getExtension(t)}}var j4={[Lit]:{meta:{suffix:\"OES\"},createVertexArray:()=>{Zs(!1,Oit)},deleteVertexArray:()=>{},bindVertexArray:()=>{},isVertexArray:()=>!1},[uV]:{meta:{suffix:\"ANGLE\"},vertexAttribDivisor(e,t){Zs(t===0,\"WebGL instanced rendering not supported\")},drawElementsInstanced:()=>{},drawArraysInstanced:()=>{}},[kit]:{meta:{suffix:\"WEBGL\"},drawBuffers:()=>{Zs(!1)}},[Rit]:{meta:{suffix:\"EXT\"},createQuery:()=>{Zs(!1)},deleteQuery:()=>{Zs(!1)},beginQuery:()=>{Zs(!1)},endQuery:()=>{},getQuery(e,t){return this.getQueryObject(e,t)},getQueryParameter(e,t){return this.getQueryObject(e,t)},getQueryObject:()=>{}}},qM={readBuffer:(e,t,r)=>{hr(e)&&t(r)},getVertexAttrib:(e,t,r,i)=>{let{webgl2:s,ext:n}=Bit(e,uV),o;switch(i){case 35069:o=s?void 0:!1;break;case 35070:o=!s&&!n?0:void 0;break;default:}return o!==void 0?o:t(r,i)},getProgramParameter:(e,t,r,i)=>{if(!hr(e))switch(i){case 35967:return 35981;case 35971:return 0;case 35382:return 0;default:}return t(r,i)},getInternalformatParameter:(e,t,r,i,s)=>{if(!hr(e))switch(s){case 32937:return new Int32Array([0]);default:}return e.getInternalformatParameter(r,i,s)},getTexParameter(e,t,r,i){switch(i){case 34046:let{extensions:s}=e.luma,n=s[Dit];i=n&&n.TEXTURE_MAX_ANISOTROPY_EXT||34046;break;default:}return t(r,i)},getParameter:cV,hint(e,t,r,i){return t(r,i)}};function hV(e){e.luma=e.luma||{};let{luma:t}=e;return t.polyfilled||(sV(e),Fit(e),Nit(e,j4),zit(e,{target:t,target2:e}),t.polyfilled=!0),e}globalThis.polyfillContext=hV;function Fit(e){e.luma.extensions={};let t=e.getSupportedExtensions()||[];for(let r of t)e.luma[r]=e.getExtension(r)}function zit(e,t){let{target:r,target2:i}=t;Object.keys(qM).forEach(s=>{if(typeof qM[s]==\"function\"){let n=e[s]?e[s].bind(e):()=>{},o=qM[s].bind(null,e,n);r[s]=o,i[s]=o}})}function Nit(e,t){for(let r of Object.getOwnPropertyNames(t))r!==\"overrides\"&&Uit(e,{extension:r,target:e.luma,target2:e})}function Uit(e,t){let{extension:r,target:i,target2:s}=t,n=j4[r];Zs(n);let{meta:o={}}=n,{suffix:c=\"\"}=o,f=e.getExtension(r);for(let _ of Object.keys(n)){let w=\"\".concat(_).concat(c),C=null;_===\"meta\"||typeof e[_]==\"function\"||(f&&typeof f[w]==\"function\"?C=function(){return f[w](...arguments)}:typeof n[_]==\"function\"&&(C=n[_].bind(i))),C&&(i[_]=C,s[_]=C)}}var eb={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,36006:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],3333:4,3317:4,37440:!1,37441:!1,37443:37444,35723:4352,36010:null,35977:!1,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},VA=(e,t,r)=>t?e.enable(r):e.disable(r),fV=(e,t,r)=>e.hint(r,t),qc=(e,t,r)=>e.pixelStorei(r,t),Vit=(e,t)=>{let r=hr(e)?36009:36160;return e.bindFramebuffer(r,t)},jit=(e,t)=>e.bindFramebuffer(36008,t);function tb(e){return Array.isArray(e)||ArrayBuffer.isView(e)}var dV={3042:VA,32773:(e,t)=>e.blendColor(...t),32777:\"blendEquation\",34877:\"blendEquation\",32969:\"blendFunc\",32968:\"blendFunc\",32971:\"blendFunc\",32970:\"blendFunc\",3106:(e,t)=>e.clearColor(...t),3107:(e,t)=>e.colorMask(...t),2884:VA,2885:(e,t)=>e.cullFace(t),2929:VA,2931:(e,t)=>e.clearDepth(t),2932:(e,t)=>e.depthFunc(t),2928:(e,t)=>e.depthRange(...t),2930:(e,t)=>e.depthMask(t),3024:VA,35723:fV,36006:Vit,2886:(e,t)=>e.frontFace(t),33170:fV,2849:(e,t)=>e.lineWidth(t),32823:VA,32824:\"polygonOffset\",10752:\"polygonOffset\",35977:VA,32938:\"sampleCoverage\",32939:\"sampleCoverage\",3089:VA,3088:(e,t)=>e.scissor(...t),2960:VA,2961:(e,t)=>e.clearStencil(t),2968:(e,t)=>e.stencilMaskSeparate(1028,t),36005:(e,t)=>e.stencilMaskSeparate(1029,t),2962:\"stencilFuncFront\",2967:\"stencilFuncFront\",2963:\"stencilFuncFront\",34816:\"stencilFuncBack\",36003:\"stencilFuncBack\",36004:\"stencilFuncBack\",2964:\"stencilOpFront\",2965:\"stencilOpFront\",2966:\"stencilOpFront\",34817:\"stencilOpBack\",34818:\"stencilOpBack\",34819:\"stencilOpBack\",2978:(e,t)=>e.viewport(...t),3333:qc,3317:qc,37440:qc,37441:qc,37443:qc,3330:qc,3332:qc,3331:qc,36010:jit,3314:qc,32878:qc,3316:qc,3315:qc,32877:qc,framebuffer:(e,t)=>{let r=t&&\"handle\"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{t=tb(t)?t:[t,t],e.blendEquationSeparate(...t)},blendFunc:(e,t)=>{t=tb(t)&&t.length===2?[...t,...t]:t,e.blendFuncSeparate(...t)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(...t),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=tb(t)?t:[t,t];let[r,i]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,t)=>{t=tb(t)&&t.length===3?[...t,...t]:t;let[r,i,s,n,o,c]=t;e.stencilFuncSeparate(1028,r,i,s),e.stencilFuncSeparate(1029,n,o,c)},stencilOp:(e,t)=>{t=tb(t)&&t.length===3?[...t,...t]:t;let[r,i,s,n,o,c]=t;e.stencilOpSeparate(1028,r,i,s),e.stencilOpSeparate(1029,n,o,c)},viewport:(e,t)=>e.viewport(...t)};function Ls(e,t,r){return t[e]!==void 0?t[e]:r[e]}var pV={blendEquation:(e,t,r)=>e.blendEquationSeparate(Ls(32777,t,r),Ls(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(Ls(32969,t,r),Ls(32968,t,r),Ls(32971,t,r),Ls(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(Ls(32824,t,r),Ls(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(Ls(32938,t,r),Ls(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,Ls(2962,t,r),Ls(2967,t,r),Ls(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,Ls(34816,t,r),Ls(36003,t,r),Ls(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,Ls(2964,t,r),Ls(2965,t,r),Ls(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,Ls(34817,t,r),Ls(34818,t,r),Ls(34819,t,r))},G4={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({36006:r,36010:r});case 36009:return e({36006:r});case 36008:return e({36010:r});default:return null}},blendColor:(e,t,r,i,s)=>e({32773:new Float32Array([t,r,i,s])}),blendEquation:(e,t)=>e({32777:t,34877:t}),blendEquationSeparate:(e,t,r)=>e({32777:t,34877:r}),blendFunc:(e,t,r)=>e({32969:t,32968:r,32971:t,32970:r}),blendFuncSeparate:(e,t,r,i,s)=>e({32969:t,32968:r,32971:i,32970:s}),clearColor:(e,t,r,i,s)=>e({3106:new Float32Array([t,r,i,s])}),clearDepth:(e,t)=>e({2931:t}),clearStencil:(e,t)=>e({2961:t}),colorMask:(e,t,r,i,s)=>e({3107:[t,r,i,s]}),cullFace:(e,t)=>e({2885:t}),depthFunc:(e,t)=>e({2932:t}),depthRange:(e,t,r)=>e({2928:new Float32Array([t,r])}),depthMask:(e,t)=>e({2930:t}),frontFace:(e,t)=>e({2886:t}),lineWidth:(e,t)=>e({2849:t}),polygonOffset:(e,t,r)=>e({32824:t,10752:r}),sampleCoverage:(e,t,r)=>e({32938:t,32939:r}),scissor:(e,t,r,i,s)=>e({3088:new Int32Array([t,r,i,s])}),stencilMask:(e,t)=>e({2968:t,36005:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,i)=>e({2962:t,2967:r,2963:i,34816:t,36003:r,36004:i}),stencilFuncSeparate:(e,t,r,i,s)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:i,[t===1028?2963:36004]:s}),stencilOp:(e,t,r,i)=>e({2964:t,2965:r,2966:i,34817:t,34818:r,34819:i}),stencilOpSeparate:(e,t,r,i,s)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:i,[t===1028?2966:34819]:s}),viewport:(e,t,r,i,s)=>e({2978:[t,r,i,s]})},Uf=(e,t)=>e.isEnabled(t),W4={3042:Uf,2884:Uf,2929:Uf,3024:Uf,32823:Uf,32926:Uf,32928:Uf,3089:Uf,2960:Uf,35977:Uf};function H4(e){for(let t in e)return!1;return!0}function AV(e,t){if(e===t)return!0;let r=Array.isArray(e)||ArrayBuffer.isView(e),i=Array.isArray(t)||ArrayBuffer.isView(t);if(r&&i&&e.length===t.length){for(let s=0;s{}}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.program=null,this.stateStack=[],this.enable=!0,this.cache=r?fy(t):Object.assign({},eb),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.stateStack.push({})}pop(){Zs(this.stateStack.length>0);let t=this.stateStack[this.stateStack.length-1];wl(this.gl,t),this.stateStack.pop()}_updateCache(t){let r=!1,i,s=this.stateStack.length>0&&this.stateStack[this.stateStack.length-1];for(let n in t){Zs(n!==void 0);let o=t[n],c=this.cache[n];AV(o,c)||(r=!0,i=c,s&&!(n in s)&&(s[n]=c),this.cache[n]=o)}return{valueChanged:r,oldValue:i}}};function ZM(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{enable:r=!0,copyState:i}=t;if(Zs(i!==void 0),!e.state){let{polyfillContext:s}=globalThis;s&&s(e),e.state=new q4(e,{copyState:i}),Wit(e);for(let n in G4){let o=G4[n];Git(e,n,o)}mV(e,\"getParameter\"),mV(e,\"isEnabled\")}return e.state.enable=r,e}function Z4(e){e.state||ZM(e,{copyState:!1}),e.state.push()}function YM(e){Zs(e.state),e.state.pop()}function wl(e,t){if(Zs(Xd(e),\"setParameters requires a WebGL context\"),H4(t))return;let r={};for(let s in t){let n=Number(s),o=dV[s];o&&(typeof o==\"string\"?r[o]=!0:o(e,t[s],n))}let i=e.state&&e.state.cache;if(i)for(let s in r){let n=pV[s];n(e,t,i)}}function fy(e,t){if(t=t||eb,typeof t==\"number\"){let s=t,n=W4[s];return n?n(e,s):e.getParameter(s)}let r=Array.isArray(t)?t:Object.keys(t),i={};for(let s of r){let n=W4[s];i[s]=n?n(e,Number(s)):e.getParameter(Number(s))}return i}function QM(e){wl(e,eb)}function bn(e,t,r){if(H4(t))return r(e);let{nocatch:i=!0}=t;Z4(e),wl(e,t);let s;if(i)s=r(e),YM(e);else try{s=r(e)}finally{YM(e)}return s}function Sl(e){let{luma:t}=e;if(e.canvas&&t){let r=t.canvasSizeInfo,i=\"clientWidth\"in r?r.clientWidth:e.canvas.clientWidth;return i?e.drawingBufferWidth/i:1}return 1}function dy(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=Sl(e),s=e.drawingBufferWidth,n=e.drawingBufferHeight;return Hit(t,i,s,n,r)}function yV(e){let t=typeof window>\"u\"?1:window.devicePixelRatio||1;return Number.isFinite(e)?e<=0?1:e:e?t:1}function Hit(e,t,r,i,s){let n=gV(e[0],t,r),o=_V(e[1],t,i,s),c=gV(e[0]+1,t,r),f=c===r-1?c:c-1;c=_V(e[1]+1,t,i,s);let _;return s?(c=c===0?c:c+1,_=o,o=c):_=c===i-1?c:c-1,{x:n,y:o,width:Math.max(f-n+1,1),height:Math.max(_-o+1,1)}}function gV(e,t,r){return Math.min(Math.round(e*t),r-1)}function _V(e,t,r,i){return i?Math.max(0,r-1-Math.round(e*t)):Math.min(Math.round(e*t),r-1)}var Y4=wo(),qit=Y4&&typeof document<\"u\",vV={webgl2:!0,webgl1:!0,throwOnError:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function py(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Zs(Y4,`createGLContext only available in the browser.\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils`),e=Object.assign({},vV,e);let{width:t,height:r}=e;function i(c){if(e.throwOnError)throw new Error(c);return console.error(c),null}e.onError=i;let s,{canvas:n}=e,o=Yit({canvas:n,width:t,height:r,onError:i});return s=Zit(o,e),s?(s=V0(s,e),Qit(s),s):null}function V0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||e._instrumented)return e;e._version=e._version||$it(e),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{},t=Object.assign({},vV,t);let{manageState:r,debug:i}=t;return r&&ZM(e,{copyState:!1,log:function(){for(var s=arguments.length,n=new Array(s),o=0;o1&&arguments[1]!==void 0?arguments[1]:{};if(e.canvas){let i=yV(t.useDevicePixels);Xit(e,i,t);return}let r=e.getExtension(\"STACKGL_resize_drawingbuffer\");r&&\"width\"in t&&\"height\"in t&&r.resize(t.width,t.height)}function Zit(e,t){let{onError:r}=t,i=null,s=f=>i=f.statusMessage||i;e.addEventListener(\"webglcontextcreationerror\",s,!1);let{webgl1:n=!0,webgl2:o=!0}=t,c=null;return o&&(c=c||e.getContext(\"webgl2\",t),c=c||e.getContext(\"experimental-webgl2\",t)),n&&(c=c||e.getContext(\"webgl\",t),c=c||e.getContext(\"experimental-webgl\",t)),e.removeEventListener(\"webglcontextcreationerror\",s,!1),c?(t.onContextLost&&e.addEventListener(\"webglcontextlost\",t.onContextLost,!1),t.onContextRestored&&e.addEventListener(\"webglcontextrestored\",t.onContextRestored,!1),c):r(\"Failed to create \".concat(o&&!n?\"WebGL2\":\"WebGL\",\" context: \").concat(i||\"Unknown error\"))}function Yit(e){let{canvas:t,width:r=800,height:i=600,onError:s}=e,n;return typeof t==\"string\"?(qit&&document.readyState===\"complete\"||s(\"createGLContext called on canvas '\".concat(t,\"' before page was loaded\")),n=document.getElementById(t)):t?n=t:(n=document.createElement(\"canvas\"),n.id=\"lumagl-canvas\",n.style.width=Number.isFinite(r)?\"\".concat(r,\"px\"):\"100%\",n.style.height=Number.isFinite(i)?\"\".concat(i,\"px\"):\"100%\",document.body.insertBefore(n,document.body.firstChild)),n}function Qit(e){let t=hr(e)?\"WebGL2\":\"WebGL1\",r=xV(e),i=r?\"(\".concat(r.vendor,\",\").concat(r.renderer,\")\"):\"\",s=e.debug?\" debug\":\"\";je.info(1,\"\".concat(t).concat(s,\" context \").concat(i))()}function $it(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?2:1}function Xit(e,t,r){let i=\"width\"in r?r.width:e.canvas.clientWidth,s=\"height\"in r?r.height:e.canvas.clientHeight;(!i||!s)&&(je.log(1,\"Canvas clientWidth/clientHeight is 0\")(),t=1,i=e.canvas.width||1,s=e.canvas.height||1),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{};let n=e.luma.canvasSizeInfo;if(n.clientWidth!==i||n.clientHeight!==s||n.devicePixelRatio!==t){let o=t,c=Math.floor(i*o),f=Math.floor(s*o);e.canvas.width=c,e.canvas.height=f,(e.drawingBufferWidth!==c||e.drawingBufferHeight!==f)&&(je.warn(\"Device pixel ratio clamped\")(),o=Math.min(e.drawingBufferWidth/i,e.drawingBufferHeight/s),e.canvas.width=Math.floor(i*o),e.canvas.height=Math.floor(s*o)),Object.assign(e.luma.canvasSizeInfo,{clientWidth:i,clientHeight:s,devicePixelRatio:t})}}function rb(){let e;if(typeof window<\"u\"&&window.performance)e=window.performance.now();else if(typeof process<\"u\"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var j0=class{constructor(t,r){G(this,\"name\",void 0),G(this,\"type\",void 0),G(this,\"sampleSize\",1),G(this,\"time\",void 0),G(this,\"count\",void 0),G(this,\"samples\",void 0),G(this,\"lastTiming\",void 0),G(this,\"lastSampleTime\",void 0),G(this,\"lastSampleCount\",void 0),G(this,\"_count\",0),G(this,\"_time\",0),G(this,\"_samples\",0),G(this,\"_startTime\",0),G(this,\"_timerPending\",!1),this.name=t,this.type=r,this.reset()}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=rb(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(rb()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var Vf=class{constructor(t){G(this,\"id\",void 0),G(this,\"stats\",{}),this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"count\";return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t in this.stats)this.stats[t].reset();return this}forEach(t){for(let r in this.stats)t(this.stats[r])}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(r=>this._getOrCreate(r))}_getOrCreate(t){if(!t||!t.name)return null;let{name:r,type:i}=t;return this.stats[r]||(t instanceof j0?this.stats[r]=t:this.stats[r]=new j0(r,i)),this.stats[r]}};var ib=\"8.5.21\",Kit=\"set luma.log.level=1 (or higher) to trace rendering\",$4=class{constructor(){this.stats=new Map}get(t){return this.stats.has(t)||this.stats.set(t,new Vf({id:t})),this.stats.get(t)}},Lu=new $4;if(globalThis.luma&&globalThis.luma.VERSION!==ib)throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION,\" vs \").concat(ib));globalThis.luma||(wo()&&je.log(1,\"luma.gl \".concat(ib,\" - \").concat(Kit))(),globalThis.luma=globalThis.luma||{VERSION:ib,version:ib,log:je,stats:Lu,globals:{modules:{},nodeIO:{}}});var pPt=globalThis.luma;function X4(e){return typeof window<\"u\"&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)}function K4(e){return typeof window<\"u\"&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e)}function ye(e,t){if(!e)throw new Error(t||\"luma.gl: assertion failed.\")}function $M(e,t){if(typeof t!=\"string\")return t;let r=Number(t);if(!isNaN(r))return r;t=t.replace(/^.*\\./,\"\");let i=e[t];return ye(i!==void 0,\"Accessing undefined constant GL.\".concat(t)),i}function ku(e,t){t=Number(t);for(let r in e)if(e[r]===t)return\"GL.\".concat(r);return String(t)}var J4={};function Jo(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"id\";J4[e]=J4[e]||1;let t=J4[e]++;return\"\".concat(e,\"-\").concat(t)}function tR(e){return ye(typeof e==\"number\",\"Input must be a number\"),e&&(e&e-1)===0}function jf(e){let t=!0;for(let r in e){t=!1;break}return t}function XM(e,t,r,i){let s=\"See luma.gl \".concat(r,\" Upgrade Guide at https://luma.gl/docs/upgrade-guide\"),n=Object.getPrototypeOf(e);i.forEach(o=>{n.methodName||(n[o]=()=>{throw je.removed(\"Calling removed method \".concat(t,\".\").concat(o,\": \"),s)(),new Error(o)})})}var Ay=\"Resource subclass must define virtual methods\",Ys=class{get[Symbol.toStringTag](){return\"Resource\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Kd(t);let{id:i,userData:s={}}=r;this.gl=t,this.gl2=t,this.id=i||Jo(this[Symbol.toStringTag]),this.userData=s,this._bound=!1,this._handle=r.handle,this._handle===void 0&&(this._handle=this._createHandle()),this.byteLength=0,this._addStats()}toString(){return\"\".concat(this[Symbol.toStringTag]||this.constructor.name,\"(\").concat(this.id,\")\")}get handle(){return this._handle}delete(){let{deleteChildren:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this._handle&&this._deleteHandle(this._handle);return this._handle&&this._removeStats(),this._handle=null,r&&t&&r.filter(Boolean).forEach(i=>i.delete()),this}bind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.handle;if(typeof t!=\"function\")return this._bindHandle(t),this;let r;return this._bound?r=t():(this._bindHandle(this.handle),this._bound=!0,r=t(),this._bound=!1,this._bindHandle(null)),r}unbind(){this.bind(null)}getParameter(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};t=$M(this.gl,t),ye(t);let s=(this.constructor.PARAMETERS||{})[t];if(s){let n=hr(this.gl);if(!((!(\"webgl2\"in s)||n)&&(!(\"extension\"in s)||this.gl.getExtension(s.extension)))){let c=s.webgl1,f=\"webgl2\"in s?s.webgl2:s.webgl1;return n?f:c}}return this._getParameter(t,r)}getParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{parameters:r,keys:i}=t,s=this.constructor.PARAMETERS||{},n=hr(this.gl),o={},c=r||Object.keys(s);for(let f of c){let _=s[f];if(_&&(!(\"webgl2\"in _)||n)&&(!(\"extension\"in _)||this.gl.getExtension(_.extension))){let C=i?ku(this.gl,f):f;o[C]=this.getParameter(f,t),i&&_.type===\"GLenum\"&&(o[C]=ku(this.gl,o[C]))}}return o}setParameter(t,r){t=$M(this.gl,t),ye(t);let s=(this.constructor.PARAMETERS||{})[t];if(s){let n=hr(this.gl);if(!((!(\"webgl2\"in s)||n)&&(!(\"extension\"in s)||this.gl.getExtension(s.extension))))throw new Error(\"Parameter not available on this platform\");s.type===\"GLenum\"&&(r=$M(r))}return this._setParameter(t,r),this}setParameters(t){for(let r in t)this.setParameter(r,t[r]);return this}stubRemovedMethods(t,r,i){return XM(this,t,r,i)}initialize(t){}_createHandle(){throw new Error(Ay)}_deleteHandle(){throw new Error(Ay)}_bindHandle(t){throw new Error(Ay)}_getOptsFromHandle(){throw new Error(Ay)}_getParameter(t,r){throw new Error(Ay)}_setParameter(t,r){throw new Error(Ay)}_context(){return this.gl.luma=this.gl.luma||{},this.gl.luma}_addStats(){let t=this[Symbol.toStringTag],r=Lu.get(\"Resource Counts\");r.get(\"Resources Created\").incrementCount(),r.get(\"\".concat(t,\"s Created\")).incrementCount(),r.get(\"\".concat(t,\"s Active\")).incrementCount()}_removeStats(){let t=this[Symbol.toStringTag];Lu.get(\"Resource Counts\").get(\"\".concat(t,\"s Active\")).decrementCount()}_trackAllocatedMemory(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag];this._trackAllocatedMemoryForContext(t,r),this._trackAllocatedMemoryForContext(t,r,this.gl.canvas&&this.gl.canvas.id),this.byteLength=t}_trackAllocatedMemoryForContext(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"\",s=Lu.get(\"Memory Usage\".concat(i));s.get(\"GPU Memory\").addCount(t),s.get(\"\".concat(r,\" Memory\")).addCount(t)}_trackDeallocatedMemory(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag];this._trackDeallocatedMemoryForContext(t),this._trackDeallocatedMemoryForContext(t,this.gl.canvas&&this.gl.canvas.id),this.byteLength=0}_trackDeallocatedMemoryForContext(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\",i=Lu.get(\"Memory Usage\".concat(r));i.get(\"GPU Memory\").subtractCount(this.byteLength),i.get(\"\".concat(t,\" Memory\")).subtractCount(this.byteLength)}};var Jit=\"Failed to deduce GL constant from typed array\";function nb(e){switch(ArrayBuffer.isView(e)?e.constructor:e){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(Jit)}}function jA(e){let{clamped:t=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return t?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error(\"Failed to deduce typed array type from GL constant\")}}function bV(e){let{data:t,width:r,height:i,bytesPerPixel:s=4,temp:n}=e,o=r*s;n=n||new Uint8Array(o);for(let c=0;cthis._assign(s)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return e.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return e.getBytesPerVertex(this)}_assign(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t=sb(\"Accessor\",t,ent),t.type!==void 0&&(this.type=t.type,(t.type===5124||t.type===5125)&&(this.integer=!0)),t.size!==void 0&&(this.size=t.size),t.offset!==void 0&&(this.offset=t.offset),t.stride!==void 0&&(this.stride=t.stride),t.normalized!==void 0&&(this.normalized=t.normalized),t.integer!==void 0&&(this.integer=t.integer),t.divisor!==void 0&&(this.divisor=t.divisor),t.buffer!==void 0&&(this.buffer=t.buffer),t.index!==void 0&&(typeof t.index==\"boolean\"?this.index=t.index?1:0:this.index=t.index),t.instanced!==void 0&&(this.divisor=t.instanced?1:0),t.isInstanced!==void 0&&(this.divisor=t.isInstanced?1:0),this}};var SV=10,TV={offset:\"accessor.offset\",stride:\"accessor.stride\",type:\"accessor.type\",size:\"accessor.size\",divisor:\"accessor.divisor\",normalized:\"accessor.normalized\",integer:\"accessor.integer\",instanced:\"accessor.divisor\",isInstanced:\"accessor.divisor\"},rnt={removedProps:{},replacedProps:{bytes:\"byteLength\"},deprecatedProps:TV},int={removedProps:TV},Fr=class extends Ys{get[Symbol.toStringTag](){return\"Buffer\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.stubRemovedMethods(\"Buffer\",\"v6.0\",[\"layout\",\"setLayout\",\"getIndexedParameter\"]),this.target=r.target||(this.gl.webgl2?36662:34962),this.initialize(r),Object.seal(this)}getElementCount(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Tl.getBytesPerElement(t))}getVertexCount(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Tl.getBytesPerVertex(t))}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ArrayBuffer.isView(t)&&(t={data:t}),Number.isFinite(t)&&(t={byteLength:t}),t=sb(\"Buffer\",t,rnt),this.usage=t.usage||35044,this.debugData=null,this.setAccessor(Object.assign({},t,t.accessor)),t.data?this._setData(t.data,t.offset,t.byteLength):this._setByteLength(t.byteLength||0),this}setProps(t){return t=sb(\"Buffer\",t,int),\"accessor\"in t&&this.setAccessor(t.accessor),this}setAccessor(t){return t=Object.assign({},t),delete t.buffer,this.accessor=new Tl(t),this}reallocate(t){return t>this.byteLength?(this._setByteLength(t),!0):(this.bytesUsed=t,!1)}setData(t){return this.initialize(t)}subData(t){ArrayBuffer.isView(t)&&(t={data:t});let{data:r,offset:i=0,srcOffset:s=0}=t,n=t.byteLength||t.length;ye(r);let o=this.gl.webgl2?36663:this.target;return this.gl.bindBuffer(o,this.handle),s!==0||n!==void 0?(qn(this.gl),this.gl.bufferSubData(this.target,i,r,s,n)):this.gl.bufferSubData(o,i,r),this.gl.bindBuffer(o,null),this.debugData=null,this._inferType(r),this}copyData(t){let{sourceBuffer:r,readOffset:i=0,writeOffset:s=0,size:n}=t,{gl:o}=this;return qn(o),o.bindBuffer(36662,r.handle),o.bindBuffer(36663,this.handle),o.copyBufferSubData(36662,36663,i,s,n),o.bindBuffer(36662,null),o.bindBuffer(36663,null),this.debugData=null,this}getData(){let{dstData:t=null,srcByteOffset:r=0,dstOffset:i=0,length:s=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};qn(this.gl);let n=jA(this.accessor.type||5126,{clamped:!1}),o=this._getAvailableElementCount(r),c=i,f,_;t?(_=t.length,f=_-c):(f=Math.min(o,s||o),_=c+f);let w=Math.min(o,f);return s=s||w,ye(s<=w),t=t||new n(_),this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,r,t,i,s),this.gl.bindBuffer(36662,null),t}bind(){let{target:t=this.target,index:r=this.accessor&&this.accessor.index,offset:i=0,size:s}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t===35345||t===35982?s!==void 0?this.gl.bindBufferRange(t,r,this.handle,i,s):(ye(i===0),this.gl.bindBufferBase(t,r,this.handle)):this.gl.bindBuffer(t,this.handle),this}unbind(){let{target:t=this.target,index:r=this.accessor&&this.accessor.index}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t===35345||t===35982?this.gl.bindBufferBase(t,r,null):this.gl.bindBuffer(t,null),this}getDebugData(){return this.debugData?{data:this.debugData,changed:!1}:(this.debugData=this.getData({length:Math.min(SV,this.byteLength)}),{data:this.debugData,changed:!0})}invalidateDebugData(){this.debugData=null}_setData(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.byteLength+r;ye(ArrayBuffer.isView(t)),this._trackDeallocatedMemory();let s=this._getTarget();this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.usage),this.gl.bufferSubData(s,r,t),this.gl.bindBuffer(s,null),this.debugData=t.slice(0,SV),this.bytesUsed=i,this._trackAllocatedMemory(i);let n=nb(t);return ye(n),this.setAccessor(new Tl(this.accessor,{type:n})),this}_setByteLength(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.usage;ye(t>=0),this._trackDeallocatedMemory();let i=t;t===0&&(i=new Float32Array(0));let s=this._getTarget();return this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,r),this.gl.bindBuffer(s,null),this.usage=r,this.debugData=null,this.bytesUsed=t,this._trackAllocatedMemory(t),this}_getTarget(){return this.gl.webgl2?36663:this.target}_getAvailableElementCount(t){let r=jA(this.accessor.type||5126,{clamped:!1}),i=t/r.BYTES_PER_ELEMENT;return this.getElementCount()-i}_inferType(t){this.accessor.type||this.setAccessor(new Tl(this.accessor,{type:nb(t)}))}_createHandle(){return this.gl.createBuffer()}_deleteHandle(){this.gl.deleteBuffer(this.handle),this._trackDeallocatedMemory()}_getParameter(t){this.gl.bindBuffer(this.target,this.handle);let r=this.gl.getBufferParameter(this.target,t);return this.gl.bindBuffer(this.target,null),r}get type(){return je.deprecated(\"Buffer.type\",\"Buffer.accessor.type\")(),this.accessor.type}get bytes(){return je.deprecated(\"Buffer.bytes\",\"Buffer.byteLength\")(),this.byteLength}setByteLength(t){return je.deprecated(\"setByteLength\",\"reallocate\")(),this.reallocate(t)}updateAccessor(t){return je.deprecated(\"updateAccessor(...)\",\"setAccessor(new Accessor(buffer.accessor, ...)\")(),this.accessor=new Tl(this.accessor,t),this}};var KM={6407:{dataFormat:6407,types:[5121,33635]},6408:{dataFormat:6408,types:[5121,32819,32820]},6406:{dataFormat:6406,types:[5121]},6409:{dataFormat:6409,types:[5121]},6410:{dataFormat:6410,types:[5121]},33326:{dataFormat:6403,types:[5126],gl2:!0},33328:{dataFormat:33319,types:[5126],gl2:!0},34837:{dataFormat:6407,types:[5126],gl2:!0},34836:{dataFormat:6408,types:[5126],gl2:!0}},JM={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},tE={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function MV(e,t){let r=KM[t];if(!r)return!1;if(r.gl1===void 0&&r.gl2===void 0)return!0;let i=hr(e)&&r.gl2||r.gl1;return typeof i==\"string\"?e.getExtension(i):i}function EV(e,t){let r=KM[t];switch(r&&r.types[0]){case 5126:return e.getExtension(\"OES_texture_float_linear\");case 5131:return e.getExtension(\"OES_texture_half_float_linear\");default:return!0}}var nnt=[9729,9728],PV=globalThis.WebGLBuffer||function(){},Ja=class extends Ys{get[Symbol.toStringTag](){return\"Texture\"}static isSupported(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{format:i,linearFiltering:s}=r,n=!0;return i&&(n=n&&MV(t,i),n=n&&(!s||EV(t,i))),n}constructor(t,r){let{id:i=Jo(\"texture\"),handle:s,target:n}=r;super(t,{id:i,handle:s}),this.target=n,this.textureUnit=void 0,this.loaded=!1,this.width=void 0,this.height=void 0,this.depth=void 0,this.format=void 0,this.type=void 0,this.dataFormat=void 0,this.border=void 0,this.textureUnit=void 0,this.mipmaps=void 0}toString(){return\"Texture(\".concat(this.id,\",\").concat(this.width,\"x\").concat(this.height,\")\")}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=t.data;if(r instanceof Promise)return r.then(K=>this.initialize(Object.assign({},t,{pixels:K,data:K}))),this;let i=typeof HTMLVideoElement<\"u\"&&r instanceof HTMLVideoElement;if(i&&r.readyStatethis.initialize(t)),this;let{pixels:s=null,format:n=6408,border:o=0,recreate:c=!1,parameters:f={},pixelStore:_={},textureUnit:w=void 0}=t;r||(r=s);let{width:C,height:R,dataFormat:N,type:j,compressed:Y=!1,mipmaps:rt=!0}=t,{depth:$=0}=t;return{width:C,height:R,compressed:Y,dataFormat:N,type:j}=this._deduceParameters({format:n,type:j,dataFormat:N,compressed:Y,data:r,width:C,height:R}),this.width=C,this.height=R,this.depth=$,this.format=n,this.type=j,this.dataFormat=N,this.border=o,this.textureUnit=w,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),rt&&this._isNPOT()&&(je.warn(\"texture: \".concat(this,\" is Non-Power-Of-Two, disabling mipmaping\"))(),rt=!1,this._updateForNPOT(f)),this.mipmaps=rt,this.setImageData({data:r,width:C,height:R,depth:$,format:n,type:j,dataFormat:N,border:o,mipmaps:rt,parameters:_,compressed:Y}),rt&&this.generateMipmap(),this.setParameters(f),c&&(this.data=r),i&&(this._video={video:r,parameters:f,lastTime:r.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?r.currentTime:-1}),this}update(){if(this._video){let{video:t,parameters:r,lastTime:i}=this._video;if(i===t.currentTime||t.readyState0&&arguments[0]!==void 0?arguments[0]:{};return this._isNPOT()?(je.warn(\"texture: \".concat(this,\" is Non-Power-Of-Two, disabling mipmaping\"))(),this):(this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),bn(this.gl,t,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this)}setImageData(t){this._trackDeallocatedMemory(\"Texture\");let{target:r=this.target,pixels:i=null,level:s=0,format:n=this.format,border:o=this.border,offset:c=0,parameters:f={}}=t,{data:_=null,type:w=this.type,width:C=this.width,height:R=this.height,dataFormat:N=this.dataFormat,compressed:j=!1}=t;_||(_=i),{type:w,dataFormat:N,compressed:j,width:C,height:R}=this._deduceParameters({format:n,type:w,dataFormat:N,compressed:j,data:_,width:C,height:R});let{gl:Y}=this;Y.bindTexture(this.target,this.handle);let rt=null;({data:_,dataType:rt}=this._getDataType({data:_,compressed:j}));let $,K=0;if(bn(this.gl,f,()=>{switch(rt){case\"null\":Y.texImage2D(r,s,n,C,R,o,N,w,_);break;case\"typed-array\":Y.texImage2D(r,s,n,C,R,o,N,w,_,c);break;case\"buffer\":$=qn(Y),$.bindBuffer(35052,_.handle||_),$.texImage2D(r,s,n,C,R,o,N,w,c),$.bindBuffer(35052,null);break;case\"browser-object\":hr(Y)?Y.texImage2D(r,s,n,C,R,o,N,w,_):Y.texImage2D(r,s,n,N,w,_);break;case\"compressed\":for(let[tt,ut]of _.entries())Y.compressedTexImage2D(r,tt,ut.format,ut.width,ut.height,o,ut.data),K+=ut.levelSize;break;default:ye(!1,\"Unknown image data type\")}}),rt===\"compressed\")this._trackAllocatedMemory(K,\"Texture\");else if(_&&_.byteLength)this._trackAllocatedMemory(_.byteLength,\"Texture\");else{let tt=JM[this.dataFormat]||4,ut=tE[this.type]||1;this._trackAllocatedMemory(this.width*this.height*tt*ut,\"Texture\")}return this.loaded=!0,this}setSubImageData(t){let{target:r=this.target,pixels:i=null,data:s=null,x:n=0,y:o=0,width:c=this.width,height:f=this.height,level:_=0,format:w=this.format,type:C=this.type,dataFormat:R=this.dataFormat,compressed:N=!1,offset:j=0,border:Y=this.border,parameters:rt={}}=t;if({type:C,dataFormat:R,compressed:N,width:c,height:f}=this._deduceParameters({format:w,type:C,dataFormat:R,compressed:N,data:s,width:c,height:f}),ye(this.depth===0,\"texSubImage not supported for 3D textures\"),s||(s=i),s&&s.data){let $=s;s=$.data,c=$.shape[0],f=$.shape[1]}s instanceof Fr&&(s=s.handle),this.gl.bindTexture(this.target,this.handle),bn(this.gl,rt,()=>{if(N)this.gl.compressedTexSubImage2D(r,_,n,o,c,f,w,s);else if(s===null)this.gl.texSubImage2D(r,_,n,o,c,f,R,C,null);else if(ArrayBuffer.isView(s))this.gl.texSubImage2D(r,_,n,o,c,f,R,C,s,j);else if(s instanceof PV){let $=qn(this.gl);$.bindBuffer(35052,s),$.texSubImage2D(r,_,n,o,c,f,R,C,j),$.bindBuffer(35052,null)}else hr(this.gl)?qn(this.gl).texSubImage2D(r,_,n,o,c,f,R,C,s):this.gl.texSubImage2D(r,_,n,o,R,C,s)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})\")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit,{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,this.handle),t}unbind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit,{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,null),t}_getDataType(t){let{data:r,compressed:i=!1}=t;return i?{data:r,dataType:\"compressed\"}:r===null?{data:r,dataType:\"null\"}:ArrayBuffer.isView(r)?{data:r,dataType:\"typed-array\"}:r instanceof Fr?{data:r.handle,dataType:\"buffer\"}:r instanceof PV?{data:r,dataType:\"buffer\"}:{data:r,dataType:\"browser-object\"}}_deduceParameters(t){let{format:r,data:i}=t,{width:s,height:n,dataFormat:o,type:c,compressed:f}=t,_=KM[r];return o=o||_&&_.dataFormat,c=c||_&&_.types[0],f=f||_&&_.compressed,{width:s,height:n}=this._deduceImageSize(i,s,n),{dataFormat:o,type:c,compressed:f,width:s,height:n,format:r,data:i}}_deduceImageSize(t,r,i){let s;return typeof ImageData<\"u\"&&t instanceof ImageData?s={width:t.width,height:t.height}:typeof HTMLImageElement<\"u\"&&t instanceof HTMLImageElement?s={width:t.naturalWidth,height:t.naturalHeight}:typeof HTMLCanvasElement<\"u\"&&t instanceof HTMLCanvasElement?s={width:t.width,height:t.height}:typeof ImageBitmap<\"u\"&&t instanceof ImageBitmap?s={width:t.width,height:t.height}:typeof HTMLVideoElement<\"u\"&&t instanceof HTMLVideoElement?s={width:t.videoWidth,height:t.videoHeight}:t?s={width:r,height:i}:s={width:r>=0?r:1,height:i>=0?i:1},ye(s,\"Could not deduced texture size\"),ye(r===void 0||s.width===r,\"Deduced texture width does not match supplied width\"),ye(i===void 0||s.height===i,\"Deduced texture height does not match supplied height\"),s}_createHandle(){return this.gl.createTexture()}_deleteHandle(){this.gl.deleteTexture(this.handle),this._trackDeallocatedMemory(\"Texture\")}_getParameter(t){switch(t){case 4096:return this.width;case 4097:return this.height;default:this.gl.bindTexture(this.target,this.handle);let r=this.gl.getTexParameter(this.target,t);return this.gl.bindTexture(this.target,null),r}}_setParameter(t,r){switch(this.gl.bindTexture(this.target,this.handle),r=this._getNPOTParam(t,r),t){case 33082:case 33083:this.gl.texParameterf(this.handle,t,r);break;case 4096:case 4097:ye(!1);break;default:this.gl.texParameteri(this.target,t,r);break}return this.gl.bindTexture(this.target,null),this}_isNPOT(){return hr(this.gl)||!this.width||!this.height?!1:!tR(this.width)||!tR(this.height)}_updateForNPOT(t){t[this.gl.TEXTURE_MIN_FILTER]===void 0&&(t[this.gl.TEXTURE_MIN_FILTER]=this.gl.LINEAR),t[this.gl.TEXTURE_WRAP_S]===void 0&&(t[this.gl.TEXTURE_WRAP_S]=this.gl.CLAMP_TO_EDGE),t[this.gl.TEXTURE_WRAP_T]===void 0&&(t[this.gl.TEXTURE_WRAP_T]=this.gl.CLAMP_TO_EDGE)}_getNPOTParam(t,r){if(this._isNPOT())switch(t){case 10241:nnt.indexOf(r)===-1&&(r=9729);break;case 10242:case 10243:r!==33071&&(r=33071);break;default:break}return r}};var snt=\"\";function IV(e,t){return ye(typeof e==\"string\"),e=snt+e,new Promise((r,i)=>{try{let s=new Image;s.onload=()=>r(s),s.onerror=()=>i(new Error(\"Could not load image \".concat(e,\".\"))),s.crossOrigin=t&&t.crossOrigin||\"anonymous\",s.src=e}catch(s){i(s)}})}var pi=class extends Ja{get[Symbol.toStringTag](){return\"Texture2D\"}static isSupported(t,r){return Ja.isSupported(t,r)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Kd(t),(r instanceof Promise||typeof r==\"string\")&&(r={data:r}),typeof r.data==\"string\"&&(r=Object.assign({},r,{data:IV(r.data)})),super(t,Object.assign({},r,{target:3553})),this.initialize(r),Object.seal(this)}};var eR=[34069,34070,34071,34072,34073,34074],G0=class extends Ja{get[Symbol.toStringTag](){return\"TextureCube\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Kd(t),super(t,Object.assign({},r,{target:34067})),this.initialize(r),Object.seal(this)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{mipmaps:r=!0,parameters:i={}}=t;return this.opts=t,this.setCubeMapImageData(t).then(()=>{this.loaded=!0,r&&this.generateMipmap(t),this.setParameters(i)}),this}subImage(t){let{face:r,data:i,x:s=0,y:n=0,mipmapLevel:o=0}=t;return this._subImage({target:r,data:i,x:s,y:n,mipmapLevel:o})}async setCubeMapImageData(t){let{width:r,height:i,pixels:s,data:n,border:o=0,format:c=6408,type:f=5121}=t,{gl:_}=this,w=s||n,C=await Promise.all(eR.map(R=>{let N=w[R];return Promise.all(Array.isArray(N)?N:[N])}));this.bind(),eR.forEach((R,N)=>{C[N].length>1&&this.opts.mipmaps!==!1&&je.warn(\"\".concat(this.id,\" has mipmap and multiple LODs.\"))(),C[N].forEach((j,Y)=>{r&&i?_.texImage2D(R,Y,c,r,i,o,c,f,j):_.texImage2D(R,Y,c,c,f,j)})}),this.unbind()}setImageDataForFace(t){let{face:r,width:i,height:s,pixels:n,data:o,border:c=0,format:f=6408,type:_=5121}=t,{gl:w}=this,C=n||o;return this.bind(),C instanceof Promise?C.then(R=>this.setImageDataForFace(Object.assign({},t,{face:r,data:R,pixels:R}))):this.width||this.height?w.texImage2D(r,0,f,i,s,c,f,_,C):w.texImage2D(r,0,f,f,_,C),this}};G0.FACES=eR;var my=class extends Ja{get[Symbol.toStringTag](){return\"Texture3D\"}static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(t),r=Object.assign({depth:1},r,{target:32879,unpackFlipY:!1}),super(t,r),this.initialize(r),Object.seal(this)}setImageData(t){let{level:r=0,dataFormat:i=6408,width:s,height:n,depth:o=1,border:c=0,format:f,type:_=5121,offset:w=0,data:C,parameters:R={}}=t;if(this._trackDeallocatedMemory(\"Texture\"),this.gl.bindTexture(this.target,this.handle),bn(this.gl,R,()=>{ArrayBuffer.isView(C)&&this.gl.texImage3D(this.target,r,i,s,n,o,c,f,_,C),C instanceof Fr&&(this.gl.bindBuffer(35052,C.handle),this.gl.texImage3D(this.target,r,i,s,n,o,c,f,_,w))}),C&&C.byteLength)this._trackAllocatedMemory(C.byteLength,\"Texture\");else{let N=JM[this.dataFormat]||4,j=tE[this.type]||1;this._trackAllocatedMemory(this.width*this.height*this.depth*N*j,\"Texture\")}return this.loaded=!0,this}};var W0=\"EXT_color_buffer_float\",rR={33189:{bpp:2},33190:{gl2:!0,bpp:3},36012:{gl2:!0,bpp:4},36168:{bpp:1},34041:{bpp:4},35056:{gl2:!0,bpp:4},36013:{gl2:!0,bpp:5},32854:{bpp:2},36194:{bpp:2},32855:{bpp:2},33321:{gl2:!0,bpp:1},33330:{gl2:!0,bpp:1},33329:{gl2:!0,bpp:1},33332:{gl2:!0,bpp:2},33331:{gl2:!0,bpp:2},33334:{gl2:!0,bpp:4},33333:{gl2:!0,bpp:4},33323:{gl2:!0,bpp:2},33336:{gl2:!0,bpp:2},33335:{gl2:!0,bpp:2},33338:{gl2:!0,bpp:4},33337:{gl2:!0,bpp:4},33340:{gl2:!0,bpp:8},33339:{gl2:!0,bpp:8},32849:{gl2:!0,bpp:3},32856:{gl2:!0,bpp:4},32857:{gl2:!0,bpp:4},36220:{gl2:!0,bpp:4},36238:{gl2:!0,bpp:4},36975:{gl2:!0,bpp:4},36214:{gl2:!0,bpp:8},36232:{gl2:!0,bpp:8},36226:{gl2:!0,bpp:16},36208:{gl2:!0,bpp:16},33325:{gl2:W0,bpp:2},33327:{gl2:W0,bpp:4},34842:{gl2:W0,bpp:8},33326:{gl2:W0,bpp:4},33328:{gl2:W0,bpp:8},34836:{gl2:W0,bpp:16},35898:{gl2:W0,bpp:4}};function ont(e,t,r){let i=r[t];if(!i)return!1;let s=hr(e)&&i.gl2||i.gl1;return typeof s==\"string\"?e.getExtension(s):s}var tl=class extends Ys{get[Symbol.toStringTag](){return\"Renderbuffer\"}static isSupported(t){let{format:r}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{format:null};return!r||ont(t,r,rR)}static getSamplesForFormat(t,r){let{format:i}=r;return t.getInternalformatParameter(36161,i,32937)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.initialize(r),Object.seal(this)}initialize(t){let{format:r,width:i=1,height:s=1,samples:n=0}=t;return ye(r,\"Needs format\"),this._trackDeallocatedMemory(),this.gl.bindRenderbuffer(36161,this.handle),n!==0&&hr(this.gl)?this.gl.renderbufferStorageMultisample(36161,n,r,i,s):this.gl.renderbufferStorage(36161,r,i,s),this.format=r,this.width=i,this.height=s,this.samples=n,this._trackAllocatedMemory(this.width*this.height*(this.samples||1)*rR[this.format].bpp),this}resize(t){let{width:r,height:i}=t;return r!==this.width||i!==this.height?this.initialize({width:r,height:i,format:this.format,samples:this.samples}):this}_createHandle(){return this.gl.createRenderbuffer()}_deleteHandle(){this.gl.deleteRenderbuffer(this.handle),this._trackDeallocatedMemory()}_bindHandle(t){this.gl.bindRenderbuffer(36161,t)}_syncHandle(t){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}_getParameter(t){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,t)}};var ant=256,lnt=1024,cnt=16384,CV=6144,LV=6145,kV=6146,RV=34041,DV=\"clear: bad arguments\";function Gf(e){let{framebuffer:t=null,color:r=null,depth:i=null,stencil:s=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={};t&&(n.framebuffer=t);let o=0;r&&(o|=cnt,r!==!0&&(n.clearColor=r)),i&&(o|=ant,i!==!0&&(n.clearDepth=i)),s&&(o|=lnt,i!==!0&&(n.clearStencil=i)),ye(o!==0,DV),bn(e,n,()=>{e.clear(o)})}function iR(e){let{framebuffer:t=null,buffer:r=CV,drawBuffer:i=0,value:s=[0,0,0,0]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(e),bn(e,{framebuffer:t},()=>{switch(r){case CV:switch(s.constructor){case Int32Array:e.clearBufferiv(r,i,s);break;case Uint32Array:e.clearBufferuiv(r,i,s);break;case Float32Array:default:e.clearBufferfv(r,i,s)}break;case LV:e.clearBufferfv(LV,0,[s]);break;case kV:e.clearBufferiv(kV,0,[s]);break;case RV:let[n,o]=s;e.clearBufferfi(RV,0,n,o);break;default:ye(!1,DV)}})}function OV(e){switch(e){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return ye(!1),0}}function Rh(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{sourceX:r=0,sourceY:i=0,sourceFormat:s=6408}=t,{sourceAttachment:n=36064,target:o=null,sourceWidth:c,sourceHeight:f,sourceType:_}=t,{framebuffer:w,deleteFramebuffer:C}=BV(e);ye(w);let{gl:R,handle:N,attachments:j}=w;c=c||w.width,f=f||w.height,n===36064&&N===null&&(n=1028),ye(j[n]),_=_||j[n].type,o=unt(o,_,s,c,f),_=_||nb(o);let Y=R.bindFramebuffer(36160,N);return R.readPixels(r,i,c,f,s,_,o),R.bindFramebuffer(36160,Y||null),C&&w.delete(),o}function eE(e){let{sourceAttachment:t=36064,targetMaxHeight:r=Number.MAX_SAFE_INTEGER}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=Rh(e,{sourceAttachment:t}),{width:s,height:n}=e;for(;n>r;)({data:i,width:s,height:n}=wV({data:i,width:s,height:n}));bV({data:i,width:s,height:n});let o=document.createElement(\"canvas\");o.width=s,o.height=n;let c=o.getContext(\"2d\"),f=c.createImageData(s,n);return f.data.set(i),c.putImageData(f,0,0),o.toDataURL()}function rE(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{sourceX:i=0,sourceY:s=0,targetMipmaplevel:n=0,targetInternalFormat:o=6408}=r,{targetX:c,targetY:f,targetZ:_,width:w,height:C}=r,{framebuffer:R,deleteFramebuffer:N}=BV(e);ye(R);let{gl:j,handle:Y}=R,rt=typeof c<\"u\"||typeof f<\"u\"||typeof _<\"u\";c=c||0,f=f||0,_=_||0;let $=j.bindFramebuffer(36160,Y);ye(t);let K=null;if(t instanceof Ja&&(K=t,w=Number.isFinite(w)?w:K.width,C=Number.isFinite(C)?C:K.height,K.bind(0),t=K.target),!rt)j.copyTexImage2D(t,n,o,i,s,w,C,0);else switch(t){case 3553:case 34067:j.copyTexSubImage2D(t,n,c,f,i,s,w,C);break;case 35866:case 32879:qn(j).copyTexSubImage3D(t,n,c,f,_,i,s,w,C);break;default:}return K&&K.unbind(),j.bindFramebuffer(36160,$||null),N&&R.delete(),K}function BV(e){return e instanceof yi?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:FV(e),deleteFramebuffer:!0}}function unt(e,t,r,i,s){if(e)return e;t=t||5121;let n=jA(t,{clamped:!1}),o=OV(r);return new n(i*s*o)}var Pi={WEBGL2:\"WEBGL2\",VERTEX_ARRAY_OBJECT:\"VERTEX_ARRAY_OBJECT\",TIMER_QUERY:\"TIMER_QUERY\",INSTANCED_RENDERING:\"INSTANCED_RENDERING\",MULTIPLE_RENDER_TARGETS:\"MULTIPLE_RENDER_TARGETS\",ELEMENT_INDEX_UINT32:\"ELEMENT_INDEX_UINT32\",BLEND_EQUATION_MINMAX:\"BLEND_EQUATION_MINMAX\",FLOAT_BLEND:\"FLOAT_BLEND\",COLOR_ENCODING_SRGB:\"COLOR_ENCODING_SRGB\",TEXTURE_DEPTH:\"TEXTURE_DEPTH\",TEXTURE_FLOAT:\"TEXTURE_FLOAT\",TEXTURE_HALF_FLOAT:\"TEXTURE_HALF_FLOAT\",TEXTURE_FILTER_LINEAR_FLOAT:\"TEXTURE_FILTER_LINEAR_FLOAT\",TEXTURE_FILTER_LINEAR_HALF_FLOAT:\"TEXTURE_FILTER_LINEAR_HALF_FLOAT\",TEXTURE_FILTER_ANISOTROPIC:\"TEXTURE_FILTER_ANISOTROPIC\",COLOR_ATTACHMENT_RGBA32F:\"COLOR_ATTACHMENT_RGBA32F\",COLOR_ATTACHMENT_FLOAT:\"COLOR_ATTACHMENT_FLOAT\",COLOR_ATTACHMENT_HALF_FLOAT:\"COLOR_ATTACHMENT_HALF_FLOAT\",GLSL_FRAG_DATA:\"GLSL_FRAG_DATA\",GLSL_FRAG_DEPTH:\"GLSL_FRAG_DEPTH\",GLSL_DERIVATIVES:\"GLSL_DERIVATIVES\",GLSL_TEXTURE_LOD:\"GLSL_TEXTURE_LOD\"};function hnt(e){let t=new pi(e,{format:6408,type:5126,dataFormat:6408}),r=new yi(e,{id:\"test-framebuffer\",check:!1,attachments:{36064:t}}),i=r.getStatus();return t.delete(),r.delete(),i===36053}var nR={[Pi.WEBGL2]:[!1,!0],[Pi.VERTEX_ARRAY_OBJECT]:[\"OES_vertex_array_object\",!0],[Pi.TIMER_QUERY]:[\"EXT_disjoint_timer_query\",\"EXT_disjoint_timer_query_webgl2\"],[Pi.INSTANCED_RENDERING]:[\"ANGLE_instanced_arrays\",!0],[Pi.MULTIPLE_RENDER_TARGETS]:[\"WEBGL_draw_buffers\",!0],[Pi.ELEMENT_INDEX_UINT32]:[\"OES_element_index_uint\",!0],[Pi.BLEND_EQUATION_MINMAX]:[\"EXT_blend_minmax\",!0],[Pi.FLOAT_BLEND]:[\"EXT_float_blend\"],[Pi.COLOR_ENCODING_SRGB]:[\"EXT_sRGB\",!0],[Pi.TEXTURE_DEPTH]:[\"WEBGL_depth_texture\",!0],[Pi.TEXTURE_FLOAT]:[\"OES_texture_float\",!0],[Pi.TEXTURE_HALF_FLOAT]:[\"OES_texture_half_float\",!0],[Pi.TEXTURE_FILTER_LINEAR_FLOAT]:[\"OES_texture_float_linear\"],[Pi.TEXTURE_FILTER_LINEAR_HALF_FLOAT]:[\"OES_texture_half_float_linear\"],[Pi.TEXTURE_FILTER_ANISOTROPIC]:[\"EXT_texture_filter_anisotropic\"],[Pi.COLOR_ATTACHMENT_RGBA32F]:[hnt,\"EXT_color_buffer_float\"],[Pi.COLOR_ATTACHMENT_FLOAT]:[!1,\"EXT_color_buffer_float\"],[Pi.COLOR_ATTACHMENT_HALF_FLOAT]:[\"EXT_color_buffer_half_float\"],[Pi.GLSL_FRAG_DATA]:[\"WEBGL_draw_buffers\",!0],[Pi.GLSL_FRAG_DEPTH]:[\"EXT_frag_depth\",!0],[Pi.GLSL_DERIVATIVES]:[\"OES_standard_derivatives\",!0],[Pi.GLSL_TEXTURE_LOD]:[\"EXT_shader_texture_lod\",!0]};var fnt=2;function H0(e,t){return Dh(e,t)}function Dh(e,t){return t=Array.isArray(t)?t:[t],t.every(r=>zV(e,r))}function iE(e){e.luma=e.luma||{},e.luma.caps=e.luma.caps||{};for(let t in nR)e.luma.caps[t]===void 0&&(e.luma.caps[t]=zV(e,t));return e.luma.caps}function zV(e,t){return e.luma=e.luma||{},e.luma.caps=e.luma.caps||{},e.luma.caps[t]===void 0&&(e.luma.caps[t]=dnt(e,t)),e.luma.caps[t]||je.log(fnt,\"Feature: \".concat(t,\" not supported\"))(),e.luma.caps[t]}function dnt(e,t){let r=nR[t];ye(r,t);let i,s=hr(e)&&r[1]||r[0];if(typeof s==\"function\")i=s(e);else if(Array.isArray(s)){i=!0;for(let n of s)i=i&&!!e.getExtension(n)}else typeof s==\"string\"?i=!!e.getExtension(s):typeof s==\"boolean\"?i=s:ye(!1);return i}var NV=\"Multiple render targets not supported\",yi=class e extends Ys{get[Symbol.toStringTag](){return\"Framebuffer\"}static isSupported(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{colorBufferFloat:i,colorBufferHalfFloat:s}=r,n=!0;return i&&(n=!!(t.getExtension(\"EXT_color_buffer_float\")||t.getExtension(\"WEBGL_color_buffer_float\")||t.getExtension(\"OES_texture_float\"))),s&&(n=n&&!!(t.getExtension(\"EXT_color_buffer_float\")||t.getExtension(\"EXT_color_buffer_half_float\"))),n}static getDefaultFramebuffer(t){return t.luma=t.luma||{},t.luma.defaultFramebuffer=t.luma.defaultFramebuffer||new e(t,{id:\"default-framebuffer\",handle:null,attachments:{}}),t.luma.defaultFramebuffer}get MAX_COLOR_ATTACHMENTS(){let t=qn(this.gl);return t.getParameter(t.MAX_COLOR_ATTACHMENTS)}get MAX_DRAW_BUFFERS(){let t=qn(this.gl);return t.getParameter(t.MAX_DRAW_BUFFERS)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.width=null,this.height=null,this.attachments={},this.readBuffer=36064,this.drawBuffers=[36064],this.ownResources=[],this.initialize(r),Object.seal(this)}get color(){return this.attachments[36064]||null}get texture(){return this.attachments[36064]||null}get depth(){return this.attachments[36096]||this.attachments[33306]||null}get stencil(){return this.attachments[36128]||this.attachments[33306]||null}initialize(t){let{width:r=1,height:i=1,attachments:s=null,color:n=!0,depth:o=!0,stencil:c=!1,check:f=!0,readBuffer:_=void 0,drawBuffers:w=void 0}=t;if(ye(r>=0&&i>=0,\"Width and height need to be integers\"),this.width=r,this.height=i,s)for(let C in s){let R=s[C];(Array.isArray(R)?R[0]:R).resize({width:r,height:i})}else s=this._createDefaultAttachments(n,o,c,r,i);this.update({clearAttachments:!0,attachments:s,readBuffer:_,drawBuffers:w}),s&&f&&this.checkStatus()}delete(){for(let t of this.ownResources)t.delete();return super.delete(),this}update(t){let{attachments:r={},readBuffer:i,drawBuffers:s,clearAttachments:n=!1,resizeAttachments:o=!0}=t;this.attach(r,{clearAttachments:n,resizeAttachments:o});let{gl:c}=this,f=c.bindFramebuffer(36160,this.handle);return i&&this._setReadBuffer(i),s&&this._setDrawBuffers(s),c.bindFramebuffer(36160,f||null),this}resize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{width:r,height:i}=t;if(this.handle===null)return ye(r===void 0&&i===void 0),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;r===void 0&&(r=this.gl.drawingBufferWidth),i===void 0&&(i=this.gl.drawingBufferHeight),r!==this.width&&i!==this.height&&je.log(2,\"Resizing framebuffer \".concat(this.id,\" to \").concat(r,\"x\").concat(i))();for(let s in this.attachments)this.attachments[s].resize({width:r,height:i});return this.width=r,this.height=i,this}attach(t){let{clearAttachments:r=!1,resizeAttachments:i=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s={};r&&Object.keys(this.attachments).forEach(o=>{s[o]=null}),Object.assign(s,t);let n=this.gl.bindFramebuffer(36160,this.handle);for(let o in s){ye(o!==void 0,\"Misspelled framebuffer binding point?\");let c=Number(o),f=s[c],_=f;if(!_)this._unattach(c);else if(_ instanceof tl)this._attachRenderbuffer({attachment:c,renderbuffer:_});else if(Array.isArray(f)){let[w,C=0,R=0]=f;_=w,this._attachTexture({attachment:c,texture:w,layer:C,level:R})}else this._attachTexture({attachment:c,texture:_,layer:0,level:0});i&&_&&_.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,n||null),Object.assign(this.attachments,t),Object.keys(this.attachments).filter(o=>!this.attachments[o]).forEach(o=>{delete this.attachments[o]})}checkStatus(){let{gl:t}=this,r=this.getStatus();if(r!==36053)throw new Error(Ant(r));return this}getStatus(){let{gl:t}=this,r=t.bindFramebuffer(36160,this.handle),i=t.checkFramebufferStatus(36160);return t.bindFramebuffer(36160,r||null),i}clear(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{color:r,depth:i,stencil:s,drawBuffers:n=[]}=t,o=this.gl.bindFramebuffer(36160,this.handle);return(r||i||s)&&Gf(this.gl,{color:r,depth:i,stencil:s}),n.forEach((c,f)=>{iR(this.gl,{drawBuffer:f,value:c})}),this.gl.bindFramebuffer(36160,o||null),this}readPixels(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)\")(),null}readPixelsToBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)\")(),null}copyToDataUrl(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)\")(),null}copyToImage(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)\")(),null}copyToTexture(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})\")(),null}blit(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)\")(),null}invalidate(t){let{attachments:r=[],x:i=0,y:s=0,width:n,height:o}=t,c=qn(this.gl),f=c.bindFramebuffer(36008,this.handle);return i===0&&s===0&&n===void 0&&o===void 0?c.invalidateFramebuffer(36008,r):c.invalidateFramebuffer(36008,r,i,s,n,o),c.bindFramebuffer(36008,f),this}getAttachmentParameter(t,r,i){let s=this._getAttachmentParameterFallback(r);return s===null&&(this.gl.bindFramebuffer(36160,this.handle),s=this.gl.getFramebufferAttachmentParameter(36160,t,r),this.gl.bindFramebuffer(36160,null)),i&&s>1e3&&(s=ku(this.gl,s)),s}getAttachmentParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:36064,r=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[],s={};for(let n of i){let o=r?ku(this.gl,n):n;s[o]=this.getAttachmentParameter(t,n,r)}return s}getParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,r=Object.keys(this.attachments),i={};for(let s of r){let n=Number(s),o=t?ku(this.gl,n):n;i[o]=this.getAttachmentParameters(n,t)}return i}show(){return typeof window<\"u\"&&window.open(eE(this),\"luma-debug-texture\"),this}log(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";if(t>je.level||typeof window>\"u\")return this;r=r||\"Framebuffer \".concat(this.id);let i=eE(this,{targetMaxHeight:100});return je.image({logLevel:t,message:r,image:i},r)(),this}bind(){let{target:t=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(t,this.handle),this}unbind(){let{target:t=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(t,null),this}_createDefaultAttachments(t,r,i,s,n){let o=null;return t&&(o=o||{},o[36064]=new pi(this.gl,{id:\"\".concat(this.id,\"-color0\"),pixels:null,format:6408,type:5121,width:s,height:n,mipmaps:!1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.ownResources.push(o[36064])),r&&i?(o=o||{},o[33306]=new tl(this.gl,{id:\"\".concat(this.id,\"-depth-stencil\"),format:35056,width:s,height:111}),this.ownResources.push(o[33306])):r?(o=o||{},o[36096]=new tl(this.gl,{id:\"\".concat(this.id,\"-depth\"),format:33189,width:s,height:n}),this.ownResources.push(o[36096])):i&&ye(!1),o}_unattach(t){let r=this.attachments[t];r&&(r instanceof tl?this.gl.framebufferRenderbuffer(36160,t,36161,null):this.gl.framebufferTexture2D(36160,t,3553,null,0),delete this.attachments[t])}_attachRenderbuffer(t){let{attachment:r=36064,renderbuffer:i}=t,{gl:s}=this;s.framebufferRenderbuffer(36160,r,36161,i.handle),this.attachments[r]=i}_attachTexture(t){let{attachment:r=36064,texture:i,layer:s,level:n}=t,{gl:o}=this;switch(o.bindTexture(i.target,i.handle),i.target){case 35866:case 32879:qn(o).framebufferTextureLayer(36160,r,i.target,n,s);break;case 34067:let f=pnt(s);o.framebufferTexture2D(36160,r,f,i.handle,n);break;case 3553:o.framebufferTexture2D(36160,r,3553,i.handle,n);break;default:ye(!1,\"Illegal texture type\")}o.bindTexture(i.target,null),this.attachments[r]=i}_setReadBuffer(t){let r=V4(this.gl);r?r.readBuffer(t):ye(t===36064||t===1029,NV),this.readBuffer=t}_setDrawBuffers(t){let{gl:r}=this,i=qn(r);if(i)i.drawBuffers(t);else{let s=r.getExtension(\"WEBGL_draw_buffers\");s?s.drawBuffersWEBGL(t):ye(t.length===1&&(t[0]===36064||t[0]===1029),NV)}this.drawBuffers=t}_getAttachmentParameterFallback(t){let r=iE(this.gl);switch(t){case 36052:return r.WEBGL2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return r.WEBGL2?null:8;case 33297:return r.WEBGL2?null:5125;case 33296:return!r.WEBGL2&&!r.EXT_sRGB?9729:null;default:return null}}_createHandle(){return this.gl.createFramebuffer()}_deleteHandle(){this.gl.deleteFramebuffer(this.handle)}_bindHandle(t){return this.gl.bindFramebuffer(36160,t)}};function pnt(e){return e<34069?e+34069:e}function Ant(e){return(yi.STATUS||{})[e]||\"Framebuffer error \".concat(e)}var mnt=[36049,36048,33296,33298,33299,33300,33301,33302,33303];yi.ATTACHMENT_PARAMETERS=mnt;function nE(e,t){ye(e instanceof pi||e instanceof G0||e instanceof my);let r=e.constructor,{gl:i,width:s,height:n,format:o,type:c,dataFormat:f,border:_,mipmaps:w}=e,C=Object.assign({width:s,height:n,format:o,type:c,dataFormat:f,border:_,mipmaps:w},t);return new r(i,C)}function FV(e,t){let{gl:r,width:i,height:s,id:n}=e;return new yi(r,Object.assign({},t,{id:\"framebuffer-for-\".concat(n),width:i,height:s,attachments:{36064:e}}))}function GA(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"unnamed\",r=/#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/,i=e.match(r);return i?i[1]:t}function sR(e){switch(e){case 35632:return\"fragment\";case 35633:return\"vertex\";default:return\"unknown type\"}}function oR(e,t,r,i){let s=e.split(/\\r?\\n/),n={},o={},c=i||GA(t)||\"(unnamed)\",f=\"\".concat(sR(r),\" shader \").concat(c);for(let w=0;w1&&arguments[1]!==void 0?arguments[1]:1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\": \",i=e.split(/\\r?\\n/),s=String(i.length+t-1).length;return i.map((n,o)=>{let c=String(o+t),f=c.length;return VV(c,s-f)+r+n})}function VV(e,t){let r=\"\";for(let i=0;i=2&&r[0]===\"#version\"){let i=parseInt(r[1],10);Number.isFinite(i)&&(t=i)}return t}var _nt=\"Shader: GLSL source code must be a JavaScript string\",sE=class e extends Ys{get[Symbol.toStringTag](){return\"Shader\"}static getTypeName(t){switch(t){case 35633:return\"vertex-shader\";case 35632:return\"fragment-shader\";default:return ye(!1),\"unknown\"}}constructor(t,r){Kd(t),ye(typeof r.source==\"string\",_nt);let i=GA(r.source,null)||r.id||Jo(\"unnamed \".concat(e.getTypeName(r.shaderType)));super(t,{id:i}),this.shaderType=r.shaderType,this.source=r.source,this.initialize(r)}initialize(t){let{source:r}=t,i=GA(r,null);i&&(this.id=Jo(i)),this._compile(r)}getParameter(t){return this.gl.getShaderParameter(this.handle,t)}toString(){return\"\".concat(e.getTypeName(this.shaderType),\":\").concat(this.id)}getName(){return GA(this.source)||\"unnamed-shader\"}getSource(){return this.gl.getShaderSource(this.handle)}getTranslatedSource(){let t=this.gl.getExtension(\"WEBGL_debug_shaders\");return t?t.getTranslatedShaderSource(this.handle):\"No translated source available. WEBGL_debug_shaders not implemented\"}_compile(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.source;if(t.startsWith(\"#version \")||(t=`#version 100\n`.concat(t)),this.source=t,this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){let i=this.gl.getShaderInfoLog(this.handle),{shaderName:s,errors:n,warnings:o}=oR(i,this.source,this.shaderType,this.id);throw je.error(\"GLSL compilation errors in \".concat(s,`\n`).concat(n))(),je.warn(\"GLSL compilation warnings in \".concat(s,`\n`).concat(o))(),new Error(\"GLSL compilation errors in \".concat(s))}}_deleteHandle(){this.gl.deleteShader(this.handle)}_getOptsFromHandle(){return{type:this.getParameter(35663),source:this.getSource()}}},q0=class extends sE{get[Symbol.toStringTag](){return\"VertexShader\"}constructor(t,r){typeof r==\"string\"&&(r={source:r}),super(t,Object.assign({},r,{shaderType:35633}))}_createHandle(){return this.gl.createShader(35633)}},Z0=class extends sE{get[Symbol.toStringTag](){return\"FragmentShader\"}constructor(t,r){typeof r==\"string\"&&(r={source:r}),super(t,Object.assign({},r,{shaderType:35632}))}_createHandle(){return this.gl.createShader(35632)}};var ynt={5126:Zn.bind(null,\"uniform1fv\",Zc,1,el),35664:Zn.bind(null,\"uniform2fv\",Zc,2,el),35665:Zn.bind(null,\"uniform3fv\",Zc,3,el),35666:Zn.bind(null,\"uniform4fv\",Zc,4,el),5124:Zn.bind(null,\"uniform1iv\",WA,1,el),35667:Zn.bind(null,\"uniform2iv\",WA,2,el),35668:Zn.bind(null,\"uniform3iv\",WA,3,el),35669:Zn.bind(null,\"uniform4iv\",WA,4,el),35670:Zn.bind(null,\"uniform1iv\",WA,1,el),35671:Zn.bind(null,\"uniform2iv\",WA,2,el),35672:Zn.bind(null,\"uniform3iv\",WA,3,el),35673:Zn.bind(null,\"uniform4iv\",WA,4,el),35674:Zn.bind(null,\"uniformMatrix2fv\",Zc,4,Jd),35675:Zn.bind(null,\"uniformMatrix3fv\",Zc,9,Jd),35676:Zn.bind(null,\"uniformMatrix4fv\",Zc,16,Jd),35678:_a,35680:_a,5125:Zn.bind(null,\"uniform1uiv\",oE,1,el),36294:Zn.bind(null,\"uniform2uiv\",oE,2,el),36295:Zn.bind(null,\"uniform3uiv\",oE,3,el),36296:Zn.bind(null,\"uniform4uiv\",oE,4,el),35685:Zn.bind(null,\"uniformMatrix2x3fv\",Zc,6,Jd),35686:Zn.bind(null,\"uniformMatrix2x4fv\",Zc,8,Jd),35687:Zn.bind(null,\"uniformMatrix3x2fv\",Zc,6,Jd),35688:Zn.bind(null,\"uniformMatrix3x4fv\",Zc,12,Jd),35689:Zn.bind(null,\"uniformMatrix4x2fv\",Zc,8,Jd),35690:Zn.bind(null,\"uniformMatrix4x3fv\",Zc,12,Jd),35678:_a,35680:_a,35679:_a,35682:_a,36289:_a,36292:_a,36293:_a,36298:_a,36299:_a,36300:_a,36303:_a,36306:_a,36307:_a,36308:_a,36311:_a},vnt={},xnt={},bnt={},jV=[0];function aR(e,t,r,i){t===1&&typeof e==\"boolean\"&&(e=e?1:0),Number.isFinite(e)&&(jV[0]=e,e=jV);let s=e.length;if(s%t&&je.warn(\"Uniform size should be multiples of \".concat(t),e)(),e instanceof r)return e;let n=i[s];n||(n=new r(s),i[s]=n);for(let o=0;o{let s=e!==i;return s&&(t.uniform1i(r,i),e=i),s}}function Zn(e,t,r,i){let s=null,n=null;return(o,c,f)=>{let _=t(f,r),w=_.length,C=!1;if(s===null)s=new Float32Array(w),n=w,C=!0;else{ye(n===w,\"Uniform length cannot change.\");for(let R=0;R=0&&this._addAttribute(f,n,o,c)}this.attributeInfos.sort((s,n)=>s.location-n.location)}_readVaryingsFromProgram(t){let{gl:r}=t;if(!hr(r))return;let i=r.getProgramParameter(t.handle,35971);for(let s=0;ss.location-n.location)}_addAttribute(t,r,i,s){let{type:n,components:o}=uR(i),c={type:n,size:s*o};this._inferProperties(t,r,c);let f={location:t,name:r,accessor:new Tl(c)};this.attributeInfos.push(f),this.attributeInfosByLocation[t]=f,this.attributeInfosByName[f.name]=f}_inferProperties(t,r,i){/instance/i.test(r)&&(i.divisor=1)}_addVarying(t,r,i,s){let{type:n,components:o}=uR(i),c=new Tl({type:n,size:s*o}),f={location:t,name:r,accessor:c};this.varyingInfos.push(f),this.varyingInfosByName[f.name]=f}};var YV=4,est=35981,rst=[\"setVertexArray\",\"setAttributes\",\"setBuffers\",\"unsetBuffers\",\"use\",\"getUniformCount\",\"getUniformInfo\",\"getUniformLocation\",\"getUniformValue\",\"getVarying\",\"getFragDataLocation\",\"getAttachedShaders\",\"getAttributeCount\",\"getAttributeLocation\",\"getAttributeInfo\"],tp=class extends Ys{get[Symbol.toStringTag](){return\"Program\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.stubRemovedMethods(\"Program\",\"v6.0\",rst),this._isCached=!1,this.initialize(r),Object.seal(this),this._setId(r.id)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{hash:r,vs:i,fs:s,varyings:n,bufferMode:o=est}=t;return this.hash=r||\"\",this.vs=typeof i==\"string\"?new q0(this.gl,{id:\"\".concat(t.id,\"-vs\"),source:i}):i,this.fs=typeof s==\"string\"?new Z0(this.gl,{id:\"\".concat(t.id,\"-fs\"),source:s}):s,ye(this.vs instanceof q0),ye(this.fs instanceof Z0),this.uniforms={},this._textureUniforms={},n&&n.length>0&&(qn(this.gl),this.varyings=n,this.gl2.transformFeedbackVaryings(this.handle,n,o)),this._compileAndLink(),this._readUniformLocationsFromLinkedProgram(),this.configuration=new lb(this),this.setProps(t)}delete(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this._isCached?this:super.delete(t)}setProps(t){return\"uniforms\"in t&&this.setUniforms(t.uniforms),this}draw(t){let{logPriority:r,drawMode:i=4,vertexCount:s,offset:n=0,start:o,end:c,isIndexed:f=!1,indexType:_=5123,instanceCount:w=0,isInstanced:C=w>0,vertexArray:R=null,transformFeedback:N,framebuffer:j,parameters:Y={},uniforms:rt,samplers:$}=t;if((rt||$)&&(je.deprecated(\"Program.draw({uniforms})\",\"Program.setUniforms(uniforms)\")(),this.setUniforms(rt||{})),je.priority>=r){let K=j?j.id:\"default\",tt=\"mode=\".concat(ku(this.gl,i),\" verts=\").concat(s,\" \")+\"instances=\".concat(w,\" indexType=\").concat(ku(this.gl,_),\" \")+\"isInstanced=\".concat(C,\" isIndexed=\").concat(f,\" \")+\"Framebuffer=\".concat(K);je.log(r,tt)()}return ye(R),this.gl.useProgram(this.handle),!this._areTexturesRenderable()||s===0||C&&w===0?!1:(R.bindForDraw(s,w,()=>{if(j!==void 0&&(Y=Object.assign({},Y,{framebuffer:j})),N){let K=ZV(i);N.begin(K)}this._bindTextures(),bn(this.gl,Y,()=>{f&&C?this.gl2.drawElementsInstanced(i,s,_,n,w):f&&hr(this.gl)&&!isNaN(o)&&!isNaN(c)?this.gl2.drawRangeElements(i,o,c,s,_,n):f?this.gl.drawElements(i,s,_,n):C?this.gl2.drawArraysInstanced(i,n,s,w):this.gl.drawArrays(i,n,s)}),N&&N.end()}),!0)}setUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};je.priority>=2&&WV(t,this.id,this._uniformSetters),this.gl.useProgram(this.handle);for(let r in t){let i=t[r],s=this._uniformSetters[r];if(s){let n=i,o=!1;if(n instanceof yi&&(n=n.texture),n instanceof Ja)if(o=this.uniforms[r]!==i,o){s.textureIndex===void 0&&(s.textureIndex=this._textureIndexCounter++);let c=n,{textureIndex:f}=s;c.bind(f),n=f,this._textureUniforms[r]=c}else n=s.textureIndex;else this._textureUniforms[r]&&delete this._textureUniforms[r];(s(n)||o)&&HV(this.uniforms,r,i)}}return this}_areTexturesRenderable(){let t=!0;for(let r in this._textureUniforms){let i=this._textureUniforms[r];i.update(),t=t&&i.loaded}return t}_bindTextures(){for(let t in this._textureUniforms){let r=this._uniformSetters[t].textureIndex;this._textureUniforms[t].bind(r)}}_createHandle(){return this.gl.createProgram()}_deleteHandle(){this.gl.deleteProgram(this.handle)}_getOptionsFromHandle(t){let r=this.gl.getAttachedShaders(t),i={};for(let s of r)switch(this.gl.getShaderParameter(this.handle,35663)){case 35633:i.vs=new q0({handle:s});break;case 35632:i.fs=new Z0({handle:s});break;default:}return i}_getParameter(t){return this.gl.getProgramParameter(this.handle,t)}_setId(t){if(!t){let r=this._getName();this.id=Jo(r)}}_getName(){let t=this.vs.getName()||this.fs.getName();return t=t.replace(/shader/i,\"\"),t=t?\"\".concat(t,\"-program\"):\"program\",t}_compileAndLink(){let{gl:t}=this;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),je.time(YV,\"linkProgram for \".concat(this._getName()))(),t.linkProgram(this.handle),je.timeEnd(YV,\"linkProgram for \".concat(this._getName()))(),t.debug||je.level>0){if(!t.getProgramParameter(this.handle,35714))throw new Error(\"Error linking: \".concat(t.getProgramInfoLog(this.handle)));if(t.validateProgram(this.handle),!t.getProgramParameter(this.handle,35715))throw new Error(\"Error validating: \".concat(t.getProgramInfoLog(this.handle)))}}_readUniformLocationsFromLinkedProgram(){let{gl:t}=this;this._uniformSetters={},this._uniformCount=this._getParameter(35718);for(let r=0;r1)for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:[],i=hr(t),s=Dh(t,Pi.TIMER_QUERY),n=i||s;for(let o of r)switch(o){case\"queries\":n=n&&i;break;case\"timers\":n=n&&s;break;default:ye(!1)}return n}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.target=null,this._queryPending=!1,this._pollingPromise=null,Object.seal(this)}beginTimeElapsedQuery(){return this.begin(sst)}beginOcclusionQuery(){let{conservative:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.begin(t?cst:lst)}beginTransformFeedbackQuery(){return this.begin(ast)}begin(t){return this._queryPending?this:(this.target=t,this.gl2.beginQuery(this.target,this.handle),this)}end(){return this._queryPending?this:(this.target&&(this.gl2.endQuery(this.target),this.target=null,this._queryPending=!0),this)}isResultAvailable(){if(!this._queryPending)return!1;let t=this.gl2.getQueryParameter(this.handle,nst);return t&&(this._queryPending=!1),t}isTimerDisjoint(){return this.gl2.getParameter(ost)}getResult(){return this.gl2.getQueryParameter(this.handle,ist)}getTimerMilliseconds(){return this.getResult()/1e6}createPoll(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Number.POSITIVE_INFINITY;if(this._pollingPromise)return this._pollingPromise;let r=0;return this._pollingPromise=new Promise((i,s)=>{let n=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):r++>t?(s(\"Timed out\"),this._pollingPromise=null):requestAnimationFrame(n)};requestAnimationFrame(n)}),this._pollingPromise}_createHandle(){return e.isSupported(this.gl)?this.gl2.createQuery():null}_deleteHandle(){this.gl2.deleteQuery(this.handle)}};var ep=class extends Ys{get[Symbol.toStringTag](){return\"TransformFeedback\"}static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(t),super(t,r),this.initialize(r),this.stubRemovedMethods(\"TransformFeedback\",\"v6.0\",[\"pause\",\"resume\"]),Object.seal(this)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.buffers={},this.unused={},this.configuration=null,this.bindOnUse=!0,jf(this.buffers)||this.bind(()=>this._unbindBuffers()),this.setProps(t),this}setProps(t){\"program\"in t&&(this.configuration=t.program&&t.program.configuration),\"configuration\"in t&&(this.configuration=t.configuration),\"bindOnUse\"in t&&(t=t.bindOnUse),\"buffers\"in t&&this.setBuffers(t.buffers)}setBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.bind(()=>{for(let r in t)this.setBuffer(r,t[r])}),this}setBuffer(t,r){let i=this._getVaryingIndex(t),{buffer:s,byteSize:n,byteOffset:o}=this._getBufferParams(r);return i<0?(this.unused[t]=s,je.warn(\"\".concat(this.id,\" unused varying buffer \").concat(t))(),this):(this.buffers[i]=r,this.bindOnUse||this._bindBuffer(i,s,o,n),this)}begin(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.gl.bindTransformFeedback(36386,this.handle),this._bindBuffers(),this.gl.beginTransformFeedback(t),this}end(){return this.gl.endTransformFeedback(),this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null),this}_getBufferParams(t){let r,i,s;return t instanceof Fr?s=t:(s=t.buffer,i=t.byteSize,r=t.byteOffset),(r!==void 0||i!==void 0)&&(r=r||0,i=i||s.byteLength-r),{buffer:s,byteOffset:r,byteSize:i}}_getVaryingInfo(t){return this.configuration&&this.configuration.getVaryingInfo(t)}_getVaryingIndex(t){if(this.configuration)return this.configuration.getVaryingInfo(t).location;let r=Number(t);return Number.isFinite(r)?r:-1}_bindBuffers(){if(this.bindOnUse)for(let t in this.buffers){let{buffer:r,byteSize:i,byteOffset:s}=this._getBufferParams(this.buffers[t]);this._bindBuffer(t,r,s,i)}}_unbindBuffers(){if(this.bindOnUse)for(let t in this.buffers)this._bindBuffer(t,null)}_bindBuffer(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,s=arguments.length>3?arguments[3]:void 0,n=r&&r.handle;return!n||s===void 0?this.gl.bindBufferBase(35982,t,n):this.gl.bindBufferRange(35982,t,n,i,s),this}_createHandle(){return this.gl.createTransformFeedback()}_deleteHandle(){this.gl.deleteTransformFeedback(this.handle)}_bindHandle(t){this.gl.bindTransformFeedback(36386,this.handle)}};var uE=null;function ust(e){return(!uE||uE.byteLength1&&arguments[1]!==void 0?arguments[1]:{}).constantAttributeZero?hr(t)||cy()===\"Chrome\":!0}static getDefaultArray(t){return t.luma=t.luma||{},t.luma.defaultVertexArray||(t.luma.defaultVertexArray=new e(t,{handle:null,isDefaultArray:!0})),t.luma.defaultVertexArray}static getMaxAttributes(t){return e.MAX_ATTRIBUTES=e.MAX_ATTRIBUTES||t.getParameter(34921),e.MAX_ATTRIBUTES}static setConstant(t,r,i){switch(i.constructor){case Float32Array:e._setConstantFloatArray(t,r,i);break;case Int32Array:e._setConstantIntArray(t,r,i);break;case Uint32Array:e._setConstantUintArray(t,r,i);break;default:ye(!1)}}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.id||r.program&&r.program.id;super(t,Object.assign({},r,{id:i})),this.buffer=null,this.bufferValue=null,this.isDefaultArray=r.isDefaultArray||!1,this.gl2=t,this.initialize(r),Object.seal(this)}delete(){return super.delete(),this.buffer&&this.buffer.delete(),this}get MAX_ATTRIBUTES(){return e.getMaxAttributes(this.gl)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.setProps(t)}setProps(t){return this}setElementBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return ye(!t||t.target===34963,hst),this.bind(()=>{this.gl.bindBuffer(34963,t?t.handle:null)}),this}setBuffer(t,r,i){if(r.target===34963)return this.setElementBuffer(r,i);let{size:s,type:n,stride:o,offset:c,normalized:f,integer:_,divisor:w}=i,{gl:C,gl2:R}=this;return t=Number(t),this.bind(()=>{C.bindBuffer(34962,r.handle),_?(ye(hr(C)),R.vertexAttribIPointer(t,s,n,o,c)):C.vertexAttribPointer(t,s,n,f,o,c),C.enableVertexAttribArray(t),R.vertexAttribDivisor(t,w||0)}),this}enable(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return!r&&t===0&&!e.isSupported(this.gl,{constantAttributeZero:!0})||(t=Number(t),this.bind(()=>r?this.gl.enableVertexAttribArray(t):this.gl.disableVertexAttribArray(t))),this}getConstantBuffer(t,r){let i=this._normalizeConstantArrayValue(r),s=i.byteLength*t,n=i.length*t,o=!this.buffer;if(this.buffer=this.buffer||new Fr(this.gl,s),o=o||this.buffer.reallocate(s),o=o||!this._compareConstantArrayValues(i,this.bufferValue),o){let c=QV(r.constructor,n);$V({target:c,source:i,start:0,count:n}),this.buffer.subData(c),this.bufferValue=r}return this.buffer}_normalizeConstantArrayValue(t){return Array.isArray(t)?new Float32Array(t):t}_compareConstantArrayValues(t,r){if(!t||!r||t.length!==r.length||t.constructor!==r.constructor)return!1;for(let i=0;i{switch(t){case 34373:return this.gl.getVertexAttribOffset(i,t);default:return this.gl.getVertexAttrib(i,t)}})}};var fst=\"VertexArray: attributes must be Buffers or constants (i.e. typed array)\",dst=/^(.+)__LOCATION_([0-9]+)$/,pst=[\"setBuffers\",\"setGeneric\",\"clearBindings\",\"setLocations\",\"setGenericValues\",\"setDivisor\",\"enable\",\"disable\"],_y=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.id||r.program&&r.program.id;this.id=i,this.gl=t,this.configuration=null,this.elements=null,this.elementsAccessor=null,this.values=null,this.accessors=null,this.unused=null,this.drawParams=null,this.buffer=null,this.attributes={},this.vertexArrayObject=new Q0(t),XM(this,\"VertexArray\",\"v6.0\",pst),this.initialize(r),Object.seal(this)}delete(){this.buffer&&this.buffer.delete(),this.vertexArrayObject.delete()}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.reset(),this.configuration=null,this.bindOnUse=!1,this.setProps(t)}reset(){this.elements=null,this.elementsAccessor=null;let{MAX_ATTRIBUTES:t}=this.vertexArrayObject;return this.values=new Array(t).fill(null),this.accessors=new Array(t).fill(null),this.unused={},this.drawParams=null,this}setProps(t){return\"program\"in t&&(this.configuration=t.program&&t.program.configuration),\"configuration\"in t&&(this.configuration=t.configuration),\"attributes\"in t&&this.setAttributes(t.attributes),\"elements\"in t&&this.setElementBuffer(t.elements),\"bindOnUse\"in t&&(t=t.bindOnUse),this}clearDrawParams(){this.drawParams=null}getDrawParams(){return this.drawParams=this.drawParams||this._updateDrawParams(),this.drawParams}setAttributes(t){return Object.assign(this.attributes,t),this.vertexArrayObject.bind(()=>{for(let r in t){let i=t[r];this._setAttribute(r,i)}this.gl.bindBuffer(34962,null)}),this}setElementBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.elements=t,this.elementsAccessor=r,this.clearDrawParams(),this.vertexArrayObject.setElementBuffer(t,r),this}setBuffer(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(r.target===34963)return this.setElementBuffer(r,i);let{location:s,accessor:n}=this._resolveLocationAndAccessor(t,r,r.accessor,i);return s>=0&&(this.values[s]=r,this.accessors[s]=n,this.clearDrawParams(),this.vertexArrayObject.setBuffer(s,r,n)),this}setConstant(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{location:s,accessor:n}=this._resolveLocationAndAccessor(t,r,Object.assign({size:r.length},i));return s>=0&&(r=this.vertexArrayObject._normalizeConstantArrayValue(r),this.values[s]=r,this.accessors[s]=n,this.clearDrawParams(),this.vertexArrayObject.enable(s,!1)),this}unbindBuffers(){return this.vertexArrayObject.bind(()=>{this.elements&&this.vertexArrayObject.setElementBuffer(null),this.buffer=this.buffer||new Fr(this.gl,{accessor:{size:4}});for(let t=0;t{this.elements&&this.setElementBuffer(this.elements);for(let t=0;t{this._setConstantAttributes(t,r),s=i()}),s}_resolveLocationAndAccessor(t,r,i,s){let n={location:-1,accessor:null},{location:o,name:c}=this._getAttributeIndex(t);if(!Number.isFinite(o)||o<0)return this.unused[t]=r,je.once(3,()=>\"unused value \".concat(t,\" in \").concat(this.id))(),n;let f=this._getAttributeInfo(c||o);if(!f)return n;let _=this.accessors[o]||{},w=Tl.resolve(f.accessor,_,i,s),{size:C,type:R}=w;return ye(Number.isFinite(C)&&Number.isFinite(R)),{location:o,accessor:w}}_getAttributeInfo(t){return this.configuration&&this.configuration.getAttributeInfo(t)}_getAttributeIndex(t){let r=Number(t);if(Number.isFinite(r))return{location:r};let i=dst.exec(t),s=i?i[1]:t,n=i?Number(i[2]):0;return this.configuration?{location:this.configuration.getAttributeLocation(s)+n,name:s}:{location:-1}}_setAttribute(t,r){if(r instanceof Fr)this.setBuffer(t,r);else if(Array.isArray(r)&&r.length&&r[0]instanceof Fr){let i=r[0],s=r[1];this.setBuffer(t,i,s)}else if(ArrayBuffer.isView(r)||Array.isArray(r)){let i=r;this.setConstant(t,i)}else if(r.buffer instanceof Fr){let i=r;this.setBuffer(t,i.buffer,i)}else throw new Error(fst)}_setConstantAttributes(t,r){let i=Math.max(t|0,r|0),s=this.values[0];ArrayBuffer.isView(s)&&this._setConstantAttributeZero(s,i);for(let n=1;n0;if(t.isInstanced=t.isInstanced||o,i instanceof Fr){let c=i;if(o){let f=c.getVertexCount(s);t.instanceCount=Math.min(t.instanceCount,f)}else{let f=c.getVertexCount(s);t.vertexCount=Math.min(t.vertexCount,f)}}}setElements(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return je.deprecated(\"setElements\",\"setElementBuffer\")(),this.setElementBuffer(t,r)}};function Ast(e,t){let{maxElts:r=16,size:i=1}=t,s=\"[\";for(let o=0;o0&&(s+=\",\".concat(o%i===0?\" \":\"\")),s+=$0(e[o],t);let n=e.length>r?\"...\":\"]\";return\"\".concat(s).concat(n)}function $0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=1e-16,{isInteger:i=!1}=t;if(Array.isArray(e)||ArrayBuffer.isView(e))return Ast(e,t);if(!Number.isFinite(e))return String(e);if(Math.abs(e)100&&Math.abs(e)<1e4)return e.toFixed(0);let s=e.toPrecision(2);return s.indexOf(\".0\")===s.length-2?s.slice(0,-1):s}function hE(e){let{header:t=\"Uniforms\",program:r,uniforms:i,undefinedOnly:s=!1}=e;ye(r);let n=\".*_.*\",o=\".*Matrix\",c=r._uniformSetters,f={},_=Object.keys(c).sort(),w=0;for(let N of _)!N.match(n)&&!N.match(o)&&hR({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;for(let N of _)N.match(o)&&hR({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;for(let N of _)f[N]||hR({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;let C=0,R={};if(!s)for(let N in i){let j=i[N];f[N]||(C++,R[N]={Type:\"NOT USED: \".concat(j),[t]:$0(j)})}return{table:f,count:w,unusedTable:R,unusedCount:C}}function hR(e){let{table:t,header:r,uniforms:i,uniformName:s,undefinedOnly:n}=e,o=i[s],c=mst(o);return!n||!c?(t[s]={[r]:c?$0(o):\"N/A\",\"Uniform Type\":c?o:\"NOT PROVIDED\"},!0):!1}function mst(e){return e!=null}function fR(e){let{vertexArray:t,header:r=\"Attributes\"}=e;if(!t.configuration)return{};let i={};t.elements&&(i.ELEMENT_ARRAY_BUFFER=XV(t,t.elements,null,r));let s=t.values;for(let n in s){let o=t._getAttributeInfo(n);if(o){let c=\"\".concat(n,\": \").concat(o.name),f=t.accessors[o.location];f&&(c=\"\".concat(n,\": \").concat(gst(o.name,f))),i[c]=XV(t,s[n],f,r)}}return i}function XV(e,t,r,i){let{gl:s}=e;if(!t)return{[i]:\"null\",\"Format \":\"N/A\"};let n=\"NOT PROVIDED\",o=1,c=0,f=0,_,w,C;if(r&&(n=r.type,o=r.size,n=String(n).replace(\"Array\",\"\"),_=n.indexOf(\"nt\")!==-1),t instanceof Fr){let R=t,{data:N,changed:j}=R.getDebugData();w=j?\"*\":\"\",C=N,f=R.byteLength,c=f/N.BYTES_PER_ELEMENT/o;let Y;if(r){let rt=r.divisor>0;Y=\"\".concat(rt?\"I \":\"P \",\" \").concat(c,\" (x\").concat(o,\"=\").concat(f,\" bytes \").concat(ku(s,n),\")\")}else _=!0,Y=\"\".concat(f,\" bytes\");return{[i]:\"\".concat(w).concat($0(C,{size:o,isInteger:_})),\"Format \":Y}}return C=t,o=t.length,n=String(t.constructor.name).replace(\"Array\",\"\"),_=n.indexOf(\"nt\")!==-1,{[i]:\"\".concat($0(C,{size:o,isInteger:_}),\" (constant)\"),\"Format \":\"\".concat(o,\"x\").concat(n,\" (constant)\")}}function gst(e,t){let{type:r,size:i}=t,s=cE(r,i);return s?\"\".concat(e,\" (\").concat(s.name,\")\"):e}function dR(e){let t={},r=\"Accessors for \".concat(e.id);for(let i of e.attributeInfos)if(i){let s=KV(i);t[\"in \".concat(s)]={[r]:JSON.stringify(i.accessor)}}for(let i of e.varyingInfos)if(i){let s=KV(i);t[\"out \".concat(s)]={[r]:JSON.stringify(i.accessor)}}return t}function KV(e){let{type:t,size:r}=e.accessor,i=cE(t,r);return i?\"\".concat(i.name,\" \").concat(e.name):e.name}var JV=wo()&&typeof document<\"u\",yst=0,X0=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{onCreateContext:r=rt=>py(rt),onAddHTML:i=null,onInitialize:s=()=>{},onRender:n=()=>{},onFinalize:o=()=>{},onError:c,gl:f=null,glOptions:_={},debug:w=!1,createFramebuffer:C=!1,autoResizeViewport:R=!0,autoResizeDrawingBuffer:N=!0,stats:j=Lu.get(\"animation-loop-\".concat(yst++))}=t,{useDevicePixels:Y=!0}=t;\"useDevicePixelRatio\"in t&&(je.deprecated(\"useDevicePixelRatio\",\"useDevicePixels\")(),Y=t.useDevicePixelRatio),this.props={onCreateContext:r,onAddHTML:i,onInitialize:s,onRender:n,onFinalize:o,onError:c,gl:f,glOptions:_,debug:w,createFramebuffer:C},this.gl=f,this.needsRedraw=null,this.timeline=null,this.stats=j,this.cpuTime=this.stats.get(\"CPU Time\"),this.gpuTime=this.stats.get(\"GPU Time\"),this.frameRate=this.stats.get(\"Frame Rate\"),this._initialized=!1,this._running=!1,this._animationFrameId=null,this._nextFramePromise=null,this._resolveNextFrame=null,this._cpuStartTime=0,this.setProps({autoResizeViewport:R,autoResizeDrawingBuffer:N,useDevicePixels:Y}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._pageLoadPromise=null,this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}delete(){this.stop(),this._setDisplay(null)}setNeedsRedraw(t){return ye(typeof t==\"string\"),this.needsRedraw=this.needsRedraw||t,this}setProps(t){return\"autoResizeViewport\"in t&&(this.autoResizeViewport=t.autoResizeViewport),\"autoResizeDrawingBuffer\"in t&&(this.autoResizeDrawingBuffer=t.autoResizeDrawingBuffer),\"useDevicePixels\"in t&&(this.useDevicePixels=t.useDevicePixels),this}start(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this._running)return this;this._running=!0;let r=this._getPageLoadPromise().then(()=>!this._running||this._initialized?null:(this._createWebGLContext(t),this._createFramebuffer(),this._startEventHandling(),this._initializeCallbackData(),this._updateCallbackData(),this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._gpuTimeQuery=Y0.isSupported(this.gl,[\"timers\"])?new Y0(this.gl):null,this._initialized=!0,this.onInitialize(this.animationProps))).then(i=>{this._running&&(this._addCallbackData(i||{}),i!==!1&&this._startLoop())});return this.props.onError&&r.catch(this.props.onError),this}redraw(){return this.isContextLost()?this:(this._beginTimers(),this._setupFrame(),this._updateCallbackData(),this._renderFrame(this.animationProps),this._clearNeedsRedraw(),this.offScreen&&this.gl.commit&&this.gl.commit(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endTimers(),this)}stop(){return this._running&&(this._finalizeCallbackData(),this._cancelAnimationFrame(this._animationFrameId),this._nextFramePromise=null,this._resolveNextFrame=null,this._animationFrameId=null,this._running=!1),this}attachTimeline(t){return this.timeline=t,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw(\"waitForRender\"),this._nextFramePromise||(this._nextFramePromise=new Promise(t=>{this._resolveNextFrame=t})),this._nextFramePromise}async toDataURL(){return this.setNeedsRedraw(\"toDataURL\"),await this.waitForRender(),this.gl.canvas.toDataURL()}isContextLost(){return this.gl.isContextLost()}onCreateContext(){return this.props.onCreateContext(...arguments)}onInitialize(){return this.props.onInitialize(...arguments)}onRender(){return this.props.onRender(...arguments)}onFinalize(){return this.props.onFinalize(...arguments)}getHTMLControlValue(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,i=document.getElementById(t);return i?Number(i.value):r}setViewParameters(){return je.removed(\"AnimationLoop.setViewParameters\",\"AnimationLoop.setProps\")(),this}_startLoop(){let t=()=>{this._running&&(this.redraw(),this._animationFrameId=this._requestAnimationFrame(t))};this._cancelAnimationFrame(this._animationFrameId),this._animationFrameId=this._requestAnimationFrame(t)}_getPageLoadPromise(){return this._pageLoadPromise||(this._pageLoadPromise=JV?new Promise((t,r)=>{if(JV&&document.readyState===\"complete\"){t(document);return}window.addEventListener(\"load\",()=>{t(document)})}):Promise.resolve({})),this._pageLoadPromise}_setDisplay(t){this.display&&(this.display.delete(),this.display.animationLoop=null),t&&(t.animationLoop=this),this.display=t}_cancelAnimationFrame(t){return this.display&&this.display.cancelAnimationFrame?this.display.cancelAnimationFrame(t):K4(t)}_requestAnimationFrame(t){if(this._running)return this.display&&this.display.requestAnimationFrame?this.display.requestAnimationFrame(t):X4(t)}_renderFrame(){if(this.display){this.display._renderFrame(...arguments);return}this.onRender(...arguments)}_clearNeedsRedraw(){this.needsRedraw=null}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._resizeFramebuffer()}_initializeCallbackData(){this.animationProps={gl:this.gl,stop:this.stop,canvas:this.gl.canvas,framebuffer:this.framebuffer,useDevicePixels:this.useDevicePixels,needsRedraw:null,startTime:Date.now(),engineTime:0,tick:0,tock:0,time:0,_timeline:this.timeline,_loop:this,_animationLoop:this,_mousePosition:null}}_updateCallbackData(){let{width:t,height:r,aspect:i}=this._getSizeAndAspect();(t!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw(\"drawing buffer resized\"),i!==this.animationProps.aspect&&this.setNeedsRedraw(\"drawing buffer aspect changed\"),this.animationProps.width=t,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime,this.animationProps._offScreen=this.offScreen}_finalizeCallbackData(){this.onFinalize(this.animationProps)}_addCallbackData(t){typeof t==\"object\"&&t!==null&&(this.animationProps=Object.assign({},this.animationProps,t))}_createWebGLContext(t){if(this.offScreen=t.canvas&&typeof OffscreenCanvas<\"u\"&&t.canvas instanceof OffscreenCanvas,t=Object.assign({},t,this.props.glOptions),this.gl=this.props.gl?V0(this.props.gl,t):this.onCreateContext(t),!Xd(this.gl))throw new Error(\"AnimationLoop.onCreateContext - illegal context returned\");QM(this.gl),this._createInfoDiv()}_createInfoDiv(){if(this.gl.canvas&&this.props.onAddHTML){let t=document.createElement(\"div\");document.body.appendChild(t),t.style.position=\"relative\";let r=document.createElement(\"div\");r.style.position=\"absolute\",r.style.left=\"10px\",r.style.bottom=\"10px\",r.style.width=\"300px\",r.style.background=\"white\",t.appendChild(this.gl.canvas),t.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){let t=this.gl.drawingBufferWidth,r=this.gl.drawingBufferHeight,i=1,{canvas:s}=this.gl;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:t>0&&r>0&&(i=t/r),{width:t,height:r,aspect:i}}_resizeViewport(){this.autoResizeViewport&&this.gl.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.autoResizeDrawingBuffer&&Q4(this.gl,{useDevicePixels:this.useDevicePixels})}_createFramebuffer(){this.props.createFramebuffer&&(this.framebuffer=new yi(this.gl))}_resizeFramebuffer(){this.framebuffer&&this.framebuffer.resize({width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight})}_beginTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this._gpuTimeQuery&&this._gpuTimeQuery.isResultAvailable()&&!this._gpuTimeQuery.isTimerDisjoint()&&this.stats.get(\"GPU Time\").addTime(this._gpuTimeQuery.getTimerMilliseconds()),this._gpuTimeQuery&&this._gpuTimeQuery.beginTimeElapsedQuery(),this.cpuTime.timeStart()}_endTimers(){this.cpuTime.timeEnd(),this._gpuTimeQuery&&this._gpuTimeQuery.end()}_startEventHandling(){let{canvas:t}=this.gl;t&&(t.addEventListener(\"mousemove\",this._onMousemove),t.addEventListener(\"mouseleave\",this._onMouseleave))}_onMousemove(t){this.animationProps._mousePosition=[t.offsetX,t.offsetY]}_onMouseleave(t){this.animationProps._mousePosition=null}};var K0=\"vs\",cb=\"fs\";function Qs(e,t){if(!e)throw new Error(t||\"shadertools: assertion failed.\")}var pR={number:{validate(e,t){return Number.isFinite(e)&&(!(\"max\"in t)||e<=t.max)&&(!(\"min\"in t)||e>=t.min)}},array:{validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function ej(e){let t={};for(let r in e){let i=e[r],s=vst(i);t[r]=s}return t}function vst(e){let t=tj(e);return t===\"object\"?e?\"type\"in e?Object.assign({},e,pR[e.type]):\"value\"in e?(t=tj(e.value),Object.assign({type:t},e,pR[t])):{type:\"object\",value:e}:{type:\"object\",value:null}:Object.assign({type:t,value:e},pR[t])}function tj(e){return Array.isArray(e)||ArrayBuffer.isView(e)?\"array\":typeof e}var xst=\"vs\",bst=\"fs\",yy=class{constructor(t){let{name:r,vs:i,fs:s,dependencies:n=[],uniforms:o,getUniforms:c,deprecations:f=[],defines:_={},inject:w={},vertexShader:C,fragmentShader:R}=t;Qs(typeof r==\"string\"),this.name=r,this.vs=i||C,this.fs=s||R,this.getModuleUniforms=c,this.dependencies=n,this.deprecations=this._parseDeprecationDefinitions(f),this.defines=_,this.injections=wst(w),o&&(this.uniforms=ej(o))}getModuleSource(t){let r;switch(t){case xst:r=this.vs||\"\";break;case bst:r=this.fs||\"\";break;default:Qs(!1)}return\"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi,\"_\"),`\n`).concat(r,\"// END MODULE_\").concat(this.name,`\n\n`)}getUniforms(t,r){return this.getModuleUniforms?this.getModuleUniforms(t,r):this.uniforms?this._defaultGetUniforms(t):{}}getDefines(){return this.defines}checkDeprecations(t,r){this.deprecations.forEach(i=>{i.regex.test(t)&&(i.deprecated?r.deprecated(i.old,i.new)():r.removed(i.old,i.new)())})}_parseDeprecationDefinitions(t){return t.forEach(r=>{switch(r.type){case\"function\":r.regex=new RegExp(\"\\\\b\".concat(r.old,\"\\\\(\"));break;default:r.regex=new RegExp(\"\".concat(r.type,\" \").concat(r.old,\";\"))}}),t}_defaultGetUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r={},i=this.uniforms;for(let s in i){let n=i[s];s in t&&!n.private?(n.validate&&Qs(n.validate(t[s],n),\"\".concat(this.name,\": invalid \").concat(s)),r[s]=t[s]):r[s]=n.value}return r}};function wst(e){let t={vs:{},fs:{}};for(let r in e){let i=e[r],s=r.slice(0,2);typeof i==\"string\"&&(i={order:0,injection:i}),t[s][r]=i}return t}function rj(e){return Sst(nj(e))}function Sst(e){let t={},r={};return ij({modules:e,level:0,moduleMap:t,moduleDepth:r}),Object.keys(r).sort((i,s)=>r[s]-r[i]).map(i=>t[i])}function ij(e){let{modules:t,level:r,moduleMap:i,moduleDepth:s}=e;if(r>=5)throw new Error(\"Possible loop in shader dependency graph\");for(let n of t)i[n.name]=n,(s[n.name]===void 0||s[n.name](r instanceof yy||(Qs(typeof r!=\"string\",\"Shader module use by name is deprecated. Import shader module '\".concat(r,\"' and use it directly.\")),Qs(r.name,\"shader module has no name\"),r=new yy(r),r.dependencies=nj(r.dependencies)),r))}function AR(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=typeof window<\"u\"?window.navigator||{}:{},r=e.userAgent||t.userAgent||\"\",i=r.indexOf(\"MSIE \")!==-1,s=r.indexOf(\"Trident/\")!==-1;return i||s}var Tst=7936,Mst=7937,Est=7938,Pst=35724,gR={GLSL_FRAG_DATA:[\"WEBGL_draw_buffers\",!0],GLSL_FRAG_DEPTH:[\"EXT_frag_depth\",!0],GLSL_DERIVATIVES:[\"OES_standard_derivatives\",!0],GLSL_TEXTURE_LOD:[\"EXT_shader_texture_lod\",!0]},HA={};Object.keys(gR).forEach(e=>{HA[e]=e});function Ist(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function sj(e){let t=e.getExtension(\"WEBGL_debug_renderer_info\"),r=e.getParameter(t&&t.UNMASKED_VENDOR_WEBGL||Tst),i=e.getParameter(t&&t.UNMASKED_RENDERER_WEBGL||Mst);return{gpuVendor:Cst(r,i),vendor:r,renderer:i,version:e.getParameter(Est),shadingLanguageVersion:e.getParameter(Pst)}}function Cst(e,t){return e.match(/NVIDIA/i)||t.match(/NVIDIA/i)?\"NVIDIA\":e.match(/INTEL/i)||t.match(/INTEL/i)?\"INTEL\":e.match(/AMD/i)||t.match(/AMD/i)||e.match(/ATI/i)||t.match(/ATI/i)?\"AMD\":\"UNKNOWN GPU\"}var mR={};function _R(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=gR[t];if(Qs(i,t),!AR(r))return!0;if(t in mR)return mR[t];let s=i[0],n=r.behavior||\"enable\",o=\"#extension GL_\".concat(s,\" : \").concat(n,`\nvoid main(void) {}`),c=e.createShader(35633);e.shaderSource(c,o),e.compileShader(c);let f=e.getShaderParameter(c,35713);return e.deleteShader(c),mR[t]=f,f}function Lst(e,t){let r=gR[t];Qs(r,t);let i=Ist(e)&&r[1]||r[0],s=typeof i==\"string\"?!!e.getExtension(i):i;return Qs(s===!1||s===!0),s}function ub(e,t){return t=Array.isArray(t)?t:[t],t.every(r=>Lst(e,r))}function oj(e){switch(sj(e).gpuVendor.toLowerCase()){case\"nvidia\":return`#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;case\"intel\":return`#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;case\"amd\":return`#define AMD_GPU\n`;default:return`#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`}}function aj(e,t,r){let i=`#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;return ub(e,HA.GLSL_FRAG_DEPTH)&&(i+=`\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`),ub(e,HA.GLSL_DERIVATIVES)&&_R(e,HA.GLSL_DERIVATIVES)&&(i+=`\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`),ub(e,HA.GLSL_FRAG_DATA)&&_R(e,HA.GLSL_FRAG_DATA,{behavior:\"require\"})&&(i+=`\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`),ub(e,HA.GLSL_TEXTURE_LOD)&&(i+=`// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`),i}var lj=`#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`,cj=`#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;var kst={[K0]:lj,[cb]:cj},hb=\"__LUMA_INJECT_DECLARATIONS__\",uj=/void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/,hj=/}\\n?[^{}]*$/,yR=[];function fE(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s=t===K0;for(let n in r){let o=r[n];o.sort((f,_)=>f.order-_.order),yR.length=o.length;for(let f=0,_=o.length;f<_;++f)yR[f]=o[f].injection;let c=\"\".concat(yR.join(`\n`),`\n`);switch(n){case\"vs:#decl\":s&&(e=e.replace(hb,c));break;case\"vs:#main-start\":s&&(e=e.replace(uj,f=>f+c));break;case\"vs:#main-end\":s&&(e=e.replace(hj,f=>c+f));break;case\"fs:#decl\":s||(e=e.replace(hb,c));break;case\"fs:#main-start\":s||(e=e.replace(uj,f=>f+c));break;case\"fs:#main-end\":s||(e=e.replace(hj,f=>c+f));break;default:e=e.replace(n,f=>f+c)}}return e=e.replace(hb,\"\"),i&&(e=e.replace(/\\}\\s*$/,n=>n+kst[t])),e}function vy(e){let t={};return Qs(Array.isArray(e)&&e.length>1),e.forEach(r=>{for(let i in r)t[i]=t[i]?\"\".concat(t[i],`\n`).concat(r[i]):r[i]}),t}function xy(e){return new RegExp(\"\\\\b\".concat(e,\"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"),\"g\")}var fj=[[/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/,`#version 300 es\n`],[/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g,\"textureLod(\"],[/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g,\"texture(\"]],Rst=[...fj,[xy(\"attribute\"),\"in $1\"],[xy(\"varying\"),\"out $1\"]],Dst=[...fj,[xy(\"varying\"),\"in $1\"]],dj=[[/^#version[ \\t]+300[ \\t]+es/,\"#version 100\"],[/\\btexture(2D|2DProj|Cube)Lod\\(/g,\"texture$1LodEXT(\"],[/\\btexture\\(/g,\"texture2D(\"],[/\\btextureLod\\(/g,\"texture2DLodEXT(\"]],Ost=[...dj,[xy(\"in\"),\"attribute $1\"],[xy(\"out\"),\"varying $1\"]],Bst=[...dj,[xy(\"in\"),\"varying $1\"]],vR=\"gl_FragColor\",xR=/\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/,Fst=/void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;function bR(e,t,r){switch(t){case 300:return r?dE(e,Rst):zst(e);case 100:return r?dE(e,Ost):Nst(e);default:throw new Error(\"unknown GLSL version \".concat(t))}}function dE(e,t){for(let[r,i]of t)e=e.replace(r,i);return e}function zst(e){e=dE(e,Dst);let t=e.match(xR);if(t){let r=t[1];e=e.replace(new RegExp(\"\\\\b\".concat(vR,\"\\\\b\"),\"g\"),r)}else{let r=\"fragmentColor\";e=e.replace(Fst,i=>\"out vec4 \".concat(r,`;\n`).concat(i)).replace(new RegExp(\"\\\\b\".concat(vR,\"\\\\b\"),\"g\"),r)}return e}function Nst(e){e=dE(e,Bst);let t=e.match(xR);if(t){let r=t[1];e=e.replace(xR,\"\").replace(new RegExp(\"\\\\b\".concat(r,\"\\\\b\"),\"g\"),vR)}return e}var Ust=`\n\n`.concat(hb,`\n\n`),Aj={[K0]:\"vertex\",[cb]:\"fragment\"},Vst=`precision highp float;\n\n`;function wR(e,t){let{vs:r,fs:i}=t,s=rj(t.modules||[]);return{gl:e,vs:pj(e,Object.assign({},t,{source:r,type:K0,modules:s})),fs:pj(e,Object.assign({},t,{source:i,type:cb,modules:s})),getUniforms:jst(s)}}function pj(e,t){let{id:r,source:i,type:s,modules:n,defines:o={},hookFunctions:c=[],inject:f={},transpileToGLSL100:_=!1,prologue:w=!0,log:C}=t;Qs(typeof i==\"string\",\"shader source must be a string\");let R=s===K0,N=i.split(`\n`),j=100,Y=\"\",rt=i;N[0].indexOf(\"#version \")===0?(j=300,Y=N[0],rt=N.slice(1).join(`\n`)):Y=\"#version \".concat(j);let $={};n.forEach(Kt=>{Object.assign($,Kt.getDefines())}),Object.assign($,o);let K=w?\"\".concat(Y,`\n`).concat(Wst({id:r,source:i,type:s}),`\n`).concat(Gst({type:s}),`\n`).concat(oj(e),`\n`).concat(aj(e,j,!R),`\n`).concat(Hst($),`\n`).concat(R?\"\":Vst,`\n`):\"\".concat(Y,`\n`),tt=Zst(c),ut={},Pt={},Ot={};for(let Kt in f){let Zt=typeof f[Kt]==\"string\"?{injection:f[Kt],order:0}:f[Kt],le=Kt.match(/^(v|f)s:(#)?([\\w-]+)$/);if(le){let ue=le[2],Ge=le[3];ue?Ge===\"decl\"?Pt[Kt]=[Zt]:Ot[Kt]=[Zt]:ut[Kt]=[Zt]}else Ot[Kt]=[Zt]}for(let Kt of n){C&&Kt.checkDeprecations(rt,C);let Zt=Kt.getModuleSource(s,j);K+=Zt;let le=Kt.injections[s];for(let ue in le){let Ge=ue.match(/^(v|f)s:#([\\w-]+)$/);if(Ge){let er=Ge[2]===\"decl\"?Pt:Ot;er[ue]=er[ue]||[],er[ue].push(le[ue])}else ut[ue]=ut[ue]||[],ut[ue].push(le[ue])}}return K+=Ust,K=fE(K,s,Pt),K+=qst(tt[s],ut),K+=rt,K=fE(K,s,Ot),K=bR(K,_?100:j,R),K}function jst(e){return function(r){let i={};for(let s of e){let n=s.getUniforms(r,i);Object.assign(i,n)}return i}}function Gst(e){let{type:t}=e;return`\n#define SHADER_TYPE_`.concat(Aj[t].toUpperCase(),`\n`)}function Wst(e){let{id:t,source:r,type:i}=e;return t&&typeof t==\"string\"&&r.indexOf(\"SHADER_NAME\")===-1?`\n#define SHADER_NAME `.concat(t,\"_\").concat(Aj[i],`\n\n`):\"\"}function Hst(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=0,r=\"\";for(let i in e){t===0&&(r+=`\n// APPLICATION DEFINES\n`),t++;let s=e[i];(s||Number.isFinite(s))&&(r+=\"#define \".concat(i.toUpperCase(),\" \").concat(e[i],`\n`))}return t===0&&(r+=`\n`),r}function qst(e,t){let r=\"\";for(let i in e){let s=e[i];if(r+=\"void \".concat(s.signature,` {\n`),s.header&&(r+=\" \".concat(s.header)),t[i]){let n=t[i];n.sort((o,c)=>o.order-c.order);for(let o of n)r+=\" \".concat(o.injection,`\n`)}s.footer&&(r+=\" \".concat(s.footer)),r+=`}\n`}return r}function Zst(e){let t={vs:{},fs:{}};return e.forEach(r=>{let i;typeof r!=\"string\"?(i=r,r=i.hook):i={},r=r.trim();let[s,n]=r.split(\":\"),o=r.replace(/\\(.+/,\"\");t[s][o]=Object.assign(i,{signature:n})}),t}var Yst=\"void main() {gl_FragColor = vec4(0);}\",mj=`out vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`,Qst=`#version 300 es\n`.concat(mj);function pE(e,t){t=Array.isArray(t)?t:[t];let r=e.replace(/^\\s+/,\"\").split(/\\s+/),[i,s,n]=r;if(!t.includes(i)||!s||!n)return null;let o=n.split(\";\")[0];return{qualifier:i,type:s,name:o}}function fb(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{version:t=100,input:r,inputType:i,output:s}=e;if(!r)return t===300?Qst:t>300?\"#version \".concat(t,`\n`).concat(mj):Yst;let n=gj(r,i);return t>=300?\"#version \".concat(t,\" \").concat(t===300?\"es\":\"\",`\nin `).concat(i,\" \").concat(r,`;\nout vec4 `).concat(s,`;\nvoid main() {\n `).concat(s,\" = \").concat(n,`;\n}`):\"varying \".concat(i,\" \").concat(r,`;\nvoid main() {\n gl_FragColor = `).concat(n,`;\n}`)}function SR(e){switch(e){case\"float\":return\"x\";case\"vec2\":return\"xy\";case\"vec3\":return\"xyz\";case\"vec4\":return\"xyzw\";default:return Qs(!1),null}}function TR(e){switch(e){case\"float\":return 1;case\"vec2\":return 2;case\"vec3\":return 3;case\"vec4\":return 4;default:return Qs(!1),null}}function gj(e,t){switch(t){case\"float\":return\"vec4(\".concat(e,\", 0.0, 0.0, 1.0)\");case\"vec2\":return\"vec4(\".concat(e,\", 0.0, 1.0)\");case\"vec3\":return\"vec4(\".concat(e,\", 1.0)\");case\"vec4\":return e;default:return Qs(!1),null}}var $st=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`,AE={name:\"fp32\",vs:$st,fs:null};function Oh(e,t){if(!e)throw new Error(\"math.gl assertion \".concat(t))}var NLt=1/Math.PI*180,ULt=1/180*Math.PI,$s={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function MR(e,{precision:t=$s.precision}={}){return e=Xst(e),\"\".concat(parseFloat(e.toPrecision(t)))}function Bh(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ml(e,t,r){return Jst(e,i=>Math.max(t,Math.min(r,i)))}function tc(e,t,r){return Bh(e)?e.map((i,s)=>tc(i,t[s],r)):r*t+(1-r)*e}function To(e,t,r){let i=$s.EPSILON;r&&($s.EPSILON=r);try{if(e===t)return!0;if(Bh(e)&&Bh(t)){if(e.length!==t.length)return!1;for(let s=0;s0?\", \":\"\")+MR(this[i],t);return\"\".concat(t.printTypes?this.constructor.name:\"\",\"[\").concat(r,\"]\")}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r=0&&t=0&&t0&&(n=1/Math.sqrt(n)),e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function CR(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Ty(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[0],c=r[1],f=r[2];return e[0]=s*f-n*c,e[1]=n*o-i*f,e[2]=i*c-s*o,e}function Tj(e,t,r,i){var s=t[0],n=t[1],o=t[2];return e[0]=s+i*(r[0]-s),e[1]=n+i*(r[1]-n),e[2]=o+i*(r[2]-o),e}function My(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[3]*i+r[7]*s+r[11]*n+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*s+r[8]*n+r[12])/o,e[1]=(r[1]*i+r[5]*s+r[9]*n+r[13])/o,e[2]=(r[2]*i+r[6]*s+r[10]*n+r[14])/o,e}function vE(e,t,r){var i=t[0],s=t[1],n=t[2];return e[0]=i*r[0]+s*r[3]+n*r[6],e[1]=i*r[1]+s*r[4]+n*r[7],e[2]=i*r[2]+s*r[5]+n*r[8],e}function xE(e,t,r){var i=r[0],s=r[1],n=r[2],o=r[3],c=t[0],f=t[1],_=t[2],w=s*_-n*f,C=n*c-i*_,R=i*f-s*c,N=s*R-n*C,j=n*w-i*R,Y=i*C-s*w,rt=o*2;return w*=rt,C*=rt,R*=rt,N*=2,j*=2,Y*=2,e[0]=c+w+N,e[1]=f+C+j,e[2]=_+R+Y,e}function Mj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[0],n[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),n[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Ej(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),n[1]=s[1],n[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Pj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),n[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),n[2]=s[2],e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Ij(e,t){var r=e[0],i=e[1],s=e[2],n=t[0],o=t[1],c=t[2],f=Math.sqrt(r*r+i*i+s*s),_=Math.sqrt(n*n+o*o+c*c),w=f*_,C=w&&CR(e,t)/w;return Math.acos(Math.min(Math.max(C,-1),1))}var bE=not;var wE=iot,SE=sot,JLt=function(){var e=PR();return function(t,r,i,s,n,o){var c,f;for(r||(r=3),i||(i=0),s?f=Math.min(s*r+i,t.length):f=t.length,c=i;c0?this.copy([t,...r]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(oot)}fromObject(t){return this.check()}fromQuaternion(t){return Bj(this,t),this.check()}set(t,r,i,s,n,o,c,f,_){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this[4]=n,this[5]=o,this[6]=c,this[7]=f,this[8]=_,this.check()}setRowMajor(t,r,i,s,n,o,c,f,_){return this[0]=t,this[1]=s,this[2]=c,this[3]=r,this[4]=n,this[5]=f,this[6]=i,this[7]=o,this[8]=_,this.check()}determinant(){return Rj(this)}transpose(){return Lj(this,this),this.check()}invert(){return kj(this,this),this.check()}multiplyLeft(t){return kR(this,t,this),this.check()}multiplyRight(t){return kR(this,this,t),this.check()}rotate(t){return Oj(this,this,t),this.check()}scale(t){return Array.isArray(t)?RR(this,this,t):RR(this,this,[t,t]),this.check()}translate(t){return Dj(this,this,t),this.check()}transform(t,r){let i;switch(t.length){case 2:i=_j(r||[-0,-0],t,this);break;case 3:i=vE(r||[-0,-0,-0],t,this);break;case 4:i=yE(r||[-0,-0,-0,-0],t,this);break;default:throw new Error(\"Illegal vector\")}return qA(i,t.length),i}transformVector(t,r){return this.transform(t,r)}transformVector2(t,r){return this.transform(t,r)}transformVector3(t,r){return this.transform(t,r)}},EE,PE;function aot(){return EE||(EE=new rs([0,0,0,0,0,0,0,0,0]),Object.freeze(EE)),EE}function lot(){return PE||(PE=new rs,Object.freeze(PE)),PE}function cot(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function zj(e,t){if(e===t){var r=t[1],i=t[2],s=t[3],n=t[6],o=t[7],c=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=n,e[11]=t[14],e[12]=s,e[13]=o,e[14]=c}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function pb(e,t){var r=t[0],i=t[1],s=t[2],n=t[3],o=t[4],c=t[5],f=t[6],_=t[7],w=t[8],C=t[9],R=t[10],N=t[11],j=t[12],Y=t[13],rt=t[14],$=t[15],K=r*c-i*o,tt=r*f-s*o,ut=r*_-n*o,Pt=i*f-s*c,Ot=i*_-n*c,Kt=s*_-n*f,Zt=w*Y-C*j,le=w*rt-R*j,ue=w*$-N*j,Ge=C*rt-R*Y,tr=C*$-N*Y,er=R*$-N*rt,Lr=K*er-tt*tr+ut*Ge+Pt*ue-Ot*le+Kt*Zt;return Lr?(Lr=1/Lr,e[0]=(c*er-f*tr+_*Ge)*Lr,e[1]=(s*tr-i*er-n*Ge)*Lr,e[2]=(Y*Kt-rt*Ot+$*Pt)*Lr,e[3]=(R*Ot-C*Kt-N*Pt)*Lr,e[4]=(f*ue-o*er-_*le)*Lr,e[5]=(r*er-s*ue+n*le)*Lr,e[6]=(rt*ut-j*Kt-$*tt)*Lr,e[7]=(w*Kt-R*ut+N*tt)*Lr,e[8]=(o*tr-c*ue+_*Zt)*Lr,e[9]=(i*ue-r*tr-n*Zt)*Lr,e[10]=(j*Ot-Y*ut+$*K)*Lr,e[11]=(C*ut-w*Ot-N*K)*Lr,e[12]=(c*le-o*Ge-f*Zt)*Lr,e[13]=(r*Ge-i*le+s*Zt)*Lr,e[14]=(Y*tt-j*Pt-rt*K)*Lr,e[15]=(w*Pt-C*tt+R*K)*Lr,e):null}function Nj(e){var t=e[0],r=e[1],i=e[2],s=e[3],n=e[4],o=e[5],c=e[6],f=e[7],_=e[8],w=e[9],C=e[10],R=e[11],N=e[12],j=e[13],Y=e[14],rt=e[15],$=t*o-r*n,K=t*c-i*n,tt=t*f-s*n,ut=r*c-i*o,Pt=r*f-s*o,Ot=i*f-s*c,Kt=_*j-w*N,Zt=_*Y-C*N,le=_*rt-R*N,ue=w*Y-C*j,Ge=w*rt-R*j,tr=C*rt-R*Y;return $*tr-K*Ge+tt*ue+ut*le-Pt*Zt+Ot*Kt}function Wf(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3],c=t[4],f=t[5],_=t[6],w=t[7],C=t[8],R=t[9],N=t[10],j=t[11],Y=t[12],rt=t[13],$=t[14],K=t[15],tt=r[0],ut=r[1],Pt=r[2],Ot=r[3];return e[0]=tt*i+ut*c+Pt*C+Ot*Y,e[1]=tt*s+ut*f+Pt*R+Ot*rt,e[2]=tt*n+ut*_+Pt*N+Ot*$,e[3]=tt*o+ut*w+Pt*j+Ot*K,tt=r[4],ut=r[5],Pt=r[6],Ot=r[7],e[4]=tt*i+ut*c+Pt*C+Ot*Y,e[5]=tt*s+ut*f+Pt*R+Ot*rt,e[6]=tt*n+ut*_+Pt*N+Ot*$,e[7]=tt*o+ut*w+Pt*j+Ot*K,tt=r[8],ut=r[9],Pt=r[10],Ot=r[11],e[8]=tt*i+ut*c+Pt*C+Ot*Y,e[9]=tt*s+ut*f+Pt*R+Ot*rt,e[10]=tt*n+ut*_+Pt*N+Ot*$,e[11]=tt*o+ut*w+Pt*j+Ot*K,tt=r[12],ut=r[13],Pt=r[14],Ot=r[15],e[12]=tt*i+ut*c+Pt*C+Ot*Y,e[13]=tt*s+ut*f+Pt*R+Ot*rt,e[14]=tt*n+ut*_+Pt*N+Ot*$,e[15]=tt*o+ut*w+Pt*j+Ot*K,e}function eg(e,t,r){var i=r[0],s=r[1],n=r[2],o,c,f,_,w,C,R,N,j,Y,rt,$;return t===e?(e[12]=t[0]*i+t[4]*s+t[8]*n+t[12],e[13]=t[1]*i+t[5]*s+t[9]*n+t[13],e[14]=t[2]*i+t[6]*s+t[10]*n+t[14],e[15]=t[3]*i+t[7]*s+t[11]*n+t[15]):(o=t[0],c=t[1],f=t[2],_=t[3],w=t[4],C=t[5],R=t[6],N=t[7],j=t[8],Y=t[9],rt=t[10],$=t[11],e[0]=o,e[1]=c,e[2]=f,e[3]=_,e[4]=w,e[5]=C,e[6]=R,e[7]=N,e[8]=j,e[9]=Y,e[10]=rt,e[11]=$,e[12]=o*i+w*s+j*n+t[12],e[13]=c*i+C*s+Y*n+t[13],e[14]=f*i+R*s+rt*n+t[14],e[15]=_*i+N*s+$*n+t[15]),e}function Ey(e,t,r){var i=r[0],s=r[1],n=r[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Uj(e,t,r,i){var s=i[0],n=i[1],o=i[2],c=Math.hypot(s,n,o),f,_,w,C,R,N,j,Y,rt,$,K,tt,ut,Pt,Ot,Kt,Zt,le,ue,Ge,tr,er,Lr,zi;return c0&&(o=1/Math.sqrt(o)),e[0]=r*o,e[1]=i*o,e[2]=s*o,e[3]=n*o,e}function Xj(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function Kj(e,t,r,i){var s=t[0],n=t[1],o=t[2],c=t[3];return e[0]=s+i*(r[0]-s),e[1]=n+i*(r[1]-n),e[2]=o+i*(r[2]-o),e[3]=c+i*(r[3]-c),e}function zh(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3];return e[0]=r[0]*i+r[4]*s+r[8]*n+r[12]*o,e[1]=r[1]*i+r[5]*s+r[9]*n+r[13]*o,e[2]=r[2]*i+r[6]*s+r[10]*n+r[14]*o,e[3]=r[3]*i+r[7]*s+r[11]*n+r[15]*o,e}function Jj(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[0],c=r[1],f=r[2],_=r[3],w=_*i+c*n-f*s,C=_*s+f*i-o*n,R=_*n+o*s-c*i,N=-o*i-c*s-f*n;return e[0]=w*_+N*-o+C*-f-R*-c,e[1]=C*_+N*-c+R*-o-w*-f,e[2]=R*_+N*-f+w*-c-C*-o,e[3]=t[3],e}var _kt=function(){var e=fot();return function(t,r,i,s,n,o){var c,f;for(r||(r=4),i||(i=0),s?f=Math.min(s*r+i,t.length):f=t.length,c=i;cMath.PI*2)throw Error(\"expected radians\")}function _ot(e,t,r,i,s,n){let o=2*n/(r-t),c=2*n/(s-i),f=(r+t)/(r-t),_=(s+i)/(s-i),w=-1,C=-1,R=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=f,e[9]=_,e[10]=w,e[11]=C,e[12]=0,e[13]=0,e[14]=R,e[15]=0,e}function e7(){var e=new ya(4);return ya!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function r7(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function NR(e,t,r){r=r*.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e}function UR(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3],c=r[0],f=r[1],_=r[2],w=r[3];return e[0]=i*w+o*c+s*_-n*f,e[1]=s*w+o*f+n*c-i*_,e[2]=n*w+o*_+i*f-s*c,e[3]=o*w-i*c-s*f-n*_,e}function i7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f+o*c,e[1]=s*f+n*c,e[2]=n*f-s*c,e[3]=o*f-i*c,e}function n7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f-n*c,e[1]=s*f+o*c,e[2]=n*f+i*c,e[3]=o*f-s*c,e}function s7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f+s*c,e[1]=s*f-i*c,e[2]=n*f+o*c,e[3]=o*f-n*c,e}function o7(e,t){var r=t[0],i=t[1],s=t[2];return e[0]=r,e[1]=i,e[2]=s,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-s*s)),e}function mb(e,t,r,i){var s=t[0],n=t[1],o=t[2],c=t[3],f=r[0],_=r[1],w=r[2],C=r[3],R,N,j,Y,rt;return N=s*f+n*_+o*w+c*C,N<0&&(N=-N,f=-f,_=-_,w=-w,C=-C),1-N>Fh?(R=Math.acos(N),j=Math.sin(R),Y=Math.sin((1-i)*R)/j,rt=Math.sin(i*R)/j):(Y=1-i,rt=i),e[0]=Y*s+rt*f,e[1]=Y*n+rt*_,e[2]=Y*o+rt*w,e[3]=Y*c+rt*C,e}function a7(e,t){var r=t[0],i=t[1],s=t[2],n=t[3],o=r*r+i*i+s*s+n*n,c=o?1/o:0;return e[0]=-r*c,e[1]=-i*c,e[2]=-s*c,e[3]=n*c,e}function l7(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function VR(e,t){var r=t[0]+t[4]+t[8],i;if(r>0)i=Math.sqrt(r+1),e[3]=.5*i,i=.5/i,e[0]=(t[5]-t[7])*i,e[1]=(t[6]-t[2])*i,e[2]=(t[1]-t[3])*i;else{var s=0;t[4]>t[0]&&(s=1),t[8]>t[s*3+s]&&(s=2);var n=(s+1)%3,o=(s+2)%3;i=Math.sqrt(t[s*3+s]-t[n*3+n]-t[o*3+o]+1),e[s]=.5*i,i=.5/i,e[3]=(t[n*3+o]-t[o*3+n])*i,e[n]=(t[n*3+s]+t[s*3+n])*i,e[o]=(t[o*3+s]+t[s*3+o])*i}return e}var c7=Zj;var u7=Py,h7=Xj,f7=Kj,d7=Yj;var p7=Qj;var A7=$j;var m7=function(){var e=PR(),t=IR(1,0,0),r=IR(0,1,0);return function(i,s,n){var o=CR(s,n);return o<-.999999?(Ty(e,t,s),wE(e)<1e-6&&Ty(e,r,s),Sj(e,e),NR(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(Ty(e,s,n),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,A7(i,i))}}(),Ikt=function(){var e=e7(),t=e7();return function(r,i,s,n,o,c){return mb(e,i,o,c),mb(t,s,n,c),mb(r,e,t,2*c*(1-c)),r}}(),Ckt=function(){var e=Cj();return function(t,r,i,s){return e[0]=i[0],e[3]=i[1],e[6]=i[2],e[1]=s[0],e[4]=s[1],e[7]=s[2],e[2]=-r[0],e[5]=-r[1],e[8]=-r[2],A7(t,VR(t,e))}}();var vot=[0,0,0,1],rg=class extends rp{constructor(t=0,r=0,i=0,s=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,r,i,s)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,r,i,s){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return VR(this,t),this.check()}fromAxisRotation(t,r){return NR(this,t,r),this.check()}identity(){return r7(this),this.check()}setAxisAngle(t,r){return this.fromAxisRotation(t,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=Hi(t)}get y(){return this[1]}set y(t){this[1]=Hi(t)}get z(){return this[2]}set z(t){this[2]=Hi(t)}get w(){return this[3]}set w(t){this[3]=Hi(t)}len(){return d7(this)}lengthSquared(){return p7(this)}dot(t){return h7(this,t)}rotationTo(t,r){return m7(this,t,r),this.check()}add(t){return c7(this,this,t),this.check()}calculateW(){return o7(this,this),this.check()}conjugate(){return l7(this,this),this.check()}invert(){return a7(this,this),this.check()}lerp(t,r,i){return i===void 0?this.lerp(this,t,r):(f7(this,t,r,i),this.check())}multiplyRight(t){return UR(this,this,t),this.check()}multiplyLeft(t){return UR(this,t,this),this.check()}normalize(){let t=this.len(),r=t>0?1/t:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,t===0&&(this[3]=1),this.check()}rotateX(t){return i7(this,this,t),this.check()}rotateY(t){return n7(this,this,t),this.check()}rotateZ(t){return s7(this,this,t),this.check()}scale(t){return u7(this,this,t),this.check()}slerp(t,r,i){let s,n,o;switch(arguments.length){case 1:({start:s=vot,target:n,ratio:o}=t);break;case 2:s=this,n=t,o=r;break;default:s=t,n=r,o=i}return mb(this,s,n,o),this.check()}transformVector4(t,r=new db){return Jj(r,t,this),qA(r,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,r){return this.setAxisAngle(t,r)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var RE={EPSILON1:.1,EPSILON2:.01,EPSILON3:.001,EPSILON4:1e-4,EPSILON5:1e-5,EPSILON6:1e-6,EPSILON7:1e-7,EPSILON8:1e-8,EPSILON9:1e-9,EPSILON10:1e-10,EPSILON11:1e-11,EPSILON12:1e-12,EPSILON13:1e-13,EPSILON14:1e-14,EPSILON15:1e-15,EPSILON16:1e-16,EPSILON17:1e-17,EPSILON18:1e-18,EPSILON19:1e-19,EPSILON20:1e-20,PI_OVER_TWO:Math.PI/2,PI_OVER_FOUR:Math.PI/4,PI_OVER_SIX:Math.PI/6,TWO_PI:Math.PI*2};var jR=`#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\n\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n vec3 attenuation;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform AmbientLight lighting_uAmbientLight;\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\nuniform int lighting_uPointLightCount;\nuniform int lighting_uDirectionalLightCount;\n\nuniform bool lighting_uEnabled;\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\n#endif\n`;var xot={lightSources:{}};function GR(){let{color:e=[0,0,0],intensity:t=1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.map(r=>r*t/255)}function bot(e){let{ambientLight:t,pointLights:r=[],directionalLights:i=[]}=e,s={};return t?s[\"lighting_uAmbientLight.color\"]=GR(t):s[\"lighting_uAmbientLight.color\"]=[0,0,0],r.forEach((n,o)=>{s[\"lighting_uPointLight[\".concat(o,\"].color\")]=GR(n),s[\"lighting_uPointLight[\".concat(o,\"].position\")]=n.position,s[\"lighting_uPointLight[\".concat(o,\"].attenuation\")]=n.attenuation||[1,0,0]}),s.lighting_uPointLightCount=r.length,i.forEach((n,o)=>{s[\"lighting_uDirectionalLight[\".concat(o,\"].color\")]=GR(n),s[\"lighting_uDirectionalLight[\".concat(o,\"].direction\")]=n.direction}),s.lighting_uDirectionalLightCount=i.length,s}function g7(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:xot;if(\"lightSources\"in e){let{ambientLight:t,pointLights:r,directionalLights:i}=e.lightSources||{};return t||r&&r.length>0||i&&i.length>0?Object.assign({},bot({ambientLight:t,pointLights:r,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if(\"lights\"in e){let t={pointLights:[],directionalLights:[]};for(let r of e.lights||[])switch(r.type){case\"ambient\":t.ambientLight=r;break;case\"directional\":t.directionalLights.push(r);break;case\"point\":t.pointLights.push(r);break;default:}return g7({lightSources:t})}return{}}var WR={name:\"lights\",vs:jR,fs:jR,getUniforms:g7,defines:{MAX_LIGHTS:3}};var wot=new Uint8Array([0,255,255,255]),Sot={pickingSelectedColor:null,pickingHighlightColor:wot,pickingActive:!1,pickingAttribute:!1};function Tot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Sot,t={};if(e.pickingSelectedColor!==void 0)if(!e.pickingSelectedColor)t.picking_uSelectedColorValid=0;else{let r=e.pickingSelectedColor.slice(0,3);t.picking_uSelectedColorValid=1,t.picking_uSelectedColor=r}if(e.pickingHighlightColor){let r=Array.from(e.pickingHighlightColor,i=>i/255);Number.isFinite(r[3])||(r[3]=1),t.picking_uHighlightColor=r}return e.pickingActive!==void 0&&(t.picking_uActive=!!e.pickingActive,t.picking_uAttribute=!!e.pickingAttribute),t}var Mot=`uniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`,Eot=`uniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`,DE={name:\"picking\",vs:Mot,fs:Eot,getUniforms:Tot};var HR=`\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;var Pot={};function Iot(e){let{ambient:t=.35,diffuse:r=.6,shininess:i=32,specularColor:s=[30,30,30]}=e;return{lighting_uAmbient:t,lighting_uDiffuse:r,lighting_uShininess:i,lighting_uSpecularColor:s.map(n=>n/255)}}function _7(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Pot;if(!(\"material\"in e))return{};let{material:t}=e;return t?Iot(t):{lighting_uEnabled:!1}}var YA={name:\"gouraud-lighting\",dependencies:[WR],vs:HR,defines:{LIGHTING_VERTEX:1},getUniforms:_7},Cy={name:\"phong-lighting\",dependencies:[WR],fs:HR,defines:{LIGHTING_FRAGMENT:1},getUniforms:_7};var Cot=`attribute float transform_elementID;\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`,qR={name:\"transform\",vs:Cot,fs:null};var Nh=class e{static getDefaultProgramManager(t){return t.luma=t.luma||{},t.luma.defaultProgramManager=t.luma.defaultProgramManager||new e(t),t.luma.defaultProgramManager}constructor(t){this.gl=t,this._programCache={},this._getUniforms={},this._registeredModules={},this._hookFunctions=[],this._defaultModules=[],this._hashes={},this._hashCounter=0,this.stateHash=0,this._useCounts={}}addDefaultModule(t){this._defaultModules.find(r=>r.name===t.name)||this._defaultModules.push(t),this.stateHash++}removeDefaultModule(t){let r=typeof t==\"string\"?t:t.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==r),this.stateHash++}addShaderHook(t,r){r&&(t=Object.assign(r,{hook:t})),this._hookFunctions.push(t),this.stateHash++}get(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{vs:r=\"\",fs:i=\"\",defines:s={},inject:n={},varyings:o=[],bufferMode:c=35981,transpileToGLSL100:f=!1}=t,_=this._getModuleList(t.modules),w=this._getHash(r),C=this._getHash(i),R=_.map(tt=>this._getHash(tt.name)).sort(),N=o.map(tt=>this._getHash(tt)),j=Object.keys(s).sort(),Y=Object.keys(n).sort(),rt=[],$=[];for(let tt of j)rt.push(this._getHash(tt)),rt.push(this._getHash(s[tt]));for(let tt of Y)$.push(this._getHash(tt)),$.push(this._getHash(n[tt]));let K=\"\".concat(w,\"/\").concat(C,\"D\").concat(rt.join(\"/\"),\"M\").concat(R.join(\"/\"),\"I\").concat($.join(\"/\"),\"V\").concat(N.join(\"/\"),\"H\").concat(this.stateHash,\"B\").concat(c).concat(f?\"T\":\"\");if(!this._programCache[K]){let tt=wR(this.gl,{vs:r,fs:i,modules:_,inject:n,defines:s,hookFunctions:this._hookFunctions,transpileToGLSL100:f});this._programCache[K]=new tp(this.gl,{hash:K,vs:tt.vs,fs:tt.fs,varyings:o,bufferMode:c}),this._getUniforms[K]=tt.getUniforms||(ut=>{}),this._useCounts[K]=0}return this._useCounts[K]++,this._programCache[K]}getUniforms(t){return this._getUniforms[t.hash]||null}release(t){let r=t.hash;this._useCounts[r]--,this._useCounts[r]===0&&(this._programCache[r].delete(),delete this._programCache[r],delete this._getUniforms[r],delete this._useCounts[r])}_getHash(t){return this._hashes[t]===void 0&&(this._hashes[t]=this._hashCounter++),this._hashes[t]}_getModuleList(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=new Array(this._defaultModules.length+t.length),i={},s=0;for(let n=0,o=this._defaultModules.length;n{},Bot={},Sn=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{id:i=Jo(\"model\")}=r;ye(Xd(t)),this.id=i,this.gl=t,this.id=r.id||Jo(\"Model\"),this.lastLogTime=0,this.animated=!1,this.initialize(r)}initialize(t){this.props={},this.programManager=t.programManager||Nh.getDefaultProgramManager(this.gl),this._programManagerState=-1,this._managedProgram=!1;let{program:r=null,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=t;this.programProps={program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w},this.program=null,this.vertexArray=null,this._programDirty=!0,this.userData={},this.needsRedraw=!0,this._attributes={},this.attributes={},this.uniforms={},this.pickable=!0,this._checkProgram(),this.setUniforms(Object.assign({},this.getModuleUniforms(t.moduleSettings))),this.drawMode=t.drawMode!==void 0?t.drawMode:4,this.vertexCount=t.vertexCount||0,this.geometryBuffers={},this.isInstanced=t.isInstanced||t.instanced||t.instanceCount>0,this._setModelProps(t),this.geometry={},ye(this.drawMode!==void 0&&Number.isFinite(this.vertexCount),Oot)}setProps(t){this._setModelProps(t)}delete(){for(let t in this._attributes)this._attributes[t]!==this.attributes[t]&&this._attributes[t].delete();this._managedProgram&&(this.programManager.release(this.program),this._managedProgram=!1),this.vertexArray.delete(),this._deleteGeometryBuffers()}getDrawMode(){return this.drawMode}getVertexCount(){return this.vertexCount}getInstanceCount(){return this.instanceCount}getAttributes(){return this.attributes}getProgram(){return this.program}setProgram(t){let{program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=t;this.programProps={program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w},this._programDirty=!0}getUniforms(){return this.uniforms}setDrawMode(t){return this.drawMode=t,this}setVertexCount(t){return ye(Number.isFinite(t)),this.vertexCount=t,this}setInstanceCount(t){return ye(Number.isFinite(t)),this.instanceCount=t,this}setGeometry(t){return this.drawMode=t.drawMode,this.vertexCount=t.getVertexCount(),this._deleteGeometryBuffers(),this.geometryBuffers=y7(this.gl,t),this.vertexArray.setAttributes(this.geometryBuffers),this}setAttributes(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(jf(t))return this;let r={};for(let i in t){let s=t[i];r[i]=s.getValue?s.getValue():s}return this.vertexArray.setAttributes(r),this}setUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this.uniforms,t),this}getModuleUniforms(t){this._checkProgram();let r=this.programManager.getUniforms(this.program);return r?r(t):{}}updateModuleSettings(t){let r=this.getModuleUniforms(t||{});return this.setUniforms(r)}clear(t){return Gf(this.program.gl,t),this}draw(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._checkProgram();let{moduleSettings:r=null,framebuffer:i,uniforms:s={},attributes:n={},transformFeedback:o=this.transformFeedback,parameters:c={},vertexArray:f=this.vertexArray}=t;this.setAttributes(n),this.updateModuleSettings(r),this.setUniforms(s);let _;je.priority>=Ly&&(_=this._logDrawCallStart(Ly));let w=this.vertexArray.getDrawParams(),{isIndexed:C=w.isIndexed,indexType:R=w.indexType,indexOffset:N=w.indexOffset,vertexArrayInstanced:j=w.isInstanced}=this.props;j&&!this.isInstanced&&je.warn(\"Found instanced attributes on non-instanced model\",this.id)();let{isInstanced:Y,instanceCount:rt}=this,{onBeforeRender:$=v7,onAfterRender:K=v7}=this.props;$(),this.program.setUniforms(this.uniforms);let tt=this.program.draw(Object.assign(Bot,t,{logPriority:_,uniforms:null,framebuffer:i,parameters:c,drawMode:this.getDrawMode(),vertexCount:this.getVertexCount(),vertexArray:f,transformFeedback:o,isIndexed:C,indexType:R,isInstanced:Y,instanceCount:rt,offset:C?N:0}));return K(),je.priority>=Ly&&this._logDrawCallEnd(_,f,i),tt}transform(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{discard:r=!0,feedbackBuffers:i,unbindModels:s=[]}=t,{parameters:n}=t;i&&this._setFeedbackBuffers(i),r&&(n=Object.assign({},n,{35977:r})),s.forEach(o=>o.vertexArray.unbindBuffers());try{this.draw(Object.assign({},t,{parameters:n}))}finally{s.forEach(o=>o.vertexArray.bindBuffers())}return this}render(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.warn(\"Model.render() is deprecated. Use Model.setUniforms() and Model.draw()\")(),this.setUniforms(t).draw()}_setModelProps(t){Object.assign(this.props,t),\"uniforms\"in t&&this.setUniforms(t.uniforms),\"pickable\"in t&&(this.pickable=t.pickable),\"instanceCount\"in t&&(this.instanceCount=t.instanceCount),\"geometry\"in t&&this.setGeometry(t.geometry),\"attributes\"in t&&this.setAttributes(t.attributes),\"_feedbackBuffers\"in t&&this._setFeedbackBuffers(t._feedbackBuffers)}_checkProgram(){if(!(this._programDirty||this.programManager.stateHash!==this._programManagerState))return;let{program:r}=this.programProps;if(r)this._managedProgram=!1;else{let{vs:i,fs:s,modules:n,inject:o,defines:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=this.programProps;r=this.programManager.get({vs:i,fs:s,modules:n,inject:o,defines:c,varyings:f,bufferMode:_,transpileToGLSL100:w}),this.program&&this._managedProgram&&this.programManager.release(this.program),this._programManagerState=this.programManager.stateHash,this._managedProgram=!0}ye(r instanceof tp,\"Model needs a program\"),this._programDirty=!1,r!==this.program&&(this.program=r,this.vertexArray?this.vertexArray.setProps({program:this.program,attributes:this.vertexArray.attributes}):this.vertexArray=new _y(this.gl,{program:this.program}),this.setUniforms(Object.assign({},this.getModuleUniforms())))}_deleteGeometryBuffers(){for(let t in this.geometryBuffers){let r=this.geometryBuffers[t][0]||this.geometryBuffers[t];r instanceof Fr&&r.delete()}}_setAnimationProps(t){this.animated&&ye(t,\"Model.draw(): animated uniforms but no animationProps\")}_setFeedbackBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(jf(t))return this;let{gl:r}=this.program;return this.transformFeedback=this.transformFeedback||new ep(r,{program:this.program}),this.transformFeedback.setBuffers(t),this}_logDrawCallStart(t){let r=t>3?0:Dot;if(!(Date.now()-this.lastLogTime>> DRAWING MODEL \".concat(this.id),{collapsed:je.level<=2})(),t}_logDrawCallEnd(t,r,i,s){if(t===void 0)return;let n=fR({vertexArray:r,header:\"\".concat(this.id,\" attributes\"),attributes:this._attributes}),{table:o,unusedTable:c,unusedCount:f}=hE({header:\"\".concat(this.id,\" uniforms\"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i)}),{table:_,count:w}=hE({header:\"\".concat(this.id,\" uniforms\"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i),undefinedOnly:!0});w>0&&je.log(\"MISSING UNIFORMS\",Object.keys(_))(),f>0&&je.log(\"UNUSED UNIFORMS\",Object.keys(c))();let C=dR(this.vertexArray.configuration);je.table(t,n)(),je.table(t,o)(),je.table(t+1,C)(),s&&s.log({logLevel:Ly,message:\"Rendered to \".concat(s.id)}),je.groupEnd(Ly)()}};var gb=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.currentIndex=0,this.feedbackMap={},this.varyings=null,this.bindings=[],this.resources={},this._initialize(r),Object.seal(this)}setupResources(t){for(let r of this.bindings)this._setupTransformFeedback(r,t)}updateModelProps(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{varyings:r}=this;return r.length>0&&(t=Object.assign({},t,{varyings:r})),t}getDrawOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this.bindings[this.currentIndex],{sourceBuffers:i,transformFeedback:s}=r;return{attributes:Object.assign({},i,t.attributes),transformFeedback:s}}swap(){return this.feedbackMap?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(t)}getBuffer(t){let{feedbackBuffers:r}=this.bindings[this.currentIndex],i=t?r[t]:null;return i?i instanceof Fr?i:i.buffer:null}getData(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{varyingName:r}=t,i=this.getBuffer(r);return i?i.getData():null}delete(){for(let t in this.resources)this.resources[t].delete()}_initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(t),this.varyings=t.varyings||Object.keys(this.bindings[this.currentIndex].feedbackBuffers),this.varyings.length>0&&ye(hr(this.gl))}_getFeedbackBuffers(t){let{sourceBuffers:r={}}=t,i={};if(this.bindings[this.currentIndex]&&Object.assign(i,this.bindings[this.currentIndex].feedbackBuffers),this.feedbackMap)for(let s in this.feedbackMap){let n=this.feedbackMap[s];s in r&&(i[n]=s)}Object.assign(i,t.feedbackBuffers);for(let s in i){let n=i[s];if(typeof n==\"string\"){let o=r[n],{byteLength:c,usage:f,accessor:_}=o;i[s]=this._createNewBuffer(s,{byteLength:c,usage:f,accessor:_})}}return i}_setupBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r=null}=t;Object.assign(this.feedbackMap,t.feedbackMap);let i=this._getFeedbackBuffers(t);this._updateBindings({sourceBuffers:r,feedbackBuffers:i})}_setupTransformFeedback(t,r){let{model:i}=r,{program:s}=i;t.transformFeedback=new ep(this.gl,{program:s,buffers:t.feedbackBuffers})}_updateBindings(t){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t),this.feedbackMap){let{sourceBuffers:r,feedbackBuffers:i}=this._swapBuffers(this.bindings[this.currentIndex]),s=this._getNextIndex();this.bindings[s]=this._updateBinding(this.bindings[s],{sourceBuffers:r,feedbackBuffers:i})}}_updateBinding(t,r){return t?(Object.assign(t.sourceBuffers,r.sourceBuffers),Object.assign(t.feedbackBuffers,r.feedbackBuffers),t.transformFeedback&&t.transformFeedback.setBuffers(t.feedbackBuffers),t):{sourceBuffers:Object.assign({},r.sourceBuffers),feedbackBuffers:Object.assign({},r.feedbackBuffers)}}_swapBuffers(t){if(!this.feedbackMap)return null;let r=Object.assign({},t.sourceBuffers),i=Object.assign({},t.feedbackBuffers);for(let s in this.feedbackMap){let n=this.feedbackMap[s];r[s]=t.feedbackBuffers[n],i[n]=t.sourceBuffers[s],ye(i[n]instanceof Fr)}return{sourceBuffers:r,feedbackBuffers:i}}_createNewBuffer(t,r){let i=new Fr(this.gl,r);return this.resources[t]&&this.resources[t].delete(),this.resources[t]=i,i}_getNextIndex(){return(this.currentIndex+1)%2}};var Fot=\"transform_uSampler_\",OE=\"transform_uSize_\",x7=\"transform_position\";function b7(e){let{vs:t,sourceTextureMap:r,targetTextureVarying:i,targetTexture:s}=e,o=Object.keys(r).length,c=null,f={},_=t,w={};if(o>0||i){let C=_.split(`\n`),R=C.slice();if(C.forEach((N,j,Y)=>{if(o>0){let rt=Vot(N,r);if(rt){let{updatedLine:$,inject:K}=rt;R[j]=$,w=vy([w,K]),Object.assign(f,rt.samplerTextureMap),o--}}i&&!c&&(c=Uot(N,i))}),i){ye(s);let N=\"\".concat(OE).concat(i),j=\"uniform vec2 \".concat(N,`;\n`),Y=\" vec2 \".concat(x7,\" = transform_getPos(\").concat(N,`);\n gl_Position = vec4(`).concat(x7,`, 0, 1.);\n`);w=vy([w,{\"vs:#decl\":j,\"vs:#main-start\":Y}])}_=R.join(`\n`)}return{vs:_,targetTextureType:c,inject:w,samplerTextureMap:f}}function w7(e){let{sourceTextureMap:t,targetTextureVarying:r,targetTexture:i}=e,s={},n,o;r&&({width:n,height:o}=i,s[\"\".concat(OE).concat(r)]=[n,o]);for(let c in t)({width:n,height:o}=t[c]),s[\"\".concat(OE).concat(c)]=[n,o];return s}function zot(e){return pE(e,[\"attribute\",\"in\"])}function Not(e){let t=\"\".concat(Fot).concat(e),r=\"\".concat(OE).concat(e),i=\" uniform sampler2D \".concat(t,`;\n uniform vec2 `).concat(r,\";\");return{samplerName:t,sizeName:r,uniformDeclerations:i}}function Uot(e,t){let r=pE(e,[\"varying\",\"out\"]);return r&&r.name===t?r.type:null}function Vot(e,t){let r={},i=zot(e);if(!i)return null;let{type:s,name:n}=i;if(n&&t[n]){let o=\"// \".concat(e,\" => Replaced by Transform with a sampler\"),{samplerName:c,sizeName:f,uniformDeclerations:_}=Not(n),w=SR(s),C=\" \".concat(s,\" \").concat(n,\" = transform_getInput(\").concat(c,\", \").concat(f,\").\").concat(w,`;\n`);return r[c]=n,{updatedLine:o,inject:{\"vs:#decl\":_,\"vs:#main-start\":C},samplerTextureMap:r}}return null}var jot={10241:9728,10240:9728,10242:33071,10243:33071},Got=\"transform_output\",_b=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.id=this.currentIndex=0,this._swapTexture=null,this.targetTextureVarying=null,this.targetTextureType=null,this.samplerTextureMap=null,this.bindings=[],this.resources={},this._initialize(r),Object.seal(this)}updateModelProps(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this._processVertexShader(t);return Object.assign({},t,r)}getDrawOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r,sourceTextures:i,framebuffer:s,targetTexture:n}=this.bindings[this.currentIndex],o=Object.assign({},r,t.attributes),c=Object.assign({},t.uniforms),f=Object.assign({},t.parameters),_=t.discard;if(this.hasSourceTextures||this.hasTargetTexture){o.transform_elementID=this.elementIDBuffer;for(let C in this.samplerTextureMap){let R=this.samplerTextureMap[C];c[C]=i[R]}this._setSourceTextureParameters();let w=w7({sourceTextureMap:i,targetTextureVarying:this.targetTextureVarying,targetTexture:n});Object.assign(c,w)}return this.hasTargetTexture&&(_=!1,f.viewport=[0,0,s.width,s.height]),{attributes:o,framebuffer:s,uniforms:c,discard:_,parameters:f}}swap(){return this._swapTexture?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupTextures(t)}getTargetTexture(){let{targetTexture:t}=this.bindings[this.currentIndex];return t}getData(){let{packed:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{framebuffer:r}=this.bindings[this.currentIndex],i=Rh(r);if(!t)return i;let s=i.constructor,n=TR(this.targetTextureType),o=new s(i.length*n/4),c=0;for(let f=0;f0&&arguments[0]!==void 0?arguments[0]:{},{_targetTextureVarying:r,_swapTexture:i}=t;this._swapTexture=i,this.targetTextureVarying=r,this.hasTargetTexture=r,this._setupTextures(t)}_createTargetTexture(t){let{sourceTextures:r,textureOrReference:i}=t;if(i instanceof pi)return i;let s=r[i];return s?(this._targetRefTexName=i,this._createNewTexture(s)):null}_setupTextures(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r,_sourceTextures:i={},_targetTexture:s}=t,n=this._createTargetTexture({sourceTextures:i,textureOrReference:s});this.hasSourceTextures=this.hasSourceTextures||i&&Object.keys(i).length>0,this._updateBindings({sourceBuffers:r,sourceTextures:i,targetTexture:n}),\"elementCount\"in t&&this._updateElementIDBuffer(t.elementCount)}_updateElementIDBuffer(t){if(typeof t!=\"number\"||this.elementCount>=t)return;let r=new Float32Array(t);r.forEach((i,s,n)=>{n[s]=s}),this.elementIDBuffer?this.elementIDBuffer.setData({data:r}):this.elementIDBuffer=new Fr(this.gl,{data:r,accessor:{size:1}}),this.elementCount=t}_updateBindings(t){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t),this._swapTexture){let{sourceTextures:r,targetTexture:i}=this._swapTextures(this.bindings[this.currentIndex]),s=this._getNextIndex();this.bindings[s]=this._updateBinding(this.bindings[s],{sourceTextures:r,targetTexture:i})}}_updateBinding(t,r){let{sourceBuffers:i,sourceTextures:s,targetTexture:n}=r;if(t||(t={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(t.sourceTextures,s),Object.assign(t.sourceBuffers,i),n){t.targetTexture=n;let{width:o,height:c}=n,{framebuffer:f}=t;f?(f.update({attachments:{36064:n},resizeAttachments:!1}),f.resize({width:o,height:c})):t.framebuffer=new yi(this.gl,{id:\"transform-framebuffer\",width:o,height:c,attachments:{36064:n}})}return t}_setSourceTextureParameters(){let t=this.currentIndex,{sourceTextures:r}=this.bindings[t];for(let i in r)r[i].setParameters(jot)}_swapTextures(t){if(!this._swapTexture)return null;let r=Object.assign({},t.sourceTextures);r[this._swapTexture]=t.targetTexture;let i=t.sourceTextures[this._swapTexture];return{sourceTextures:r,targetTexture:i}}_createNewTexture(t){let r=nE(t,{parameters:{10241:9728,10240:9728,10242:33071,10243:33071},pixelStore:{37440:!1}});return this.ownTexture&&this.ownTexture.delete(),this.ownTexture=r,r}_getNextIndex(){return(this.currentIndex+1)%2}_processVertexShader(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceTextures:r,targetTexture:i}=this.bindings[this.currentIndex],{vs:s,uniforms:n,targetTextureType:o,inject:c,samplerTextureMap:f}=b7({vs:t.vs,sourceTextureMap:r,targetTextureVarying:this.targetTextureVarying,targetTexture:i}),_=vy([t.inject||{},c]);this.targetTextureType=o,this.samplerTextureMap=f;let w=t._fs||fb({version:gy(s),input:this.targetTextureVarying,inputType:o,output:Got}),C=this.hasSourceTextures||this.targetTextureVarying?[qR].concat(t.modules||[]):t.modules;return{vs:s,fs:w,modules:C,uniforms:n,inject:_}}};var ec=class{static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.model=null,this.elementCount=0,this.bufferTransform=null,this.textureTransform=null,this.elementIDBuffer=null,this._initialize(r),Object.seal(this)}delete(){let{model:t,bufferTransform:r,textureTransform:i}=this;t&&t.delete(),r&&r.delete(),i&&i.delete()}run(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{clearRenderTarget:r=!0}=t,i=this._updateDrawOptions(t);r&&i.framebuffer&&i.framebuffer.clear({color:!0}),this.model.transform(i)}swap(){let t=!1,r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r)t=t||i.swap();ye(t,\"Nothing to swap\")}getBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.bufferTransform&&this.bufferTransform.getBuffer(t)}getData(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r){let s=i.getData(t);if(s)return s}return null}getFramebuffer(){return this.textureTransform&&this.textureTransform.getFramebuffer()}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};\"elementCount\"in t&&this.model.setVertexCount(t.elementCount);let r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r)i.update(t)}_initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{gl:r}=this;this._buildResourceTransforms(r,t),t=this._updateModelProps(t),this.model=new Sn(r,Object.assign({},t,{fs:t.fs||fb({version:gy(t.vs)}),id:t.id||\"transform-model\",drawMode:t.drawMode||0,vertexCount:t.elementCount})),this.bufferTransform&&this.bufferTransform.setupResources({model:this.model})}_updateModelProps(t){let r=Object.assign({},t),i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let s of i)r=s.updateModelProps(r);return r}_buildResourceTransforms(t,r){Wot(r)&&(this.bufferTransform=new gb(t,r)),Hot(r)&&(this.textureTransform=new _b(t,r)),ye(this.bufferTransform||this.textureTransform,\"must provide source/feedback buffers or source/target textures\")}_updateDrawOptions(t){let r=Object.assign({},t),i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let s of i)r=Object.assign(r,s.getDrawOptions(r));return r}};function Wot(e){return!!(!jf(e.feedbackBuffers)||!jf(e.feedbackMap)||e.varyings&&e.varyings.length>0)}function Hot(e){return!!(!jf(e._sourceTextures)||e._targetTexture||e._targetTextureVarying)}var S7={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},As=class{static get DRAW_MODE(){return S7}constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{id:r=Jo(\"geometry\"),drawMode:i=S7.TRIANGLES,attributes:s={},indices:n=null,vertexCount:o=null}=t;this.id=r,this.drawMode=i|0,this.attributes={},this.userData={},this._setAttributes(s,n),this.vertexCount=o||this._calculateVertexCount(this.attributes,this.indices)}get mode(){return this.drawMode}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(t){return\"Geometry \".concat(this.id,\" attribute \").concat(t)}_setAttributes(t,r){r&&(this.indices=ArrayBuffer.isView(r)?{value:r,size:1}:r);for(let i in t){let s=t[i];s=ArrayBuffer.isView(s)?{value:s}:s,ye(ArrayBuffer.isView(s.value),\"\".concat(this._print(i),\": must be typed array or object with value as typed array\")),(i===\"POSITION\"||i===\"positions\")&&!s.size&&(s.size=3),i===\"indices\"?(ye(!this.indices),this.indices=s):this.attributes[i]=s}return this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this}_calculateVertexCount(t,r){if(r)return r.value.length;let i=1/0;for(let s in t){let n=t[s],{value:o,size:c,constant:f}=n;!f&&o&&c>=1&&(i=Math.min(i,o.length/c))}return ye(Number.isFinite(i)),i}};var qot=1,Zot=1,QA=class{constructor(){this.time=0,this.channels=new Map,this.animations=new Map,this.playing=!1,this.lastEngineTime=-1}addChannel(t){let{delay:r=0,duration:i=Number.POSITIVE_INFINITY,rate:s=1,repeat:n=1}=t,o=qot++,c={time:0,delay:r,duration:i,rate:s,repeat:n};return this._setChannelTime(c,this.time),this.channels.set(o,c),o}removeChannel(t){this.channels.delete(t);for(let[r,i]of this.animations)i.channel===t&&this.detachAnimation(r)}isFinished(t){let r=this.channels.get(t);return r===void 0?!1:this.time>=r.delay+r.duration*r.repeat}getTime(t){if(t===void 0)return this.time;let r=this.channels.get(t);return r===void 0?-1:r.time}setTime(t){this.time=Math.max(0,t);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:n,channel:o}=s;n.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(t,r){let i=Zot++;return this.animations.set(i,{animation:t,channel:r}),t.setTime(this.getTime(r)),i}detachAnimation(t){this.animations.delete(t)}update(t){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=t),this.setTime(this.time+(t-this.lastEngineTime)),this.lastEngineTime=t)}_setChannelTime(t,r){let i=r-t.delay,s=t.duration*t.repeat;i>=s?t.time=t.duration*t.rate:(t.time=Math.max(0,i)%t.duration,t.time*=t.rate)}};var Yot=[255,255,255],Qot=1,$ot=0,BE=class{constructor(t={}){G(this,\"id\",void 0),G(this,\"color\",void 0),G(this,\"intensity\",void 0),G(this,\"type\",\"ambient\");let{color:r=Yot}=t,{intensity:i=Qot}=t;this.id=t.id||\"ambient-\".concat($ot++),this.color=r,this.intensity=i}};var Xot=[255,255,255],Kot=1,Jot=[0,0,-1],tat=0,yb=class{constructor(t={}){G(this,\"id\",void 0),G(this,\"color\",void 0),G(this,\"intensity\",void 0),G(this,\"type\",\"directional\"),G(this,\"direction\",void 0),G(this,\"shadow\",void 0);let{color:r=Xot}=t,{intensity:i=Kot}=t,{direction:s=Jot}=t,{_shadow:n=!1}=t;this.id=t.id||\"directional-\".concat(tat++),this.color=r,this.intensity=i,this.type=\"directional\",this.direction=new Fe(s).normalize().toArray(),this.shadow=n}getProjectedLight(t){return this}};var vb=class{constructor(t,r={id:\"pass\"}){G(this,\"id\",void 0),G(this,\"gl\",void 0),G(this,\"props\",void 0);let{id:i}=r;this.id=i,this.gl=t,this.props={...r}}setProps(t){Object.assign(this.props,t)}render(t){}cleanup(){}};var rc=class extends vb{constructor(...t){super(...t),G(this,\"_lastRenderIndex\",-1)}render(t){let r=this.gl;return wl(r,{framebuffer:t.target}),this._drawLayers(t)}_drawLayers(t){let{target:r,moduleParameters:i,viewports:s,views:n,onViewportActive:o,clearStack:c=!0,clearCanvas:f=!0}=t;t.pass=t.pass||\"unknown\";let _=this.gl;f&&rat(_,r),c&&(this._lastRenderIndex=-1);let w=[];for(let C of s){let R=n&&n[C.id];o?.(C);let N=this._getDrawLayerParams(C,t),j=C.subViewports||[C];for(let Y of j){let rt=this._drawLayersInViewport(_,{target:r,moduleParameters:i,viewport:Y,view:R,pass:t.pass,layers:t.layers},N);w.push(rt)}}return w}_getDrawLayerParams(t,{layers:r,pass:i,isPicking:s=!1,layerFilter:n,cullRect:o,effects:c,moduleParameters:f},_=!1){let w=[],C=T7(this._lastRenderIndex+1),R={layer:r[0],viewport:t,isPicking:s,renderPass:i,cullRect:o},N={};for(let j=0;jGf(t,C))}let w={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};wl(t,{viewport:_});for(let C=0;C{let o=s.props._offset,c=s.id,f=s.parent&&s.parent.id,_;if(f&&!(f in t)&&i(s.parent,!1),f in r){let w=r[f]=r[f]||T7(t[f],t);_=w(s,n),r[c]=w}else Number.isFinite(o)?(_=o+(t[f]||0),r[c]=null):_=e;return n&&_>=e&&(e=_+1),t[c]=_,_};return i}function eat(e,{moduleParameters:t,target:r,viewport:i}){let s=r&&r.id!==\"default-framebuffer\",n=t&&t.devicePixelRatio||Sl(e),o=s?r.height:e.drawingBufferHeight,c=i;return[c.x*n,o-(c.y+c.height)*n,c.width*n,c.height*n]}function rat(e,t){let r=t?t.width:e.drawingBufferWidth,i=t?t.height:e.drawingBufferHeight;wl(e,{viewport:[0,0,r,i]}),e.clear(16640)}var xb=class extends rc{constructor(t,r){super(t,r),G(this,\"shadowMap\",void 0),G(this,\"depthBuffer\",void 0),G(this,\"fbo\",void 0),this.shadowMap=new pi(t,{width:1,height:1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.depthBuffer=new tl(t,{format:33189,width:1,height:1}),this.fbo=new yi(t,{id:\"shadowmap\",width:1,height:1,attachments:{36064:this.shadowMap,36096:this.depthBuffer}})}render(t){let r=this.fbo;bn(this.gl,{depthRange:[0,1],depthTest:!0,blend:!1,clearColor:[1,1,1,1]},()=>{let i=t.viewports[0],s=Sl(this.gl),n=i.width*s,o=i.height*s;(n!==r.width||o!==r.height)&&r.resize({width:n,height:o}),super.render({...t,target:r,pass:\"shadow\"})})}shouldDrawLayer(t){return t.props.shadowEnabled!==!1}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.delete(),this.fbo=null),this.shadowMap&&(this.shadowMap.delete(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.delete(),this.depthBuffer=null)}};var M7=\"#define SMOOTH_EDGE_RADIUS 0.5\",iat=`\n`.concat(M7,`\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n`),nat=`\n`.concat(M7,`\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`),E7={name:\"geometry\",vs:iat,fs:nat};var sat=Object.keys(Yr).map(e=>\"const int COORDINATE_SYSTEM_\".concat(e,\" = \").concat(Yr[e],\";\")).join(\"\"),oat=Object.keys(Ka).map(e=>\"const int PROJECTION_MODE_\".concat(e,\" = \").concat(Ka[e],\";\")).join(\"\"),aat=Object.keys(Ko).map(e=>\"const int UNIT_\".concat(e.toUpperCase(),\" = \").concat(Ko[e],\";\")).join(\"\"),P7=\"\".concat(sat,`\n`).concat(oat,`\n`).concat(aat,`\n\nuniform int project_uCoordinateSystem;\nuniform int project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\nuniform vec3 project_uCommonOrigin;\nuniform bool project_uPseudoMeters;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\nconst float EARTH_RADIUS = 6370972.0;\nconst float GLOBE_RADIUS = 256.0;\nfloat project_size_at_latitude(float lat) {\n float y = clamp(lat, -89.9, 89.9);\n return 1.0 / cos(radians(y));\n}\n\nfloat project_size() {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\n project_uPseudoMeters == false) {\n \n if (geometry.position.w == 0.0) {\n return project_size_at_latitude(geometry.worldPosition.y);\n }\n \n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\n float y2 = y * y;\n float y4 = y2 * y2;\n float y6 = y4 * y2;\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n }\n return 1.0;\n}\n\nfloat project_size_at_latitude(float meters, float lat) {\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\n}\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z * project_size();\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter * project_size();\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\nmat3 project_get_orientation_matrix(vec3 up) {\n vec3 uz = normalize(up);\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\n vec3 uy = cross(uz, ux);\n return mat3(ux, uy, uz);\n}\n\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n transform = project_get_orientation_matrix(commonPosition);\n return true;\n }\n return false;\n}\nvec3 project_normal(vec3 vector) {\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n mat3 rotation;\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\n n = rotation * n;\n }\n return n;\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x + 180., 360.0) - 180.;\n }\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\nvec3 project_globe_(vec3 lnglatz) {\n float lambda = radians(lnglatz.x);\n float phi = radians(lnglatz.y);\n float cosPhi = cos(phi);\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\n\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\nvec4 project_position(vec4 position, vec3 position64Low) {\n vec4 position_world = project_uModelMatrix * position;\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy),\n project_size_at_latitude(position_world.z, position_world.y),\n position_world.w\n );\n }\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\n position_world.xyz += project_uCoordinateOrigin;\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_globe_(position_world.xyz),\n position_world.w\n );\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\n return vec4(\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\n project_size(position_world.z),\n position_world.w\n );\n }\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\n position_world.xyz -= project_uCoordinateOrigin;\n }\n return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n return viewProjectionMatrix * position + center;\n}\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_size_to_pixel(float size, int unit) {\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\n if (unit == UNIT_COMMON) return size * project_uScale;\n return size;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`);function lat(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i{for(let s in i)if(!lat(i[s],t[s])){r=e(i),t=i;break}return r}}var I7=[0,0,0,0],cat=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],C7=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],uat=[0,0,0],L7=[0,0,0],hat=Hf(dat);function ZR(e,t,r=L7){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,n=!0;switch(t===Yr.LNGLAT_OFFSETS||t===Yr.METER_OFFSETS?s=r:s=e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case Ka.WEB_MERCATOR:(t===Yr.LNGLAT||t===Yr.CARTESIAN)&&(s=[0,0,0],n=!1);break;case Ka.WEB_MERCATOR_AUTO_OFFSET:t===Yr.LNGLAT?i=s:t===Yr.CARTESIAN&&(i=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],s=e.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case Ka.IDENTITY:i=e.position.map(Math.fround),i[2]=i[2]||0;break;case Ka.GLOBE:n=!1,s=null;break;default:n=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:n}}function fat(e,t,r){let{viewMatrixUncentered:i,projectionMatrix:s}=e,{viewMatrix:n,viewProjectionMatrix:o}=e,c=I7,f=I7,_=e.cameraPosition,{geospatialOrigin:w,shaderCoordinateOrigin:C,offsetMode:R}=ZR(e,t,r);return R&&(f=e.projectPosition(w||C),_=[_[0]-f[0],_[1]-f[1],_[2]-f[2]],f[3]=1,c=zh([],f,o),n=i||n,o=Wf([],s,n),o=Wf([],o,cat)),{viewMatrix:n,viewProjectionMatrix:o,projectionCenter:c,originCommon:f,cameraPosCommon:_,shaderCoordinateOrigin:C,geospatialOrigin:w}}function k7({viewport:e,devicePixelRatio:t=1,modelMatrix:r=null,coordinateSystem:i=Yr.DEFAULT,coordinateOrigin:s=L7,autoWrapLongitude:n=!1}){i===Yr.DEFAULT&&(i=e.isGeospatial?Yr.LNGLAT:Yr.CARTESIAN);let o=hat({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:s});return o.project_uWrapLongitude=n,o.project_uModelMatrix=r||C7,o}function dat({viewport:e,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:n,originCommon:o,cameraPosCommon:c,shaderCoordinateOrigin:f,geospatialOrigin:_}=fat(e,r,i),w=e.getDistanceScales(),C=[e.width*t,e.height*t],R=zh([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,N={project_uCoordinateSystem:r,project_uProjectionMode:e.projectionMode,project_uCoordinateOrigin:f,project_uCommonOrigin:o.slice(0,3),project_uCenter:s,project_uPseudoMeters:!!e._pseudoMeters,project_uViewportSize:C,project_uDevicePixelRatio:t,project_uFocalDistance:R,project_uCommonUnitsPerMeter:w.unitsPerMeter,project_uCommonUnitsPerWorldUnit:w.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:uat,project_uScale:e.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:n,project_uModelMatrix:C7,project_uCameraPosition:c};if(_){let j=e.getDistanceScales(_);switch(r){case Yr.METER_OFFSETS:N.project_uCommonUnitsPerWorldUnit=j.unitsPerMeter,N.project_uCommonUnitsPerWorldUnit2=j.unitsPerMeter2;break;case Yr.LNGLAT:case Yr.LNGLAT_OFFSETS:e._pseudoMeters||(N.project_uCommonUnitsPerMeter=j.unitsPerMeter),N.project_uCommonUnitsPerWorldUnit=j.unitsPerDegree,N.project_uCommonUnitsPerWorldUnit2=j.unitsPerDegree2;break;case Yr.CARTESIAN:N.project_uCommonUnitsPerWorldUnit=[1,1,j.unitsPerMeter[2]],N.project_uCommonUnitsPerWorldUnit2=[0,0,j.unitsPerMeter2[2]];break;default:break}}return N}var pat={};function Aat(e=pat){return\"viewport\"in e?k7(e):{}}var Uh={name:\"project\",dependencies:[AE,E7],vs:P7,getUniforms:Aat};function YR(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function $A(e,t){let r=zh([],t,e);return Py(r,r,1/r[3]),r}function QR(e,t){let r=e%t;return r<0?t+r:r}function bb(e,t,r){return er?r:e}function mat(e){return Math.log(e)*Math.LOG2E}var ky=Math.log2||mat;function Ru(e,t){if(!e)throw new Error(t||\"@math.gl/web-mercator: assertion failed.\")}var Vh=Math.PI,R7=Vh/4,Du=Vh/180,$R=180/Vh,Ry=512,FE=4003e4,Dy=85.051129,D7=1.5;function XR(e){return ky(e)}function El(e){let[t,r]=e;Ru(Number.isFinite(t)),Ru(Number.isFinite(r)&&r>=-90&&r<=90,\"invalid latitude\");let i=t*Du,s=r*Du,n=Ry*(i+Vh)/(2*Vh),o=Ry*(Vh+Math.log(Math.tan(R7+s*.5)))/(2*Vh);return[n,o]}function Yc(e){let[t,r]=e,i=t/Ry*(2*Vh)-Vh,s=2*(Math.atan(Math.exp(r/Ry*(2*Vh)-Vh))-R7);return[i*$R,s*$R]}function KR(e){let{latitude:t}=e;Ru(Number.isFinite(t));let r=Math.cos(t*Du);return XR(FE*r)-9}function wb(e){let t=Math.cos(e*Du);return Ry/FE/t}function Oy(e){let{latitude:t,longitude:r,highPrecision:i=!1}=e;Ru(Number.isFinite(t)&&Number.isFinite(r));let s=Ry,n=Math.cos(t*Du),o=s/360,c=o/n,f=s/FE/n,_={unitsPerMeter:[f,f,f],metersPerUnit:[1/f,1/f,1/f],unitsPerDegree:[o,c,f],degreesPerUnit:[1/o,1/c,1/f]};if(i){let w=Du*Math.tan(t*Du)/n,C=o*w/2,R=s/FE*w,N=R/c*f;_.unitsPerDegree2=[0,C,R],_.unitsPerMeter2=[N,0,N]}return _}function Sb(e,t){let[r,i,s]=e,[n,o,c]=t,{unitsPerMeter:f,unitsPerMeter2:_}=Oy({longitude:r,latitude:i,highPrecision:!0}),w=El(e);w[0]+=n*(f[0]+_[0]*o),w[1]+=o*(f[1]+_[1]*o);let C=Yc(w),R=(s||0)+(c||0);return Number.isFinite(s)||Number.isFinite(c)?[C[0],C[1],R]:C}function zE(e){let{height:t,pitch:r,bearing:i,altitude:s,scale:n,center:o}=e,c=YR();eg(c,c,[0,0,-s]),IE(c,c,-r*Du),CE(c,c,i*Du);let f=n/t;return Ey(c,c,[f,f,f]),o&&eg(c,c,wj([],o)),c}function JR(e){let{width:t,height:r,altitude:i,pitch:s=0,offset:n,center:o,scale:c,nearZMultiplier:f=1,farZMultiplier:_=1}=e,{fovy:w=ig(D7)}=e;i!==void 0&&(w=ig(i));let C=w*Du,R=s*Du,N=Tb(w),j=N;o&&(j+=o[2]*c/Math.cos(R)/r);let Y=C*(.5+(n?n[1]:0)/r),rt=Math.sin(Y)*j/Math.sin(bb(Math.PI/2-R-Y,.01,Math.PI-.01)),$=Math.sin(R)*rt+j,K=j*10,tt=Math.min($*_,K);return{fov:C,aspect:t/r,focalDistance:N,near:f,far:tt}}function ig(e){return 2*Math.atan(.5/e)*$R}function Tb(e){return .5/Math.tan(.5*e*Du)}function By(e,t){let[r,i,s=0]=e;return Ru(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),$A(t,[r,i,s,1])}function qf(e,t,r=0){let[i,s,n]=e;if(Ru(Number.isFinite(i)&&Number.isFinite(s),\"invalid pixel coordinate\"),Number.isFinite(n))return $A(t,[i,s,n,1]);let o=$A(t,[i,s,0,1]),c=$A(t,[i,s,1,1]),f=o[2],_=c[2],w=f===_?0:((r||0)-f)/(_-f);return gE([],o,c,w)}function Mb(e){let{width:t,height:r,bounds:i,minExtent:s=0,maxZoom:n=24,offset:o=[0,0]}=e,[[c,f],[_,w]]=i,C=gat(e.padding),R=El([c,bb(w,-Dy,Dy)]),N=El([_,bb(f,-Dy,Dy)]),j=[Math.max(Math.abs(N[0]-R[0]),s),Math.max(Math.abs(N[1]-R[1]),s)],Y=[t-C.left-C.right-Math.abs(o[0])*2,r-C.top-C.bottom-Math.abs(o[1])*2];Ru(Y[0]>0&&Y[1]>0);let rt=Y[0]/j[0],$=Y[1]/j[1],K=(C.right-C.left)/2/rt,tt=(C.top-C.bottom)/2/$,ut=[(N[0]+R[0])/2+K,(N[1]+R[1])/2+tt],Pt=Yc(ut),Ot=Math.min(n,ky(Math.abs(Math.min(rt,$))));return Ru(Number.isFinite(Ot)),{longitude:Pt[0],latitude:Pt[1],zoom:Ot}}function gat(e=0){return typeof e==\"number\"?{top:e,bottom:e,left:e,right:e}:(Ru(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var O7=Math.PI/180;function Eb(e,t=0){let{width:r,height:i,unproject:s}=e,n={targetZ:t},o=s([0,i],n),c=s([r,i],n),f,_,w=e.fovy?.5*e.fovy*O7:Math.atan(.5/e.altitude),C=(90-e.pitch)*O7;return w>C-.01?(f=B7(e,0,t),_=B7(e,r,t)):(f=s([0,0],n),_=s([r,0],n)),[o,c,_,f]}function B7(e,t,r){let{pixelUnprojectionMatrix:i}=e,s=$A(i,[t,0,1,1]),n=$A(i,[t,e.height,1,1]),c=(r*e.distanceScales.unitsPerMeter[2]-s[2])/(n[2]-s[2]),f=gE([],s,n,c),_=Yc(f);return _.push(r),_}var z7=512;function NE(e){let{width:t,height:r,pitch:i=0}=e,{longitude:s,latitude:n,zoom:o,bearing:c=0}=e;(s<-180||s>180)&&(s=QR(s+180,360)-180),(c<-180||c>180)&&(c=QR(c+180,360)-180);let f=ky(r/z7);if(o<=f)o=f,n=0;else{let _=r/2/Math.pow(2,o),w=Yc([0,_])[1];if(nC&&(n=C)}}return{width:t,height:r,longitude:s,latitude:n,zoom:o,pitch:i,bearing:c}}var vat=`\nconst int max_lights = 2;\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\nuniform vec4 shadow_uProjectCenters[max_lights];\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform int shadow_uLightId;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\n if (shadow_uDrawShadowMap) {\n return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\n }\n if (shadow_uUseShadowMap) {\n for (int i = 0; i < max_lights; i++) {\n if(i < int(shadow_uLightCount)) {\n vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\n shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\n }\n }\n }\n return gl_Position;\n}\n`,xat=`\nconst int max_lights = 2;\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform sampler2D shadow_uShadowMap0;\nuniform sampler2D shadow_uShadowMap1;\nuniform vec4 shadow_uColor;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\n vec4 rgbaDepth = texture2D(shadowMap, position.xy);\n\n float z = dot(rgbaDepth, bitUnpackShift);\n return smoothstep(0.001, 0.01, position.z - z);\n}\n\nvec4 shadow_filterShadowColor(vec4 color) {\n if (shadow_uDrawShadowMap) {\n vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\n rgbaDepth -= rgbaDepth.gbaa * bitMask;\n return rgbaDepth;\n }\n if (shadow_uUseShadowMap) {\n float shadowAlpha = 0.0;\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\n if(shadow_uLightCount > 1.0) {\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\n }\n shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\n float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\n\n return vec4(\n mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\n blendedAlpha\n );\n }\n return color;\n}\n`,bat=Hf(Eat),wat=Hf(Pat),Sat=[0,0,0,1],Tat=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function Mat(e,t){let[r,i,s]=e,n=qf([r,i,s],t);return Number.isFinite(s)?n:[n[0],n[1],0]}function Eat({viewport:e,center:t}){return new wn(e.viewProjectionMatrix).invert().transform(t)}function Pat({viewport:e,shadowMatrices:t}){let r=[],i=e.pixelUnprojectionMatrix,s=e.isGeospatial?void 0:1,n=[[0,0,s],[e.width,0,s],[0,e.height,s],[e.width,e.height,s],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(o=>Mat(o,i));for(let o of t){let c=o.clone().translate(new Fe(e.center).negate()),f=n.map(w=>c.transform(w)),_=new wn().ortho({left:Math.min(...f.map(w=>w[0])),right:Math.max(...f.map(w=>w[0])),bottom:Math.min(...f.map(w=>w[1])),top:Math.max(...f.map(w=>w[1])),near:Math.min(...f.map(w=>-w[2])),far:Math.max(...f.map(w=>-w[2]))});r.push(_.multiplyRight(o))}return r}function Iat(e,t){let{shadowEnabled:r=!0}=e;if(!r||!e.shadowMatrices||!e.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1};let i={shadow_uDrawShadowMap:!!e.drawToShadowMap,shadow_uUseShadowMap:e.shadowMaps?e.shadowMaps.length>0:!1,shadow_uColor:e.shadowColor||Sat,shadow_uLightId:e.shadowLightId||0,shadow_uLightCount:e.shadowMatrices.length},s=bat({viewport:e.viewport,center:t.project_uCenter}),n=[],o=wat({shadowMatrices:e.shadowMatrices,viewport:e.viewport}).slice();for(let c=0;c0?i[\"shadow_uShadowMap\".concat(c)]=e.shadowMaps[c]:i[\"shadow_uShadowMap\".concat(c)]=e.dummyShadowMap;return i}var Pb={name:\"shadow\",dependencies:[Uh],vs:vat,fs:xat,inject:{\"vs:DECKGL_FILTER_GL_POSITION\":`\n position = shadow_setVertexPosition(geometry.position);\n `,\"fs:DECKGL_FILTER_COLOR\":`\n color = shadow_filterShadowColor(color);\n `},getUniforms:(e={},t={})=>\"viewport\"in e&&(e.drawToShadowMap||e.shadowMaps&&e.shadowMaps.length>0)?Iat(e,t):{}};var Cat={color:[255,255,255],intensity:1},N7=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],Lat=[0,0,0,200/255],Fy=class{constructor(t={}){G(this,\"id\",\"lighting-effect\"),G(this,\"props\",void 0),G(this,\"shadowColor\",Lat),G(this,\"shadow\",void 0),G(this,\"ambientLight\",void 0),G(this,\"directionalLights\",void 0),G(this,\"pointLights\",void 0),G(this,\"shadowPasses\",[]),G(this,\"shadowMaps\",[]),G(this,\"dummyShadowMap\",null),G(this,\"programManager\",void 0),G(this,\"shadowMatrices\",void 0),this.setProps(t)}setProps(t){this.ambientLight=null,this.directionalLights=[],this.pointLights=[];for(let r in t){let i=t[r];switch(i.type){case\"ambient\":this.ambientLight=i;break;case\"directional\":this.directionalLights.push(i);break;case\"point\":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.props=t}preRender(t,{layers:r,layerFilter:i,viewports:s,onViewportActive:n,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices(),this.shadowPasses.length===0&&this._createShadowPasses(t),this.programManager||(this.programManager=Nh.getDefaultProgramManager(t),Pb&&this.programManager.addDefaultModule(Pb)),this.dummyShadowMap||(this.dummyShadowMap=new pi(t,{width:1,height:1}));for(let c=0;ci.getProjectedLight({layer:t})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:t}))},r}cleanup(){for(let t of this.shadowPasses)t.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.delete(),this.dummyShadowMap=null),this.shadow&&this.programManager&&(this.programManager.removeDefaultModule(Pb),this.programManager=null)}_calculateMatrices(){let t=[];for(let r of this.directionalLights){let i=new wn().lookAt({eye:new Fe(r.direction).negate()});t.push(i)}return t}_createShadowPasses(t){for(let r=0;rs&&(n=s);let o=this._pool,c=t.BYTES_PER_ELEMENT*n,f=o.findIndex(_=>_.byteLength>=c);if(f>=0){let _=new t(o.splice(f,1)[0],0,n);return i&&_.fill(0),_}return new t(n)}_release(t){if(!ArrayBuffer.isView(t))return;let r=this._pool,{buffer:i}=t,{byteLength:s}=i,n=r.findIndex(o=>o.byteLength>=s);n<0?r.push(i):(n>0||r.lengththis.opts.poolSize&&r.shift()}},jh=new tD;function Ny(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function V7(e){return[e[12],e[13],e[14]]}function j7(e){return{left:zy(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:zy(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:zy(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:zy(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:zy(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:zy(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}var U7=new Fe;function zy(e,t,r,i){U7.set(e,t,r);let s=U7.len();return{distance:i/s,normal:new Fe(-e/s,-t/s,-r/s)}}function kat(e){return e-Math.fround(e)}var Ib;function UE(e,t){let{size:r=1,startIndex:i=0}=t,s=t.endIndex!==void 0?t.endIndex:e.length,n=(s-i)/r;Ib=jh.allocate(Ib,n,{type:Float32Array,size:r*2});let o=i,c=0;for(;osuper.render({target:o,layers:t,layerFilter:r,views:i,viewports:s,onViewportActive:n,cullRect:C,effects:R?.filter(ut=>ut.useInPicking),pass:N,isPicking:!0,moduleParameters:Y}));return this._colorEncoderState=null,{decodePickingColor:$&&Nat.bind(null,$),stats:K}}shouldDrawLayer(t){let{pickable:r,operation:i}=t.props;return r&&i.includes(\"draw\")||i.includes(\"terrain\")||i.includes(\"mask\")}getModuleParameters(){return{pickingActive:1,pickingAttribute:this.pickZ,lightSources:{}}}getLayerParameters(t,r,i){let s={...t.props.parameters},{pickable:n,operation:o}=t.props;return this._colorEncoderState?n&&o.includes(\"draw\")&&(Object.assign(s,Z7),s.blend=!0,s.blendColor=zat(this._colorEncoderState,t,i)):s.blend=!1,o.includes(\"terrain\")&&(s.blend=!1),s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function zat(e,t,r){let{byLayer:i,byAlpha:s}=e,n,o=i.get(t);return o?(o.viewports.push(r),n=o.a):(n=i.size+1,n<=255?(o={a:n,layer:t,viewports:[r]},i.set(t,o),s[n]=o):(nr.warn(\"Too many pickable layers, only picking the first 255\")(),n=0)),[0,0,0,n/255]}function Nat(e,t){let r=e.byAlpha[t[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(t)}}var XA={NO_STATE:\"Awaiting state\",MATCHED:\"Matched. State transferred from previous layer\",INITIALIZED:\"Initialized\",AWAITING_GC:\"Discarded. Awaiting garbage collection\",AWAITING_FINALIZATION:\"No longer matched. Awaiting garbage collection\",FINALIZED:\"Finalized! Awaiting garbage collection\"},Uy=Symbol.for(\"component\"),Ou=Symbol.for(\"propTypes\"),VE=Symbol.for(\"deprecatedProps\"),ip=Symbol.for(\"asyncPropDefaults\"),Zf=Symbol.for(\"asyncPropOriginal\"),Gh=Symbol.for(\"asyncPropResolved\");function np(e,t=()=>!0){return Array.isArray(e)?Y7(e,t,[]):t(e)?[e]:[]}function Y7(e,t,r){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(t,r){if(t===this._data&&!r)return;this._data=t;let i=++this._loadCount,s=t;typeof t==\"string\"&&(s=NA(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let n of this._subscribers)n.onChange(this.getData())}};var Lb=class{constructor({gl:t,protocol:r}){G(this,\"protocol\",void 0),G(this,\"_context\",void 0),G(this,\"_resources\",void 0),G(this,\"_consumers\",void 0),G(this,\"_pruneRequest\",void 0),this.protocol=r||\"resource://\",this._context={gl:t,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:r,forceUpdate:i=!1,persistent:s=!0}){let n=this._resources[t];n?n.setData(r,i):(n=new Cb(t,r,this._context),this._resources[t]=n),n.persistent=s}remove(t){let r=this._resources[t];r&&(r.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let r=this._consumers[t];if(r){for(let i in r){let s=r[i],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:r,consumerId:i,requestId:s=\"default\"}){let{_resources:n,protocol:o}=this;t.startsWith(o)&&(t=t.replace(o,\"\"),n[t]||this.add({resourceId:t,data:null,persistent:!1}));let c=n[t];if(this._track(i,s,c,r),c)return c.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let t in this._resources)this._resources[t].delete()}_track(t,r,i,s){let n=this._consumers,o=n[t]=n[t]||{},c=o[r]||{},f=c.resourceId&&this._resources[c.resourceId];f&&(f.unsubscribe(c),this.prune()),i&&(o[r]=c,c.onChange=s,c.resourceId=i.id,i.subscribe(c))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let r=this._resources[t];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[t])}}};var Uat=`\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n mat3 rotation;\n if (project_needs_rotation(projectedPosition, rotation)) {\n // offset is specified as ENU\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\n offset = rotation * offset;\n }\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`,oo={name:\"project32\",dependencies:[Uh],vs:Uat};var ta={inject:{\"vs:DECKGL_FILTER_GL_POSITION\":`\n // for picking depth values\n picking_setPickingAttribute(position.z / position.w);\n `,\"vs:DECKGL_FILTER_COLOR\":`\n picking_setPickingColor(geometry.pickingColor);\n `,\"fs:#decl\":`\nuniform bool picking_uAttribute;\n `,\"fs:DECKGL_FILTER_COLOR\":{order:99,injection:`\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `}},...DE};var Vat=[Uh],jat=[\"vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)\",\"vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)\",\"vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)\",\"fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)\"];function Q7(e){let t=Nh.getDefaultProgramManager(e);for(let r of Vat)t.addDefaultModule(r);for(let r of jat)t.addShaderHook(r);return t}var Gat=\"layerManager.setLayers\",Wat=\"layerManager.activateViewport\",kb=class{constructor(t,{deck:r,stats:i,viewport:s,timeline:n}={}){G(this,\"layers\",void 0),G(this,\"context\",void 0),G(this,\"resourceManager\",void 0),G(this,\"_lastRenderedLayers\",[]),G(this,\"_needsRedraw\",!1),G(this,\"_needsUpdate\",!1),G(this,\"_nextLayers\",null),G(this,\"_debug\",!1),G(this,\"activateViewport\",o=>{Cs(Wat,this,o),o&&(this.context.viewport=o)}),this.layers=[],this.resourceManager=new Lb({gl:t,protocol:\"deck://\"}),this.context={mousePosition:null,userData:{},layerManager:this,gl:t,deck:r,programManager:t&&Q7(t),stats:i||new Vf({id:\"deck.gl\"}),viewport:s||new ic({id:\"DEFAULT-INITIAL-VIEWPORT\"}),timeline:n||new QA,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(t);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?\"layers changed\":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(r=>t.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(t){\"debug\"in t&&(this._debug=t.debug),\"userData\"in t&&(this.context.userData=t.userData),\"layers\"in t&&(this._nextLayers=t.layers),\"onError\"in t&&(this.context.onError=t.onError)}setLayers(t,r){Cs(Gat,this,r,t),this._lastRenderedLayers=t;let i=np(t,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let t=this.needsUpdate();t&&(this.setNeedsRedraw(\"updating layers: \".concat(t)),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}_handleError(t,r,i){i.raiseError(r,\"\".concat(t,\" of \").concat(i))}_updateLayers(t,r){let i={};for(let o of t)i[o.id]?nr.warn(\"Multiple old layers with same id \".concat(o.id))():i[o.id]=o;let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let n=!1;for(let o of s)if(o.hasUniformTransition()){n=\"Uniform transition in \".concat(o);break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(t,r,i){for(let s of t){s.context=this.context;let n=r[s.id];n===null&&nr.warn(\"Multiple new layers with same id \".concat(s.id))(),r[s.id]=null;let o=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),o=s.isComposite?s.getSubLayers():null}catch(c){this._handleError(\"matching\",c,s)}o&&this._updateSublayersRecursively(o,r,i)}}_finalizeOldLayers(t){for(let r in t){let i=t[r];i&&this._finalizeLayer(i)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=XA.INITIALIZED}catch(r){this._handleError(\"initialization\",r,t)}}_transferLayerState(t,r){r._transferState(t),r.lifecycle=XA.MATCHED,r!==t&&(t.lifecycle=XA.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(r){this._handleError(\"update\",r,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||\"finalized \".concat(t),t.lifecycle=XA.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=XA.FINALIZED}catch(r){this._handleError(\"finalization\",r,t)}}};function ao(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;ir.containsPixel(t)):this._viewports}getViews(){let t={};return this.views.forEach(r=>{t[r.id]=r}),t}getView(t){return this.views.find(r=>r.id===t)}getViewState(t){let r=typeof t==\"string\"?this.getView(t):t,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(t){return this._viewportMap[t]}unproject(t,r){let i=this.getViewports(),s={x:t[0],y:t[1]};for(let n=i.length-1;n>=0;--n){let o=i[n];if(o.containsPixel(s)){let c=t.slice();return c[0]-=o.x,c[1]-=o.y,o.unproject(c,r)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),(\"width\"in t||\"height\"in t)&&this._setSize(t.width,t.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(t,r){(t!==this.width||r!==this.height)&&(this.width=t,this.height=r,this.setNeedsUpdate(\"Size changed\"))}_setViews(t){t=np(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate(\"views changed\"),this.views=t}_setViewState(t){t?(!ao(t,this.viewState,3)&&this.setNeedsUpdate(\"viewState changed\"),this.viewState=t):nr.warn(\"missing `viewState` or `initialViewState`\")()}_onViewStateChange(t,r){this._eventCallbacks.onViewStateChange&&this._eventCallbacks.onViewStateChange({...r,viewId:t})}_createController(t,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._onViewStateChange.bind(this,r.id),onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:n=>{var o;return(o=this.getView(t.id))===null||o===void 0?void 0:o.makeViewport({viewState:n,width:this.width,height:this.height})}})}_updateController(t,r,i,s){let n=t.controller;if(n&&i){let o={...r,...n,id:t.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==n.type)&&(s=this._createController(t,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:t}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=t.length;s--;){let n=t[s],o=this.getViewState(n),c=n.makeViewport({viewState:o,width:this.width,height:this.height}),f=r[n.id],_=!!n.controller;_&&!f&&(i=!0),(i||!_)&&f&&(f.finalize(),f=null),this.controllers[n.id]=this._updateController(n,o,c,f),c&&this._viewports.unshift(c)}for(let s in r){let n=r[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,r){return t.length!==r.length?!0:t.some((i,s)=>!t[s].equals(r[s]))}};var Hat=/([0-9]+\\.?[0-9]*)(%|px)/;function sp(e){switch(typeof e){case\"number\":return{position:e,relative:!1};case\"string\":let t=Hat.exec(e);if(t&&t.length>=3){let r=t[2]===\"%\",i=parseFloat(t[1]);return{position:r?i/100:i,relative:r}}default:throw new Error(\"Could not parse position string \".concat(e))}}function op(e,t){return e.relative?Math.round(e.position*t):e.position}function br(e,t){if(!e)throw new Error(t||\"deck.gl: assertion failed.\")}var Qc=class{constructor(t){G(this,\"id\",void 0),G(this,\"viewportInstance\",void 0),G(this,\"_x\",void 0),G(this,\"_y\",void 0),G(this,\"_width\",void 0),G(this,\"_height\",void 0),G(this,\"_padding\",void 0),G(this,\"props\",void 0);let{id:r,x:i=0,y:s=0,width:n=\"100%\",height:o=\"100%\",padding:c=null,viewportInstance:f}=t||{};br(!f||f instanceof ic),this.viewportInstance=f,this.id=r||this.constructor.displayName||\"view\",this.props={...t,id:this.id},this._x=sp(i),this._y=sp(s),this._width=sp(n),this._height=sp(o),this._padding=c&&{left:sp(c.left||0),right:sp(c.right||0),top:sp(c.top||0),bottom:sp(c.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.viewportInstance?t.viewportInstance?this.viewportInstance.equals(t.viewportInstance):!1:this.ViewportType===t.ViewportType&&ao(this.props,t.props,2)}makeViewport({width:t,height:r,viewState:i}){if(this.viewportInstance)return this.viewportInstance;i=this.filterViewState(i);let s=this.getDimensions({width:t,height:r});return!s.height||!s.width?null:new this.ViewportType({...i,...this.props,...s})}getViewStateId(){let{viewState:t}=this.props;return typeof t==\"string\"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState==\"object\"){if(!this.props.viewState.id)return this.props.viewState;let r={...t};for(let i in this.props.viewState)i!==\"id\"&&(r[i]=this.props.viewState[i]);return r}return t}getDimensions({width:t,height:r}){let i={x:op(this._x,t),y:op(this._y,r),width:op(this._width,t),height:op(this._height,r)};return this._padding&&(i.padding={left:op(this._padding.left,t),top:op(this._padding.top,r),right:op(this._padding.right,t),bottom:op(this._padding.bottom,r)}),i}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t==\"function\"?{type:t}:{type:this.ControllerType,...t}:null}};var $c=class{constructor(t){G(this,\"_inProgress\",void 0),G(this,\"_handle\",void 0),G(this,\"_timeline\",void 0),G(this,\"time\",void 0),G(this,\"settings\",void 0),this._inProgress=!1,this._handle=null,this._timeline=t,this.time=0,this.settings={duration:0}}get inProgress(){return this._inProgress}start(t){var r,i;this.cancel(),this.settings=t,this._inProgress=!0,(r=(i=this.settings).onStart)===null||r===void 0||r.call(i,this)}end(){if(this._inProgress){var t,r;this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,(t=(r=this.settings).onEnd)===null||t===void 0||t.call(r,this)}}cancel(){if(this._inProgress){var t,r;(t=(r=this.settings).onInterrupt)===null||t===void 0||t.call(r,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1}}update(){var t,r;if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:i,settings:s}=this;this._handle=i.addChannel({delay:i.getTime(),duration:s.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),(t=(r=this.settings).onUpdate)===null||t===void 0||t.call(r,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var $7=()=>{},nD={BREAK:1,SNAP_TO_END:2,IGNORE:3},qat=e=>e,Zat=nD.BREAK,Db=class{constructor(t){G(this,\"getControllerState\",void 0),G(this,\"props\",void 0),G(this,\"propsInTransition\",void 0),G(this,\"transition\",void 0),G(this,\"onViewStateChange\",void 0),G(this,\"onStateChange\",void 0),G(this,\"_onTransitionUpdate\",r=>{let{time:i,settings:{interpolator:s,startProps:n,endProps:o,duration:c,easing:f}}=r,_=f(i/c),w=s.interpolateProps(n,o,_);this.propsInTransition=this.getControllerState({...this.props,...w}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})}),this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new $c(t.timeline),this.onViewStateChange=t.onViewStateChange||$7,this.onStateChange=t.onStateChange||$7}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let r=!1,i=this.props;if(this.props=t,!i||this._shouldIgnoreViewportChange(i,t))return!1;if(this._isTransitionEnabled(t)){let s=i;if(this.transition.inProgress){let{interruption:n,endProps:o}=this.transition.settings;s={...i,...n===nD.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(s,t),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:r,transitionInterpolator:i}=t;return(r>0||r===\"auto\")&&!!i}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,r){return this.transition.inProgress?this.transition.settings.interruption===nD.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(t,r):!0}_triggerTransition(t,r){let i=this.getControllerState(t),s=this.getControllerState(r).shortestPathFrom(i),n=r.transitionInterpolator,o=n.getDuration?n.getDuration(t,r):r.transitionDuration;if(o===0)return;let c=n.initializeProps(t,s);this.propsInTransition={};let f={duration:o,easing:r.transitionEasing||qat,interpolator:n,interruption:r.transitionInterruption||Zat,startProps:c.start,endProps:c.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(f),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(r)}}};var Ob=class{constructor(t){G(this,\"_propsToCompare\",void 0),G(this,\"_propsToExtract\",void 0),G(this,\"_requiredProps\",void 0);let{compare:r,extract:i,required:s}=t;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(t,r){for(let i of this._propsToCompare)if(!(i in t)||!(i in r)||!To(t[i],r[i]))return!1;return!0}initializeProps(t,r){let i={},s={};for(let n of this._propsToExtract)(n in t||n in r)&&(i[n]=t[n],s[n]=r[n]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(t,r){return r.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(r=>{let i=t[r];br(Number.isFinite(i)||Array.isArray(i),\"\".concat(r,\" is required for transition\"))})}};var Yat=[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\"],Qat=[\"longitude\",\"latitude\",\"zoom\"],sg=class extends Ob{constructor(t={}){let r=Array.isArray(t)?t:t.transitionProps,i=Array.isArray(t)?{}:t;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:Yat,required:Qat},super(i.transitionProps),G(this,\"opts\",void 0),this.opts=i}initializeProps(t,r){let i=super.initializeProps(t,r),{makeViewport:s,around:n}=this.opts;if(s&&n){let o=s(t),c=s(r),f=o.unproject(n);i.start.around=n,Object.assign(i.end,{around:c.project(f),aroundPosition:f,width:r.width,height:r.height})}return i}interpolateProps(t,r,i){let s={};for(let n of this._propsToExtract)s[n]=tc(t[n]||0,r[n]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...r,...s});Object.assign(s,n.panByPosition(r.aroundPosition,tc(t.around,r.around,i)))}return s}};var KA={transitionDuration:0},$at=300,jE=e=>1-(1-e)*(1-e),Vy={WHEEL:[\"wheel\"],PAN:[\"panstart\",\"panmove\",\"panend\"],PINCH:[\"pinchstart\",\"pinchmove\",\"pinchend\"],TRIPLE_PAN:[\"tripanstart\",\"tripanmove\",\"tripanend\"],DOUBLE_TAP:[\"doubletap\"],KEYBOARD:[\"keydown\"]},og={},Bb=class{constructor(t){G(this,\"props\",void 0),G(this,\"state\",{}),G(this,\"transitionManager\",void 0),G(this,\"eventManager\",void 0),G(this,\"onViewStateChange\",void 0),G(this,\"onStateChange\",void 0),G(this,\"makeViewport\",void 0),G(this,\"_controllerState\",void 0),G(this,\"_events\",{}),G(this,\"_interactionState\",{isDragging:!1}),G(this,\"_customEvents\",[]),G(this,\"_eventStartBlocked\",null),G(this,\"_panMove\",!1),G(this,\"invertPan\",!1),G(this,\"dragMode\",\"rotate\"),G(this,\"inertia\",0),G(this,\"scrollZoom\",!0),G(this,\"dragPan\",!0),G(this,\"dragRotate\",!0),G(this,\"doubleClickZoom\",!0),G(this,\"touchZoom\",!0),G(this,\"touchRotate\",!1),G(this,\"keyboard\",!0),this.transitionManager=new Db({...t,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(let r in this._events)if(this._events[r]){var t;(t=this.eventManager)===null||t===void 0||t.off(r,this.handleEvent)}this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;let r=this._eventStartBlocked;switch(t.type){case\"panstart\":return r?!1:this._onPanStart(t);case\"panmove\":return this._onPan(t);case\"panend\":return this._onPanEnd(t);case\"pinchstart\":return r?!1:this._onPinchStart(t);case\"pinchmove\":return this._onPinch(t);case\"pinchend\":return this._onPinchEnd(t);case\"tripanstart\":return r?!1:this._onTriplePanStart(t);case\"tripanmove\":return this._onTriplePan(t);case\"tripanend\":return this._onTriplePanEnd(t);case\"doubletap\":return this._onDoubleTap(t);case\"wheel\":return this._onWheel(t);case\"keydown\":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){let{x:r,y:i}=this.props,{offsetCenter:s}=t;return[s.x-r,s.y-i]}isPointInBounds(t,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let n=t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=s;return n&&r&&r.stopPropagation(),n}isFunctionKeyPressed(t){let{srcEvent:r}=t;return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=r}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,\"transitionInterpolator\"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r}=t;this.inertia=Number.isFinite(r)?r:r===!0?$at:0;let{scrollZoom:i=!0,dragPan:s=!0,dragRotate:n=!0,doubleClickZoom:o=!0,touchZoom:c=!0,touchRotate:f=!1,keyboard:_=!0}=t,w=!!this.onViewStateChange;this.toggleEvents(Vy.WHEEL,w&&i),this.toggleEvents(Vy.PAN,w),this.toggleEvents(Vy.PINCH,w&&(c||f)),this.toggleEvents(Vy.TRIPLE_PAN,w&&f),this.toggleEvents(Vy.DOUBLE_TAP,w&&o),this.toggleEvents(Vy.KEYBOARD,w&&_),this.scrollZoom=i,this.dragPan=s,this.dragRotate=n,this.doubleClickZoom=o,this.touchZoom=c,this.touchRotate=f,this.keyboard=_}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,r){this.eventManager&&t.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(t,r=null,i={}){let s={...t.getViewportProps(),...r},n=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(i),n){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode===\"pan\")&&(i=!i);let s=this.controllerState[i?\"panStart\":\"rotateStart\"]({pos:r});return this._panMove=i,this.updateViewport(s,KA,{isDragging:!0}),!0}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;let r=this.getCenter(t),i=this.controllerState.pan({pos:r});return this.updateViewport(i,KA,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:r}=this;if(this.dragPan&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],n=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let r=this.getCenter(t),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,KA,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:r}=this;if(this.dragRotate&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],n=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;t.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=t,o=2/(1+Math.exp(-Math.abs(n*i)));n<0&&o!==0&&(o=1/o);let c=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(c,{...this._getTransitionProps({around:r}),transitionDuration:s?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,KA,{isDragging:!0}),!0}_onTriplePan(t){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(t);r[0]-=t.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,KA,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&t.velocityY){let i=this.getCenter(t),s=[i[0],i[1]+=t.velocityY*r/2],n=this.controllerState.rotate({pos:s});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return og._startPinchRotation=t.rotation,og._lastPinchEvent=t,this.updateViewport(i,KA,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=t,s=this.getCenter(t);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=t;r=r.rotate({deltaAngleX:og._startPinchRotation-i})}return this.updateViewport(r,KA,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),og._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=og;if(this.touchZoom&&r&&i&&t.scale!==i.scale){let s=this.getCenter(t),n=this.controllerState.rotateEnd(),o=Math.log2(t.scale),c=(o-Math.log2(i.scale))/(t.deltaTime-i.deltaTime),f=Math.pow(2,o+c*r/2);n=n.zoom({pos:s,scale:f}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return og._startPinchRotation=null,og._lastPinchEvent=null,!0}_onDoubleTap(t){if(!this.doubleClickZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(t),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:c}=this,f,_={};switch(t.srcEvent.code){case\"Minus\":f=r?c.zoomOut(i).zoomOut(i):c.zoomOut(i),_.isZooming=!0;break;case\"Equal\":f=r?c.zoomIn(i).zoomIn(i):c.zoomIn(i),_.isZooming=!0;break;case\"ArrowLeft\":r?(f=c.rotateLeft(n),_.isRotating=!0):(f=c.moveLeft(s),_.isPanning=!0);break;case\"ArrowRight\":r?(f=c.rotateRight(n),_.isRotating=!0):(f=c.moveRight(s),_.isPanning=!0);break;case\"ArrowUp\":r?(f=c.rotateUp(o),_.isRotating=!0):(f=c.moveUp(s),_.isPanning=!0);break;case\"ArrowDown\":r?(f=c.rotateDown(o),_.isRotating=!0):(f=c.moveDown(s),_.isPanning=!0);break;default:return!1}return this.updateViewport(f,this._getTransitionProps(),_),!0}_getTransitionProps(t){let{transition:r}=this;return!r||!r.transitionInterpolator?KA:t?{...r,transitionInterpolator:new sg({...t,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Fb=class{constructor(t,r){G(this,\"_viewportProps\",void 0),G(this,\"_state\",void 0),this._viewportProps=this.applyConstraints(t),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var X7=5,Xat=1.2,sD=class extends Fb{constructor(t){let{width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:c=0,pitch:f=0,altitude:_=1.5,position:w=[0,0,0],maxZoom:C=20,minZoom:R=0,maxPitch:N=60,minPitch:j=0,startPanLngLat:Y,startZoomLngLat:rt,startRotatePos:$,startBearing:K,startPitch:tt,startZoom:ut,normalize:Pt=!0}=t;br(Number.isFinite(n)),br(Number.isFinite(s)),br(Number.isFinite(o)),super({width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:c,pitch:f,altitude:_,maxZoom:C,minZoom:R,maxPitch:N,minPitch:j,normalize:Pt,position:w},{startPanLngLat:Y,startZoomLngLat:rt,startRotatePos:$,startBearing:K,startPitch:tt,startZoom:ut}),G(this,\"makeViewport\",void 0),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:n,startPitch:o}=this.getState();if(!s||n===void 0||o===void 0)return this;let c;return t?c=this._getNewRotation(t,s,o,n):c={bearing:n+r,pitch:o+i},this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:n}=this.getState();if(n||(s=this.getViewportProps().zoom,n=this._unproject(r)||this._unproject(t)),!n)return this;let{maxZoom:o,minZoom:c}=this.getViewportProps(),f=s+Math.log2(i);f=Ml(f,c,o);let _=this.makeViewport({...this.getViewportProps(),zoom:f});return this._getUpdatedState({zoom:f,..._.panByPosition(n,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){let r=t.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:n}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(t){let{maxZoom:r,minZoom:i,zoom:s}=t;t.zoom=Ml(s,i,r);let{maxPitch:n,minPitch:o,pitch:c}=t;t.pitch=Ml(c,o,n);let{normalize:f=!0}=t;return f&&Object.assign(t,NE(t)),t}_zoomFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:t})}_panFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+t[0],i/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){let r=this.makeViewport(this.getViewportProps());return t&&r.unproject(t)}_getNewRotation(t,r,i,s){let n=t[0]-r[0],o=t[1]-r[1],c=t[1],f=r[1],{width:_,height:w}=this.getViewportProps(),C=n/_,R=0;o>0?Math.abs(w-f)>X7&&(R=o/(f-w)*Xat):o<0&&f>X7&&(R=1-c/f),R=Ml(R,-1,1);let{minPitch:N,maxPitch:j}=this.getViewportProps(),Y=s+180*C,rt=i;return R>0?rt=i+R*(j-i):R<0&&(rt=i-R*(N-i)),{pitch:rt,bearing:Y}}},zb=class extends Bb{constructor(...t){super(...t),G(this,\"ControllerState\",sD),G(this,\"transition\",{transitionDuration:300,transitionInterpolator:new sg({transitionProps:{compare:[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\",\"position\"],required:[\"longitude\",\"latitude\",\"zoom\"]}})}),G(this,\"dragMode\",\"pan\")}setProps(t){t.position=t.position||[0,0,0];let r=this.props;super.setProps(t),(!r||r.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}};var jy=class extends Qc{get ViewportType(){return nc}get ControllerType(){return zb}};G(jy,\"displayName\",\"MapView\");var Kat=new Fy;function Jat(e,t){var r,i;let s=(r=e.order)!==null&&r!==void 0?r:1/0,n=(i=t.order)!==null&&i!==void 0?i:1/0;return s-n}var Nb=class{constructor(){G(this,\"effects\",void 0),G(this,\"_resolvedEffects\",[]),G(this,\"_defaultEffects\",[]),G(this,\"_needsRedraw\",void 0),this.effects=[],this._needsRedraw=\"Initial render\",this._setEffects([])}addDefaultEffect(t){let r=this._defaultEffects;if(!r.find(i=>i.id===t.id)){let i=r.findIndex(s=>Jat(s,t)>0);i<0?r.push(t):r.splice(i,0,t),this._setEffects(this.effects)}}setProps(t){\"effects\"in t&&(ao(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(t){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of t){let n=r[s.id];n&&n!==s?n.setProps?(n.setProps(s.props),i.push(n)):(n.cleanup(),i.push(s)):i.push(s),delete r[s.id]}for(let s in r)r[s].cleanup();this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),t.some(s=>s instanceof Fy)||this._resolvedEffects.push(Kat),this._needsRedraw=\"effects changed\"}finalize(){for(let t of this._resolvedEffects)t.cleanup();this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Ub=class extends rc{shouldDrawLayer(t){let{operation:r}=t.props;return r.includes(\"draw\")||r.includes(\"terrain\")}};var tlt=\"deckRenderer.renderLayers\",Vb=class{constructor(t){G(this,\"gl\",void 0),G(this,\"layerFilter\",void 0),G(this,\"drawPickingColors\",void 0),G(this,\"drawLayersPass\",void 0),G(this,\"pickLayersPass\",void 0),G(this,\"renderCount\",void 0),G(this,\"_needsRedraw\",void 0),G(this,\"renderBuffers\",void 0),G(this,\"lastPostProcessEffect\",void 0),this.gl=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Ub(t),this.pickLayersPass=new ng(t),this.renderCount=0,this._needsRedraw=\"Initial render\",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw=\"layerFilter changed\"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw=\"drawPickingColors changed\")}renderLayers(t){if(!t.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t,target:t.target||yi.getDefaultFramebuffer(this.gl)};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target,n=r.render({...i,target:s});i.effects&&this._postRender(i.effects,i),this.renderCount++,Cs(tlt,this,n,t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:t}=this;for(let r of t)r.delete();t.length=0}_preRender(t,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of t)r.preRenderStats[i.id]=i.preRender(this.gl,r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:t}=this;t.length===0&&t.push(new yi(this.gl),new yi(this.gl));for(let r of t)r.resize()}_postRender(t,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1],target:null};for(let n of t)if(n.postRender){if(n.id===this.lastPostProcessEffect){s.target=r.target,n.postRender(this.gl,s);break}let o=n.postRender(this.gl,s);s.inputBuffer=o,s.swapBuffer=o===i[0]?i[1]:i[0]}}};var elt={pickedColor:null,pickedObjectIndex:-1};function K7({pickedColors:e,decodePickingColor:t,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:n}){let{x:o,y:c,width:f,height:_}=n,w=s*s,C=-1,R=0;for(let N=0;N<_;N++){let j=N+c-i,Y=j*j;if(Y>w)R+=4*f;else for(let rt=0;rt=0){let K=rt+o-r,tt=K*K+Y;tt<=w&&(w=tt,C=R)}R+=4}}if(C>=0){let N=e.slice(C,C+4),j=t(N);if(j){let Y=Math.floor(C/4/f),rt=C/4-Y*f;return{...j,pickedColor:N,pickedX:o+rt,pickedY:c+Y}}nr.error(\"Picked non-existent layer. Is picking buffer corrupt?\")()}return elt}function J7({pickedColors:e,decodePickingColor:t}){let r=new Map;if(e){for(let i=0;i=0){let n=e.slice(i,i+4),o=n.join(\",\");if(!r.has(o)){let c=t(n);c?r.set(o,{...c,color:n}):nr.error(\"Picked non-existent layer. Is picking buffer corrupt?\")()}}}return Array.from(r.values())}function oD({pickInfo:e,viewports:t,pixelRatio:r,x:i,y:s,z:n}){let o=t[0];t.length>1&&(o=rlt(e?.pickedViewports||t,{x:i,y:s}));let c;if(o){let f=[i-o.x,s-o.y];n!==void 0&&(f[2]=n),c=o.unproject(f)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:c,devicePixel:e&&\"pickedX\"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:r}}function tG(e){let{pickInfo:t,lastPickedInfo:r,mode:i,layers:s}=e,{pickedColor:n,pickedLayer:o,pickedObjectIndex:c}=t,f=o?[o]:[];if(i===\"hover\"){let C=r.index,R=r.layerId,N=o?o.props.id:null;if(N!==R||c!==C){if(N!==R){let j=s.find(Y=>Y.props.id===R);j&&f.unshift(j)}r.layerId=N,r.index=c,r.info=null}}let _=oD(e),w=new Map;return w.set(null,_),f.forEach(C=>{let R={..._};C===o&&(R.color=n,R.index=c,R.picked=!0),R=aD({layer:C,info:R,mode:i});let N=R.layer;C===o&&i===\"hover\"&&(r.info=R),w.set(N.id,R),i===\"hover\"&&N.updateAutoHighlight(R)}),w}function aD({layer:e,info:t,mode:r}){for(;e&&t;){let i=t.layer||null;t.sourceLayer=i,t.layer=e,t=e.getPickingInfo({info:t,mode:r,sourceLayer:i}),e=e.parent}return t}function rlt(e,t){for(let r=e.length-1;r>=0;r--){let i=e[r];if(i.containsPixel(t))return i}return e[0]}var jb=class{constructor(t){G(this,\"gl\",void 0),G(this,\"pickingFBO\",void 0),G(this,\"depthFBO\",void 0),G(this,\"pickLayersPass\",void 0),G(this,\"layerFilter\",void 0),G(this,\"lastPickedInfo\",void 0),G(this,\"_pickable\",!0),this.gl=t,this.pickLayersPass=new ng(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){\"layerFilter\"in t&&(this.layerFilter=t.layerFilter),\"_pickable\"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.delete(),this.depthFBO&&(this.depthFBO.color.delete(),this.depthFBO.delete())}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:r,layers:i,viewports:s},n=this.lastPickedInfo.info){let o=n&&n.layer&&n.layer.id,c=n&&n.viewport&&n.viewport.id,f=o?i.find(R=>R.id===o):null,_=c&&s.find(R=>R.id===c)||s[0],w=_&&_.unproject([t-_.x,r-_.y]);return{...n,...{x:t,y:r,viewport:_,coordinate:w,layer:f}}}_resizeBuffer(){var t,r;let{gl:i}=this;if(!this.pickingFBO&&(this.pickingFBO=new yi(i),yi.isSupported(i,{colorBufferFloat:!0}))){let s=new yi(i);s.attach({36064:new pi(i,{format:hr(i)?34836:6408,type:5126})}),this.depthFBO=s}(t=this.pickingFBO)===null||t===void 0||t.resize({width:i.canvas.width,height:i.canvas.height}),(r=this.depthFBO)===null||r===void 0||r.resize({width:i.canvas.width,height:i.canvas.height})}_getPickable(t){if(this._pickable===!1)return null;let r=t.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}_pickClosestObject({layers:t,views:r,viewports:i,x:s,y:n,radius:o=0,depth:c=1,mode:f=\"query\",unproject3D:_,onViewportActive:w,effects:C}){let R=this._getPickable(t),N=Sl(this.gl);if(!R)return{result:[],emptyInfo:oD({viewports:i,x:s,y:n,pixelRatio:N})};this._resizeBuffer();let j=dy(this.gl,[s,n],!0),Y=[j.x+Math.floor(j.width/2),j.y+Math.floor(j.height/2)],rt=Math.round(o*N),{width:$,height:K}=this.pickingFBO,tt=this._getPickingRect({deviceX:Y[0],deviceY:Y[1],deviceRadius:rt,deviceWidth:$,deviceHeight:K}),ut={x:s-o,y:n-o,width:o*2+1,height:o*2+1},Pt,Ot=[],Kt=new Set;for(let Zt=0;Zt=_)break;let Ge=Ot[ue],tr={color:Ge.pickedColor,layer:null,index:Ge.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:N};tr=aD({layer:Ge.pickedLayer,info:tr,mode:f});let er=(le=tr.object)!==null&&le!==void 0?le:\"\".concat(tr.layer.id,\"[\").concat(tr.index,\"]\");Kt.has(er)||Kt.set(er,tr)}return Array.from(Kt.values())}_drawAndSample({layers:t,views:r,viewports:i,onViewportActive:s,deviceRect:n,cullRect:o,effects:c,pass:f},_=!1){let w=_?this.depthFBO:this.pickingFBO,C={layers:t,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:w,deviceRect:n,cullRect:o,effects:c,pass:f,pickZ:_,preRenderStats:{}};for(let K of c)K.useInPicking&&(C.preRenderStats[K.id]=K.preRender(this.gl,C));let{decodePickingColor:R}=this.pickLayersPass.render(C),{x:N,y:j,width:Y,height:rt}=n,$=new(_?Float32Array:Uint8Array)(Y*rt*4);return Rh(w,{sourceX:N,sourceY:j,sourceWidth:Y,sourceHeight:rt,target:$}),{pickedColors:$,decodePickingColor:R}}_getPickingRect({deviceX:t,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:n}){let o=Math.max(0,t-i),c=Math.max(0,r-i),f=Math.min(s,t+i+1)-o,_=Math.min(n,r+i+1)-c;return f<=0||_<=0?null:{x:o,y:c,width:f,height:_}}};var ilt={zIndex:\"1\",position:\"absolute\",pointerEvents:\"none\",color:\"#a0a7b4\",backgroundColor:\"#29323c\",padding:\"10px\",top:\"0\",left:\"0\",display:\"none\"},Gb=class{constructor(t){G(this,\"el\",null),G(this,\"isVisible\",!1);let r=t.parentElement;r&&(this.el=document.createElement(\"div\"),this.el.className=\"deck-tooltip\",Object.assign(this.el.style,ilt),r.appendChild(this.el))}setTooltip(t,r,i){let s=this.el;if(s){if(typeof t==\"string\")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display=\"none\";return}this.isVisible=!0,s.style.display=\"block\",s.style.transform=\"translate(\".concat(r,\"px, \").concat(i,\"px)\"),t&&typeof t==\"object\"&&\"style\"in t&&Object.assign(s.style,t.style)}}remove(){this.el&&(this.el.remove(),this.el=null)}};var ag=ki(eG());var nlt={mousedown:1,mousemove:2,mouseup:4};function slt(e,t){for(let r=0;r0&&i.type===\"pointerdown\"&&(slt(s,n=>n.pointerId===i.pointerId)||s.push(i)),t.call(this,i)}}function iG(e){e.prototype.handler=function(r){let i=nlt[r.type];i&1&&r.button>=0&&(this.pressed=!0),i&2&&r.which===0&&(i=4),this.pressed&&(i&4&&(this.pressed=!1),this.callback(this.manager,i,{pointers:[r],changedPointers:[r],pointerType:\"mouse\",srcEvent:r}))}}rG(ag.PointerEventInput);iG(ag.MouseInput);var nG=ag.Manager,Wh=ag;var Hh=class{constructor(t,r,i){this.element=t,this.callback=r,this.options={enable:!0,...i}}};var sG=Wh?[[Wh.Pan,{event:\"tripan\",pointers:3,threshold:0,enable:!1}],[Wh.Rotate,{enable:!1}],[Wh.Pinch,{enable:!1}],[Wh.Swipe,{enable:!1}],[Wh.Pan,{threshold:0,enable:!1}],[Wh.Press,{enable:!1}],[Wh.Tap,{event:\"doubletap\",taps:2,enable:!1}],[Wh.Tap,{event:\"anytap\",enable:!1}],[Wh.Tap,{enable:!1}]]:null,lD={tripan:[\"rotate\",\"pinch\",\"pan\"],rotate:[\"pinch\"],pinch:[\"pan\"],pan:[\"press\",\"doubletap\",\"anytap\",\"tap\"],doubletap:[\"anytap\"],anytap:[\"tap\"]},oG={doubletap:[\"tap\"]},aG={pointerdown:\"pointerdown\",pointermove:\"pointermove\",pointerup:\"pointerup\",touchstart:\"pointerdown\",touchmove:\"pointermove\",touchend:\"pointerup\",mousedown:\"pointerdown\",mousemove:\"pointermove\",mouseup:\"pointerup\"},Gy={KEY_EVENTS:[\"keydown\",\"keyup\"],MOUSE_EVENTS:[\"mousedown\",\"mousemove\",\"mouseup\",\"mouseover\",\"mouseout\",\"mouseleave\"],WHEEL_EVENTS:[\"wheel\",\"mousewheel\"]},lG={tap:\"tap\",anytap:\"anytap\",doubletap:\"doubletap\",press:\"press\",pinch:\"pinch\",pinchin:\"pinch\",pinchout:\"pinch\",pinchstart:\"pinch\",pinchmove:\"pinch\",pinchend:\"pinch\",pinchcancel:\"pinch\",rotate:\"rotate\",rotatestart:\"rotate\",rotatemove:\"rotate\",rotateend:\"rotate\",rotatecancel:\"rotate\",tripan:\"tripan\",tripanstart:\"tripan\",tripanmove:\"tripan\",tripanup:\"tripan\",tripandown:\"tripan\",tripanleft:\"tripan\",tripanright:\"tripan\",tripanend:\"tripan\",tripancancel:\"tripan\",pan:\"pan\",panstart:\"pan\",panmove:\"pan\",panup:\"pan\",pandown:\"pan\",panleft:\"pan\",panright:\"pan\",panend:\"pan\",pancancel:\"pan\",swipe:\"swipe\",swipeleft:\"swipe\",swiperight:\"swipe\",swipeup:\"swipe\",swipedown:\"swipe\"},cD={click:\"tap\",anyclick:\"anytap\",dblclick:\"doubletap\",mousedown:\"pointerdown\",mousemove:\"pointermove\",mouseup:\"pointerup\",mouseover:\"pointerover\",mouseout:\"pointerout\",mouseleave:\"pointerleave\"};var cG=typeof navigator<\"u\"&&navigator.userAgent?navigator.userAgent.toLowerCase():\"\",lg=typeof window<\"u\"?window:global;var WE=!1;try{let e={get passive(){return WE=!0,!0}};lg.addEventListener(\"test\",null,e),lg.removeEventListener(\"test\",null)}catch{WE=!1}var olt=cG.indexOf(\"firefox\")!==-1,{WHEEL_EVENTS:alt}=Gy,uG=\"wheel\",hG=4.000244140625,llt=40,clt=.25,Wb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{if(!this.options.enable)return;let n=s.deltaY;lg.WheelEvent&&(olt&&s.deltaMode===lg.WheelEvent.DOM_DELTA_PIXEL&&(n/=lg.devicePixelRatio),s.deltaMode===lg.WheelEvent.DOM_DELTA_LINE&&(n*=llt)),n!==0&&n%hG===0&&(n=Math.floor(n/hG)),s.shiftKey&&n&&(n=n*clt),this.callback({type:uG,center:{x:s.clientX,y:s.clientY},delta:-n,srcEvent:s,pointerType:\"mouse\",target:s.target})},this.events=(this.options.events||[]).concat(alt),this.events.forEach(s=>t.addEventListener(s,this.handleEvent,WE?{passive:!1}:!1))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===uG&&(this.options.enable=r)}};var{MOUSE_EVENTS:ult}=Gy,fG=\"pointermove\",dG=\"pointerover\",pG=\"pointerout\",AG=\"pointerenter\",mG=\"pointerleave\",Hb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;let{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,this.events=(this.options.events||[]).concat(ult),this.events.forEach(n=>t.addEventListener(n,this.handleEvent))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===fG&&(this.enableMoveEvent=r),t===dG&&(this.enableOverEvent=r),t===pG&&(this.enableOutEvent=r),t===AG&&(this.enableEnterEvent=r),t===mG&&(this.enableLeaveEvent=r)}handleOverEvent(t){this.enableOverEvent&&t.type===\"mouseover\"&&this._emit(dG,t)}handleOutEvent(t){this.enableOutEvent&&t.type===\"mouseout\"&&this._emit(pG,t)}handleEnterEvent(t){this.enableEnterEvent&&t.type===\"mouseenter\"&&this._emit(AG,t)}handleLeaveEvent(t){this.enableLeaveEvent&&t.type===\"mouseleave\"&&this._emit(mG,t)}handleMoveEvent(t){if(this.enableMoveEvent)switch(t.type){case\"mousedown\":t.button>=0&&(this.pressed=!0);break;case\"mousemove\":t.which===0&&(this.pressed=!1),this.pressed||this._emit(fG,t);break;case\"mouseup\":this.pressed=!1;break;default:}}_emit(t,r){this.callback({type:t,center:{x:r.clientX,y:r.clientY},srcEvent:r,pointerType:\"mouse\",target:r.target})}};var{KEY_EVENTS:hlt}=Gy,gG=\"keydown\",_G=\"keyup\",qb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{let n=s.target||s.srcElement;n.tagName===\"INPUT\"&&n.type===\"text\"||n.tagName===\"TEXTAREA\"||(this.enableDownEvent&&s.type===\"keydown\"&&this.callback({type:gG,srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type===\"keyup\"&&this.callback({type:_G,srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(hlt),t.tabIndex=this.options.tabIndex||0,t.style.outline=\"none\",this.events.forEach(s=>t.addEventListener(s,this.handleEvent))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===gG&&(this.enableDownEvent=r),t===_G&&(this.enableUpEvent=r)}};var yG=\"contextmenu\",Zb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:yG,center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:\"mouse\",target:s.target})},t.addEventListener(\"contextmenu\",this.handleEvent)}destroy(){this.element.removeEventListener(\"contextmenu\",this.handleEvent)}enableEventType(t,r){t===yG&&(this.options.enable=r)}};var flt={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},dlt=1,plt=2,Alt=3,mlt=0,glt=1,_lt=2,ylt=1,vlt=2,xlt=4;function vG(e){let t=flt[e.srcEvent.type];if(!t)return null;let{buttons:r,button:i,which:s}=e.srcEvent,n=!1,o=!1,c=!1;return t===4||t===2&&!Number.isFinite(r)?(n=s===dlt,o=s===plt,c=s===Alt):t===2?(n=!!(r&ylt),o=!!(r&xlt),c=!!(r&vlt)):t===1&&(n=i===mlt,o=i===glt,c=i===_lt),{leftButton:n,middleButton:o,rightButton:c}}function xG(e,t){let r=e.center;if(!r)return null;let i=t.getBoundingClientRect(),s=i.width/t.offsetWidth||1,n=i.height/t.offsetHeight||1,o={x:(r.x-i.left-t.clientLeft)/s,y:(r.y-i.top-t.clientTop)/n};return{center:r,offsetCenter:o}}var uD={srcElement:\"root\",priority:0},Yb=class{constructor(t){this.handleEvent=r=>{if(this.isEmpty())return;let i=this._normalizeEvent(r),s=r.srcEvent.target;for(;s&&s!==i.rootElement;){if(this._emit(i,s),i.handled)return;s=s.parentNode}this._emit(i,\"root\")},this.eventManager=t,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,r,i,s=!1,n=!1){let{handlers:o,handlersByElement:c}=this,f=uD;typeof i==\"string\"||i&&i.addEventListener?f={...uD,srcElement:i}:i&&(f={...uD,...i});let _=c.get(f.srcElement);_||(_=[],c.set(f.srcElement,_));let w={type:t,handler:r,srcElement:f.srcElement,priority:f.priority};s&&(w.once=!0),n&&(w.passive=!0),o.push(w),this._active=this._active||!w.passive;let C=_.length-1;for(;C>=0&&!(_[C].priority>=w.priority);)C--;_.splice(C+1,0,w)}remove(t,r){let{handlers:i,handlersByElement:s}=this;for(let n=i.length-1;n>=0;n--){let o=i[n];if(o.type===t&&o.handler===r){i.splice(n,1);let c=s.get(o.srcElement);c.splice(c.indexOf(o),1),c.length===0&&s.delete(o.srcElement)}}this._active=i.some(n=>!n.passive)}_emit(t,r){let i=this.handlersByElement.get(r);if(i){let s=!1,n=()=>{t.handled=!0},o=()=>{t.handled=!0,s=!0},c=[];for(let f=0;f{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};var blt={events:null,recognizers:null,recognizerOptions:{},Manager:nG,touchAction:\"none\",tabIndex:0},Wy=class{constructor(t=null,r){this._onBasicInput=s=>{let{srcEvent:n}=s,o=aG[n.type];o&&this.manager.emit(o,s)},this._onOtherEvent=s=>{this.manager.emit(s.type,s)},this.options={...blt,...r},this.events=new Map,this.setElement(t);let{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}setElement(t){if(this.element&&this.destroy(),this.element=t,!t)return;let{options:r}=this,i=r.Manager;this.manager=new i(t,{touchAction:r.touchAction,recognizers:r.recognizers||sG}).on(\"hammer.input\",this._onBasicInput),r.recognizers||Object.keys(lD).forEach(s=>{let n=this.manager.get(s);n&&lD[s].forEach(o=>{n.recognizeWith(o)})});for(let s in r.recognizerOptions){let n=this.manager.get(s);if(n){let o=r.recognizerOptions[s];delete o.enable,n.set(o)}}this.wheelInput=new Wb(t,this._onOtherEvent,{enable:!1}),this.moveInput=new Hb(t,this._onOtherEvent,{enable:!1}),this.keyInput=new qb(t,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new Zb(t,this._onOtherEvent,{enable:!1});for(let[s,n]of this.events)n.isEmpty()||(this._toggleRecognizer(n.recognizerName,!0),this.manager.on(s,n.handleEvent))}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy(),this.wheelInput=null,this.moveInput=null,this.keyInput=null,this.contextmenuInput=null,this.manager=null,this.element=null)}on(t,r,i){this._addEventHandler(t,r,i,!1)}once(t,r,i){this._addEventHandler(t,r,i,!0)}watch(t,r,i){this._addEventHandler(t,r,i,!1,!0)}off(t,r){this._removeEventHandler(t,r)}_toggleRecognizer(t,r){let{manager:i}=this;if(!i)return;let s=i.get(t);if(s&&s.options.enable!==r){s.set({enable:r});let n=oG[t];n&&!this.options.recognizers&&n.forEach(o=>{let c=i.get(o);r?(c.requireFailure(t),s.dropRequireFailure(o)):c.dropRequireFailure(t)})}this.wheelInput.enableEventType(t,r),this.moveInput.enableEventType(t,r),this.keyInput.enableEventType(t,r),this.contextmenuInput.enableEventType(t,r)}_addEventHandler(t,r,i,s,n){if(typeof t!=\"string\"){i=r;for(let w in t)this._addEventHandler(w,t[w],i,s,n);return}let{manager:o,events:c}=this,f=cD[t]||t,_=c.get(f);_||(_=new Yb(this),c.set(f,_),_.recognizerName=lG[f]||f,o&&o.on(f,_.handleEvent)),_.add(t,r,i,s,n),_.isEmpty()||this._toggleRecognizer(_.recognizerName,!0)}_removeEventHandler(t,r){if(typeof t!=\"string\"){for(let o in t)this._removeEventHandler(o,t[o]);return}let{events:i}=this,s=cD[t]||t,n=i.get(s);if(n&&(n.remove(t,r),n.isEmpty())){let{recognizerName:o}=n,c=!1;for(let f of i.values())if(f.recognizerName===o&&!f.isEmpty()){c=!0;break}c||this._toggleRecognizer(o,!1)}}};function cg(){}var wlt=({isDragging:e})=>e?\"grabbing\":\"grab\",bG={id:\"\",width:\"100%\",height:\"100%\",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,glOptions:{},parameters:{},parent:null,gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:\"none\",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,onWebGLInitialized:cg,onResize:cg,onViewStateChange:cg,onInteractionStateChange:cg,onBeforeRender:cg,onAfterRender:cg,onLoad:cg,onError:e=>nr.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:wlt,getTooltip:null,debug:!1,drawPickingColors:!1},ap=class{constructor(t){G(this,\"props\",void 0),G(this,\"width\",0),G(this,\"height\",0),G(this,\"userData\",{}),G(this,\"canvas\",null),G(this,\"viewManager\",null),G(this,\"layerManager\",null),G(this,\"effectManager\",null),G(this,\"deckRenderer\",null),G(this,\"deckPicker\",null),G(this,\"eventManager\",null),G(this,\"tooltip\",null),G(this,\"metrics\",void 0),G(this,\"animationLoop\",void 0),G(this,\"stats\",void 0),G(this,\"viewState\",void 0),G(this,\"cursorState\",void 0),G(this,\"_needsRedraw\",void 0),G(this,\"_pickRequest\",void 0),G(this,\"_lastPointerDownInfo\",null),G(this,\"_metricsCounter\",void 0),G(this,\"_onPointerMove\",r=>{let{_pickRequest:i}=this;if(r.type===\"pointerleave\")i.x=-1,i.y=-1,i.radius=0;else{if(r.leftButton||r.rightButton)return;{let s=r.offsetCenter;if(!s)return;i.x=s.x,i.y=s.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=r}),G(this,\"_onEvent\",r=>{let i=U4[r.type],s=r.offsetCenter;if(!i||!s||!this.layerManager)return;let n=this.layerManager.getLayers(),o=this.deckPicker.getLastPickedObject({x:s.x,y:s.y,layers:n,viewports:this.getViewports(s)},this._lastPointerDownInfo),{layer:c}=o,f=c&&(c[i.handler]||c.props[i.handler]),_=this.props[i.handler],w=!1;f&&(w=f.call(c,o,r)),!w&&_&&_(o,r)}),G(this,\"_onPointerDown\",r=>{let i=r.offsetCenter,s=this._pick(\"pickObject\",\"pickObject Time\",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=s.result[0]||s.emptyInfo}),this.props={...bG,...t},t=this.props,this._needsRedraw=\"Initial render\",this._pickRequest={mode:\"hover\",x:-1,y:-1,radius:0,event:null},this.cursorState={isHovering:!1,isDragging:!1},t.viewState&&t.initialViewState&&nr.warn(\"View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.\")(),cy()===\"IE\"&&nr.warn(\"IE 11 is not supported\")(),this.viewState=t.initialViewState,t.gl||typeof document<\"u\"&&(this.canvas=this._createCanvas(t)),this.animationLoop=this._createAnimationLoop(t),this.stats=new Vf({id:\"deck.gl\"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this.setProps(t),t._typedArrayManagerProps&&jh.setOptions(t._typedArrayManagerProps),this.animationLoop.start()}finalize(){var t,r,i,s,n,o,c,f;if((t=this.animationLoop)===null||t===void 0||t.stop(),this.animationLoop=null,this._lastPointerDownInfo=null,(r=this.layerManager)===null||r===void 0||r.finalize(),this.layerManager=null,(i=this.viewManager)===null||i===void 0||i.finalize(),this.viewManager=null,(s=this.effectManager)===null||s===void 0||s.finalize(),this.effectManager=null,(n=this.deckRenderer)===null||n===void 0||n.finalize(),this.deckRenderer=null,(o=this.deckPicker)===null||o===void 0||o.finalize(),this.deckPicker=null,(c=this.eventManager)===null||c===void 0||c.destroy(),this.eventManager=null,(f=this.tooltip)===null||f===void 0||f.remove(),this.tooltip=null,!this.props.canvas&&!this.props.gl&&this.canvas){var _;(_=this.canvas.parentElement)===null||_===void 0||_.removeChild(this.canvas),this.canvas=null}}setProps(t){this.stats.get(\"setProps Time\").timeStart(),\"onLayerHover\"in t&&nr.removed(\"onLayerHover\",\"onHover\")(),\"onLayerClick\"in t&&nr.removed(\"onLayerClick\",\"onClick\")(),t.initialViewState&&!ao(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop.setProps(r),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r)),this.stats.get(\"setProps Time\").timeEnd()}needsRedraw(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return\"Deck._animate\";let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),n=this.effectManager.needsRedraw(t),o=this.deckRenderer.needsRedraw(t);return r=r||i||s||n||o,r}redraw(t){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=t||r,r&&(this.stats.get(\"Redraw Count\").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return br(this.viewManager),this.viewManager.views}getViewports(t){return br(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){let r=this._pick(\"pickObject\",\"pickObject Time\",t).result;return r.length?r[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick(\"pickObject\",\"pickMultipleObjects Time\",t).result}pickObjects(t){return this._pick(\"pickObjects\",\"pickObjects Time\",t)}_addResources(t,r=!1){for(let i in t)this.layerManager.resourceManager.add({resourceId:i,data:t[i],forceUpdate:r})}_removeResources(t){for(let r of t)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_pick(t,r,i){br(this.deckPicker);let{stats:s}=this;s.get(\"Pick Count\").incrementCount(),s.get(r).timeStart();let n=this.deckPicker[t]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(r).timeEnd(),n}_createCanvas(t){let r=t.canvas;return typeof r==\"string\"&&(r=document.getElementById(r),br(r)),r||(r=document.createElement(\"canvas\"),r.id=t.id||\"deckgl-overlay\",(t.parent||document.body).appendChild(r)),Object.assign(r.style,t.style),r}_setCanvasSize(t){if(!this.canvas)return;let{width:r,height:i}=t;if(r||r===0){let n=Number.isFinite(r)?\"\".concat(r,\"px\"):r;this.canvas.style.width=n}if(i||i===0){var s;let n=Number.isFinite(i)?\"\".concat(i,\"px\"):i;this.canvas.style.position=((s=t.style)===null||s===void 0?void 0:s.position)||\"absolute\",this.canvas.style.height=n}}_updateCanvasSize(){var t,r;let{canvas:i}=this;if(!i)return;let s=(t=i.clientWidth)!==null&&t!==void 0?t:i.width,n=(r=i.clientHeight)!==null&&r!==void 0?r:i.height;if(s!==this.width||n!==this.height){var o,c;this.width=s,this.height=n,(o=this.viewManager)===null||o===void 0||o.setProps({width:s,height:n}),(c=this.layerManager)===null||c===void 0||c.activateViewport(this.getViewports()[0]),this.props.onResize({width:s,height:n})}}_createAnimationLoop(t){let{width:r,height:i,gl:s,glOptions:n,debug:o,onError:c,onBeforeRender:f,onAfterRender:_,useDevicePixels:w}=t;return new X0({width:r,height:i,useDevicePixels:w,autoResizeDrawingBuffer:!s,autoResizeViewport:!1,gl:s,onCreateContext:C=>py({...n,...C,canvas:this.canvas,debug:o,onContextLost:()=>this._onContextLost()}),onInitialize:C=>this._setGLContext(C.gl),onRender:this._onRenderFrame.bind(this),onBeforeRender:f,onAfterRender:_,onError:c})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let t=this.props.views||[new jy({id:\"default-view\"})];return t=Array.isArray(t)?t:[t],t.length&&this.props.controller&&(t[0].props.controller=this.props.controller),t}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error(\"WebGL context is lost\"))}_pickAndCallback(){let{_pickRequest:t}=this;if(t.event){let{result:i,emptyInfo:s}=this._pick(\"pickObject\",\"pickObject Time\",t);this.cursorState.isHovering=i.length>0;let n=s,o=!1;for(let c of i){var r;n=c,o=((r=c.layer)===null||r===void 0?void 0:r.onHover(c,t.event))||o}if(!o&&this.props.onHover&&this.props.onHover(n,t.event),this.props.getTooltip&&this.tooltip){let c=this.props.getTooltip(n);this.tooltip.setTooltip(c,n.x,n.y)}t.event=null}}_updateCursor(){let t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setGLContext(t){if(this.layerManager)return;this.canvas||(this.canvas=t.canvas,V0(t,{enable:!0,copyState:!0})),this.tooltip=new Gb(this.canvas),wl(t,{blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onWebGLInitialized(t);let r=new QA;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new Wy(this.props.parent||t.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in U4)this.eventManager.on(s,this._onEvent);this.viewManager=new Rb({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new kb(t,{deck:this,stats:this.stats,viewport:i,timeline:r}),this.effectManager=new Nb,this.deckRenderer=new Vb(t),this.deckPicker=new jb(t),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,r){let{gl:i}=this.layerManager.context;wl(i,this.props.parameters),this.props.onBeforeRender({gl:i}),this.deckRenderer.renderLayers({target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:\"screen\",effects:this.effectManager.getEffects(),...r}),this.props.onAfterRender({gl:i})}_onRenderFrame(t){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),nr.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.tooltip.isVisible&&this.viewManager.needsRedraw()&&this.tooltip.setTooltip(null),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(t){let r=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get(\"frameRate\").timeEnd(),t.get(\"frameRate\").timeStart();let r=this.animationLoop.stats;t.get(\"GPU Time\").addTime(r.get(\"GPU Time\").lastTiming),t.get(\"CPU Time\").addTime(r.get(\"CPU Time\").lastTiming)}_getMetrics(){let{metrics:t,stats:r}=this;t.fps=r.get(\"frameRate\").getHz(),t.setPropsTime=r.get(\"setProps Time\").time,t.updateAttributesTime=r.get(\"Update Attributes\").time,t.framesRedrawn=r.get(\"Redraw Count\").count,t.pickTime=r.get(\"pickObject Time\").time+r.get(\"pickMultipleObjects Time\").time+r.get(\"pickObjects Time\").time,t.pickCount=r.get(\"Pick Count\").count,t.gpuTime=r.get(\"GPU Time\").time,t.cpuTime=r.get(\"CPU Time\").time,t.gpuTimePerFrame=r.get(\"GPU Time\").getAverageTime(),t.cpuTimePerFrame=r.get(\"CPU Time\").getAverageTime();let i=Lu.get(\"Memory Usage\");t.bufferMemory=i.get(\"Buffer Memory\").count,t.textureMemory=i.get(\"Texture Memory\").count,t.renderbufferMemory=i.get(\"Renderbuffer Memory\").count,t.gpuMemory=i.get(\"GPU Memory\").count}};G(ap,\"defaultProps\",bG);G(ap,\"VERSION\",nV);var ug=class{constructor(t,r){G(this,\"opts\",void 0),G(this,\"source\",void 0),this.opts=r,this.source=t}get value(){return this.source.value}getValue(){let t=this.source.getBuffer(),r=this.getAccessor();if(t)return[t,r];let{value:i}=this.source,{size:s}=r,n=i;if(i&&i.length!==s){n=new Float32Array(s);let o=r.elementOffset||0;for(let c=0;c=n){let o=new Array(s).fill(1/0),c=new Array(s).fill(-1/0);for(let f=0;fc[_]&&(c[_]=w)}t=[o,c]}}return this.state.bounds=t,t}setData(t){let{state:r}=this,i;ArrayBuffer.isView(t)?i={value:t}:t instanceof Fr?i={buffer:t}:i=t;let s={...this.settings,...i};if(r.bufferAccessor=s,r.bounds=null,i.constant){let n=i.value;if(n=this._normalizeValue(n,[],0),this.settings.normalized&&(n=this.normalizeConstant(n)),!(!r.constant||!this._areValuesEqual(n,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=n}else if(i.buffer){let n=i.buffer;r.externalBuffer=n,r.constant=!1,this.value=i.value||null;let o=i.value instanceof Float64Array;s.type=i.type||n.accessor.type,s.bytesPerElement=n.accessor.BYTES_PER_ELEMENT*(o?2:1),s.stride=HE(s)}else if(i.value){this._checkExternalBuffer(i);let n=i.value;r.externalBuffer=null,r.constant=!1,this.value=n,s.bytesPerElement=n.BYTES_PER_ELEMENT,s.stride=HE(s);let{buffer:o,byteOffset:c}=this;this.doublePrecision&&n instanceof Float64Array&&(n=UE(n,s));let f=n.byteLength+c+s.stride*2;o.byteLength(r+128)/255*2-1);case 5122:return new Float32Array(t).map(r=>(r+32768)/65535*2-1);case 5121:return new Float32Array(t).map(r=>r/255);case 5123:return new Float32Array(t).map(r=>r/65535);default:return t}}_normalizeValue(t,r,i){let{defaultValue:s,size:n}=this.settings;if(Number.isFinite(t))return r[i]=t,r;if(!t){let o=n;for(;--o>=0;)r[i+o]=s[o];return r}switch(n){case 4:r[i+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:r[i+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:r[i+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:r[i+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let o=n;for(;--o>=0;)r[i+o]=Number.isFinite(t[o])?t[o]:s[o]}return r}_areValuesEqual(t,r){if(!t||!r)return!1;let{size:i}=this;for(let s=0;s0&&(MG.length=e.length,i=MG):i=TG,(t>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(t,r),s.index=t-1),{iterable:i,objectInfo:s}}function qE(e){return e&&e[Symbol.asyncIterator]}function ZE(e,t){let{size:r,stride:i,offset:s,startIndices:n,nested:o}=t,c=e.BYTES_PER_ELEMENT,f=i?i/c:r,_=s?s/c:0,w=Math.floor((e.length-_)/f);return(C,{index:R,target:N})=>{if(!n){let $=R*f+_;for(let K=0;K=t[1]))return e;let r=[],i=e.length,s=0;for(let n=0;nt[1]?r.push(o):t=[Math.min(o[0],t[0]),Math.max(o[1],t[1])]}return r.splice(s,0,t),r}function hD(e){let{source:t,target:r,start:i=0,size:s,getData:n}=e,o=e.end||r.length,c=t.length,f=o-i;if(c>f){r.set(t.subarray(0,f),i);return}if(r.set(t,i),!n)return;let _=c;for(;_i(w+c,C)),_=Math.min(s.length,n.length);for(let w=1;w<_;w++){let C=s[w]*r,R=n[w]*r;hD({source:e.subarray(o,C),target:t,start:c,end:R,size:r,getData:f}),o=C,c=R}return ce},spring:{stiffness:.05,damping:.5}};function YE(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:\"interpolation\",duration:e});let r=e.type||\"interpolation\";return{...Mlt[r],...t,...e,type:r}}function QE(e,t){let r=t.getBuffer();return r?[r,{divisor:0,size:t.size,normalized:t.settings.normalized}]:t.value}function $E(e){switch(e){case 1:return\"float\";case 2:return\"vec2\";case 3:return\"vec3\";case 4:return\"vec4\";default:throw new Error('No defined attribute type for size \"'.concat(e,'\"'))}}function XE(e){e.push(e.shift())}function Xb(e,t){let{doublePrecision:r,settings:i,value:s,size:n}=e,o=r&&s instanceof Float64Array?2:1;return(i.noAlloc?s.length:t*n)*o}function KE({buffer:e,numInstances:t,attribute:r,fromLength:i,fromStartIndices:s,getData:n=o=>o}){let o=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*o,f=r.byteOffset,_=r.startIndices,w=s&&_,C=Xb(r,t),R=r.isConstant;if(!w&&i>=C)return;let N=R?r.value:r.getBuffer().getData({srcByteOffset:f});if(r.settings.normalized&&!R){let $=n;n=(K,tt)=>r.normalizeConstant($(K,tt))}let j=R?($,K)=>n(N,K):($,K)=>n(N.subarray($,$+c),K),Y=e.getData({length:i}),rt=new Float32Array(C);IG({source:Y,target:rt,sourceStartIndices:s,targetStartIndices:_,size:c,getData:j}),e.byteLengtht[n])]:t[r];return YE(s,i)}setNeedsUpdate(t=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),r){let{startRow:i=0,endRow:s=1/0}=r;this.state.updateRanges=PG(this.state.updateRanges,[i,s])}else this.state.updateRanges=$b}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=EG}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:r,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(t,r.updateRanges!==$b),!0):!1}updateBuffer({numInstances:t,data:r,props:i,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:o,noAlloc:c}}=this,f=!0;if(o){for(let[_,w]of n)o.call(s,this,{data:r,startRow:_,endRow:w,props:i,numInstances:t});if(this.value)if(this.constant||this.buffer.byteLengthw?_.set(tt,Y):(t._normalizeValue(tt,$.target,0),iD({target:_,source:$.target,start:Y,count:ut}));Y+=ut*w}else t._normalizeValue(tt,_,Y),Y+=w}}_validateAttributeUpdaters(){let{settings:t}=this;if(!(t.noAlloc||typeof t.update==\"function\"))throw new Error(\"Attribute \".concat(this.id,\" missing update or accessor\"))}_checkAttributeArray(){let{value:t}=this,r=Math.min(4,this.size);if(t&&t.length>=r){let i=!0;switch(r){case 4:i=i&&Number.isFinite(t[3]);case 3:i=i&&Number.isFinite(t[2]);case 2:i=i&&Number.isFinite(t[1]);case 1:i=i&&Number.isFinite(t[0]);break;default:i=!1}if(!i)throw new Error(\"Illegal attribute generated for \".concat(this.id))}}};var Kb=class{constructor({gl:t,attribute:r,timeline:i}){G(this,\"gl\",void 0),G(this,\"type\",\"interpolation\"),G(this,\"attributeInTransition\",void 0),G(this,\"settings\",void 0),G(this,\"attribute\",void 0),G(this,\"transition\",void 0),G(this,\"currentStartIndices\",void 0),G(this,\"currentLength\",void 0),G(this,\"transform\",void 0),G(this,\"buffers\",void 0),this.gl=t,this.transition=new $c(i),this.attribute=r,this.attributeInTransition=new lp(t,r.settings),this.currentStartIndices=r.startIndices,this.currentLength=0,this.transform=Plt(t,r);let s={byteLength:0,usage:35050};this.buffers=[new Fr(t,s),new Fr(t,s)]}get inProgress(){return this.transition.inProgress}start(t,r){if(t.duration<=0){this.transition.cancel();return}this.settings=t;let{gl:i,buffers:s,attribute:n}=this;XE(s);let o={numInstances:r,attribute:n,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:t.enter};for(let c of s)KE({buffer:c,...o});this.currentStartIndices=n.startIndices,this.currentLength=Xb(n,r),this.attributeInTransition.setData({buffer:s[1],value:n.value}),this.transition.start(t),this.transform.update({elementCount:Math.floor(this.currentLength/n.size),sourceBuffers:{aFrom:s[0],aTo:QE(i,n)},feedbackBuffers:{vCurrent:s[1]}})}update(){let t=this.transition.update();if(t){let{duration:r,easing:i}=this.settings,{time:s}=this.transition,n=s/r;i&&(n=i(n)),this.transform.run({uniforms:{time:n}})}return t}cancel(){this.transition.cancel(),this.transform.delete();for(let t of this.buffers)t.delete();this.buffers.length=0}},Elt=`\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;function Plt(e,t){let r=$E(t.size);return new ec(e,{vs:Elt,defines:{ATTRIBUTE_TYPE:r},varyings:[\"vCurrent\"]})}var Jb=class{constructor({gl:t,attribute:r,timeline:i}){G(this,\"gl\",void 0),G(this,\"type\",\"spring\"),G(this,\"attributeInTransition\",void 0),G(this,\"settings\",void 0),G(this,\"attribute\",void 0),G(this,\"transition\",void 0),G(this,\"currentStartIndices\",void 0),G(this,\"currentLength\",void 0),G(this,\"texture\",void 0),G(this,\"framebuffer\",void 0),G(this,\"transform\",void 0),G(this,\"buffers\",void 0),this.gl=t,this.type=\"spring\",this.transition=new $c(i),this.attribute=r,this.attributeInTransition=new lp(t,{...r.settings,normalized:!1}),this.currentStartIndices=r.startIndices,this.currentLength=0,this.texture=Clt(t),this.framebuffer=Llt(t,this.texture),this.transform=Ilt(t,r,this.framebuffer);let s={byteLength:0,usage:35050};this.buffers=[new Fr(t,s),new Fr(t,s),new Fr(t,s)]}get inProgress(){return this.transition.inProgress}start(t,r){let{gl:i,buffers:s,attribute:n}=this,o={numInstances:r,attribute:n,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:t.enter};for(let c of s)KE({buffer:c,...o});this.settings=t,this.currentStartIndices=n.startIndices,this.currentLength=Xb(n,r),this.attributeInTransition.setData({buffer:s[1],value:n.value}),this.transition.start({...t,duration:1/0}),this.transform.update({elementCount:Math.floor(this.currentLength/n.size),sourceBuffers:{aTo:QE(i,n)}})}update(){let{buffers:t,transform:r,framebuffer:i,transition:s}=this;if(!s.update())return!1;let o=this.settings;return r.update({sourceBuffers:{aPrev:t[0],aCur:t[1]},feedbackBuffers:{vNext:t[2]}}),r.run({framebuffer:i,discard:!1,clearRenderTarget:!0,uniforms:{stiffness:o.stiffness,damping:o.damping},parameters:{depthTest:!1,blend:!0,viewport:[0,0,1,1],blendFunc:[1,1],blendEquation:[32776,32776]}}),XE(t),this.attributeInTransition.setData({buffer:t[1],value:this.attribute.value}),Rh(i)[0]>0||s.end(),!0}cancel(){this.transition.cancel(),this.transform.delete();for(let t of this.buffers)t.delete();this.buffers.length=0,this.texture.delete(),this.framebuffer.delete()}};function Ilt(e,t,r){let i=$E(t.size);return new ec(e,{framebuffer:r,vs:`\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,fs:`\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,defines:{ATTRIBUTE_TYPE:i},varyings:[\"vNext\"]})}function Clt(e){return new pi(e,{data:new Uint8Array(4),format:6408,type:5121,border:0,mipmaps:!1,dataFormat:6408,width:1,height:1})}function Llt(e,t){return new yi(e,{id:\"spring-transition-is-transitioning-framebuffer\",width:1,height:1,attachments:{36064:t}})}var klt={interpolation:Kb,spring:Jb},tw=class{constructor(t,{id:r,timeline:i}){G(this,\"id\",void 0),G(this,\"isSupported\",void 0),G(this,\"gl\",void 0),G(this,\"timeline\",void 0),G(this,\"transitions\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"numInstances\",void 0),this.id=r,this.gl=t,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1,this.isSupported=ec.isSupported(t)}finalize(){for(let t in this.transitions)this._removeTransition(t)}update({attributes:t,transitions:r,numInstances:i}){this.numInstances=i||1;for(let s in t){let n=t[s],o=n.getTransitionSetting(r);o&&this._updateAttribute(s,n,o)}for(let s in this.transitions){let n=t[s];(!n||!n.getTransitionSetting(r))&&this._removeTransition(s)}}hasAttribute(t){let r=this.transitions[t];return r&&r.inProgress}getAttributes(){let t={};for(let r in this.transitions){let i=this.transitions[r];i.inProgress&&(t[r]=i.attributeInTransition)}return t}run(){if(!this.isSupported||this.numInstances===0)return!1;for(let r in this.transitions)this.transitions[r].update()&&(this.needsRedraw=!0);let t=this.needsRedraw;return this.needsRedraw=!1,t}_removeTransition(t){this.transitions[t].cancel(),delete this.transitions[t]}_updateAttribute(t,r,i){let s=this.transitions[t],n=!s||s.type!==i.type;if(n){if(!this.isSupported){nr.warn(\"WebGL2 not supported by this browser. Transition for \".concat(t,\" is disabled.\"))();return}s&&this._removeTransition(t);let o=klt[i.type];o?this.transitions[t]=new o({attribute:r,timeline:this.timeline,gl:this.gl}):(nr.error(\"unsupported transition type '\".concat(i.type,\"'\"))(),n=!1)}(n||r.needsRedraw())&&(this.needsRedraw=!0,this.transitions[t].start(i,this.numInstances))}};var CG=\"attributeManager.invalidate\",Rlt=\"attributeManager.updateStart\",Dlt=\"attributeManager.updateEnd\",Olt=\"attribute.updateStart\",Blt=\"attribute.allocate\",Flt=\"attribute.updateEnd\",Yf=class{constructor(t,{id:r=\"attribute-manager\",stats:i,timeline:s}={}){G(this,\"id\",void 0),G(this,\"gl\",void 0),G(this,\"attributes\",void 0),G(this,\"updateTriggers\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"userData\",void 0),G(this,\"stats\",void 0),G(this,\"attributeTransitionManager\",void 0),G(this,\"mergeBoundsMemoized\",Hf(G7)),this.id=r,this.gl=t,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new tw(t,{id:\"\".concat(r,\"-transitions\"),timeline:s}),Object.seal(this)}finalize(){for(let t in this.attributes)this.attributes[t].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(t={clearRedrawFlags:!1}){let r=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!t.clearRedrawFlags,r&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(t){this._add(t)}addInstanced(t){this._add(t,{instanced:1})}remove(t){for(let r of t)this.attributes[r]!==void 0&&(this.attributes[r].delete(),delete this.attributes[r])}invalidate(t,r){let i=this._invalidateTrigger(t,r);Cs(CG,this,t,i)}invalidateAll(t){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,t);Cs(CG,this,\"all\")}update({data:t,numInstances:r,startIndices:i=null,transitions:s,props:n={},buffers:o={},context:c={}}){let f=!1;Cs(Rlt,this),this.stats&&this.stats.get(\"Update Attributes\").timeStart();for(let _ in this.attributes){let w=this.attributes[_],C=w.settings.accessor;w.startIndices=i,w.numInstances=r,n[_]&&nr.removed(\"props.\".concat(_),\"data.attributes.\".concat(_))(),w.setExternalBuffer(o[_])||w.setBinaryValue(typeof C==\"string\"?o[C]:void 0,t.startIndices)||typeof C==\"string\"&&!o[C]&&w.setConstantValue(n[C])||w.needsUpdate()&&(f=!0,this._updateAttribute({attribute:w,numInstances:r,data:t,props:n,context:c})),this.needsRedraw=this.needsRedraw||w.needsRedraw()}f&&Cs(Dlt,this,r),this.stats&&this.stats.get(\"Update Attributes\").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:r,transitions:s})}updateTransition(){let{attributeTransitionManager:t}=this,r=t.run();return this.needsRedraw=this.needsRedraw||r,r}getAttributes(){return this.attributes}getBounds(t){let r=t.map(i=>{var s;return(s=this.attributes[i])===null||s===void 0?void 0:s.getBounds()});return this.mergeBoundsMemoized(r)}getChangedAttributes(t={clearChangedFlags:!1}){let{attributes:r,attributeTransitionManager:i}=this,s={...i.getAttributes()};for(let n in r){let o=r[n];o.needsRedraw(t)&&!i.hasAttribute(n)&&(s[n]=o)}return s}getShaderAttributes(t,r={}){t||(t=this.getAttributes());let i={};for(let s in t)r[s]||Object.assign(i,t[s].getShaderAttributes());return i}_add(t,r={}){for(let i in t){let s=t[i];this.attributes[i]=this._createAttribute(i,s,r)}this._mapUpdateTriggersToAttributes()}_createAttribute(t,r,i){let s={...r,id:t,size:r.isIndexed&&1||r.size||1,divisor:i.instanced?1:r.divisor||0};return new lp(this.gl,s)}_mapUpdateTriggersToAttributes(){let t={};for(let r in this.attributes)this.attributes[r].getUpdateTriggers().forEach(s=>{t[s]||(t[s]=[]),t[s].push(r)});this.updateTriggers=t}_invalidateTrigger(t,r){let{attributes:i,updateTriggers:s}=this,n=s[t];return n&&n.forEach(o=>{let c=i[o];c&&c.setNeedsUpdate(c.id,r)}),n}_updateAttribute(t){let{attribute:r,numInstances:i}=t;if(Cs(Olt,r),r.constant){r.setConstantValue(r.value);return}r.allocate(i)&&Cs(Blt,r,i),r.updateBuffer(t)&&(this.needsRedraw=!0,Cs(Flt,r,i))}};var ew=class extends $c{get value(){return this._value}_onUpdate(){let{time:t,settings:{fromValue:r,toValue:i,duration:s,easing:n}}=this,o=n(t/s);this._value=tc(r,i,o)}};var LG=1e-5;function kG(e,t,r,i,s){let n=t-e,c=(r-t)*s,f=-n*i;return c+f+n+t}function zlt(e,t,r,i,s){if(Array.isArray(r)){let n=[];for(let o=0;o0}add(t,r,i,s){let{transitions:n}=this;if(n.has(t)){let f=n.get(t),{value:_=f.settings.fromValue}=f;r=_,this.remove(t)}if(s=YE(s),!s)return;let o=Nlt[s.type];if(!o){nr.error(\"unsupported transition type '\".concat(s.type,\"'\"))();return}let c=new o(this.timeline);c.start({...s,fromValue:r,toValue:i}),n.set(t,c)}remove(t){let{transitions:r}=this;r.has(t)&&(r.get(t).cancel(),r.delete(t))}update(){let t={};for(let[r,i]of this.transitions)i.update(),t[r]=i.value,i.inProgress||this.remove(r);return t}clear(){for(let t of this.transitions.keys())this.remove(t)}};function OG(e){let t=e[Ou];for(let r in t){let i=t[r],{validate:s}=i;if(s&&!s(e[r],i))throw new Error(\"Invalid prop \".concat(r,\": \").concat(e[r]))}}function BG(e,t){let r=nw({newProps:e,oldProps:t,propTypes:e[Ou],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=Vlt(e,t),s=!1;return i||(s=jlt(e,t)),{dataChanged:i,propsChanged:r,updateTriggersChanged:s,extensionsChanged:Glt(e,t),transitionsChanged:Ult(e,t)}}function Ult(e,t){if(!e.transitions)return!1;let r={},i=e[Ou],s=!1;for(let n in e.transitions){let o=i[n],c=o&&o.type;(c===\"number\"||c===\"color\"||c===\"array\")&&fD(e[n],t[n],o)&&(r[n]=!0,s=!0)}return s?r:!1}function nw({newProps:e,oldProps:t,ignoreProps:r={},propTypes:i={},triggerName:s=\"props\"}){if(t===e)return!1;if(typeof e!=\"object\"||e===null||typeof t!=\"object\"||t===null)return\"\".concat(s,\" changed shallowly\");for(let n of Object.keys(e))if(!(n in r)){if(!(n in t))return\"\".concat(s,\".\").concat(n,\" added\");let o=fD(e[n],t[n],i[n]);if(o)return\"\".concat(s,\".\").concat(n,\" \").concat(o)}for(let n of Object.keys(t))if(!(n in r)){if(!(n in e))return\"\".concat(s,\".\").concat(n,\" dropped\");if(!Object.hasOwnProperty.call(e,n)){let o=fD(e[n],t[n],i[n]);if(o)return\"\".concat(s,\".\").concat(n,\" \").concat(o)}}return!1}function fD(e,t,r){let i=r&&r.equal;return i&&!i(e,t,r)||!i&&(i=e&&t&&e.equals,i&&!i.call(e,t))?\"changed deeply\":!i&&t!==e?\"changed shallowly\":null}function Vlt(e,t){if(t===null)return\"oldProps is null, initial diff\";let r=!1,{dataComparator:i,_dataDiff:s}=e;return i?i(e.data,t.data)||(r=\"Data comparator detected a change\"):e.data!==t.data&&(r=\"A new data container was supplied\"),r&&s&&(r=s(e.data,t.data)||r),r}function jlt(e,t){if(t===null)return{all:!0};if(\"all\"in e.updateTriggers&&DG(e,t,\"all\"))return{all:!0};let r={},i=!1;for(let s in e.updateTriggers)s!==\"all\"&&DG(e,t,s)&&(r[s]=!0,i=!0);return i?r:!1}function Glt(e,t){if(t===null)return!0;let r=t.extensions,{extensions:i}=e;if(i===r)return!1;if(!r||!i||i.length!==r.length)return!0;for(let s=0;si.name===\"project64\"))){let i=r.modules.findIndex(s=>s.name===\"project32\");i>=0&&r.modules.splice(i,1)}if(\"inject\"in t)if(!e.inject)r.inject=t.inject;else{let i={...e.inject};for(let s in t.inject)i[s]=(i[s]||\"\")+t.inject[s];r.inject=i}return r}var Ylt={10241:9987,10240:9729,10242:33071,10243:33071},dD={};function NG(e,t,r,i){if(r instanceof pi)return r;r.constructor&&r.constructor.name!==\"Object\"&&(r={data:r});let s=null;r.compressed&&(s={10241:r.data.length>1?9985:9729});let n=new pi(t,{...r,parameters:{...Ylt,...s,...i}});return dD[n.id]=e,n}function UG(e,t){!t||!(t instanceof pi)||dD[t.id]===e&&(t.delete(),delete dD[t.id])}var Qlt={boolean:{validate(e,t){return!0},equal(e,t,r){return!!e==!!t}},number:{validate(e,t){return Number.isFinite(e)&&(!(\"max\"in t)||e<=t.max)&&(!(\"min\"in t)||e>=t.min)}},color:{validate(e,t){return t.optional&&!e||pD(e)&&(e.length===3||e.length===4)},equal(e,t,r){return ao(e,t,1)}},accessor:{validate(e,t){let r=JE(e);return r===\"function\"||r===JE(t.value)},equal(e,t,r){return typeof t==\"function\"?!0:ao(e,t,1)}},array:{validate(e,t){return t.optional&&!e||pD(e)},equal(e,t,r){let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?ao(e,t,s):e===t}},object:{equal(e,t,r){if(r.ignore)return!0;let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?ao(e,t,s):e===t}},function:{validate(e,t){return t.optional&&!e||typeof e==\"function\"},equal(e,t,r){return!r.compare&&r.ignore!==!1||e===t}},data:{transform:(e,t,r)=>{let{dataTransform:i}=r.props;return i&&e?i(e):e}},image:{transform:(e,t,r)=>{let i=r.context;return!i||!i.gl?null:NG(r.id,i.gl,e,{...t.parameters,...r.props.textureParameters})},release:(e,t,r)=>{UG(r.id,e)}}};function VG(e){let t={},r={},i={};for(let[s,n]of Object.entries(e)){let o=n?.deprecatedFor;if(o)i[s]=Array.isArray(o)?o:[o];else{let c=$lt(s,n);t[s]=c,r[s]=c.value}}return{propTypes:t,defaultProps:r,deprecatedProps:i}}function $lt(e,t){switch(JE(t)){case\"object\":return sw(e,t);case\"array\":return sw(e,{type:\"array\",value:t,compare:!1});case\"boolean\":return sw(e,{type:\"boolean\",value:t});case\"number\":return sw(e,{type:\"number\",value:t});case\"function\":return sw(e,{type:\"function\",value:t,compare:!0});default:return{name:e,type:\"unknown\",value:t}}}function sw(e,t){return\"type\"in t?{name:e,...Qlt[t.type],...t}:\"value\"in t?{name:e,type:JE(t.value),...t}:{name:e,type:\"object\",value:t}}function pD(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function JE(e){return pD(e)?\"array\":e===null?\"null\":typeof e}function jG(e,t){let r;for(let n=t.length-1;n>=0;n--){let o=t[n];\"extensions\"in o&&(r=o.extensions)}let i=AD(e.constructor,r),s=Object.create(i);s[Uy]=e,s[Zf]={},s[Gh]={};for(let n=0;n{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let t in this.asyncProps){let r=this.asyncProps[t];r&&r.type&&r.type.release&&r.type.release(r.resolvedValue,r.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||sct}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(t){return t in this.asyncProps}getAsyncProp(t){let r=this.asyncProps[t];return r&&r.resolvedValue}isAsyncPropLoading(t){if(t){let r=this.asyncProps[t];return!!(r&&r.pendingLoadCount>0&&r.pendingLoadCount!==r.resolvedLoadCount)}for(let r in this.asyncProps)if(this.isAsyncPropLoading(r))return!0;return!1}reloadAsyncProp(t,r){this._watchPromise(t,Promise.resolve(r))}setAsyncProps(t){this.component=t[Uy]||this.component;let r=t[Gh]||{},i=t[Zf]||t,s=t[ip]||{};for(let n in r){let o=r[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o),r[n]=this.getAsyncProp(n)}for(let n in i){let o=i[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o)}}_fetch(t,r){return null}_onResolve(t,r){}_onError(t,r){}_updateAsyncProp(t,r){if(this._didAsyncInputValueChange(t,r)){if(typeof r==\"string\"&&(r=this._fetch(t,r)),r instanceof Promise){this._watchPromise(t,r);return}if(qE(r)){this._resolveAsyncIterable(t,r);return}this._setPropValue(t,r)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(let t in this.asyncProps)Object.defineProperty(this.oldAsyncProps,t,{enumerable:!0,value:this.oldProps[t]})}}_didAsyncInputValueChange(t,r){let i=this.asyncProps[t];return r===i.resolvedValue||r===i.lastValue?!1:(i.lastValue=r,!0)}_setPropValue(t,r){this._freezeAsyncOldProps();let i=this.asyncProps[t];i&&(r=this._postProcessValue(i,r),i.resolvedValue=r,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(t,r,i){let s=this.asyncProps[t];s&&i>=s.resolvedLoadCount&&r!==void 0&&(this._freezeAsyncOldProps(),s.resolvedValue=r,s.resolvedLoadCount=i,this.onAsyncPropUpdated(t,r))}_watchPromise(t,r){let i=this.asyncProps[t];if(i){i.pendingLoadCount++;let s=i.pendingLoadCount;r.then(n=>{this.component&&(n=this._postProcessValue(i,n),this._setAsyncPropValue(t,n,s),this._onResolve(t,n))}).catch(n=>{this._onError(t,n)})}}async _resolveAsyncIterable(t,r){if(t!==\"data\"){this._setPropValue(t,r);return}let i=this.asyncProps[t];if(!i)return;i.pendingLoadCount++;let s=i.pendingLoadCount,n=[],o=0;for await(let c of r){if(!this.component)return;let{dataTransform:f}=this.component.props;f?n=f(c,n):n=n.concat(c),Object.defineProperty(n,\"__diff\",{enumerable:!1,value:[{startRow:o,endRow:n.length}]}),o=n.length,this._setAsyncPropValue(t,n,s)}this._onResolve(t,n)}_postProcessValue(t,r){let i=t.type;return i&&this.component&&(i.release&&i.release(t.resolvedValue,i,this.component),i.transform)?i.transform(r,i,this.component):r}_createAsyncPropData(t,r){if(!this.asyncProps[t]){let s=this.component&&this.component.props[Ou];this.asyncProps[t]={type:s&&s[t],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var aw=class extends ow{constructor({attributeManager:t,layer:r}){super(r),G(this,\"attributeManager\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"needsUpdate\",void 0),G(this,\"subLayers\",void 0),G(this,\"usesPickingColorCache\",void 0),G(this,\"hasPickingBuffer\",void 0),G(this,\"changeFlags\",void 0),G(this,\"viewport\",void 0),G(this,\"uniformTransitions\",void 0),G(this,\"propsInTransition\",void 0),this.attributeManager=t,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}_fetch(t,r){let i=this.layer,s=i?.props.fetch;return s?s(r,{propName:t,layer:i}):super._fetch(t,r)}_onResolve(t,r){let i=this.layer;if(i){let s=i.props.onDataLoad;t===\"data\"&&s&&s(r,{propName:t,layer:i})}}_onError(t,r){let i=this.layer;i&&i.raiseError(r,\"loading \".concat(t,\" of \").concat(this.layer))}};var oct=\"layer.changeFlag\",act=\"layer.initialize\",lct=\"layer.update\",cct=\"layer.finalize\",uct=\"layer.matched\",WG=2**24-1,hct=Object.freeze([]),fct=Hf(({oldViewport:e,viewport:t})=>e.equals(t)),Qf=new Uint8ClampedArray(0),dct={data:{type:\"data\",value:hct,async:!0},dataComparator:{type:\"function\",value:null,optional:!0},_dataDiff:{type:\"function\",value:e=>e&&e.__diff,optional:!0},dataTransform:{type:\"function\",value:null,optional:!0},onDataLoad:{type:\"function\",value:null,optional:!0},onError:{type:\"function\",value:null,optional:!0},fetch:{type:\"function\",value:(e,{propName:t,layer:r,loaders:i,loadOptions:s,signal:n})=>{let{resourceManager:o}=r.context;if(s=s||r.getLoadOptions(),i=i||r.props.loaders,n){var c;s={...s,fetch:{...(c=s)===null||c===void 0?void 0:c.fetch,signal:n}}}let f=o.contains(e);return!f&&!s&&(o.add({resourceId:e,data:NA(e,i),persistent:!1}),f=!0),f?o.subscribe({resourceId:e,onChange:_=>{var w;return(w=r.internalState)===null||w===void 0?void 0:w.reloadAsyncProp(t,_)},consumerId:r.id,requestId:t}):NA(e,i,s)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:\"number\",min:0,max:1,value:1},operation:\"draw\",onHover:{type:\"function\",value:null,optional:!0},onClick:{type:\"function\",value:null,optional:!0},onDragStart:{type:\"function\",value:null,optional:!0},onDrag:{type:\"function\",value:null,optional:!0},onDragEnd:{type:\"function\",value:null,optional:!0},coordinateSystem:Yr.DEFAULT,coordinateOrigin:{type:\"array\",value:[0,0,0],compare:!0},modelMatrix:{type:\"array\",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:\"XYZ\",colorFormat:\"RGBA\",parameters:{type:\"object\",value:{},optional:!0,compare:2},loadOptions:{type:\"object\",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:\"array\",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:\"function\",value:({layerIndex:e})=>[0,-e*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:\"accessor\",value:[0,0,128,128]}},Tn=class extends hg{constructor(...t){super(...t),G(this,\"internalState\",null),G(this,\"lifecycle\",XA.NO_STATE),G(this,\"context\",void 0),G(this,\"state\",void 0),G(this,\"parent\",null)}static get componentName(){return Object.prototype.hasOwnProperty.call(this,\"layerName\")?this.layerName:\"\"}get root(){let t=this;for(;t.parent;)t=t.parent;return t}toString(){let t=this.constructor.layerName||this.constructor.name;return\"\".concat(t,\"({id: '\").concat(this.props.id,\"'})\")}project(t){br(this.internalState);let r=this.internalState.viewport||this.context.viewport,i=rD(t,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[s,n,o]=By(i,r.pixelProjectionMatrix);return t.length===2?[s,n]:[s,n,o]}unproject(t){return br(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(t)}projectPosition(t,r){br(this.internalState);let i=this.internalState.viewport||this.context.viewport;return q7(t,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...r})}get isComposite(){return!1}setState(t){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,t),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){return this.state&&(this.state.models||this.state.model&&[this.state.model])||[]}setModuleParameters(t){for(let r of this.getModels())r.updateModuleSettings(t)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:t}=this.props;return t===Yr.DEFAULT||t===Yr.LNGLAT||t===Yr.CARTESIAN}onHover(t,r){return this.props.onHover&&this.props.onHover(t,r)||!1}onClick(t,r){return this.props.onClick&&this.props.onClick(t,r)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(t,r=[]){return r[0]=t+1&255,r[1]=t+1>>8&255,r[2]=t+1>>8>>8&255,r}decodePickingColor(t){br(t instanceof Uint8Array);let[r,i,s]=t;return r+i*256+s*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:FG(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){var t;return(t=this.getAttributeManager())===null||t===void 0?void 0:t.getBounds([\"positions\",\"instancePositions\"])}getShaders(t){for(let r of this.props.extensions)t=zG(t,r.getShaders.call(this,r));return t}shouldUpdateState(t){return t.changeFlags.propsOrDataChanged}updateState(t){let r=this.getAttributeManager(),{dataChanged:i}=t.changeFlags;if(i&&r)if(Array.isArray(i))for(let s of i)r.invalidateAll(s);else r.invalidateAll();if(r){let{props:s}=t,n=this.internalState.hasPickingBuffer,o=Number.isInteger(s.highlightedObjectIndex)||s.pickable||s.extensions.some(c=>c.getNeedsPickingBuffer.call(this,c));if(n!==o){this.internalState.hasPickingBuffer=o;let{pickingColors:c,instancePickingColors:f}=r.attributes,_=c||f;_&&(o&&_.constant&&(_.constant=!1,r.invalidate(_.id)),!_.value&&!o&&(_.constant=!0,_.value=[0,0,0]))}}}finalizeState(t){for(let i of this.getModels())i.delete();let r=this.getAttributeManager();r&&r.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(t){for(let r of this.getModels())r.draw(t)}getPickingInfo({info:t,mode:r,sourceLayer:i}){let{index:s}=t;return s>=0&&Array.isArray(this.props.data)&&(t.object=this.props.data[s]),t}raiseError(t,r){var i,s;if(r&&(t=new Error(\"\".concat(r,\": \").concat(t.message),{cause:t})),!((i=(s=this.props).onError)!==null&&i!==void 0&&i.call(s,t))){var n,o;(n=this.context)===null||n===void 0||(o=n.onError)===null||o===void 0||o.call(n,t,this)}}getNeedsRedraw(t={clearRedrawFlags:!1}){return this._getNeedsRedraw(t)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){var t;return((t=this.internalState)===null||t===void 0?void 0:t.uniformTransitions.active)||!1}activateViewport(t){if(!this.internalState)return;let r=this.internalState.viewport;this.internalState.viewport=t,(!r||!fct({oldViewport:r,viewport:t}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(t=\"all\"){let r=this.getAttributeManager();r&&(t===\"all\"?r.invalidateAll():r.invalidate(t))}updateAttributes(t){for(let r of this.getModels())this._setModelAttributes(r,t)}_updateAttributes(){let t=this.getAttributeManager();if(!t)return;let r=this.props,i=this.getNumInstances(),s=this.getStartIndices();t.update({data:r.data,numInstances:i,startIndices:s,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let n=t.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_updateAttributeTransition(){let t=this.getAttributeManager();t&&t.updateTransition()}_updateUniformTransition(){let{uniformTransitions:t}=this.internalState;if(t.active){let r=t.update(),i=Object.create(this.props);for(let s in r)Object.defineProperty(i,s,{value:r[s]});return i}return this.props}calculateInstancePickingColors(t,{numInstances:r}){if(t.constant)return;let i=Math.floor(Qf.length/3);if(this.internalState.usesPickingColorCache=!0,iWG&&nr.warn(\"Layer has too many data objects. Picking might not be able to distinguish all objects.\")(),Qf=jh.allocate(Qf,r,{size:3,copy:!0,maxCount:Math.max(r,WG)});let s=Math.floor(Qf.length/3),n=[];for(let o=i;o(nr.deprecated(\"layer.state.attributeManager\",\"layer.getAttributeManager()\")(),t)}),this.internalState.uniformTransitions=new iw(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let r of this.props.extensions)r.initializeState.call(this,this.context,r);this.setChangeFlags({dataChanged:\"init\",propsChanged:\"init\",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(t){Cs(uct,this,this===t);let{state:r,internalState:i}=t;this!==t&&(this.internalState=i,this.state=r,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let t=this.needsUpdate();if(Cs(lct,this,t),!t)return;let r=this.props,i=this.context,s=this.internalState,n=i.viewport,o=this._updateUniformTransition();s.propsInTransition=o,i.viewport=s.viewport||n,this.props=o;try{let c=this._getUpdateParams(),f=this.getModels();if(i.gl)this.updateState(c);else try{this.updateState(c)}catch{}for(let w of this.props.extensions)w.updateState.call(this,c,w);let _=this.getModels()[0]!==f[0];this._postUpdate(c,_)}finally{i.viewport=n,this.props=r,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){Cs(cct,this),this.finalizeState(this.context);for(let t of this.props.extensions)t.finalizeState.call(this,this.context,t)}_drawLayer({moduleParameters:t=null,uniforms:r={},parameters:i={}}){this._updateAttributeTransition();let s=this.props,n=this.context;this.props=this.internalState.propsInTransition||s;let o=this.props.opacity;r.opacity=Math.pow(o,1/2.2);try{t&&this.setModuleParameters(t);let{getPolygonOffset:c}=this.props,f=c&&c(r)||[0,0];wl(n.gl,{polygonOffset:f}),bn(n.gl,i,()=>{let _={moduleParameters:t,uniforms:r,parameters:i,context:n};for(let w of this.props.extensions)w.draw.call(this,_,w);this.draw(_)})}finally{this.props=s}}getChangeFlags(){var t;return(t=this.internalState)===null||t===void 0?void 0:t.changeFlags}setChangeFlags(t){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let s in t)if(t[s]){let n=!1;switch(s){case\"dataChanged\":let o=t[s],c=r[s];o&&Array.isArray(c)&&(r.dataChanged=Array.isArray(o)?c.concat(o):o,n=!0);default:r[s]||(r[s]=t[s],n=!0)}n&&Cs(oct,this,s,t)}let i=!!(r.dataChanged||r.updateTriggersChanged||r.propsChanged||r.extensionsChanged);r.propsOrDataChanged=i,r.somethingChanged=i||r.viewportChanged||r.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(t,r){let i=BG(t,r);if(i.updateTriggersChanged)for(let n in i.updateTriggersChanged)i.updateTriggersChanged[n]&&this.invalidateAttribute(n);if(i.transitionsChanged)for(let n in i.transitionsChanged){var s;this.internalState.uniformTransitions.add(n,r[n],t[n],(s=t.transitions)===null||s===void 0?void 0:s[n])}return this.setChangeFlags(i)}validateProps(){OG(this.props)}updateAutoHighlight(t){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(t)}_updateAutoHighlight(t){let r={pickingSelectedColor:t.picked?t.color:null},{highlightColor:i}=this.props;t.picked&&typeof i==\"function\"&&(r.pickingHighlightColor=i(t)),this.setModuleParameters(r),this.setNeedsRedraw()}_getAttributeManager(){let t=this.context;return new Yf(t.gl,{id:this.props.id,stats:t.stats,timeline:t.timeline})}_postUpdate(t,r){let{props:i,oldProps:s}=t;this.setNeedsRedraw(),this._updateAttributes();let{model:n}=this.state;n?.setInstanceCount(this.getNumInstances());let{autoHighlight:o,highlightedObjectIndex:c,highlightColor:f}=i;if(r||s.autoHighlight!==o||s.highlightedObjectIndex!==c||s.highlightColor!==f){let _={};o||(_.pickingSelectedColor=null),Array.isArray(f)&&(_.pickingHighlightColor=f),(r||c!==s.highlightedObjectIndex)&&(_.pickingSelectedColor=Number.isFinite(c)&&c>=0?this.encodePickingColor(c):null),this.setModuleParameters(_)}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(t){if(!this.internalState)return!1;let r=!1;r=r||this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),s=i?i.getNeedsRedraw(t):!1;if(r=r||s,r)for(let n of this.props.extensions)n.onNeedsRedraw.call(this,n);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!t.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};G(Tn,\"defaultProps\",dct);G(Tn,\"layerName\",\"Layer\");var pct=\"compositeLayer.renderLayers\",tn=class extends Tn{get isComposite(){return!0}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(t=>t.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(t){}setState(t){super.setState(t),this.setNeedsUpdate()}getPickingInfo({info:t}){let{object:r}=t;return r&&r.__source&&r.__source.parent&&r.__source.parent.id===this.id&&(t.object=r.__source.object,t.index=r.__source.index),t}filterSubLayer(t){return!0}shouldRenderSubLayer(t,r){return r&&r.length}getSubLayerClass(t,r){let{_subLayerProps:i}=this.props;return i&&i[t]&&i[t].type||r}getSubLayerRow(t,r,i){return t.__source={parent:this,object:r,index:i},t}getSubLayerAccessor(t){if(typeof t==\"function\"){let r={index:-1,data:this.props.data,target:[]};return(i,s)=>i&&i.__source?(r.index=i.__source.index,t(i.__source.object,r)):t(i,s)}return t}getSubLayerProps(t={}){var r;let{opacity:i,pickable:s,visible:n,parameters:o,getPolygonOffset:c,highlightedObjectIndex:f,autoHighlight:_,highlightColor:w,coordinateSystem:C,coordinateOrigin:R,wrapLongitude:N,positionFormat:j,modelMatrix:Y,extensions:rt,fetch:$,operation:K,_subLayerProps:tt}=this.props,ut={id:\"\",updateTriggers:{},opacity:i,pickable:s,visible:n,parameters:o,getPolygonOffset:c,highlightedObjectIndex:f,autoHighlight:_,highlightColor:w,coordinateSystem:C,coordinateOrigin:R,wrapLongitude:N,positionFormat:j,modelMatrix:Y,extensions:rt,fetch:$,operation:K},Pt=tt&&t.id&&tt[t.id],Ot=Pt&&Pt.updateTriggers,Kt=t.id||\"sublayer\";if(Pt){let Zt=this.props[Ou],le=t.type?t.type._propTypes:{};for(let ue in Pt){let Ge=le[ue]||Zt[ue];Ge&&Ge.type===\"accessor\"&&(Pt[ue]=this.getSubLayerAccessor(Pt[ue]))}}Object.assign(ut,t,Pt),ut.id=\"\".concat(this.props.id,\"-\").concat(Kt),ut.updateTriggers={all:(r=this.props.updateTriggers)===null||r===void 0?void 0:r.all,...t.updateTriggers,...Ot};for(let Zt of rt){let le=Zt.getSubLayerProps.call(this,Zt);le&&Object.assign(ut,le,{updateTriggers:Object.assign(ut.updateTriggers,le.updateTriggers)})}return ut}_updateAutoHighlight(t){for(let r of this.getSubLayers())r.updateAutoHighlight(t)}_getAttributeManager(){return null}_postUpdate(t,r){let i=this.internalState.subLayers,s=!i||this.needsUpdate();if(s){let n=this.renderLayers();i=np(n,Boolean),this.internalState.subLayers=i}Cs(pct,this,s,i);for(let n of i)n.parent=this}};G(tn,\"layerName\",\"CompositeLayer\");var tP=Math.PI/180,HG=180/Math.PI,eP=6370972,Hy=256;function Act(){let e=Hy/eP,t=Math.PI/180*Hy;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[1/e,1/e,1/e],unitsPerDegree:[t,t,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,1/e]}}var qy=class extends ic{constructor(t={}){let{latitude:r=0,longitude:i=0,zoom:s=0,nearZMultiplier:n=.1,farZMultiplier:o=2,resolution:c=10}=t,{height:f,altitude:_=1.5}=t;f=f||1,_=Math.max(.75,_);let w=new wn().lookAt({eye:[0,-_,0],up:[0,0,1]}),C=Math.pow(2,s);w.rotateX(r*tP),w.rotateZ(-i*tP),w.scale(C/f);let R=Math.atan(.5/_),N=Hy*2*C/f;super({...t,height:f,viewMatrix:w,longitude:i,latitude:r,zoom:s,distanceScales:Act(),fovyRadians:R*2,focalDistance:_,near:n,far:Math.min(2,1/N+1)*_*o}),G(this,\"longitude\",void 0),G(this,\"latitude\",void 0),G(this,\"resolution\",void 0),this.latitude=r,this.longitude=i,this.resolution=c}get projectionMode(){return Ka.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){let r={targetZ:t.z||0},i=this.unproject([0,this.height/2],r),s=this.unproject([this.width/2,0],r),n=this.unproject([this.width,this.height/2],r),o=this.unproject([this.width/2,this.height],r);return n[0]this.longitude&&(i[0]-=360),[Math.min(i[0],n[0],s[0],o[0]),Math.min(i[1],n[1],s[1],o[1]),Math.max(i[0],n[0],s[0],o[0]),Math.max(i[1],n[1],s[1],o[1])]}unproject(t,{topLeft:r=!0,targetZ:i}={}){let[s,n,o]=t,c=r?n:this.height-n,{pixelUnprojectionMatrix:f}=this,_;if(Number.isFinite(o))_=gD(f,[s,c,o,1]);else{let N=gD(f,[s,c,-1,1]),j=gD(f,[s,c,1,1]),Y=((i||0)/eP+1)*Hy,rt=SE(bE([],N,j)),$=SE(N),K=SE(j),ut=4*((4*$*K-(rt-$-K)**2)/16)/rt,Pt=Math.sqrt($-ut),Ot=Math.sqrt(Math.max(0,Y*Y-ut)),Kt=(Pt-Ot)/Math.sqrt(rt);_=Tj([],N,j,Kt)}let[w,C,R]=this.unprojectPosition(_);return Number.isFinite(o)?[w,C,R]:Number.isFinite(i)?[w,C,i]:[w,C]}projectPosition(t){let[r,i,s=0]=t,n=r*tP,o=i*tP,c=Math.cos(o),f=(s/eP+1)*Hy;return[Math.sin(n)*c*f,-Math.cos(n)*c*f,Math.sin(o)*f]}unprojectPosition(t){let[r,i,s]=t,n=wE(t),o=Math.asin(s/n),f=Math.atan2(r,-i)*HG,_=o*HG,w=(n/Hy-1)*eP;return[f,_,w]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition(t,r){let i=this.unproject(r);return{longitude:t[0]-i[0]+this.longitude,latitude:t[1]-i[1]+this.latitude}}};function gD(e,t){let r=zh([],t,e);return Py(r,r,1/r[3]),r}var mct=new wn().lookAt({eye:[0,0,1]});function gct({width:e,height:t,near:r,far:i,padding:s}){let n=-e/2,o=e/2,c=-t/2,f=t/2;if(s){let{left:_=0,right:w=0,top:C=0,bottom:R=0}=s,N=Ml((_+e-w)/2,0,e)-e/2,j=Ml((C+t-R)/2,0,t)-t/2;n-=N,o-=N,c+=j,f+=j}return new wn().ortho({left:n,right:o,bottom:c,top:f,near:r,far:i})}var Zy=class extends ic{constructor(t){let{width:r,height:i,near:s=.1,far:n=1e3,zoom:o=0,target:c=[0,0,0],padding:f=null,flipY:_=!0}=t,w=Array.isArray(o)?o[0]:o,C=Array.isArray(o)?o[1]:o,R=Math.min(w,C),N=Math.pow(2,R),j;if(w!==C){let Y=Math.pow(2,w),rt=Math.pow(2,C);j={unitsPerMeter:[Y/N,rt/N,1],metersPerUnit:[N/Y,N/rt,1]}}super({...t,longitude:void 0,position:c,viewMatrix:mct.clone().scale([N,N*(_?-1:1),N]),projectionMatrix:gct({width:r||1,height:i||1,padding:f,near:s,far:n}),zoom:R,distanceScales:j})}projectFlat([t,r]){let{unitsPerMeter:i}=this.distanceScales;return[t*i[0],r*i[1]]}unprojectFlat([t,r]){let{metersPerUnit:i}=this.distanceScales;return[t*i[0],r*i[1]]}panByPosition(t,r){let i=qf(r,this.pixelUnprojectionMatrix),s=this.projectFlat(t),n=wy([],s,mE([],i)),o=wy([],this.center,n);return{target:this.unprojectFlat(o)}}};var Bu=class{static get componentName(){return Object.prototype.hasOwnProperty.call(this,\"extensionName\")?this.extensionName:\"\"}constructor(t){G(this,\"opts\",void 0),t&&(this.opts=t)}equals(t){return this===t?!0:this.constructor===t.constructor&&ao(this.opts,t.opts,1)}getShaders(t){return null}getSubLayerProps(t){let{defaultProps:r}=t.constructor,i={updateTriggers:{}};for(let s in r)if(s in this.props){let n=r[s],o=this.props[s];i[s]=o,n&&n.type===\"accessor\"&&(i.updateTriggers[s]=this.props.updateTriggers[s],typeof o==\"function\"&&(i[s]=this.getSubLayerAccessor(o)))}return i}initializeState(t,r){}updateState(t,r){}onNeedsRedraw(t){}getNeedsPickingBuffer(t){return!1}draw(t,r){}finalizeState(t,r){}};G(Bu,\"defaultProps\",{});G(Bu,\"extensionName\",\"LayerExtension\");var JA=class{constructor(t){G(this,\"opts\",void 0),G(this,\"typedArrayManager\",void 0),G(this,\"indexStarts\",[0]),G(this,\"vertexStarts\",[0]),G(this,\"vertexCount\",0),G(this,\"instanceCount\",0),G(this,\"attributes\",void 0),G(this,\"_attributeDefs\",void 0),G(this,\"data\",void 0),G(this,\"getGeometry\",void 0),G(this,\"geometryBuffer\",void 0),G(this,\"buffers\",void 0),G(this,\"positionSize\",void 0),G(this,\"normalize\",void 0);let{attributes:r={}}=t;this.typedArrayManager=jh,this.attributes={},this._attributeDefs=r,this.opts=t,this.updateGeometry(t)}updateGeometry(t){Object.assign(this.opts,t);let{data:r,buffers:i={},getGeometry:s,geometryBuffer:n,positionFormat:o,dataChanged:c,normalize:f=!0}=this.opts;if(this.data=r,this.getGeometry=s,this.positionSize=n&&n.size||(o===\"XY\"?2:3),this.buffers=i,this.normalize=f,n&&(br(r.startIndices),this.getGeometry=this.getGeometryFromBuffer(n),f||(i.positions=n)),this.geometryBuffer=i.positions,Array.isArray(c))for(let _ of c)this._rebuildGeometry(_);else this._rebuildGeometry()}updatePartialGeometry({startRow:t,endRow:r}){this._rebuildGeometry({startRow:t,endRow:r})}getGeometryFromBuffer(t){let r=t.value||t;return ArrayBuffer.isView(r)?ZE(r,{size:this.positionSize,offset:t.offset,stride:t.stride,startIndices:this.data.startIndices}):null}_allocate(t,r){let{attributes:i,buffers:s,_attributeDefs:n,typedArrayManager:o}=this;for(let c in n)if(c in s)o.release(i[c]),i[c]=null;else{let f=n[c];f.copy=r,i[c]=o.allocate(i[c],t,f)}}_forEachGeometry(t,r,i){let{data:s,getGeometry:n}=this,{iterable:o,objectInfo:c}=Xc(s,r,i);for(let f of o){c.index++;let _=n?n(f,c):null;t(_,c.index)}}_rebuildGeometry(t){if(!this.data)return;let{indexStarts:r,vertexStarts:i,instanceCount:s}=this,{data:n,geometryBuffer:o}=this,{startRow:c=0,endRow:f=1/0}=t||{},_={};if(t||(r=[0],i=[0]),this.normalize||!o)this._forEachGeometry((C,R)=>{let N=C&&this.normalizeGeometry(C);_[R]=N,i[R+1]=i[R]+(N?this.getGeometrySize(N):0)},c,f),s=i[i.length-1];else if(i=n.startIndices,s=i[n.length]||0,ArrayBuffer.isView(o))s=s||o.length/this.positionSize;else if(o instanceof Fr){let C=o.accessor.stride||this.positionSize*4;s=s||o.byteLength/C}else if(o.buffer){let C=o.stride||this.positionSize*4;s=s||o.buffer.byteLength/C}else if(o.value){let C=o.value,R=o.stride/C.BYTES_PER_ELEMENT||this.positionSize;s=s||C.length/R}this._allocate(s,!!t),this.indexStarts=r,this.vertexStarts=i,this.instanceCount=s;let w={};this._forEachGeometry((C,R)=>{let N=_[R]||C;w.vertexStart=i[R],w.indexStart=r[R];let j=RiP(r,t));if(Qy(e)){if(vct(e))return t.style=yct,(0,_D.cloneElement)(e,t);if(xct(e))return(0,_D.cloneElement)(e,t)}return e}function Qy(e){return e&&typeof e==\"object\"&&\"type\"in e||!1}function vct(e){var t;return(t=e.props)===null||t===void 0?void 0:t.mapStyle}function xct(e){let t=e.type;return t&&t.deckGLViewProps}function yD(e){if(typeof e==\"function\")return(0,ZG.createElement)(Qc,{},e);if(Array.isArray(e))return e.map(yD);if(Qy(e)){if(e.type===nP.Fragment)return yD(e.props.children);if(Yy(e.type,Qc))return e}return e}function vD({children:e,layers:t=[],views:r=null}){let i=[],s=[],n={};return nP.Children.forEach(yD(e),o=>{if(Qy(o)){let c=o.type;if(Yy(c,Tn)){let f=bct(c,o.props);s.push(f)}else i.push(o);if(Yy(c,Qc)&&c!==Qc&&o.props.id){let f=new c(o.props);n[f.id]=f}}else o&&i.push(o)}),Object.keys(n).length>0&&(Array.isArray(r)?r.forEach(o=>{n[o.id]=o}):r&&(n[r.id]=r),r=Object.values(n)),t=s.length>0?[...s,...t]:t,{layers:t,children:i,views:r}}function bct(e,t){let r={},i=e.defaultProps||{};for(let s in t)i[s]!==t[s]&&(r[s]=t[s]);return new e(r)}var xD=ki(Ji());function bD({children:e,deck:t,ContextProvider:r}){let{viewManager:i}=t||{};if(!i||!i.views.length)return[];let s={},n=i.views[0].id;for(let o of e){let c=n,f=o;Qy(o)&&Yy(o.type,Qc)&&(c=o.props.id||n,f=o.props.children);let _=i.getViewport(c),w=i.getViewState(c);if(_){w.padding=_.padding;let{x:C,y:R,width:N,height:j}=_;f=iP(f,{x:C,y:R,width:N,height:j,viewport:_,viewState:w}),s[c]||(s[c]={viewport:_,children:[]}),s[c].children.push(f)}}return Object.keys(s).map(o=>{let{viewport:c,children:f}=s[o],{x:_,y:w,width:C,height:R}=c,N={position:\"absolute\",left:_,top:w,width:C,height:R},j=\"view-\".concat(o),Y=(0,xD.createElement)(\"div\",{key:j,id:j,style:N},...f);if(r){let rt={viewport:c,container:t.canvas.offsetParent,eventManager:t.eventManager,onViewStateChange:$=>{$.viewId=o,t._onViewStateChange($)}};return(0,xD.createElement)(r,{key:j,value:rt},Y)}return Y})}var wct={mixBlendMode:null};function wD({width:e,height:t,style:r}){let i={position:\"absolute\",zIndex:0,left:0,top:0,width:e,height:t},s={left:0,top:0};if(r)for(let n in r)n in wct?s[n]=r[n]:i[n]=r[n];return{containerStyle:i,canvasStyle:s}}function Sct(e){return{get deck(){return e.deck},pickObject:t=>e.deck.pickObject(t),pickMultipleObjects:t=>e.deck.pickMultipleObjects(t),pickObjects:t=>e.deck.pickObjects(t)}}function YG(e){e.redrawReason&&(e.deck._drawLayers(e.redrawReason),e.redrawReason=null)}function Tct(e,t,r){let i=new t({...r,_customRender:s=>{e.redrawReason=s;let n=i.getViewports();e.lastRenderedViewports!==n?e.forceUpdate():YG(e)}});return i}var QG=(0,Mo.forwardRef)((e,t)=>{let[r,i]=(0,Mo.useState)(0),n=(0,Mo.useRef)({control:null,version:r,forceUpdate:()=>i(Pt=>Pt+1)}).current,o=(0,Mo.useRef)(null),c=(0,Mo.useRef)(null),f=(0,Mo.useMemo)(()=>vD(e),[e.layers,e.views,e.children]),_=!0,w=Pt=>{var Ot;return _&&e.viewState?(n.viewStateUpdateRequested=Pt,null):(n.viewStateUpdateRequested=null,(Ot=e.onViewStateChange)===null||Ot===void 0?void 0:Ot.call(e,Pt))},C=Pt=>{if(_)n.interactionStateUpdateRequested=Pt;else{var Ot;n.interactionStateUpdateRequested=null,(Ot=e.onInteractionStateChange)===null||Ot===void 0||Ot.call(e,Pt)}},R=(0,Mo.useMemo)(()=>{let Pt={...e,style:null,width:\"100%\",height:\"100%\",parent:o.current,canvas:c.current,layers:f.layers,views:f.views,onViewStateChange:w,onInteractionStateChange:C};return delete Pt._customRender,n.deck&&n.deck.setProps(Pt),Pt},[e]);(0,Mo.useEffect)(()=>{let Pt=e.Deck||ap;return n.deck=Tct(n,Pt,{...R,parent:o.current,canvas:c.current}),()=>{var Ot;return(Ot=n.deck)===null||Ot===void 0?void 0:Ot.finalize()}},[]),qG(()=>{YG(n);let{viewStateUpdateRequested:Pt,interactionStateUpdateRequested:Ot}=n;Pt&&w(Pt),Ot&&C(Ot)}),(0,Mo.useImperativeHandle)(t,()=>Sct(n),[]);let N=n.deck&&n.deck.isInitialized?n.deck.getViewports():void 0,{ContextProvider:j,width:Y,height:rt,id:$,style:K}=e,{containerStyle:tt,canvasStyle:ut}=(0,Mo.useMemo)(()=>wD({width:Y,height:rt,style:K}),[Y,rt,K]);if(!n.viewStateUpdateRequested&&n.lastRenderedViewports===N||n.version!==r){n.lastRenderedViewports=N,n.version=r;let Pt=bD({children:f.children,deck:n.deck,ContextProvider:j}),Ot=(0,Mo.createElement)(\"canvas\",{key:\"canvas\",id:$||\"deckgl-overlay\",ref:c,style:ut});n.control=(0,Mo.createElement)(\"div\",{id:\"\".concat($||\"deckgl\",\"-wrapper\"),ref:o,style:tt},[Ot,Pt])}return _=!1,n.control});QG.defaultProps=ap.defaultProps;var SD=QG;var Xt,XG=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(\"TextDecoder not available\")}};typeof TextDecoder<\"u\"&&XG.decode();var lw=null;function $y(){return(lw===null||lw.byteLength===0)&&(lw=new Uint8Array(Xt.memory.buffer)),lw}function Fu(e,t){return e=e>>>0,XG.decode($y().subarray(e,e+t))}var cp=new Array(128).fill(void 0);cp.push(void 0,null,!0,!1);var dw=cp.length;function gr(e){dw===cp.length&&cp.push(cp.length+1);let t=dw;return dw=cp[t],cp[t]=e,t}function Qe(e){return cp[e]}function Mct(e){e<132||(cp[e]=dw,dw=e)}function Yn(e){let t=Qe(e);return Mct(e),t}var qh=0,sP=typeof TextEncoder<\"u\"?new TextEncoder(\"utf-8\"):{encode:()=>{throw Error(\"TextEncoder not available\")}},Ect=typeof sP.encodeInto==\"function\"?function(e,t){return sP.encodeInto(e,t)}:function(e,t){let r=sP.encode(e);return t.set(r),{read:e.length,written:r.length}};function cw(e,t,r){if(r===void 0){let c=sP.encode(e),f=t(c.length,1)>>>0;return $y().subarray(f,f+c.length).set(c),qh=c.length,f}let i=e.length,s=t(i,1)>>>0,n=$y(),o=0;for(;o127)break;n[s+o]=c}if(o!==i){o!==0&&(e=e.slice(o)),s=r(s,i,i=o+e.length*3,1)>>>0;let c=$y().subarray(s+o,s+i),f=Ect(e,c);o+=f.written}return qh=o,s}function TD(e){return e==null}var uw=null;function or(){return(uw===null||uw.byteLength===0)&&(uw=new Int32Array(Xt.memory.buffer)),uw}function MD(e){let t=typeof e;if(t==\"number\"||t==\"boolean\"||e==null)return`${e}`;if(t==\"string\")return`\"${e}\"`;if(t==\"symbol\"){let s=e.description;return s==null?\"Symbol\":`Symbol(${s})`}if(t==\"function\"){let s=e.name;return typeof s==\"string\"&&s.length>0?`Function(${s})`:\"Function\"}if(Array.isArray(e)){let s=e.length,n=\"[\";s>0&&(n+=MD(e[0]));for(let o=1;o1)i=r[1];else return toString.call(e);if(i==\"Object\")try{return\"Object(\"+JSON.stringify(e)+\")\"}catch{return\"Object\"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:i}function Pct(e,t,r,i){let s={a:e,b:t,cnt:1,dtor:r},n=(...o)=>{s.cnt++;let c=s.a;s.a=0;try{return i(c,s.b,...o)}finally{--s.cnt===0?Xt.__wbindgen_export_2.get(s.dtor)(c,s.b):s.a=c}};return n.original=s,n}function Ict(e,t,r){Xt._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h896648893be04d51(e,t,gr(r))}function ED(e,t){let r=t(e.length*1,1)>>>0;return $y().set(e,r/1),qh=e.length,r}function KG(e){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16),n=ED(e,Xt.__wbindgen_malloc),o=qh;Xt.readParquet(s,n,o);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return BD.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}function JG(e,t){return e=e>>>0,$y().subarray(e/1,e/1+t)}var hw=null;function $G(){return(hw===null||hw.byteLength===0)&&(hw=new BigInt64Array(Xt.memory.buffer)),hw}var fw=null;function Cct(){return(fw===null||fw.byteLength===0)&&(fw=new BigUint64Array(Xt.memory.buffer)),fw}function Lct(e,t){return e=e>>>0,Cct().subarray(e/8,e/8+t)}function Eo(e,t){try{return e.apply(this,t)}catch(r){Xt.__wbindgen_exn_store(gr(r))}}function kct(e,t,r,i){Xt.wasm_bindgen__convert__closures__invoke2_mut__h02232cd008ae4dfe(e,t,gr(r),gr(i))}var yNt=Object.freeze({UNCOMPRESSED:0,0:\"UNCOMPRESSED\",SNAPPY:1,1:\"SNAPPY\",GZIP:2,2:\"GZIP\",BROTLI:3,3:\"BROTLI\",LZ4:4,4:\"LZ4\",ZSTD:5,5:\"ZSTD\",LZ4_RAW:6,6:\"LZ4_RAW\"}),vNt=Object.freeze({PLAIN:0,0:\"PLAIN\",PLAIN_DICTIONARY:1,1:\"PLAIN_DICTIONARY\",RLE:2,2:\"RLE\",BIT_PACKED:3,3:\"BIT_PACKED\",DELTA_BINARY_PACKED:4,4:\"DELTA_BINARY_PACKED\",DELTA_LENGTH_BYTE_ARRAY:5,5:\"DELTA_LENGTH_BYTE_ARRAY\",DELTA_BYTE_ARRAY:6,6:\"DELTA_BYTE_ARRAY\",RLE_DICTIONARY:7,7:\"RLE_DICTIONARY\",BYTE_STREAM_SPLIT:8,8:\"BYTE_STREAM_SPLIT\"}),xNt=Object.freeze({V1:0,0:\"V1\",V2:1,1:\"V2\"}),PD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_arrowschema_free(t)}copy(){let t=Xt.arrowschema_copy(this.__wbg_ptr);return e.__wrap(t)}},ID=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_columnchunkmetadata_free(t)}filePath(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_filePath(i,this.__wbg_ptr);var t=or()[i/4+0],r=or()[i/4+1];let s;return t!==0&&(s=Fu(t,r).slice(),Xt.__wbindgen_free(t,r*1)),s}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}fileOffset(){return Xt.columnchunkmetadata_fileOffset(this.__wbg_ptr)}pathInSchema(){let t,r;try{let n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_pathInSchema(n,this.__wbg_ptr);var i=or()[n/4+0],s=or()[n/4+1];return t=i,r=s,Fu(i,s)}finally{Xt.__wbindgen_add_to_stack_pointer(16),Xt.__wbindgen_free(t,r,1)}}statistics_exist(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_statistics_exist(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return t!==0}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsMinValue(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsMinValue(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsMaxValue(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsMaxValue(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsNullCount(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsNullCount(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numValues(){return Xt.columnchunkmetadata_numValues(this.__wbg_ptr)}compressedSize(){return Xt.columnchunkmetadata_compressedSize(this.__wbg_ptr)}uncompressedSize(){return Xt.columnchunkmetadata_uncompressedSize(this.__wbg_ptr)}dataPageOffset(){return Xt.columnchunkmetadata_dataPageOffset(this.__wbg_ptr)}hasIndexPage(){return Xt.columnchunkmetadata_hasIndexPage(this.__wbg_ptr)!==0}indexPageOffset(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_indexPageOffset(i,this.__wbg_ptr);var t=or()[i/4+0],r=$G()[i/8+1];return t===0?void 0:r}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}dictionaryPageOffset(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_dictionaryPageOffset(i,this.__wbg_ptr);var t=or()[i/4+0],r=$G()[i/8+1];return t===0?void 0:r}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numColumnEncodings(){return Xt.columnchunkmetadata_numColumnEncodings(this.__wbg_ptr)>>>0}byteRange(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_byteRange(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=Lct(t,r).slice();return Xt.__wbindgen_free(t,r*8),i}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},CD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_datatype_free(t)}},oP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_ffirecordbatch_free(t)}arrayAddr(){return Xt.ffirecordbatch_arrayAddr(this.__wbg_ptr)}schemaAddr(){return Xt.ffirecordbatch_schemaAddr(this.__wbg_ptr)}},aP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_ffitable_free(t)}numBatches(){return Xt.ffitable_numBatches(this.__wbg_ptr)>>>0}schemaAddr(){return Xt.ffitable_schemaAddr(this.__wbg_ptr)}arrayAddr(t){return Xt.ffitable_arrayAddr(this.__wbg_ptr,t)}drop(){let t=this.__destroy_into_raw();Xt.ffitable_drop(t)}};var LD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_filemetadata_free(t)}copy(){let t=Xt.filemetadata_copy(this.__wbg_ptr);return e.__wrap(t)}version(){return Xt.filemetadata_version(this.__wbg_ptr)}numRows(){return Xt.filemetadata_numRows(this.__wbg_ptr)>>>0}createdBy(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_createdBy(i,this.__wbg_ptr);var t=or()[i/4+0],r=or()[i/4+1];let s;return t!==0&&(s=Fu(t,r).slice(),Xt.__wbindgen_free(t,r*1)),s}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numRowGroups(){return Xt.filemetadata_numRowGroups(this.__wbg_ptr)>>>0}rowGroup(t){let r=Xt.filemetadata_rowGroup(this.__wbg_ptr,t);return DD.__wrap(r)}schema(){let t=Xt.filemetadata_schema(this.__wbg_ptr);return OD.__wrap(t)}keyValueMetadata(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_keyValueMetadata(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}arrowSchema(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_arrowSchema(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return PD.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}};var kD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_intounderlyingsource_free(t)}pull(t){let r=Xt.intounderlyingsource_pull(this.__wbg_ptr,gr(t));return Yn(r)}cancel(){let t=this.__destroy_into_raw();Xt.intounderlyingsource_cancel(t)}};var RD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_queuingstrategy_free(t)}get highWaterMark(){return Xt.queuingstrategy_highWaterMark(this.__wbg_ptr)}};var lP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_recordbatch_free(t)}get numRows(){return Xt.recordbatch_numRows(this.__wbg_ptr)>>>0}get numColumns(){return Xt.recordbatch_numColumns(this.__wbg_ptr)>>>0}get schema(){let t=Xt.recordbatch_schema(this.__wbg_ptr);return cP.__wrap(t)}column(t){let r=Xt.recordbatch_column(this.__wbg_ptr,t);return r===0?void 0:uP.__wrap(r)}column_by_name(t){let r=cw(t,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),i=qh,s=Xt.recordbatch_column_by_name(this.__wbg_ptr,r,i);return s===0?void 0:uP.__wrap(s)}toFFI(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_toFFI(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return oP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoFFI(){try{let s=this.__destroy_into_raw(),n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_intoFFI(n,s);var t=or()[n/4+0],r=or()[n/4+1],i=or()[n/4+2];if(i)throw Yn(r);return oP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoIPCStream(){try{let o=this.__destroy_into_raw(),c=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_intoIPCStream(c,o);var t=or()[c/4+0],r=or()[c/4+1],i=or()[c/4+2],s=or()[c/4+3];if(s)throw Yn(i);var n=JG(t,r).slice();return Xt.__wbindgen_free(t,r*1),n}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},DD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_rowgroupmetadata_free(t)}numRows(){return Xt.rowgroupmetadata_numRows(this.__wbg_ptr)>>>0}numColumns(){return Xt.rowgroupmetadata_numColumns(this.__wbg_ptr)>>>0}column(t){let r=Xt.rowgroupmetadata_column(this.__wbg_ptr,t);return ID.__wrap(r)}totalByteSize(){return Xt.rowgroupmetadata_totalByteSize(this.__wbg_ptr)>>>0}compressedSize(){return Xt.rowgroupmetadata_compressedSize(this.__wbg_ptr)>>>0}},cP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_schema_free(t)}},OD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_schemadescriptor_free(t)}name(){let t,r;try{let n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.schemadescriptor_name(n,this.__wbg_ptr);var i=or()[n/4+0],s=or()[n/4+1];return t=i,r=s,Fu(i,s)}finally{Xt.__wbindgen_add_to_stack_pointer(16),Xt.__wbindgen_free(t,r,1)}}numColumns(){return Xt.schemadescriptor_numColumns(this.__wbg_ptr)>>>0}numFields(){return Xt.schemadescriptor_numFields(this.__wbg_ptr)>>>0}},BD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_table_free(t)}get schema(){let t=Xt.table_schema(this.__wbg_ptr);return cP.__wrap(t)}recordBatch(t){let r=Xt.table_recordBatch(this.__wbg_ptr,t);return r===0?void 0:lP.__wrap(r)}get numBatches(){return Xt.table_numBatches(this.__wbg_ptr)>>>0}toFFI(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_toFFI(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return aP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoFFI(){try{let s=this.__destroy_into_raw(),n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_intoFFI(n,s);var t=or()[n/4+0],r=or()[n/4+1],i=or()[n/4+2];if(i)throw Yn(r);return aP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoIPCStream(){try{let o=this.__destroy_into_raw(),c=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_intoIPCStream(c,o);var t=or()[c/4+0],r=or()[c/4+1],i=or()[c/4+2],s=or()[c/4+3];if(s)throw Yn(i);var n=JG(t,r).slice();return Xt.__wbindgen_free(t,r*1),n}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}static fromIPCFile(t){try{let n=Xt.__wbindgen_add_to_stack_pointer(-16),o=ED(t,Xt.__wbindgen_malloc),c=qh;Xt.table_fromIPCFile(n,o,c);var r=or()[n/4+0],i=or()[n/4+1],s=or()[n/4+2];if(s)throw Yn(i);return e.__wrap(r)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}static fromIPCStream(t){try{let n=Xt.__wbindgen_add_to_stack_pointer(-16),o=ED(t,Xt.__wbindgen_malloc),c=qh;Xt.table_fromIPCStream(n,o,c);var r=or()[n/4+0],i=or()[n/4+1],s=or()[n/4+2];if(s)throw Yn(i);return e.__wrap(r)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},uP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_vector_free(t)}data_type(){let t=Xt.vector_data_type(this.__wbg_ptr);return CD.__wrap(t)}};async function Rct(e,t){if(typeof Response==\"function\"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==\"function\")try{return await WebAssembly.instantiateStreaming(e,t)}catch(i){if(e.headers.get(\"Content-Type\")!=\"application/wasm\")console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",i);else throw i}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{let r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function Dct(){let e={};return e.wbg={},e.wbg.__wbg_filemetadata_new=function(t){let r=LD.__wrap(t);return gr(r)},e.wbg.__wbindgen_error_new=function(t,r){let i=new Error(Fu(t,r));return gr(i)},e.wbg.__wbindgen_object_drop_ref=function(t){Yn(t)},e.wbg.__wbindgen_string_new=function(t,r){let i=Fu(t,r);return gr(i)},e.wbg.__wbindgen_bigint_from_i64=function(t){return gr(t)},e.wbg.__wbindgen_number_new=function(t){return gr(t)},e.wbg.__wbindgen_object_clone_ref=function(t){let r=Qe(t);return gr(r)},e.wbg.__wbg_fetch_b5d6bebed1e6c2d2=function(t){let r=fetch(Qe(t));return gr(r)},e.wbg.__wbg_newwithsource_620c192b0682807b=function(t,r){let i=new ReadableStream(kD.__wrap(t),RD.__wrap(r));return gr(i)},e.wbg.__wbg_close_e9110ca16e2567db=function(t){Qe(t).close()},e.wbg.__wbg_enqueue_d71a1a518e21f5c3=function(t,r){Qe(t).enqueue(Qe(r))},e.wbg.__wbg_byobRequest_08c18cee35def1f4=function(t){let r=Qe(t).byobRequest;return TD(r)?0:gr(r)},e.wbg.__wbg_close_da7e6fb9d9851e5a=function(t){Qe(t).close()},e.wbg.__wbg_view_231340b0dd8a2484=function(t){let r=Qe(t).view;return TD(r)?0:gr(r)},e.wbg.__wbg_respond_8fadc5f5c9d95422=function(t,r){Qe(t).respond(r>>>0)},e.wbg.__wbg_buffer_4e79326814bdd393=function(t){let r=Qe(t).buffer;return gr(r)},e.wbg.__wbg_byteOffset_b69b0a07afccce19=function(t){return Qe(t).byteOffset},e.wbg.__wbg_byteLength_5299848ed3264181=function(t){return Qe(t).byteLength},e.wbg.__wbindgen_string_get=function(t,r){let i=Qe(r),s=typeof i==\"string\"?i:void 0;var n=TD(s)?0:cw(s,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),o=qh;or()[t/4+1]=o,or()[t/4+0]=n},e.wbg.__wbg_set_bd72c078edfa51ad=function(t,r,i){Qe(t)[Yn(r)]=Yn(i)},e.wbg.__wbg_String_4370c5505c674d30=function(t,r){let i=String(Qe(r)),s=cw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbindgen_cb_drop=function(t){let r=Yn(t).original;return r.cnt--==1?(r.a=0,!0):!1},e.wbg.__wbg_recordbatch_new=function(t){let r=lP.__wrap(t);return gr(r)},e.wbg.__wbg_randomFillSync_dc1e9a60c158336d=function(){return Eo(function(t,r){Qe(t).randomFillSync(Yn(r))},arguments)},e.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab=function(){return Eo(function(t,r){Qe(t).getRandomValues(Qe(r))},arguments)},e.wbg.__wbg_crypto_c48a774b022d20ac=function(t){let r=Qe(t).crypto;return gr(r)},e.wbg.__wbindgen_is_object=function(t){let r=Qe(t);return typeof r==\"object\"&&r!==null},e.wbg.__wbg_process_298734cf255a885d=function(t){let r=Qe(t).process;return gr(r)},e.wbg.__wbg_versions_e2e78e134e3e5d01=function(t){let r=Qe(t).versions;return gr(r)},e.wbg.__wbg_node_1cd7a5d853dbea79=function(t){let r=Qe(t).node;return gr(r)},e.wbg.__wbindgen_is_string=function(t){return typeof Qe(t)==\"string\"},e.wbg.__wbg_require_8f08ceecec0f4fee=function(){return Eo(function(){let t=module.require;return gr(t)},arguments)},e.wbg.__wbg_msCrypto_bcb970640f50a1e8=function(t){let r=Qe(t).msCrypto;return gr(r)},e.wbg.__wbg_signal_4bd18fb489af2d4c=function(t){let r=Qe(t).signal;return gr(r)},e.wbg.__wbg_new_55c9955722952374=function(){return Eo(function(){let t=new AbortController;return gr(t)},arguments)},e.wbg.__wbg_abort_654b796176d117aa=function(t){Qe(t).abort()},e.wbg.__wbg_new_1eead62f64ca15ce=function(){return Eo(function(){let t=new Headers;return gr(t)},arguments)},e.wbg.__wbg_append_fda9e3432e3e88da=function(){return Eo(function(t,r,i,s,n){Qe(t).append(Fu(r,i),Fu(s,n))},arguments)},e.wbg.__wbg_fetch_8eaf01857a5bb21f=function(t,r){let i=Qe(t).fetch(Qe(r));return gr(i)},e.wbg.__wbg_instanceof_Response_fc4327dbfcdf5ced=function(t){let r;try{r=Qe(t)instanceof Response}catch{r=!1}return r},e.wbg.__wbg_url_8503de97f69da463=function(t,r){let i=Qe(r).url,s=cw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbg_status_ac85a3142a84caa2=function(t){return Qe(t).status},e.wbg.__wbg_headers_b70de86b8e989bc0=function(t){let r=Qe(t).headers;return gr(r)},e.wbg.__wbg_arrayBuffer_288fb3538806e85c=function(){return Eo(function(t){let r=Qe(t).arrayBuffer();return gr(r)},arguments)},e.wbg.__wbg_newwithstrandinit_cad5cd6038c7ff5d=function(){return Eo(function(t,r,i){let s=new Request(Fu(t,r),Qe(i));return gr(s)},arguments)},e.wbg.__wbindgen_is_function=function(t){return typeof Qe(t)==\"function\"},e.wbg.__wbg_newnoargs_581967eacc0e2604=function(t,r){let i=new Function(Fu(t,r));return gr(i)},e.wbg.__wbg_new_56693dbed0c32988=function(){return gr(new Map)},e.wbg.__wbg_next_526fc47e980da008=function(t){let r=Qe(t).next;return gr(r)},e.wbg.__wbg_next_ddb3312ca1c4e32a=function(){return Eo(function(t){let r=Qe(t).next();return gr(r)},arguments)},e.wbg.__wbg_done_5c1f01fb660d73b5=function(t){return Qe(t).done},e.wbg.__wbg_value_1695675138684bd5=function(t){let r=Qe(t).value;return gr(r)},e.wbg.__wbg_iterator_97f0c81209c6c35a=function(){return gr(Symbol.iterator)},e.wbg.__wbg_get_97b561fb56f034b5=function(){return Eo(function(t,r){let i=Reflect.get(Qe(t),Qe(r));return gr(i)},arguments)},e.wbg.__wbg_call_cb65541d95d71282=function(){return Eo(function(t,r){let i=Qe(t).call(Qe(r));return gr(i)},arguments)},e.wbg.__wbg_new_b51585de1b234aff=function(){let t=new Object;return gr(t)},e.wbg.__wbg_self_1ff1d729e9aae938=function(){return Eo(function(){let t=self.self;return gr(t)},arguments)},e.wbg.__wbg_window_5f4faef6c12b79ec=function(){return Eo(function(){let t=window.window;return gr(t)},arguments)},e.wbg.__wbg_globalThis_1d39714405582d3c=function(){return Eo(function(){let t=globalThis.globalThis;return gr(t)},arguments)},e.wbg.__wbg_global_651f05c6a0944d1c=function(){return Eo(function(){let t=global.global;return gr(t)},arguments)},e.wbg.__wbindgen_is_undefined=function(t){return Qe(t)===void 0},e.wbg.__wbg_new_d258248ed531ff54=function(t,r){let i=new Error(Fu(t,r));return gr(i)},e.wbg.__wbg_call_01734de55d61e11d=function(){return Eo(function(t,r,i){let s=Qe(t).call(Qe(r),Qe(i));return gr(s)},arguments)},e.wbg.__wbg_set_bedc3d02d0f05eb0=function(t,r,i){let s=Qe(t).set(Qe(r),Qe(i));return gr(s)},e.wbg.__wbg_new_43f1b47c28813cbd=function(t,r){try{var i={a:t,b:r},s=(o,c)=>{let f=i.a;i.a=0;try{return kct(f,i.b,o,c)}finally{i.a=f}};let n=new Promise(s);return gr(n)}finally{i.a=i.b=0}},e.wbg.__wbg_resolve_53698b95aaf7fcf8=function(t){let r=Promise.resolve(Qe(t));return gr(r)},e.wbg.__wbg_then_f7e06ee3c11698eb=function(t,r){let i=Qe(t).then(Qe(r));return gr(i)},e.wbg.__wbg_then_b2267541e2a73865=function(t,r,i){let s=Qe(t).then(Qe(r),Qe(i));return gr(s)},e.wbg.__wbg_buffer_085ec1f694018c4f=function(t){let r=Qe(t).buffer;return gr(r)},e.wbg.__wbg_newwithbyteoffsetandlength_6da8e527659b86aa=function(t,r,i){let s=new Uint8Array(Qe(t),r>>>0,i>>>0);return gr(s)},e.wbg.__wbg_new_8125e318e6245eed=function(t){let r=new Uint8Array(Qe(t));return gr(r)},e.wbg.__wbg_set_5cf90238115182c3=function(t,r,i){Qe(t).set(Qe(r),i>>>0)},e.wbg.__wbg_length_72e2208bbc0efc61=function(t){return Qe(t).length},e.wbg.__wbg_newwithlength_e5d69174d6984cd7=function(t){let r=new Uint8Array(t>>>0);return gr(r)},e.wbg.__wbg_subarray_13db269f57aa838d=function(t,r,i){let s=Qe(t).subarray(r>>>0,i>>>0);return gr(s)},e.wbg.__wbg_stringify_e25465938f3f611f=function(){return Eo(function(t){let r=JSON.stringify(Qe(t));return gr(r)},arguments)},e.wbg.__wbg_has_c5fcd020291e56b8=function(){return Eo(function(t,r){return Reflect.has(Qe(t),Qe(r))},arguments)},e.wbg.__wbg_set_092e06b0f9d71865=function(){return Eo(function(t,r,i){return Reflect.set(Qe(t),Qe(r),Qe(i))},arguments)},e.wbg.__wbindgen_debug_string=function(t,r){let i=MD(Qe(r)),s=cw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbindgen_throw=function(t,r){throw new Error(Fu(t,r))},e.wbg.__wbindgen_memory=function(){let t=Xt.memory;return gr(t)},e.wbg.__wbindgen_function_table=function(){let t=Xt.__wbindgen_export_2;return gr(t)},e.wbg.__wbindgen_closure_wrapper1527=function(t,r,i){let s=Pct(t,r,304,Ict);return gr(s)},e}function Oct(e,t){return Xt=e.exports,t9.__wbindgen_wasm_module=t,hw=null,fw=null,uw=null,lw=null,Xt}async function t9(e){if(Xt!==void 0)return Xt;typeof e>\"u\"&&(e=new URL(\"arrow2_bg.wasm\",import.meta.url));let t=Dct();(typeof e==\"string\"||typeof Request==\"function\"&&e instanceof Request||typeof URL==\"function\"&&e instanceof URL)&&(e=fetch(e));let{instance:r,module:i}=await Rct(await e,t);return Oct(r,i)}var e9=t9;function i9(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var s=0,i=Object.getOwnPropertySymbols(e);s=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function ii(e){return this instanceof ii?(this.v=e,this):new ii(e)}function Kc(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var i=r.apply(e,t||[]),s,n=[];return s={},o(\"next\"),o(\"throw\"),o(\"return\"),s[Symbol.asyncIterator]=function(){return this},s;function o(R){i[R]&&(s[R]=function(N){return new Promise(function(j,Y){n.push([R,N,j,Y])>1||c(R,N)})})}function c(R,N){try{f(i[R](N))}catch(j){C(n[0][3],j)}}function f(R){R.value instanceof ii?Promise.resolve(R.value.v).then(_,w):C(n[0][2],R)}function _(R){c(\"next\",R)}function w(R){c(\"throw\",R)}function C(R,N){R(N),n.shift(),n.length&&c(n[0][0],n[0][1])}}function Xy(e){var t,r;return t={},i(\"next\"),i(\"throw\",function(s){throw s}),i(\"return\"),t[Symbol.iterator]=function(){return this},t;function i(s,n){t[s]=e[s]?function(o){return(r=!r)?{value:ii(e[s](o)),done:!1}:n?n(o):o}:n}}function Zh(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof r9==\"function\"?r9(e):e[Symbol.iterator](),r={},i(\"next\"),i(\"throw\"),i(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=e[n]&&function(o){return new Promise(function(c,f){o=e[n](o),s(c,f,o.done,o.value)})}}function s(n,o,c,f){Promise.resolve(f).then(function(_){n({value:_,done:c})},o)}}var jD={};dA(jD,{compareArrayLike:()=>VD,joinUint8Arrays:()=>tu,memcpy:()=>mw,rebaseValueOffsets:()=>_P,toArrayBufferView:()=>Ai,toArrayBufferViewAsyncIterator:()=>Qh,toArrayBufferViewIterator:()=>Xf,toBigInt64Array:()=>gP,toBigUint64Array:()=>Wct,toFloat32Array:()=>Hct,toFloat32ArrayAsyncIterator:()=>aut,toFloat32ArrayIterator:()=>Jct,toFloat64Array:()=>qct,toFloat64ArrayAsyncIterator:()=>lut,toFloat64ArrayIterator:()=>tut,toInt16Array:()=>Vct,toInt16ArrayAsyncIterator:()=>iut,toInt16ArrayIterator:()=>Qct,toInt32Array:()=>fg,toInt32ArrayAsyncIterator:()=>nut,toInt32ArrayIterator:()=>$ct,toInt8Array:()=>Uct,toInt8ArrayAsyncIterator:()=>rut,toInt8ArrayIterator:()=>Yct,toUint16Array:()=>jct,toUint16ArrayAsyncIterator:()=>sut,toUint16ArrayIterator:()=>Xct,toUint32Array:()=>Gct,toUint32ArrayAsyncIterator:()=>out,toUint32ArrayIterator:()=>Kct,toUint8Array:()=>Rr,toUint8ArrayAsyncIterator:()=>UD,toUint8ArrayIterator:()=>ND,toUint8ClampedArray:()=>Zct,toUint8ClampedArrayAsyncIterator:()=>cut,toUint8ClampedArrayIterator:()=>eut});var Bct=new TextDecoder(\"utf-8\"),pw=e=>Bct.decode(e),Fct=new TextEncoder,$f=e=>Fct.encode(e);var zct=e=>typeof e==\"number\",n9=e=>typeof e==\"boolean\",Po=e=>typeof e==\"function\",Pl=e=>e!=null&&Object(e)===e,Jc=e=>Pl(e)&&Po(e.then);var Yh=e=>Pl(e)&&Po(e[Symbol.iterator]),zu=e=>Pl(e)&&Po(e[Symbol.asyncIterator]),hP=e=>Pl(e)&&Pl(e.schema);var fP=e=>Pl(e)&&\"done\"in e&&\"value\"in e;var dP=e=>Pl(e)&&Po(e.stat)&&zct(e.fd);var pP=e=>Pl(e)&&Aw(e.body),AP=e=>\"_getDOMStream\"in e&&\"_getNodeStream\"in e,s9=e=>Pl(e)&&Po(e.abort)&&Po(e.getWriter)&&!AP(e),Aw=e=>Pl(e)&&Po(e.cancel)&&Po(e.getReader)&&!AP(e),o9=e=>Pl(e)&&Po(e.end)&&Po(e.write)&&n9(e.writable)&&!AP(e),mP=e=>Pl(e)&&Po(e.read)&&Po(e.pipe)&&n9(e.readable)&&!AP(e),a9=e=>Pl(e)&&Po(e.clear)&&Po(e.bytes)&&Po(e.position)&&Po(e.setPosition)&&Po(e.capacity)&&Po(e.getBufferIdentifier)&&Po(e.createLong);var zD=typeof SharedArrayBuffer<\"u\"?SharedArrayBuffer:ArrayBuffer;function Nct(e){let t=e[0]?[e[0]]:[],r,i,s,n;for(let o,c,f=0,_=0,w=e.length;++fw+C.byteLength,0),s,n,o,c=0,f=-1,_=Math.min(t||Number.POSITIVE_INFINITY,i);for(let w=r.length;++fAi(Int8Array,e),Vct=e=>Ai(Int16Array,e),fg=e=>Ai(Int32Array,e),gP=e=>Ai(BigInt64Array,e),Rr=e=>Ai(Uint8Array,e),jct=e=>Ai(Uint16Array,e),Gct=e=>Ai(Uint32Array,e),Wct=e=>Ai(BigUint64Array,e),Hct=e=>Ai(Float32Array,e),qct=e=>Ai(Float64Array,e),Zct=e=>Ai(Uint8ClampedArray,e),FD=e=>(e.next(),e);function*Xf(e,t){let r=function*(s){yield s},i=typeof t==\"string\"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof zD?r(t):Yh(t)?t:r(t);return yield*FD(function*(s){let n=null;do n=s.next(yield Ai(e,n));while(!n.done)}(i[Symbol.iterator]())),new e}var Yct=e=>Xf(Int8Array,e),Qct=e=>Xf(Int16Array,e),$ct=e=>Xf(Int32Array,e),ND=e=>Xf(Uint8Array,e),Xct=e=>Xf(Uint16Array,e),Kct=e=>Xf(Uint32Array,e),Jct=e=>Xf(Float32Array,e),tut=e=>Xf(Float64Array,e),eut=e=>Xf(Uint8ClampedArray,e);function Qh(e,t){return Kc(this,arguments,function*(){if(Jc(t))return yield ii(yield ii(yield*Xy(Zh(Qh(e,yield ii(t))))));let i=function(o){return Kc(this,arguments,function*(){yield yield ii(yield ii(o))})},s=function(o){return Kc(this,arguments,function*(){yield ii(yield*Xy(Zh(FD(function*(c){let f=null;do f=c.next(yield f?.value);while(!f.done)}(o[Symbol.iterator]())))))})},n=typeof t==\"string\"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof zD?i(t):Yh(t)?s(t):zu(t)?t:i(t);return yield ii(yield*Xy(Zh(FD(function(o){return Kc(this,arguments,function*(){let c=null;do c=yield ii(o.next(yield yield ii(Ai(e,c))));while(!c.done)})}(n[Symbol.asyncIterator]()))))),yield ii(new e)})}var rut=e=>Qh(Int8Array,e),iut=e=>Qh(Int16Array,e),nut=e=>Qh(Int32Array,e),UD=e=>Qh(Uint8Array,e),sut=e=>Qh(Uint16Array,e),out=e=>Qh(Uint32Array,e),aut=e=>Qh(Float32Array,e),lut=e=>Qh(Float64Array,e),cut=e=>Qh(Uint8ClampedArray,e);function _P(e,t,r){if(e!==0){r=r.slice(0,t);for(let i=-1,s=r.length;++i0)do if(e[r]!==t[r])return!1;while(++r(e.next(),e);function*uut(e){let t,r=!1,i=[],s,n,o,c=0;function f(){return n===\"peek\"?tu(i,o)[0]:([s,i,c]=tu(i,o),s)}({cmd:n,size:o}=(yield null)||{cmd:\"read\",size:0});let _=ND(e)[Symbol.iterator]();try{do if({done:t,value:s}=Number.isNaN(o-c)?_.next():_.next(o-c),!t&&s.byteLength>0&&(i.push(s),c+=s.byteLength),t||o<=c)do({cmd:n,size:o}=yield f());while(o0&&(s.push(n),f+=n.byteLength),r||c<=f)do({cmd:o,size:c}=yield yield ii(_()));while(c0&&(s.push(Rr(n)),f+=n.byteLength),r||c<=f)do({cmd:o,size:c}=yield yield ii(_()));while(c{})}get closed(){return this.reader?this.reader.closed.catch(()=>{}):Promise.resolve()}releaseLock(){this.reader&&this.reader.releaseLock(),this.reader=null}cancel(t){return sr(this,void 0,void 0,function*(){let{reader:r,source:i}=this;r&&(yield r.cancel(t).catch(()=>{})),i&&i.locked&&this.releaseLock()})}read(t){return sr(this,void 0,void 0,function*(){if(t===0)return{done:this.reader==null,value:new Uint8Array(0)};let r=yield this.reader.read();return!r.done&&(r.value=Rr(r)),r})}},GD=(e,t)=>{let r=s=>i([t,s]),i;return[t,r,new Promise(s=>(i=s)&&e.once(t,r))]};function dut(e){return Kc(this,arguments,function*(){let r=[],i=\"error\",s=!1,n=null,o,c,f=0,_=[],w;function C(){return o===\"peek\"?tu(_,c)[0]:([w,_,f]=tu(_,c),w)}if({cmd:o,size:c}=(yield yield ii(null))||{cmd:\"read\",size:0},e.isTTY)return yield yield ii(new Uint8Array(0)),yield ii(null);try{r[0]=GD(e,\"end\"),r[1]=GD(e,\"error\");do{if(r[2]=GD(e,\"readable\"),[i,n]=yield ii(Promise.race(r.map(N=>N[2]))),i===\"error\")break;if((s=i===\"end\")||(Number.isFinite(c-f)?(w=Rr(e.read(c-f)),w.byteLength0&&(_.push(w),f+=w.byteLength)),s||c<=f)do({cmd:o,size:c}=yield yield ii(C()));while(c{for(let[$,K]of N)e.off($,K);try{let $=e.destroy;$&&$.call(e,j),j=void 0}catch($){j=$||j}finally{j!=null?rt(j):Y()}})}})}var en;(function(e){e[e.V1=0]=\"V1\",e[e.V2=1]=\"V2\",e[e.V3=2]=\"V3\",e[e.V4=3]=\"V4\",e[e.V5=4]=\"V5\"})(en||(en={}));var Mn;(function(e){e[e.Sparse=0]=\"Sparse\",e[e.Dense=1]=\"Dense\"})(Mn||(Mn={}));var qi;(function(e){e[e.HALF=0]=\"HALF\",e[e.SINGLE=1]=\"SINGLE\",e[e.DOUBLE=2]=\"DOUBLE\"})(qi||(qi={}));var Xs;(function(e){e[e.DAY=0]=\"DAY\",e[e.MILLISECOND=1]=\"MILLISECOND\"})(Xs||(Xs={}));var pr;(function(e){e[e.SECOND=0]=\"SECOND\",e[e.MILLISECOND=1]=\"MILLISECOND\",e[e.MICROSECOND=2]=\"MICROSECOND\",e[e.NANOSECOND=3]=\"NANOSECOND\"})(pr||(pr={}));var Io;(function(e){e[e.YEAR_MONTH=0]=\"YEAR_MONTH\",e[e.DAY_TIME=1]=\"DAY_TIME\",e[e.MONTH_DAY_NANO=2]=\"MONTH_DAY_NANO\"})(Io||(Io={}));var Kf=new Int32Array(2),vP=new Float32Array(Kf.buffer),xP=new Float64Array(Kf.buffer),Ky=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var gw;(function(e){e[e.UTF8_BYTES=1]=\"UTF8_BYTES\",e[e.UTF16_STRING=2]=\"UTF16_STRING\"})(gw||(gw={}));var eu=class e{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new e(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8}writeInt32(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8,this.bytes_[t+2]=r>>16,this.bytes_[t+3]=r>>24}writeUint32(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8,this.bytes_[t+2]=r>>16,this.bytes_[t+3]=r>>24}writeInt64(t,r){this.writeInt32(t,Number(BigInt.asIntN(32,r))),this.writeInt32(t+4,Number(BigInt.asIntN(32,r>>BigInt(32))))}writeUint64(t,r){this.writeUint32(t,Number(BigInt.asUintN(32,r))),this.writeUint32(t+4,Number(BigInt.asUintN(32,r>>BigInt(32))))}writeFloat32(t,r){vP[0]=r,this.writeInt32(t,Kf[0])}writeFloat64(t,r){xP[0]=r,this.writeInt32(t,Kf[Ky?0:1]),this.writeInt32(t+4,Kf[Ky?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let i=~(this.bb.capacity()-this.space+r)+1&t-1;for(;this.space=0&&this.vtable[r]==0;r--);let i=r+1;for(;r>=0;r--)this.addInt16(this.vtable[r]!=0?t-this.vtable[r]:0);let s=2;this.addInt16(t-this.object_start);let n=(i+s)*2;this.addInt16(n);let o=0,c=this.space;t:for(r=0;r=0;o--)this.writeInt8(n.charCodeAt(o))}this.prep(this.minalign,4+s),this.addOffset(t),s&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,r){this.finish(t,r,!0)}requiredField(t,r){let i=this.bb.capacity()-t,s=i-this.bb.readInt32(i);if(!(r=0;i--)t.addInt32(r[i]);return t.endVector()}static startTypeIdsVector(t,r){t.startVector(4,r,4)}static endUnion(t){return t.endObject()}static createUnion(t,r,i){return e.startUnion(t),e.addMode(t,r),e.addTypeIds(t,i),e.endUnion(t)}};var Pw=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsUtf8(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsUtf8(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static startUtf8(t){t.startObject(0)}static endUtf8(t){return t.endObject()}static createUtf8(t){return e.startUtf8(t),e.endUtf8(t)}};var En;(function(e){e[e.NONE=0]=\"NONE\",e[e.Null=1]=\"Null\",e[e.Int=2]=\"Int\",e[e.FloatingPoint=3]=\"FloatingPoint\",e[e.Binary=4]=\"Binary\",e[e.Utf8=5]=\"Utf8\",e[e.Bool=6]=\"Bool\",e[e.Decimal=7]=\"Decimal\",e[e.Date=8]=\"Date\",e[e.Time=9]=\"Time\",e[e.Timestamp=10]=\"Timestamp\",e[e.Interval=11]=\"Interval\",e[e.List=12]=\"List\",e[e.Struct_=13]=\"Struct_\",e[e.Union=14]=\"Union\",e[e.FixedSizeBinary=15]=\"FixedSizeBinary\",e[e.FixedSizeList=16]=\"FixedSizeList\",e[e.Map=17]=\"Map\",e[e.Duration=18]=\"Duration\",e[e.LargeBinary=19]=\"LargeBinary\",e[e.LargeUtf8=20]=\"LargeUtf8\",e[e.LargeList=21]=\"LargeList\",e[e.RunEndEncoded=22]=\"RunEndEncoded\"})(En||(En={}));var rl=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsField(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsField(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}name(t){let r=this.bb.__offset(this.bb_pos,4);return r?this.bb.__string(this.bb_pos+r,t):null}nullable(){let t=this.bb.__offset(this.bb_pos,6);return t?!!this.bb.readInt8(this.bb_pos+t):!1}typeType(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint8(this.bb_pos+t):En.NONE}type(t){let r=this.bb.__offset(this.bb_pos,10);return r?this.bb.__union(t,this.bb_pos+r):null}dictionary(t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new Jf).__init(this.bb.__indirect(this.bb_pos+r),this.bb):null}children(t,r){let i=this.bb.__offset(this.bb_pos,14);return i?(r||new e).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}childrenLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,16);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.__vector_len(this.bb_pos+t):0}static startField(t){t.startObject(7)}static addName(t,r){t.addFieldOffset(0,r,0)}static addNullable(t,r){t.addFieldInt8(1,+r,0)}static addTypeType(t,r){t.addFieldInt8(2,r,En.NONE)}static addType(t,r){t.addFieldOffset(3,r,0)}static addDictionary(t,r){t.addFieldOffset(4,r,0)}static addChildren(t,r){t.addFieldOffset(5,r,0)}static createChildrenVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startChildrenVector(t,r){t.startVector(4,r,4)}static addCustomMetadata(t,r){t.addFieldOffset(6,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endField(t){return t.endObject()}};var sc=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsSchema(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSchema(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}endianness(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):tm.Little}fields(t,r){let i=this.bb.__offset(this.bb_pos,6);return i?(r||new rl).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}fieldsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,8);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}features(t){let r=this.bb.__offset(this.bb_pos,10);return r?this.bb.readInt64(this.bb.__vector(this.bb_pos+r)+t*8):BigInt(0)}featuresLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}static startSchema(t){t.startObject(4)}static addEndianness(t,r){t.addFieldInt16(0,r,tm.Little)}static addFields(t,r){t.addFieldOffset(1,r,0)}static createFieldsVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startFieldsVector(t,r){t.startVector(4,r,4)}static addCustomMetadata(t,r){t.addFieldOffset(2,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static addFeatures(t,r){t.addFieldOffset(3,r,0)}static createFeaturesVector(t,r){t.startVector(8,r.length,8);for(let i=r.length-1;i>=0;i--)t.addInt64(r[i]);return t.endVector()}static startFeaturesVector(t,r){t.startVector(8,r,8)}static endSchema(t){return t.endObject()}static finishSchemaBuffer(t,r){t.finish(r)}static finishSizePrefixedSchemaBuffer(t,r){t.finish(r,void 0,!0)}static createSchema(t,r,i,s,n){return e.startSchema(t),e.addEndianness(t,r),e.addFields(t,i),e.addCustomMetadata(t,s),e.addFeatures(t,n),e.endSchema(t)}};var bi;(function(e){e[e.NONE=0]=\"NONE\",e[e.Schema=1]=\"Schema\",e[e.DictionaryBatch=2]=\"DictionaryBatch\",e[e.RecordBatch=3]=\"RecordBatch\",e[e.Tensor=4]=\"Tensor\",e[e.SparseTensor=5]=\"SparseTensor\"})(bi||(bi={}));var Rt;(function(e){e[e.NONE=0]=\"NONE\",e[e.Null=1]=\"Null\",e[e.Int=2]=\"Int\",e[e.Float=3]=\"Float\",e[e.Binary=4]=\"Binary\",e[e.Utf8=5]=\"Utf8\",e[e.Bool=6]=\"Bool\",e[e.Decimal=7]=\"Decimal\",e[e.Date=8]=\"Date\",e[e.Time=9]=\"Time\",e[e.Timestamp=10]=\"Timestamp\",e[e.Interval=11]=\"Interval\",e[e.List=12]=\"List\",e[e.Struct=13]=\"Struct\",e[e.Union=14]=\"Union\",e[e.FixedSizeBinary=15]=\"FixedSizeBinary\",e[e.FixedSizeList=16]=\"FixedSizeList\",e[e.Map=17]=\"Map\",e[e.Duration=18]=\"Duration\",e[e.LargeBinary=19]=\"LargeBinary\",e[e.LargeUtf8=20]=\"LargeUtf8\",e[e.Dictionary=-1]=\"Dictionary\",e[e.Int8=-2]=\"Int8\",e[e.Int16=-3]=\"Int16\",e[e.Int32=-4]=\"Int32\",e[e.Int64=-5]=\"Int64\",e[e.Uint8=-6]=\"Uint8\",e[e.Uint16=-7]=\"Uint16\",e[e.Uint32=-8]=\"Uint32\",e[e.Uint64=-9]=\"Uint64\",e[e.Float16=-10]=\"Float16\",e[e.Float32=-11]=\"Float32\",e[e.Float64=-12]=\"Float64\",e[e.DateDay=-13]=\"DateDay\",e[e.DateMillisecond=-14]=\"DateMillisecond\",e[e.TimestampSecond=-15]=\"TimestampSecond\",e[e.TimestampMillisecond=-16]=\"TimestampMillisecond\",e[e.TimestampMicrosecond=-17]=\"TimestampMicrosecond\",e[e.TimestampNanosecond=-18]=\"TimestampNanosecond\",e[e.TimeSecond=-19]=\"TimeSecond\",e[e.TimeMillisecond=-20]=\"TimeMillisecond\",e[e.TimeMicrosecond=-21]=\"TimeMicrosecond\",e[e.TimeNanosecond=-22]=\"TimeNanosecond\",e[e.DenseUnion=-23]=\"DenseUnion\",e[e.SparseUnion=-24]=\"SparseUnion\",e[e.IntervalDayTime=-25]=\"IntervalDayTime\",e[e.IntervalYearMonth=-26]=\"IntervalYearMonth\",e[e.DurationSecond=-27]=\"DurationSecond\",e[e.DurationMillisecond=-28]=\"DurationMillisecond\",e[e.DurationMicrosecond=-29]=\"DurationMicrosecond\",e[e.DurationNanosecond=-30]=\"DurationNanosecond\"})(Rt||(Rt={}));var Ci;(function(e){e[e.OFFSET=0]=\"OFFSET\",e[e.DATA=1]=\"DATA\",e[e.VALIDITY=2]=\"VALIDITY\",e[e.TYPE=3]=\"TYPE\"})(Ci||(Ci={}));var cO={};dA(cO,{clampIndex:()=>tht,clampRange:()=>Vw,createElementComparator:()=>um});var HD={};dA(HD,{valueToString:()=>Jh});function Jh(e){if(e===null)return\"null\";if(e===void 0)return\"undefined\";switch(typeof e){case\"number\":return`${e}`;case\"bigint\":return`${e}`;case\"string\":return`\"${e}\"`}return typeof e[Symbol.toPrimitive]==\"function\"?e[Symbol.toPrimitive](\"string\"):ArrayBuffer.isView(e)?e instanceof BigInt64Array||e instanceof BigUint64Array?`[${[...e].map(t=>Jh(t))}]`:`[${e}]`:ArrayBuffer.isView(e)?`[${e}]`:JSON.stringify(e,(t,r)=>typeof r==\"bigint\"?`${r}`:r)}var ZD={};dA(ZD,{BN:()=>Cw,bigNumToBigInt:()=>u9,bigNumToString:()=>iv,isArrowBigNumSymbol:()=>l9});var l9=Symbol.for(\"isArrowBigNum\");function tf(e,...t){return t.length===0?Object.setPrototypeOf(Ai(this.TypedArray,e),this.constructor.prototype):Object.setPrototypeOf(new this.TypedArray(e,...t),this.constructor.prototype)}tf.prototype[l9]=!0;tf.prototype.toJSON=function(){return`\"${iv(this)}\"`};tf.prototype.valueOf=function(){return c9(this)};tf.prototype.toString=function(){return iv(this)};tf.prototype[Symbol.toPrimitive]=function(e=\"default\"){switch(e){case\"number\":return c9(this);case\"string\":return iv(this);case\"default\":return u9(this)}return iv(this)};function ev(...e){return tf.apply(this,e)}function rv(...e){return tf.apply(this,e)}function Iw(...e){return tf.apply(this,e)}Object.setPrototypeOf(ev.prototype,Object.create(Int32Array.prototype));Object.setPrototypeOf(rv.prototype,Object.create(Uint32Array.prototype));Object.setPrototypeOf(Iw.prototype,Object.create(Uint32Array.prototype));Object.assign(ev.prototype,tf.prototype,{constructor:ev,signed:!0,TypedArray:Int32Array,BigIntArray:BigInt64Array});Object.assign(rv.prototype,tf.prototype,{constructor:rv,signed:!1,TypedArray:Uint32Array,BigIntArray:BigUint64Array});Object.assign(Iw.prototype,tf.prototype,{constructor:Iw,signed:!0,TypedArray:Uint32Array,BigIntArray:BigUint64Array});function c9(e){let{buffer:t,byteOffset:r,length:i,signed:s}=e,n=new BigUint64Array(t,r,i),o=s&&n.at(-1)&BigInt(1)<{if(e.byteLength===8)return`${new e.BigIntArray(e.buffer,e.byteOffset,1)[0]}`;if(!e.signed)return qD(e);let t=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);if(new Int16Array([t.at(-1)])[0]>=0)return qD(e);t=t.slice();let i=1;for(let n=0;ne.byteLength===8?new e.BigIntArray(e.buffer,e.byteOffset,1)[0]:iv(e);function qD(e){let t=\"\",r=new Uint32Array(2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),s=new Uint32Array((i=new Uint16Array(i).reverse()).buffer),n=-1,o=i.length-1;do{for(r[0]=i[n=0];nNumber.MAX_SAFE_INTEGER))throw new TypeError(`${e} is not safe to convert to a number.`);return Number(e)}var h9,f9,d9,p9,A9,m9,g9,_9,y9,v9,x9,b9,w9,S9,T9,M9,E9,P9,I9,C9,L9,k9,Ne=class e{static isNull(t){return t?.typeId===Rt.Null}static isInt(t){return t?.typeId===Rt.Int}static isFloat(t){return t?.typeId===Rt.Float}static isBinary(t){return t?.typeId===Rt.Binary}static isLargeBinary(t){return t?.typeId===Rt.LargeBinary}static isUtf8(t){return t?.typeId===Rt.Utf8}static isLargeUtf8(t){return t?.typeId===Rt.LargeUtf8}static isBool(t){return t?.typeId===Rt.Bool}static isDecimal(t){return t?.typeId===Rt.Decimal}static isDate(t){return t?.typeId===Rt.Date}static isTime(t){return t?.typeId===Rt.Time}static isTimestamp(t){return t?.typeId===Rt.Timestamp}static isInterval(t){return t?.typeId===Rt.Interval}static isDuration(t){return t?.typeId===Rt.Duration}static isList(t){return t?.typeId===Rt.List}static isStruct(t){return t?.typeId===Rt.Struct}static isUnion(t){return t?.typeId===Rt.Union}static isFixedSizeBinary(t){return t?.typeId===Rt.FixedSizeBinary}static isFixedSizeList(t){return t?.typeId===Rt.FixedSizeList}static isMap(t){return t?.typeId===Rt.Map}static isDictionary(t){return t?.typeId===Rt.Dictionary}static isDenseUnion(t){return e.isUnion(t)&&t.mode===Mn.Dense}static isSparseUnion(t){return e.isUnion(t)&&t.mode===Mn.Sparse}constructor(t){this.typeId=t}};h9=Symbol.toStringTag;Ne[h9]=(e=>(e.children=null,e.ArrayType=Array,e.OffsetArrayType=Int32Array,e[Symbol.toStringTag]=\"DataType\"))(Ne.prototype);var ea=class extends Ne{constructor(){super(Rt.Null)}toString(){return\"Null\"}};f9=Symbol.toStringTag;ea[f9]=(e=>e[Symbol.toStringTag]=\"Null\")(ea.prototype);var is=class extends Ne{constructor(t,r){super(Rt.Int),this.isSigned=t,this.bitWidth=r}get ArrayType(){switch(this.bitWidth){case 8:return this.isSigned?Int8Array:Uint8Array;case 16:return this.isSigned?Int16Array:Uint16Array;case 32:return this.isSigned?Int32Array:Uint32Array;case 64:return this.isSigned?BigInt64Array:BigUint64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`${this.isSigned?\"I\":\"Ui\"}nt${this.bitWidth}`}};d9=Symbol.toStringTag;is[d9]=(e=>(e.isSigned=null,e.bitWidth=null,e[Symbol.toStringTag]=\"Int\"))(is.prototype);var Lw=class extends is{constructor(){super(!0,8)}get ArrayType(){return Int8Array}},kw=class extends is{constructor(){super(!0,16)}get ArrayType(){return Int16Array}},ef=class extends is{constructor(){super(!0,32)}get ArrayType(){return Int32Array}},Rw=class extends is{constructor(){super(!0,64)}get ArrayType(){return BigInt64Array}},Dw=class extends is{constructor(){super(!1,8)}get ArrayType(){return Uint8Array}},Ow=class extends is{constructor(){super(!1,16)}get ArrayType(){return Uint16Array}},Bw=class extends is{constructor(){super(!1,32)}get ArrayType(){return Uint32Array}},Fw=class extends is{constructor(){super(!1,64)}get ArrayType(){return BigUint64Array}};Object.defineProperty(Lw.prototype,\"ArrayType\",{value:Int8Array});Object.defineProperty(kw.prototype,\"ArrayType\",{value:Int16Array});Object.defineProperty(ef.prototype,\"ArrayType\",{value:Int32Array});Object.defineProperty(Rw.prototype,\"ArrayType\",{value:BigInt64Array});Object.defineProperty(Dw.prototype,\"ArrayType\",{value:Uint8Array});Object.defineProperty(Ow.prototype,\"ArrayType\",{value:Uint16Array});Object.defineProperty(Bw.prototype,\"ArrayType\",{value:Uint32Array});Object.defineProperty(Fw.prototype,\"ArrayType\",{value:BigUint64Array});var lo=class extends Ne{constructor(t){super(Rt.Float),this.precision=t}get ArrayType(){switch(this.precision){case qi.HALF:return Uint16Array;case qi.SINGLE:return Float32Array;case qi.DOUBLE:return Float64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`Float${this.precision<<5||16}`}};p9=Symbol.toStringTag;lo[p9]=(e=>(e.precision=null,e[Symbol.toStringTag]=\"Float\"))(lo.prototype);var zw=class extends lo{constructor(){super(qi.HALF)}},Nw=class extends lo{constructor(){super(qi.SINGLE)}},nv=class extends lo{constructor(){super(qi.DOUBLE)}};Object.defineProperty(zw.prototype,\"ArrayType\",{value:Uint16Array});Object.defineProperty(Nw.prototype,\"ArrayType\",{value:Float32Array});Object.defineProperty(nv.prototype,\"ArrayType\",{value:Float64Array});var Uu=class extends Ne{constructor(){super(Rt.Binary)}toString(){return\"Binary\"}};A9=Symbol.toStringTag;Uu[A9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Binary\"))(Uu.prototype);var ed=class extends Ne{constructor(){super(Rt.LargeBinary)}toString(){return\"LargeBinary\"}};m9=Symbol.toStringTag;ed[m9]=(e=>(e.ArrayType=Uint8Array,e.OffsetArrayType=BigInt64Array,e[Symbol.toStringTag]=\"LargeBinary\"))(ed.prototype);var Vu=class extends Ne{constructor(){super(Rt.Utf8)}toString(){return\"Utf8\"}};g9=Symbol.toStringTag;Vu[g9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Utf8\"))(Vu.prototype);var rd=class extends Ne{constructor(){super(Rt.LargeUtf8)}toString(){return\"LargeUtf8\"}};_9=Symbol.toStringTag;rd[_9]=(e=>(e.ArrayType=Uint8Array,e.OffsetArrayType=BigInt64Array,e[Symbol.toStringTag]=\"LargeUtf8\"))(rd.prototype);var oc=class extends Ne{constructor(){super(Rt.Bool)}toString(){return\"Bool\"}};y9=Symbol.toStringTag;oc[y9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Bool\"))(oc.prototype);var ju=class extends Ne{constructor(t,r,i=128){super(Rt.Decimal),this.scale=t,this.precision=r,this.bitWidth=i}toString(){return`Decimal[${this.precision}e${this.scale>0?\"+\":\"\"}${this.scale}]`}};v9=Symbol.toStringTag;ju[v9]=(e=>(e.scale=null,e.precision=null,e.ArrayType=Uint32Array,e[Symbol.toStringTag]=\"Decimal\"))(ju.prototype);var Gu=class extends Ne{constructor(t){super(Rt.Date),this.unit=t}toString(){return`Date${(this.unit+1)*32}<${Xs[this.unit]}>`}};x9=Symbol.toStringTag;Gu[x9]=(e=>(e.unit=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Date\"))(Gu.prototype);var ac=class extends Ne{constructor(t,r){super(Rt.Time),this.unit=t,this.bitWidth=r}toString(){return`Time${this.bitWidth}<${pr[this.unit]}>`}get ArrayType(){switch(this.bitWidth){case 32:return Int32Array;case 64:return BigInt64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}};b9=Symbol.toStringTag;ac[b9]=(e=>(e.unit=null,e.bitWidth=null,e[Symbol.toStringTag]=\"Time\"))(ac.prototype);var Wu=class extends Ne{constructor(t,r){super(Rt.Timestamp),this.unit=t,this.timezone=r}toString(){return`Timestamp<${pr[this.unit]}${this.timezone?`, ${this.timezone}`:\"\"}>`}};w9=Symbol.toStringTag;Wu[w9]=(e=>(e.unit=null,e.timezone=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Timestamp\"))(Wu.prototype);var Hu=class extends Ne{constructor(t){super(Rt.Interval),this.unit=t}toString(){return`Interval<${Io[this.unit]}>`}};S9=Symbol.toStringTag;Hu[S9]=(e=>(e.unit=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Interval\"))(Hu.prototype);var qu=class extends Ne{constructor(t){super(Rt.Duration),this.unit=t}toString(){return`Duration<${pr[this.unit]}>`}};T9=Symbol.toStringTag;qu[T9]=(e=>(e.unit=null,e.ArrayType=BigInt64Array,e[Symbol.toStringTag]=\"Duration\"))(qu.prototype);var lc=class extends Ne{constructor(t){super(Rt.List),this.children=[t]}toString(){return`List<${this.valueType}>`}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}};M9=Symbol.toStringTag;lc[M9]=(e=>(e.children=null,e[Symbol.toStringTag]=\"List\"))(lc.prototype);var un=class extends Ne{constructor(t){super(Rt.Struct),this.children=t}toString(){return`Struct<{${this.children.map(t=>`${t.name}:${t.type}`).join(\", \")}}>`}};E9=Symbol.toStringTag;un[E9]=(e=>(e.children=null,e[Symbol.toStringTag]=\"Struct\"))(un.prototype);var cc=class extends Ne{constructor(t,r,i){super(Rt.Union),this.mode=t,this.children=i,this.typeIds=r=Int32Array.from(r),this.typeIdToChildIndex=r.reduce((s,n,o)=>(s[n]=o)&&s||s,Object.create(null))}toString(){return`${this[Symbol.toStringTag]}<${this.children.map(t=>`${t.type}`).join(\" | \")}>`}};P9=Symbol.toStringTag;cc[P9]=(e=>(e.mode=null,e.typeIds=null,e.children=null,e.typeIdToChildIndex=null,e.ArrayType=Int8Array,e[Symbol.toStringTag]=\"Union\"))(cc.prototype);var Zu=class extends Ne{constructor(t){super(Rt.FixedSizeBinary),this.byteWidth=t}toString(){return`FixedSizeBinary[${this.byteWidth}]`}};I9=Symbol.toStringTag;Zu[I9]=(e=>(e.byteWidth=null,e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"FixedSizeBinary\"))(Zu.prototype);var Il=class extends Ne{constructor(t,r){super(Rt.FixedSizeList),this.listSize=t,this.children=[r]}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}toString(){return`FixedSizeList[${this.listSize}]<${this.valueType}>`}};C9=Symbol.toStringTag;Il[C9]=(e=>(e.children=null,e.listSize=null,e[Symbol.toStringTag]=\"FixedSizeList\"))(Il.prototype);var uc=class extends Ne{constructor(t,r=!1){var i,s,n;if(super(Rt.Map),this.children=[t],this.keysSorted=r,t&&(t.name=\"entries\",!((i=t?.type)===null||i===void 0)&&i.children)){let o=(s=t?.type)===null||s===void 0?void 0:s.children[0];o&&(o.name=\"key\");let c=(n=t?.type)===null||n===void 0?void 0:n.children[1];c&&(c.name=\"value\")}}get keyType(){return this.children[0].type.children[0].type}get valueType(){return this.children[0].type.children[1].type}get childType(){return this.children[0].type}toString(){return`Map<{${this.children[0].type.children.map(t=>`${t.name}:${t.type}`).join(\", \")}}>`}};L9=Symbol.toStringTag;uc[L9]=(e=>(e.children=null,e.keysSorted=null,e[Symbol.toStringTag]=\"Map_\"))(uc.prototype);var put=(e=>()=>++e)(-1),hc=class extends Ne{constructor(t,r,i,s){super(Rt.Dictionary),this.indices=r,this.dictionary=t,this.isOrdered=s||!1,this.id=i==null?put():ms(i)}get children(){return this.dictionary.children}get valueType(){return this.dictionary}get ArrayType(){return this.dictionary.ArrayType}toString(){return`Dictionary<${this.indices}, ${this.dictionary}>`}};k9=Symbol.toStringTag;hc[k9]=(e=>(e.id=null,e.indices=null,e.isOrdered=null,e.dictionary=null,e[Symbol.toStringTag]=\"Dictionary\"))(hc.prototype);function iu(e){let t=e;switch(e.typeId){case Rt.Decimal:return e.bitWidth/32;case Rt.Timestamp:return 2;case Rt.Date:return 1+t.unit;case Rt.Interval:return 1+t.unit;case Rt.FixedSizeList:return t.listSize;case Rt.FixedSizeBinary:return t.byteWidth;default:return 1}}var Mr=class{visitMany(t,...r){return t.map((i,s)=>this.visit(i,...r.map(n=>n[s])))}visit(...t){return this.getVisitFn(t[0],!1).apply(this,t)}getVisitFn(t,r=!0){return Aut(this,t,r)}getVisitFnByTypeId(t,r=!0){return sv(this,t,r)}visitNull(t,...r){return null}visitBool(t,...r){return null}visitInt(t,...r){return null}visitFloat(t,...r){return null}visitUtf8(t,...r){return null}visitLargeUtf8(t,...r){return null}visitBinary(t,...r){return null}visitLargeBinary(t,...r){return null}visitFixedSizeBinary(t,...r){return null}visitDate(t,...r){return null}visitTimestamp(t,...r){return null}visitTime(t,...r){return null}visitDecimal(t,...r){return null}visitList(t,...r){return null}visitStruct(t,...r){return null}visitUnion(t,...r){return null}visitDictionary(t,...r){return null}visitInterval(t,...r){return null}visitDuration(t,...r){return null}visitFixedSizeList(t,...r){return null}visitMap(t,...r){return null}};function Aut(e,t,r=!0){return typeof t==\"number\"?sv(e,t,r):typeof t==\"string\"&&t in Rt?sv(e,Rt[t],r):t&&t instanceof Ne?sv(e,R9(t),r):t?.type&&t.type instanceof Ne?sv(e,R9(t.type),r):sv(e,Rt.NONE,r)}function sv(e,t,r=!0){let i=null;switch(t){case Rt.Null:i=e.visitNull;break;case Rt.Bool:i=e.visitBool;break;case Rt.Int:i=e.visitInt;break;case Rt.Int8:i=e.visitInt8||e.visitInt;break;case Rt.Int16:i=e.visitInt16||e.visitInt;break;case Rt.Int32:i=e.visitInt32||e.visitInt;break;case Rt.Int64:i=e.visitInt64||e.visitInt;break;case Rt.Uint8:i=e.visitUint8||e.visitInt;break;case Rt.Uint16:i=e.visitUint16||e.visitInt;break;case Rt.Uint32:i=e.visitUint32||e.visitInt;break;case Rt.Uint64:i=e.visitUint64||e.visitInt;break;case Rt.Float:i=e.visitFloat;break;case Rt.Float16:i=e.visitFloat16||e.visitFloat;break;case Rt.Float32:i=e.visitFloat32||e.visitFloat;break;case Rt.Float64:i=e.visitFloat64||e.visitFloat;break;case Rt.Utf8:i=e.visitUtf8;break;case Rt.LargeUtf8:i=e.visitLargeUtf8;break;case Rt.Binary:i=e.visitBinary;break;case Rt.LargeBinary:i=e.visitLargeBinary;break;case Rt.FixedSizeBinary:i=e.visitFixedSizeBinary;break;case Rt.Date:i=e.visitDate;break;case Rt.DateDay:i=e.visitDateDay||e.visitDate;break;case Rt.DateMillisecond:i=e.visitDateMillisecond||e.visitDate;break;case Rt.Timestamp:i=e.visitTimestamp;break;case Rt.TimestampSecond:i=e.visitTimestampSecond||e.visitTimestamp;break;case Rt.TimestampMillisecond:i=e.visitTimestampMillisecond||e.visitTimestamp;break;case Rt.TimestampMicrosecond:i=e.visitTimestampMicrosecond||e.visitTimestamp;break;case Rt.TimestampNanosecond:i=e.visitTimestampNanosecond||e.visitTimestamp;break;case Rt.Time:i=e.visitTime;break;case Rt.TimeSecond:i=e.visitTimeSecond||e.visitTime;break;case Rt.TimeMillisecond:i=e.visitTimeMillisecond||e.visitTime;break;case Rt.TimeMicrosecond:i=e.visitTimeMicrosecond||e.visitTime;break;case Rt.TimeNanosecond:i=e.visitTimeNanosecond||e.visitTime;break;case Rt.Decimal:i=e.visitDecimal;break;case Rt.List:i=e.visitList;break;case Rt.Struct:i=e.visitStruct;break;case Rt.Union:i=e.visitUnion;break;case Rt.DenseUnion:i=e.visitDenseUnion||e.visitUnion;break;case Rt.SparseUnion:i=e.visitSparseUnion||e.visitUnion;break;case Rt.Dictionary:i=e.visitDictionary;break;case Rt.Interval:i=e.visitInterval;break;case Rt.IntervalDayTime:i=e.visitIntervalDayTime||e.visitInterval;break;case Rt.IntervalYearMonth:i=e.visitIntervalYearMonth||e.visitInterval;break;case Rt.Duration:i=e.visitDuration;break;case Rt.DurationSecond:i=e.visitDurationSecond||e.visitDuration;break;case Rt.DurationMillisecond:i=e.visitDurationMillisecond||e.visitDuration;break;case Rt.DurationMicrosecond:i=e.visitDurationMicrosecond||e.visitDuration;break;case Rt.DurationNanosecond:i=e.visitDurationNanosecond||e.visitDuration;break;case Rt.FixedSizeList:i=e.visitFixedSizeList;break;case Rt.Map:i=e.visitMap;break}if(typeof i==\"function\")return i;if(!r)return()=>null;throw new Error(`Unrecognized type '${Rt[t]}'`)}function R9(e){switch(e.typeId){case Rt.Null:return Rt.Null;case Rt.Int:{let{bitWidth:t,isSigned:r}=e;switch(t){case 8:return r?Rt.Int8:Rt.Uint8;case 16:return r?Rt.Int16:Rt.Uint16;case 32:return r?Rt.Int32:Rt.Uint32;case 64:return r?Rt.Int64:Rt.Uint64}return Rt.Int}case Rt.Float:switch(e.precision){case qi.HALF:return Rt.Float16;case qi.SINGLE:return Rt.Float32;case qi.DOUBLE:return Rt.Float64}return Rt.Float;case Rt.Binary:return Rt.Binary;case Rt.LargeBinary:return Rt.LargeBinary;case Rt.Utf8:return Rt.Utf8;case Rt.LargeUtf8:return Rt.LargeUtf8;case Rt.Bool:return Rt.Bool;case Rt.Decimal:return Rt.Decimal;case Rt.Time:switch(e.unit){case pr.SECOND:return Rt.TimeSecond;case pr.MILLISECOND:return Rt.TimeMillisecond;case pr.MICROSECOND:return Rt.TimeMicrosecond;case pr.NANOSECOND:return Rt.TimeNanosecond}return Rt.Time;case Rt.Timestamp:switch(e.unit){case pr.SECOND:return Rt.TimestampSecond;case pr.MILLISECOND:return Rt.TimestampMillisecond;case pr.MICROSECOND:return Rt.TimestampMicrosecond;case pr.NANOSECOND:return Rt.TimestampNanosecond}return Rt.Timestamp;case Rt.Date:switch(e.unit){case Xs.DAY:return Rt.DateDay;case Xs.MILLISECOND:return Rt.DateMillisecond}return Rt.Date;case Rt.Interval:switch(e.unit){case Io.DAY_TIME:return Rt.IntervalDayTime;case Io.YEAR_MONTH:return Rt.IntervalYearMonth}return Rt.Interval;case Rt.Duration:switch(e.unit){case pr.SECOND:return Rt.DurationSecond;case pr.MILLISECOND:return Rt.DurationMillisecond;case pr.MICROSECOND:return Rt.DurationMicrosecond;case pr.NANOSECOND:return Rt.DurationNanosecond}return Rt.Duration;case Rt.Map:return Rt.Map;case Rt.List:return Rt.List;case Rt.Struct:return Rt.Struct;case Rt.Union:switch(e.mode){case Mn.Dense:return Rt.DenseUnion;case Mn.Sparse:return Rt.SparseUnion}return Rt.Union;case Rt.FixedSizeBinary:return Rt.FixedSizeBinary;case Rt.FixedSizeList:return Rt.FixedSizeList;case Rt.Dictionary:return Rt.Dictionary}throw new Error(`Unrecognized type '${Rt[e.typeId]}'`)}Mr.prototype.visitInt8=null;Mr.prototype.visitInt16=null;Mr.prototype.visitInt32=null;Mr.prototype.visitInt64=null;Mr.prototype.visitUint8=null;Mr.prototype.visitUint16=null;Mr.prototype.visitUint32=null;Mr.prototype.visitUint64=null;Mr.prototype.visitFloat16=null;Mr.prototype.visitFloat32=null;Mr.prototype.visitFloat64=null;Mr.prototype.visitDateDay=null;Mr.prototype.visitDateMillisecond=null;Mr.prototype.visitTimestampSecond=null;Mr.prototype.visitTimestampMillisecond=null;Mr.prototype.visitTimestampMicrosecond=null;Mr.prototype.visitTimestampNanosecond=null;Mr.prototype.visitTimeSecond=null;Mr.prototype.visitTimeMillisecond=null;Mr.prototype.visitTimeMicrosecond=null;Mr.prototype.visitTimeNanosecond=null;Mr.prototype.visitDenseUnion=null;Mr.prototype.visitSparseUnion=null;Mr.prototype.visitIntervalDayTime=null;Mr.prototype.visitIntervalYearMonth=null;Mr.prototype.visitDuration=null;Mr.prototype.visitDurationSecond=null;Mr.prototype.visitDurationMillisecond=null;Mr.prototype.visitDurationMicrosecond=null;Mr.prototype.visitDurationNanosecond=null;var YD={};dA(YD,{float64ToUint16:()=>Uw,uint16ToFloat64:()=>SP});var D9=new Float64Array(1),ov=new Uint32Array(D9.buffer);function SP(e){let t=(e&31744)>>10,r=(e&1023)/1024,i=Math.pow(-1,(e&32768)>>15);switch(t){case 31:return i*(r?Number.NaN:1/0);case 0:return i*(r?6103515625e-14*r:0)}return i*Math.pow(2,t-15)*(1+r)}function Uw(e){if(e!==e)return 32256;D9[0]=e;let t=(ov[1]&2147483648)>>16&65535,r=ov[1]&2146435072,i=0;return r>=1089470464?ov[0]>0?r=31744:(r=(r&2080374784)>>16,i=(ov[1]&1048575)>>10):r<=1056964608?(i=1048576+(ov[1]&1048575),i=1048576+(i<<(r>>20)-998)>>21,r=0):(r=r-1056964608>>10,i=(ov[1]&1048575)+512>>10),t|r|i&65535}var kr=class extends Mr{};function Wr(e){return(t,r,i)=>{if(t.setValid(r,i!=null))return e(t,r,i)}}var mut=(e,t,r)=>{e[t]=Math.trunc(r/864e5)},QD=(e,t,r)=>{e[t]=Math.trunc(r%4294967296),e[t+1]=Math.trunc(r/4294967296)},gut=(e,t,r)=>{e[t]=Math.trunc(r*1e3%4294967296),e[t+1]=Math.trunc(r*1e3/4294967296)},_ut=(e,t,r)=>{e[t]=Math.trunc(r*1e6%4294967296),e[t+1]=Math.trunc(r*1e6/4294967296)},O9=(e,t,r,i)=>{if(r+1{let s=e+r;i?t[s>>3]|=1<>3]&=~(1<{e[t]=r},$D=({values:e},t,r)=>{e[t]=r},B9=({values:e},t,r)=>{e[t]=Uw(r)},vut=(e,t,r)=>{switch(e.type.precision){case qi.HALF:return B9(e,t,r);case qi.SINGLE:case qi.DOUBLE:return $D(e,t,r)}},TP=({values:e},t,r)=>{mut(e,t,r.valueOf())},MP=({values:e},t,r)=>{QD(e,t*2,r.valueOf())},XD=({stride:e,values:t},r,i)=>{t.set(i.subarray(0,e),e*r)},F9=({values:e,valueOffsets:t},r,i)=>O9(e,t,r,i),z9=({values:e,valueOffsets:t},r,i)=>O9(e,t,r,$f(i)),KD=(e,t,r)=>{e.type.unit===Xs.DAY?TP(e,t,r):MP(e,t,r)},EP=({values:e},t,r)=>QD(e,t*2,r/1e3),PP=({values:e},t,r)=>QD(e,t*2,r),IP=({values:e},t,r)=>gut(e,t*2,r),CP=({values:e},t,r)=>_ut(e,t*2,r),JD=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return EP(e,t,r);case pr.MILLISECOND:return PP(e,t,r);case pr.MICROSECOND:return IP(e,t,r);case pr.NANOSECOND:return CP(e,t,r)}},LP=({values:e},t,r)=>{e[t]=r},kP=({values:e},t,r)=>{e[t]=r},RP=({values:e},t,r)=>{e[t]=r},DP=({values:e},t,r)=>{e[t]=r},tO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return LP(e,t,r);case pr.MILLISECOND:return kP(e,t,r);case pr.MICROSECOND:return RP(e,t,r);case pr.NANOSECOND:return DP(e,t,r)}},eO=({values:e,stride:t},r,i)=>{e.set(i.subarray(0,t),t*r)},xut=(e,t,r)=>{let i=e.children[0],s=e.valueOffsets,n=xa.getVisitFn(i);if(Array.isArray(r))for(let o=-1,c=s[t],f=s[t+1];c{let i=e.children[0],{valueOffsets:s}=e,n=xa.getVisitFn(i),{[t]:o,[t+1]:c}=s,f=r instanceof Map?r.entries():Object.entries(r);for(let _ of f)if(n(i,o,_),++o>=c)break},wut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t[n]),Sut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t.get(n)),Tut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t.get(s.name)),Mut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t[s.name]),Eut=(e,t,r)=>{let i=e.type.children.map(n=>xa.getVisitFn(n.type)),s=r instanceof Map?Tut(t,r):r instanceof wr?Sut(t,r):Array.isArray(r)?wut(t,r):Mut(t,r);e.type.children.forEach((n,o)=>s(i[o],e.children[o],n,o))},Put=(e,t,r)=>{e.type.mode===Mn.Dense?N9(e,t,r):U9(e,t,r)},N9=(e,t,r)=>{let i=e.type.typeIdToChildIndex[e.typeIds[t]],s=e.children[i];xa.visit(s,e.valueOffsets[t],r)},U9=(e,t,r)=>{let i=e.type.typeIdToChildIndex[e.typeIds[t]],s=e.children[i];xa.visit(s,t,r)},Iut=(e,t,r)=>{var i;(i=e.dictionary)===null||i===void 0||i.set(e.values[t],r)},rO=(e,t,r)=>{e.type.unit===Io.DAY_TIME?OP(e,t,r):BP(e,t,r)},OP=({values:e},t,r)=>{e.set(r.subarray(0,2),2*t)},BP=({values:e},t,r)=>{e[t]=r[0]*12+r[1]%12},FP=({values:e},t,r)=>{e[t]=r},zP=({values:e},t,r)=>{e[t]=r},NP=({values:e},t,r)=>{e[t]=r},UP=({values:e},t,r)=>{e[t]=r},iO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return FP(e,t,r);case pr.MILLISECOND:return zP(e,t,r);case pr.MICROSECOND:return NP(e,t,r);case pr.NANOSECOND:return UP(e,t,r)}},Cut=(e,t,r)=>{let{stride:i}=e,s=e.children[0],n=xa.getVisitFn(s);if(Array.isArray(r))for(let o=-1,c=t*i;++o`${Jh(t)}: ${Jh(r)}`).join(\", \")}}`}[Symbol.for(\"nodejs.util.inspect.custom\")](){return this.toString()}[Symbol.iterator](){return new nO(this[rf],this[av])}},nO=class{constructor(t,r){this.childIndex=0,this.children=t.children,this.rowIndex=r,this.childFields=t.type.children,this.numChildren=this.childFields.length}[Symbol.iterator](){return this}next(){let t=this.childIndex;return tr.name)}has(t,r){return t[rf].type.children.findIndex(i=>i.name===r)!==-1}getOwnPropertyDescriptor(t,r){if(t[rf].type.children.findIndex(i=>i.name===r)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(t,r){if(Reflect.has(t,r))return t[r];let i=t[rf].type.children.findIndex(s=>s.name===r);if(i!==-1){let s=co.visit(t[rf].children[i],t[av]);return Reflect.set(t,r,s),s}}set(t,r,i){let s=t[rf].type.children.findIndex(n=>n.name===r);return s!==-1?(xa.visit(t[rf].children[s],t[av],i),Reflect.set(t,r,i)):Reflect.has(t,r)||typeof r==\"symbol\"?Reflect.set(t,r,i):!1}};var Er=class extends Mr{};function zr(e){return(t,r)=>t.getValid(r)?e(t,r):null}var Lut=(e,t)=>864e5*e[t],oO=(e,t)=>4294967296*e[t+1]+(e[t]>>>0),kut=(e,t)=>4294967296*(e[t+1]/1e3)+(e[t]>>>0)/1e3,Rut=(e,t)=>4294967296*(e[t+1]/1e6)+(e[t]>>>0)/1e6,V9=e=>new Date(e),Dut=(e,t)=>V9(Lut(e,t)),Out=(e,t)=>V9(oO(e,t)),But=(e,t)=>null,j9=(e,t,r)=>{if(r+1>=t.length)return null;let i=ms(t[r]),s=ms(t[r+1]);return e.subarray(i,s)},Fut=({offset:e,values:t},r)=>{let i=e+r;return(t[i>>3]&1<Dut(e,t),W9=({values:e},t)=>Out(e,t*2),cm=({stride:e,values:t},r)=>t[e*r],zut=({stride:e,values:t},r)=>SP(t[e*r]),H9=({values:e},t)=>e[t],Nut=({stride:e,values:t},r)=>t.subarray(e*r,e*(r+1)),q9=({values:e,valueOffsets:t},r)=>j9(e,t,r),Z9=({values:e,valueOffsets:t},r)=>{let i=j9(e,t,r);return i!==null?pw(i):null},Uut=({values:e},t)=>e[t],Vut=({type:e,values:t},r)=>e.precision!==qi.HALF?t[r]:SP(t[r]),jut=(e,t)=>e.type.unit===Xs.DAY?G9(e,t):W9(e,t),Y9=({values:e},t)=>1e3*oO(e,t*2),Q9=({values:e},t)=>oO(e,t*2),$9=({values:e},t)=>kut(e,t*2),X9=({values:e},t)=>Rut(e,t*2),Gut=(e,t)=>{switch(e.type.unit){case pr.SECOND:return Y9(e,t);case pr.MILLISECOND:return Q9(e,t);case pr.MICROSECOND:return $9(e,t);case pr.NANOSECOND:return X9(e,t)}},K9=({values:e},t)=>e[t],J9=({values:e},t)=>e[t],tW=({values:e},t)=>e[t],eW=({values:e},t)=>e[t],Wut=(e,t)=>{switch(e.type.unit){case pr.SECOND:return K9(e,t);case pr.MILLISECOND:return J9(e,t);case pr.MICROSECOND:return tW(e,t);case pr.NANOSECOND:return eW(e,t)}},Hut=({values:e,stride:t},r)=>Cw.decimal(e.subarray(t*r,t*(r+1))),qut=(e,t)=>{let{valueOffsets:r,stride:i,children:s}=e,{[t*i]:n,[t*i+1]:o}=r,f=s[0].slice(n,o-n);return new wr([f])},Zut=(e,t)=>{let{valueOffsets:r,children:i}=e,{[t]:s,[t+1]:n}=r,o=i[0];return new id(o.slice(s,n-s))},Yut=(e,t)=>new lm(e,t),Qut=(e,t)=>e.type.mode===Mn.Dense?rW(e,t):iW(e,t),rW=(e,t)=>{let r=e.type.typeIdToChildIndex[e.typeIds[t]],i=e.children[r];return co.visit(i,e.valueOffsets[t])},iW=(e,t)=>{let r=e.type.typeIdToChildIndex[e.typeIds[t]],i=e.children[r];return co.visit(i,t)},$ut=(e,t)=>{var r;return(r=e.dictionary)===null||r===void 0?void 0:r.get(e.values[t])},Xut=(e,t)=>e.type.unit===Io.DAY_TIME?nW(e,t):sW(e,t),nW=({values:e},t)=>e.subarray(2*t,2*(t+1)),sW=({values:e},t)=>{let r=e[t],i=new Int32Array(2);return i[0]=Math.trunc(r/12),i[1]=Math.trunc(r%12),i},oW=({values:e},t)=>e[t],aW=({values:e},t)=>e[t],lW=({values:e},t)=>e[t],cW=({values:e},t)=>e[t],Kut=(e,t)=>{switch(e.type.unit){case pr.SECOND:return oW(e,t);case pr.MILLISECOND:return aW(e,t);case pr.MICROSECOND:return lW(e,t);case pr.NANOSECOND:return cW(e,t)}},Jut=(e,t)=>{let{stride:r,children:i}=e,n=i[0].slice(t*r,r);return new wr([n])};Er.prototype.visitNull=zr(But);Er.prototype.visitBool=zr(Fut);Er.prototype.visitInt=zr(Uut);Er.prototype.visitInt8=zr(cm);Er.prototype.visitInt16=zr(cm);Er.prototype.visitInt32=zr(cm);Er.prototype.visitInt64=zr(H9);Er.prototype.visitUint8=zr(cm);Er.prototype.visitUint16=zr(cm);Er.prototype.visitUint32=zr(cm);Er.prototype.visitUint64=zr(H9);Er.prototype.visitFloat=zr(Vut);Er.prototype.visitFloat16=zr(zut);Er.prototype.visitFloat32=zr(cm);Er.prototype.visitFloat64=zr(cm);Er.prototype.visitUtf8=zr(Z9);Er.prototype.visitLargeUtf8=zr(Z9);Er.prototype.visitBinary=zr(q9);Er.prototype.visitLargeBinary=zr(q9);Er.prototype.visitFixedSizeBinary=zr(Nut);Er.prototype.visitDate=zr(jut);Er.prototype.visitDateDay=zr(G9);Er.prototype.visitDateMillisecond=zr(W9);Er.prototype.visitTimestamp=zr(Gut);Er.prototype.visitTimestampSecond=zr(Y9);Er.prototype.visitTimestampMillisecond=zr(Q9);Er.prototype.visitTimestampMicrosecond=zr($9);Er.prototype.visitTimestampNanosecond=zr(X9);Er.prototype.visitTime=zr(Wut);Er.prototype.visitTimeSecond=zr(K9);Er.prototype.visitTimeMillisecond=zr(J9);Er.prototype.visitTimeMicrosecond=zr(tW);Er.prototype.visitTimeNanosecond=zr(eW);Er.prototype.visitDecimal=zr(Hut);Er.prototype.visitList=zr(qut);Er.prototype.visitStruct=zr(Yut);Er.prototype.visitUnion=zr(Qut);Er.prototype.visitDenseUnion=zr(rW);Er.prototype.visitSparseUnion=zr(iW);Er.prototype.visitDictionary=zr($ut);Er.prototype.visitInterval=zr(Xut);Er.prototype.visitIntervalDayTime=zr(nW);Er.prototype.visitIntervalYearMonth=zr(sW);Er.prototype.visitDuration=zr(Kut);Er.prototype.visitDurationSecond=zr(oW);Er.prototype.visitDurationMillisecond=zr(aW);Er.prototype.visitDurationMicrosecond=zr(lW);Er.prototype.visitDurationNanosecond=zr(cW);Er.prototype.visitFixedSizeList=zr(Jut);Er.prototype.visitMap=zr(Zut);var co=new Er;var Yu=Symbol.for(\"keys\"),lv=Symbol.for(\"vals\"),id=class{constructor(t){return this[Yu]=new wr([t.children[0]]).memoize(),this[lv]=t.children[1],new Proxy(this,new lO)}[Symbol.iterator](){return new aO(this[Yu],this[lv])}get size(){return this[Yu].length}toArray(){return Object.values(this.toJSON())}toJSON(){let t=this[Yu],r=this[lv],i={};for(let s=-1,n=t.length;++s`${Jh(t)}: ${Jh(r)}`).join(\", \")}}`}[Symbol.for(\"nodejs.util.inspect.custom\")](){return this.toString()}},aO=class{constructor(t,r){this.keys=t,this.vals=r,this.keyIndex=0,this.numKeys=t.length}[Symbol.iterator](){return this}next(){let t=this.keyIndex;return t===this.numKeys?{done:!0,value:null}:(this.keyIndex++,{done:!1,value:[this.keys.get(t),co.visit(this.vals,t)]})}},lO=class{isExtensible(){return!1}deleteProperty(){return!1}preventExtensions(){return!0}ownKeys(t){return t[Yu].toArray().map(String)}has(t,r){return t[Yu].includes(r)}getOwnPropertyDescriptor(t,r){if(t[Yu].indexOf(r)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(t,r){if(Reflect.has(t,r))return t[r];let i=t[Yu].indexOf(r);if(i!==-1){let s=co.visit(Reflect.get(t,lv),i);return Reflect.set(t,r,s),s}}set(t,r,i){let s=t[Yu].indexOf(r);return s!==-1?(xa.visit(Reflect.get(t,lv),s,i),Reflect.set(t,r,i)):Reflect.has(t,r)?Reflect.set(t,r,i):!1}};Object.defineProperties(id.prototype,{[Symbol.toStringTag]:{enumerable:!1,configurable:!1,value:\"Row\"},[Yu]:{writable:!0,enumerable:!1,configurable:!1,value:null},[lv]:{writable:!0,enumerable:!1,configurable:!1,value:null}});function tht(e,t,r){let i=e.length,s=t>-1?t:i+t%i;return r?r(e,s):s}var uW;function Vw(e,t,r,i){let{length:s=0}=e,n=typeof t!=\"number\"?0:t,o=typeof r!=\"number\"?s:r;return n<0&&(n=(n%s+s)%s),o<0&&(o=(o%s+s)%s),os&&(o=s),i?i(e,n,o):[n,o]}var hW=e=>e!==e;function um(e){if(typeof e!==\"object\"||e===null)return hW(e)?hW:r=>r===e;if(e instanceof Date){let r=e.valueOf();return i=>i instanceof Date?i.valueOf()===r:!1}return ArrayBuffer.isView(e)?r=>r?VD(e,r):!1:e instanceof Map?rht(e):Array.isArray(e)?eht(e):e instanceof wr?iht(e):nht(e,!0)}function eht(e){let t=[];for(let r=-1,i=e.length;++r!1;let i=[];for(let s=-1,n=r.length;++s{if(!r||typeof r!=\"object\")return!1;switch(r.constructor){case Array:return sht(e,r);case Map:return fW(e,r,r.keys());case id:case lm:case Object:case void 0:return fW(e,r,t||Object.keys(r))}return r instanceof wr?oht(e,r):!1}}function sht(e,t){let r=e.length;if(t.length!==r)return!1;for(let i=-1;++ipg,getBit:()=>dW,getBool:()=>GP,packBools:()=>mg,popcnt_array:()=>pW,popcnt_bit_range:()=>jw,popcnt_uint32:()=>jP,setBool:()=>aht,truncateBitmap:()=>Ag});function GP(e,t,r,i){return(r&1<>i}function aht(e,t,r){return r?!!(e[t>>3]|=1<>3]&=~(1<0||r.byteLength>3):mg(new pg(r,e,t,null,GP)).subarray(0,i)),s}return r}function mg(e){let t=[],r=0,i=0,s=0;for(let o of e)o&&(s|=1<0)&&(t[r++]=s);let n=new Uint8Array(t.length+7&-8);return n.set(t),n}var pg=class{constructor(t,r,i,s,n){this.bytes=t,this.length=i,this.context=s,this.get=n,this.bit=r%8,this.byteIndex=r>>3,this.byte=t[this.byteIndex++],this.index=0}next(){return this.index>3<<3,s=t+(t%8===0?0:8-t%8);return jw(e,t,s)+jw(e,i,r)+pW(e,s>>3,i-s>>3)}function pW(e,t,r){let i=0,s=Math.trunc(t),n=new DataView(e.buffer,e.byteOffset,e.byteLength),o=r===void 0?e.byteLength:s+r;for(;o-s>=4;)i+=jP(n.getUint32(s)),s+=4;for(;o-s>=2;)i+=jP(n.getUint16(s)),s+=2;for(;o-s>=1;)i+=jP(n.getUint8(s)),s+=1;return i}function jP(e){let t=Math.trunc(e);return t=t-(t>>>1&1431655765),t=(t&858993459)+(t>>>2&858993459),(t+(t>>>4)&252645135)*16843009>>>24}var lht=-1,Di=class e{get typeId(){return this.type.typeId}get ArrayType(){return this.type.ArrayType}get buffers(){return[this.valueOffsets,this.values,this.nullBitmap,this.typeIds]}get nullable(){if(this._nullCount!==0){let{type:t}=this;return Ne.isSparseUnion(t)?this.children.some(r=>r.nullable):Ne.isDenseUnion(t)?this.children.some(r=>r.nullable):this.nullBitmap&&this.nullBitmap.byteLength>0}return!0}get byteLength(){let t=0,{valueOffsets:r,values:i,nullBitmap:s,typeIds:n}=this;return r&&(t+=r.byteLength),i&&(t+=i.byteLength),s&&(t+=s.byteLength),n&&(t+=n.byteLength),this.children.reduce((o,c)=>o+c.byteLength,t)}get nullCount(){if(Ne.isUnion(this.type))return this.children.reduce((i,s)=>i+s.nullCount,0);let t=this._nullCount,r;return t<=lht&&(r=this.nullBitmap)&&(this._nullCount=t=this.length-jw(r,this.offset,this.offset+this.length)),t}constructor(t,r,i,s,n,o=[],c){this.type=t,this.children=o,this.dictionary=c,this.offset=Math.floor(Math.max(r||0,0)),this.length=Math.floor(Math.max(i||0,0)),this._nullCount=Math.floor(Math.max(s||0,-1));let f;n instanceof e?(this.stride=n.stride,this.values=n.values,this.typeIds=n.typeIds,this.nullBitmap=n.nullBitmap,this.valueOffsets=n.valueOffsets):(this.stride=iu(t),n&&((f=n[0])&&(this.valueOffsets=f),(f=n[1])&&(this.values=f),(f=n[2])&&(this.nullBitmap=f),(f=n[3])&&(this.typeIds=f)))}getValid(t){let{type:r}=this;if(Ne.isUnion(r)){let i=r,s=this.children[i.typeIdToChildIndex[this.typeIds[t]]],n=i.mode===Mn.Dense?this.valueOffsets[t]:t;return s.getValid(n)}if(this.nullable&&this.nullCount>0){let i=this.offset+t;return(this.nullBitmap[i>>3]&1<>3;(!n||n.byteLength<=w)&&(n=new Uint8Array((o+c+63&-64)>>3).fill(255),this.nullCount>0&&n.set(Ag(o,c,this.nullBitmap),0),Object.assign(this,{nullBitmap:n,_nullCount:-1}));let C=n[w];i=(C&_)!==0,r?n[w]=C|_:n[w]=C&~_}return i!==!!r&&(this._nullCount=this.nullCount+(r?-1:1)),r}clone(t=this.type,r=this.offset,i=this.length,s=this._nullCount,n=this,o=this.children){return new e(t,r,i,s,n,o,this.dictionary)}slice(t,r){let{stride:i,typeId:s,children:n}=this,o=+(this._nullCount===0)-1,c=s===16?i:1,f=this._sliceBuffers(t,r,i,s);return this.clone(this.type,this.offset+t,r,o,f,n.length===0||this.valueOffsets?n:this._sliceChildren(n,c*t,c*r))}_changeLengthAndBackfillNullBitmap(t){if(this.typeId===Rt.Null)return this.clone(this.type,0,t,0);let{length:r,nullCount:i}=this,s=new Uint8Array((t+63&-64)>>3).fill(255,0,r>>3);s[r>>3]=(1<0&&s.set(Ag(this.offset,r,this.nullBitmap),0);let n=this.buffers;return n[Ci.VALIDITY]=s,this.clone(this.type,0,t,i+(t-r),n)}_sliceBuffers(t,r,i,s){let n,{buffers:o}=this;return(n=o[Ci.TYPE])&&(o[Ci.TYPE]=n.subarray(t,t+r)),(n=o[Ci.OFFSET])&&(o[Ci.OFFSET]=n.subarray(t,t+r+1))||(n=o[Ci.DATA])&&(o[Ci.DATA]=s===6?n:n.subarray(i*t,i*(t+r))),o}_sliceChildren(t,r,i){return t.map(s=>s.slice(r,i))}};Di.prototype.children=Object.freeze([]);var hO=class e extends Mr{visit(t){return this.getVisitFn(t.type).call(this,t)}visitNull(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"length\"]:s=0}=t;return new Di(r,i,s,s)}visitBool(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length>>3,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitInt(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitFloat(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitUtf8(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitLargeUtf8(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=gP(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitLargeBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=gP(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitFixedSizeBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitDate(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitTimestamp(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitTime(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitDecimal(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitList(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s}=t,n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,void 0,n],[s])}visitStruct(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"children\"]:s=[]}=t,n=Rr(t.nullBitmap),{length:o=s.reduce((f,{length:_})=>Math.max(f,_),0),nullCount:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,void 0,n],s)}visitUnion(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"children\"]:s=[]}=t,n=Ai(r.ArrayType,t.typeIds),{[\"length\"]:o=n.length,[\"nullCount\"]:c=-1}=t;if(Ne.isSparseUnion(r))return new Di(r,i,o,c,[void 0,void 0,void 0,n],s);let f=fg(t.valueOffsets);return new Di(r,i,o,c,[f,void 0,void 0,n],s)}visitDictionary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.indices.ArrayType,t.data),{[\"dictionary\"]:o=new wr([new e().visit({type:r.dictionary})])}=t,{[\"length\"]:c=n.length,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[void 0,n,s],[],o)}visitInterval(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitDuration(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitFixedSizeList(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s=new e().visit({type:r.valueType})}=t,n=Rr(t.nullBitmap),{[\"length\"]:o=s.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,void 0,n],[s])}visitMap(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s=new e().visit({type:r.childType})}=t,n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,void 0,n],[s])}},cht=new hO;function yr(e){return cht.visit(e)}var Gw=class{constructor(t=0,r){this.numChunks=t,this.getChunkIterator=r,this.chunkIndex=0,this.chunkIterator=this.getChunkIterator(0)}next(){for(;this.chunkIndext.nullable)}function WP(e){return e.reduce((t,r)=>t+r.nullCount,0)}function HP(e){return e.reduce((t,r,i)=>(t[i+1]=t[i]+r.length,t),new Uint32Array(e.length+1))}function qP(e,t,r,i){let s=[];for(let n=-1,o=e.length;++n=i)break;if(r>=f+_)continue;if(f>=r&&f+_<=i){s.push(c);continue}let w=Math.max(0,r-f),C=Math.min(i-f,_);s.push(c.slice(w,C-w))}return s.length===0&&s.push(e[0].slice(0,0)),s}function fO(e,t,r,i){let s=0,n=0,o=t.length-1;do{if(s>=o-1)return r0?0:-1}function hht(e,t){let{nullBitmap:r}=e;if(!r||e.nullCount<=0)return-1;let i=0;for(let s of new pg(r,e.offset+(t||0),e.length,r,GP)){if(!s)return i;++i}return-1}function Qr(e,t,r){if(t===void 0)return-1;if(t===null)switch(e.typeId){case Rt.Union:break;case Rt.Dictionary:break;default:return hht(e,r)}let i=co.getVisitFn(e),s=um(t);for(let n=(r||0)-1,o=e.length;++n{let s=e.data[i];return s.values.subarray(0,s.length)[Symbol.iterator]()});let r=0;return new Gw(e.data.length,i=>{let n=e.data[i].length,o=e.slice(r,r+n);return r+=n,new dO(o)})}var dO=class{constructor(t){this.vector=t,this.index=0}next(){return this.indexc.data):t;if(n.length===0||n.some(c=>!(c instanceof Di)))throw new TypeError(\"Vector constructor expects an Array of Data instances.\");let o=(r=n[0])===null||r===void 0?void 0:r.type;switch(n.length){case 0:this._offsets=[0];break;case 1:{let{get:c,set:f,indexOf:_}=_W[o.typeId],w=n[0];this.isValid=C=>Ww(w,C),this.get=C=>c(w,C),this.set=(C,R)=>f(w,C,R),this.indexOf=C=>_(w,C),this._offsets=[0,w.length];break}default:Object.setPrototypeOf(this,yW[o.typeId]),this._offsets=HP(n);break}this.data=n,this.type=o,this.stride=iu(o),this.numChildren=(s=(i=o.children)===null||i===void 0?void 0:i.length)!==null&&s!==void 0?s:0,this.length=this._offsets.at(-1)}get byteLength(){return this.data.reduce((t,r)=>t+r.byteLength,0)}get nullable(){return AW(this.data)}get nullCount(){return WP(this.data)}get ArrayType(){return this.type.ArrayType}get[Symbol.toStringTag](){return`${this.VectorName}<${this.type[Symbol.toStringTag]}>`}get VectorName(){return`${Rt[this.type.typeId]}Vector`}isValid(t){return!1}get(t){return null}set(t,r){}indexOf(t,r){return-1}includes(t,r){return this.indexOf(t,r)>-1}[Symbol.iterator](){return uv.visit(this)}concat(...t){return new e(this.data.concat(t.flatMap(r=>r.data).flat(Number.POSITIVE_INFINITY)))}slice(t,r){return new e(Vw(this,t,r,({data:i,_offsets:s},n,o)=>qP(i,s,n,o)))}toJSON(){return[...this]}toArray(){let{type:t,data:r,length:i,stride:s,ArrayType:n}=this;switch(t.typeId){case Rt.Int:case Rt.Float:case Rt.Decimal:case Rt.Time:case Rt.Timestamp:switch(r.length){case 0:return new n;case 1:return r[0].values.subarray(0,i*s);default:return r.reduce((o,{values:c,length:f})=>(o.array.set(c.subarray(0,f*s),o.offset),o.offset+=f*s,o),{array:new n(i*s),offset:0}).array}}return[...this]}toString(){return`[${[...this].join(\",\")}]`}getChild(t){var r;return this.getChildAt((r=this.type.children)===null||r===void 0?void 0:r.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&tr[t])):null}get isMemoized(){return Ne.isDictionary(this.type)?this.data[0].dictionary.isMemoized:!1}memoize(){if(Ne.isDictionary(this.type)){let t=new QP(this.data[0].dictionary),r=this.data.map(i=>{let s=i.clone();return s.dictionary=t,s});return new e(r)}return new QP(this)}unmemoize(){if(Ne.isDictionary(this.type)&&this.isMemoized){let t=this.data[0].dictionary.unmemoize(),r=this.data.map(i=>{let s=i.clone();return s.dictionary=t,s});return new e(r)}return this}};gW=Symbol.toStringTag;wr[gW]=(e=>{e.type=Ne.prototype,e.data=[],e.length=0,e.stride=1,e.numChildren=0,e._offsets=new Uint32Array([0]),e[Symbol.isConcatSpreadable]=!0;let t=Object.keys(Rt).map(r=>Rt[r]).filter(r=>typeof r==\"number\"&&r!==Rt.NONE);for(let r of t){let i=co.getVisitFnByTypeId(r),s=xa.getVisitFnByTypeId(r),n=gg.getVisitFnByTypeId(r);_W[r]={get:i,set:s,indexOf:n},yW[r]=Object.create(e,{isValid:{value:cv(Ww)},get:{value:cv(co.getVisitFnByTypeId(r))},set:{value:ZP(xa.getVisitFnByTypeId(r))},indexOf:{value:YP(gg.getVisitFnByTypeId(r))}})}return\"Vector\"})(wr.prototype);var QP=class e extends wr{constructor(t){super(t.data);let r=this.get,i=this.set,s=this.slice,n=new Array(this.length);Object.defineProperty(this,\"get\",{value(o){let c=n[o];if(c!==void 0)return c;let f=r.call(this,o);return n[o]=f,f}}),Object.defineProperty(this,\"set\",{value(o,c){i.call(this,o,c),n[o]=c}}),Object.defineProperty(this,\"slice\",{value:(o,c)=>new e(s.call(this,o,c))}),Object.defineProperty(this,\"isMemoized\",{value:!0}),Object.defineProperty(this,\"unmemoize\",{value:()=>new wr(this.data)}),Object.defineProperty(this,\"memoize\",{value:()=>this})}};function vW(e){if(!e||e.length<=0)return function(s){return!0};let t=\"\",r=e.filter(i=>i===i);return r.length>0&&(t=`\n switch (x) {${r.map(i=>`\n case ${fht(i)}:`).join(\"\")}\n return false;\n }`),e.length!==r.length&&(t=`if (x !== x) return false;\n${t}`),new Function(\"x\",`${t}\nreturn true;`)}function fht(e){return typeof e!=\"bigint\"?Jh(e):`${Jh(e)}n`}function pO(e,t){let r=Math.ceil(e)*t-1;return(r-r%64+64||64)/t}function xW(e,t=0){return e.length>=t?e.subarray(0,t):mw(new e.constructor(t),e,0)}var nf=class{constructor(t,r=0,i=1){this.length=Math.ceil(r/i),this.buffer=new t(this.length),this.stride=i,this.BYTES_PER_ELEMENT=t.BYTES_PER_ELEMENT,this.ArrayType=t}get byteLength(){return Math.ceil(this.length*this.stride)*this.BYTES_PER_ELEMENT}get reservedLength(){return this.buffer.length/this.stride}get reservedByteLength(){return this.buffer.byteLength}set(t,r){return this}append(t){return this.set(this.length,t)}reserve(t){if(t>0){this.length+=t;let r=this.stride,i=this.length*r,s=this.buffer.length;i>=s&&this._resize(s===0?pO(i*1,this.BYTES_PER_ELEMENT):pO(i*2,this.BYTES_PER_ELEMENT))}return this}flush(t=this.length){t=pO(t*this.stride,this.BYTES_PER_ELEMENT);let r=xW(this.buffer,t);return this.clear(),r}clear(){return this.length=0,this.buffer=new this.ArrayType,this}_resize(t){return this.buffer=xW(this.buffer,t)}},pp=class extends nf{last(){return this.get(this.length-1)}get(t){return this.buffer[t]}set(t,r){return this.reserve(t-this.length+1),this.buffer[t*this.stride]=r,this}},hv=class extends pp{constructor(){super(Uint8Array,0,1/8),this.numValid=0}get numInvalid(){return this.length-this.numValid}get(t){return this.buffer[t>>3]>>t%8&1}set(t,r){let{buffer:i}=this.reserve(t-this.length+1),s=t>>3,n=t%8,o=i[s]>>n&1;return r?o===0&&(i[s]|=1<=0&&s.fill(s[i],i,t),s[t]=s[t-1]+r,this}flush(t=this.length-1){return t>this.length&&this.set(t-1,this.BYTES_PER_ELEMENT>4?BigInt(0):0),super.flush(t+1)}};var Qn=class{static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t){throw new Error('\"throughDOM\" not available in this environment')}constructor({type:t,nullValues:r}){this.length=0,this.finished=!1,this.type=t,this.children=[],this.nullValues=r,this.stride=iu(t),this._nulls=new hv,r&&r.length>0&&(this._isValid=vW(r))}toVector(){return new wr([this.flush()])}get ArrayType(){return this.type.ArrayType}get nullCount(){return this._nulls.numInvalid}get numChildren(){return this.children.length}get byteLength(){let t=0,{_offsets:r,_values:i,_nulls:s,_typeIds:n,children:o}=this;return r&&(t+=r.byteLength),i&&(t+=i.byteLength),s&&(t+=s.byteLength),n&&(t+=n.byteLength),o.reduce((c,f)=>c+f.byteLength,t)}get reservedLength(){return this._nulls.reservedLength}get reservedByteLength(){let t=0;return this._offsets&&(t+=this._offsets.reservedByteLength),this._values&&(t+=this._values.reservedByteLength),this._nulls&&(t+=this._nulls.reservedByteLength),this._typeIds&&(t+=this._typeIds.reservedByteLength),this.children.reduce((r,i)=>r+i.reservedByteLength,t)}get valueOffsets(){return this._offsets?this._offsets.buffer:null}get values(){return this._values?this._values.buffer:null}get nullBitmap(){return this._nulls?this._nulls.buffer:null}get typeIds(){return this._typeIds?this._typeIds.buffer:null}append(t){return this.set(this.length,t)}isValid(t){return this._isValid(t)}set(t,r){return this.setValid(t,this.isValid(r))&&this.setValue(t,r),this}setValue(t,r){this._setValue(this,t,r)}setValid(t,r){return this.length=this._nulls.set(t,+r).length,r}addChild(t,r=`${this.numChildren}`){throw new Error(`Cannot append children to non-nested type \"${this.type}\"`)}getChildAt(t){return this.children[t]||null}flush(){let t,r,i,s,{type:n,length:o,nullCount:c,_typeIds:f,_offsets:_,_values:w,_nulls:C}=this;(r=f?.flush(o))?s=_?.flush(o):(s=_?.flush(o))?t=w?.flush(_.last()):t=w?.flush(o),c>0&&(i=C?.flush(o));let R=this.children.map(N=>N.flush());return this.clear(),yr({type:n,length:o,nullCount:c,children:R,child:R[0],data:t,typeIds:r,nullBitmap:i,valueOffsets:s})}finish(){this.finished=!0;for(let t of this.children)t.finish();return this}clear(){var t,r,i,s;this.length=0,(t=this._nulls)===null||t===void 0||t.clear(),(r=this._values)===null||r===void 0||r.clear(),(i=this._offsets)===null||i===void 0||i.clear(),(s=this._typeIds)===null||s===void 0||s.clear();for(let n of this.children)n.clear();return this}};Qn.prototype.length=1;Qn.prototype.stride=1;Qn.prototype.children=null;Qn.prototype.finished=!1;Qn.prototype.nullValues=null;Qn.prototype._isValid=()=>!0;var uo=class extends Qn{constructor(t){super(t),this._values=new pp(this.ArrayType,0,this.stride)}setValue(t,r){let i=this._values;return i.reserve(t-i.length+1),super.setValue(t,r)}},fc=class extends Qn{constructor(t){super(t),this._pendingLength=0,this._offsets=new fv(t.type)}setValue(t,r){let i=this._pending||(this._pending=new Map),s=i.get(t);s&&(this._pendingLength-=s.length),this._pendingLength+=r instanceof id?r[Yu].length:r.length,i.set(t,r)}setValid(t,r){return super.setValid(t,r)?!0:((this._pending||(this._pending=new Map)).set(t,void 0),!1)}clear(){return this._pendingLength=0,this._pending=void 0,super.clear()}flush(){return this._flush(),super.flush()}finish(){return this._flush(),super.finish()}_flush(){let t=this._pending,r=this._pendingLength;return this._pendingLength=0,this._pending=void 0,t&&t.size>0&&this._flushPending(t,r),this}};var _g=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}offset(){return this.bb.readInt64(this.bb_pos)}metaDataLength(){return this.bb.readInt32(this.bb_pos+8)}bodyLength(){return this.bb.readInt64(this.bb_pos+16)}static sizeOf(){return 24}static createBlock(t,r,i,s){return t.prep(8,24),t.writeInt64(BigInt(s??0)),t.pad(4),t.writeInt32(i),t.writeInt64(BigInt(r??0)),t.offset()}};var nu=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsFooter(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsFooter(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):en.V1}schema(t){let r=this.bb.__offset(this.bb_pos,6);return r?(t||new sc).__init(this.bb.__indirect(this.bb_pos+r),this.bb):null}dictionaries(t,r){let i=this.bb.__offset(this.bb_pos,8);return i?(r||new _g).__init(this.bb.__vector(this.bb_pos+i)+t*24,this.bb):null}dictionariesLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}recordBatches(t,r){let i=this.bb.__offset(this.bb_pos,10);return i?(r||new _g).__init(this.bb.__vector(this.bb_pos+i)+t*24,this.bb):null}recordBatchesLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,12);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startFooter(t){t.startObject(5)}static addVersion(t,r){t.addFieldInt16(0,r,en.V1)}static addSchema(t,r){t.addFieldOffset(1,r,0)}static addDictionaries(t,r){t.addFieldOffset(2,r,0)}static startDictionariesVector(t,r){t.startVector(24,r,8)}static addRecordBatches(t,r){t.addFieldOffset(3,r,0)}static startRecordBatchesVector(t,r){t.startVector(24,r,8)}static addCustomMetadata(t,r){t.addFieldOffset(4,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endFooter(t){return t.endObject()}static finishFooterBuffer(t,r){t.finish(r)}static finishSizePrefixedFooterBuffer(t,r){t.finish(r,void 0,!0)}};var nn=class e{constructor(t=[],r,i,s=en.V5){this.fields=t||[],this.metadata=r||new Map,i||(i=AO(t)),this.dictionaries=i,this.metadataVersion=s}get[Symbol.toStringTag](){return\"Schema\"}get names(){return this.fields.map(t=>t.name)}toString(){return`Schema<{ ${this.fields.map((t,r)=>`${r}: ${t}`).join(\", \")} }>`}select(t){let r=new Set(t),i=this.fields.filter(s=>r.has(s.name));return new e(i,this.metadata)}selectAt(t){let r=t.map(i=>this.fields[i]).filter(Boolean);return new e(r,this.metadata)}assign(...t){let r=t[0]instanceof e?t[0]:Array.isArray(t[0])?new e(t[0]):new e(t),i=[...this.fields],s=$P($P(new Map,this.metadata),r.metadata),n=r.fields.filter(c=>{let f=i.findIndex(_=>_.name===c.name);return~f?(i[f]=c.clone({metadata:$P($P(new Map,i[f].metadata),c.metadata)}))&&!1:!0}),o=AO(n,new Map);return new e([...i,...n],s,new Map([...this.dictionaries,...o]))}};nn.prototype.fields=null;nn.prototype.metadata=null;nn.prototype.dictionaries=null;var si=class e{static new(...t){let[r,i,s,n]=t;return t[0]&&typeof t[0]==\"object\"&&({name:r}=t[0],i===void 0&&(i=t[0].type),s===void 0&&(s=t[0].nullable),n===void 0&&(n=t[0].metadata)),new e(`${r}`,i,s,n)}constructor(t,r,i=!1,s){this.name=t,this.type=r,this.nullable=i,this.metadata=s||new Map}get typeId(){return this.type.typeId}get[Symbol.toStringTag](){return\"Field\"}toString(){return`${this.name}: ${this.type}`}clone(...t){let[r,i,s,n]=t;return!t[0]||typeof t[0]!=\"object\"?[r=this.name,i=this.type,s=this.nullable,n=this.metadata]=t:{name:r=this.name,type:i=this.type,nullable:s=this.nullable,metadata:n=this.metadata}=t[0],e.new(r,i,s,n)}};si.prototype.type=null;si.prototype.name=null;si.prototype.nullable=null;si.prototype.metadata=null;function $P(e,t){return new Map([...e||new Map,...t||new Map])}function AO(e,t=new Map){for(let r=-1,i=e.length;++r0&&AO(n.children,t)}return t}var dht=dg,pht=eu,Ap=class{static decode(t){t=new pht(Rr(t));let r=nu.getRootAsFooter(t),i=nn.decode(r.schema(),new Map,r.version());return new mO(i,r)}static encode(t){let r=new dht,i=nn.encode(r,t.schema);nu.startRecordBatchesVector(r,t.numRecordBatches);for(let o of[...t.recordBatches()].slice().reverse())mp.encode(r,o);let s=r.endVector();nu.startDictionariesVector(r,t.numDictionaries);for(let o of[...t.dictionaryBatches()].slice().reverse())mp.encode(r,o);let n=r.endVector();return nu.startFooter(r),nu.addSchema(r,i),nu.addVersion(r,en.V5),nu.addRecordBatches(r,s),nu.addDictionaries(r,n),nu.finishFooterBuffer(r,nu.endFooter(r)),r.asUint8Array()}get numRecordBatches(){return this._recordBatches.length}get numDictionaries(){return this._dictionaryBatches.length}constructor(t,r=en.V5,i,s){this.schema=t,this.version=r,i&&(this._recordBatches=i),s&&(this._dictionaryBatches=s)}*recordBatches(){for(let t,r=-1,i=this.numRecordBatches;++r=0&&t=0&&t=0&&t=0&&tthis._closedPromiseResolve=t)}get closed(){return this._closedPromise}cancel(t){return sr(this,void 0,void 0,function*(){yield this.return(t)})}write(t){this._ensureOpen()&&(this.resolvers.length<=0?this._values.push(t):this.resolvers.shift().resolve({done:!1,value:t}))}abort(t){this._closedPromiseResolve&&(this.resolvers.length<=0?this._error={error:t}:this.resolvers.shift().reject({done:!0,value:t}))}close(){if(this._closedPromiseResolve){let{resolvers:t}=this;for(;t.length>0;)t.shift().resolve(Nn);this._closedPromiseResolve(),this._closedPromiseResolve=void 0}}[Symbol.asyncIterator](){return this}toDOMStream(t){return va.toDOMStream(this._closedPromiseResolve||this._error?this:this._values,t)}toNodeStream(t){return va.toNodeStream(this._closedPromiseResolve||this._error?this:this._values,t)}throw(t){return sr(this,void 0,void 0,function*(){return yield this.abort(t),Nn})}return(t){return sr(this,void 0,void 0,function*(){return yield this.close(),Nn})}read(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"read\")).value})}peek(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"peek\")).value})}next(...t){return this._values.length>0?Promise.resolve({done:!1,value:this._values.shift()}):this._error?Promise.reject({done:!0,value:this._error.error}):this._closedPromiseResolve?new Promise((r,i)=>{this.resolvers.push({resolve:r,reject:i})}):Promise.resolve(Nn)}_ensureOpen(){if(this._closedPromiseResolve)return!0;throw new Error(\"AsyncQueue is closed\")}};var nd=class extends XP{write(t){if((t=Rr(t)).byteLength>0)return super.write(t)}toString(t=!1){return t?pw(this.toUint8Array(!0)):this.toUint8Array(!1).then(pw)}toUint8Array(t=!1){return t?tu(this._values)[0]:sr(this,void 0,void 0,function*(){var r,i,s,n;let o=[],c=0;try{for(var f=!0,_=Zh(this),w;w=yield _.next(),r=w.done,!r;f=!0){n=w.value,f=!1;let C=n;o.push(C),c+=C.byteLength}}catch(C){i={error:C}}finally{try{!f&&!r&&(s=_.return)&&(yield s.call(_))}finally{if(i)throw i.error}}return tu(o,c)[0]})}},sd=class{constructor(t){t&&(this.source=new gO(va.fromIterable(t)))}[Symbol.iterator](){return this}next(t){return this.source.next(t)}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}peek(t){return this.source.peek(t)}read(t){return this.source.read(t)}},Qu=class e{constructor(t){t instanceof e?this.source=t.source:t instanceof nd?this.source=new gp(va.fromAsyncIterable(t)):mP(t)?this.source=new gp(va.fromNodeStream(t)):Aw(t)?this.source=new gp(va.fromDOMStream(t)):pP(t)?this.source=new gp(va.fromDOMStream(t.body)):Yh(t)?this.source=new gp(va.fromIterable(t)):Jc(t)?this.source=new gp(va.fromAsyncIterable(t)):zu(t)&&(this.source=new gp(va.fromAsyncIterable(t)))}[Symbol.asyncIterator](){return this}next(t){return this.source.next(t)}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}get closed(){return this.source.closed}cancel(t){return this.source.cancel(t)}peek(t){return this.source.peek(t)}read(t){return this.source.read(t)}},gO=class{constructor(t){this.source=t}cancel(t){this.return(t)}peek(t){return this.next(t,\"peek\").value}read(t){return this.next(t,\"read\").value}next(t,r=\"read\"){return this.source.next({cmd:r,size:t})}throw(t){return Object.create(this.source.throw&&this.source.throw(t)||Nn)}return(t){return Object.create(this.source.return&&this.source.return(t)||Nn)}},gp=class{constructor(t){this.source=t,this._closedPromise=new Promise(r=>this._closedPromiseResolve=r)}cancel(t){return sr(this,void 0,void 0,function*(){yield this.return(t)})}get closed(){return this._closedPromise}read(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"read\")).value})}peek(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"peek\")).value})}next(t,r=\"read\"){return sr(this,void 0,void 0,function*(){return yield this.source.next({cmd:r,size:t})})}throw(t){return sr(this,void 0,void 0,function*(){let r=this.source.throw&&(yield this.source.throw(t))||Nn;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(r)})}return(t){return sr(this,void 0,void 0,function*(){let r=this.source.return&&(yield this.source.return(t))||Nn;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(r)})}};var qw=class extends sd{constructor(t,r){super(),this.position=0,this.buffer=Rr(t),this.size=r===void 0?this.buffer.byteLength:r}readInt32(t){let{buffer:r,byteOffset:i}=this.readAt(t,4);return new DataView(r,i).getInt32(0,!0)}seek(t){return this.position=Math.min(t,this.size),tZw,Int128:()=>Yw,Int64:()=>_p,Uint64:()=>gs});function dv(e){return e<0&&(e=4294967295+e+1),`0x${e.toString(16)}`}var pv=8,_O=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8],Zw=class{constructor(t){this.buffer=t}high(){return this.buffer[1]}low(){return this.buffer[0]}_times(t){let r=new Uint32Array([this.buffer[1]>>>16,this.buffer[1]&65535,this.buffer[0]>>>16,this.buffer[0]&65535]),i=new Uint32Array([t.buffer[1]>>>16,t.buffer[1]&65535,t.buffer[0]>>>16,t.buffer[0]&65535]),s=r[3]*i[3];this.buffer[0]=s&65535;let n=s>>>16;return s=r[2]*i[3],n+=s,s=r[3]*i[2]>>>0,n+=s,this.buffer[0]+=n<<16,this.buffer[1]=n>>>0>>16,this.buffer[1]+=r[1]*i[3]+r[2]*i[2]+r[3]*i[1],this.buffer[1]+=r[0]*i[3]+r[1]*i[2]+r[2]*i[1]+r[3]*i[0]<<16,this}_plus(t){let r=this.buffer[0]+t.buffer[0]>>>0;this.buffer[1]+=t.buffer[1],r>>0&&++this.buffer[1],this.buffer[0]=r}lessThan(t){return this.buffer[1]>>0,r[2]=this.buffer[2]+t.buffer[2]>>>0,r[1]=this.buffer[1]+t.buffer[1]>>>0,r[0]=this.buffer[0]+t.buffer[0]>>>0,r[0]>>0&&++r[1],r[1]>>0&&++r[2],r[2]>>0&&++r[3],this.buffer[3]=r[3],this.buffer[2]=r[2],this.buffer[1]=r[1],this.buffer[0]=r[0],this}hex(){return`${dv(this.buffer[3])} ${dv(this.buffer[2])} ${dv(this.buffer[1])} ${dv(this.buffer[0])}`}static multiply(t,r){return new e(new Uint32Array(t.buffer)).times(r)}static add(t,r){return new e(new Uint32Array(t.buffer)).plus(r)}static from(t,r=new Uint32Array(4)){return e.fromString(typeof t==\"string\"?t:t.toString(),r)}static fromNumber(t,r=new Uint32Array(4)){return e.fromString(t.toString(),r)}static fromString(t,r=new Uint32Array(4)){let i=t.startsWith(\"-\"),s=t.length,n=new e(r);for(let o=i?1:0;o0&&this.readData(t,i)||new Uint8Array(0)}readOffsets(t,r){return this.readData(t,r)}readTypeIds(t,r){return this.readData(t,r)}readData(t,{length:r,offset:i}=this.nextBufferRange()){return this.bytes.subarray(i,i+r)}readDictionary(t){return this.dictionaries.get(t.id)}},KP=class extends Qw{constructor(t,r,i,s,n){super(new Uint8Array(0),r,i,s,n),this.sources=t}readNullBitmap(t,r,{offset:i}=this.nextBufferRange()){return r<=0?new Uint8Array(0):mg(this.sources[i])}readOffsets(t,{offset:r}=this.nextBufferRange()){return Ai(Uint8Array,Ai(t.OffsetArrayType,this.sources[r]))}readTypeIds(t,{offset:r}=this.nextBufferRange()){return Ai(Uint8Array,Ai(t.ArrayType,this.sources[r]))}readData(t,{offset:r}=this.nextBufferRange()){let{sources:i}=this;return Ne.isTimestamp(t)?Ai(Uint8Array,_p.convertArray(i[r])):(Ne.isInt(t)||Ne.isTime(t))&&t.bitWidth===64||Ne.isDuration(t)?Ai(Uint8Array,_p.convertArray(i[r])):Ne.isDate(t)&&t.unit===Xs.MILLISECOND?Ai(Uint8Array,_p.convertArray(i[r])):Ne.isDecimal(t)?Ai(Uint8Array,Yw.convertArray(i[r])):Ne.isBinary(t)||Ne.isLargeBinary(t)||Ne.isFixedSizeBinary(t)?Aht(i[r]):Ne.isBool(t)?mg(i[r]):Ne.isUtf8(t)||Ne.isLargeUtf8(t)?$f(i[r].join(\"\")):Ai(Uint8Array,Ai(t.ArrayType,i[r].map(s=>+s)))}};function Aht(e){let t=e.join(\"\"),r=new Uint8Array(t.length/2);for(let i=0;i>1]=Number.parseInt(t.slice(i,i+2),16);return r}var vg=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Rr(r))}_flushPending(t,r){let i=this._offsets,s=this._values.reserve(r).buffer,n=0;for(let[o,c]of t)if(c===void 0)i.set(o,0);else{let f=c.length;s.set(c,n),i.set(o,f),n+=f}}};var xg=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Rr(r))}_flushPending(t,r){let i=this._offsets,s=this._values.reserve(r).buffer,n=0;for(let[o,c]of t)if(c===void 0)i.set(o,BigInt(0));else{let f=c.length;s.set(c,n),i.set(o,BigInt(f)),n+=f}}};var fm=class extends Qn{constructor(t){super(t),this._values=new hv}setValue(t,r){this._values.set(t,+r)}};var dm=class extends uo{};dm.prototype._setValue=KD;var Av=class extends dm{};Av.prototype._setValue=TP;var mv=class extends dm{};mv.prototype._setValue=MP;var gv=class extends uo{};gv.prototype._setValue=eO;var $w=class extends Qn{constructor({type:t,nullValues:r,dictionaryHashFunction:i}){super({type:new hc(t.dictionary,t.indices,t.id,t.isOrdered)}),this._nulls=null,this._dictionaryOffset=0,this._keysToIndices=Object.create(null),this.indices=bg({type:this.type.indices,nullValues:r}),this.dictionary=bg({type:this.type.dictionary,nullValues:null}),typeof i==\"function\"&&(this.valueToKey=i)}get values(){return this.indices.values}get nullCount(){return this.indices.nullCount}get nullBitmap(){return this.indices.nullBitmap}get byteLength(){return this.indices.byteLength+this.dictionary.byteLength}get reservedLength(){return this.indices.reservedLength+this.dictionary.reservedLength}get reservedByteLength(){return this.indices.reservedByteLength+this.dictionary.reservedByteLength}isValid(t){return this.indices.isValid(t)}setValid(t,r){let i=this.indices;return r=i.setValid(t,r),this.length=i.length,r}setValue(t,r){let i=this._keysToIndices,s=this.valueToKey(r),n=i[s];return n===void 0&&(i[s]=n=this._dictionaryOffset+this.dictionary.append(r).length-1),this.indices.setValue(t,n)}flush(){let t=this.type,r=this._dictionary,i=this.dictionary.toVector(),s=this.indices.flush().clone(t);return s.dictionary=r?r.concat(i):i,this.finished||(this._dictionaryOffset+=i.length),this._dictionary=s.dictionary,this.clear(),s}finish(){return this.indices.finish(),this.dictionary.finish(),this._dictionaryOffset=0,this._keysToIndices=Object.create(null),super.finish()}clear(){return this.indices.clear(),this.dictionary.clear(),super.clear()}valueToKey(t){return typeof t==\"string\"?t:`${t}`}};var _v=class extends uo{};_v.prototype._setValue=XD;var Xw=class extends Qn{setValue(t,r){let[i]=this.children,s=t*this.stride;for(let n=-1,o=r.length;++n0)throw new Error(\"FixedSizeListBuilder can only have one child.\");let i=this.children.push(t);return this.type=new Il(this.type.listSize,new si(r,t.type,!0)),i}};var pm=class extends uo{setValue(t,r){this._values.set(t,r)}},Kw=class extends pm{setValue(t,r){super.setValue(t,Uw(r))}},Jw=class extends pm{},t2=class extends pm{};var Am=class extends uo{};Am.prototype._setValue=rO;var yv=class extends Am{};yv.prototype._setValue=OP;var vv=class extends Am{};vv.prototype._setValue=BP;var od=class extends uo{};od.prototype._setValue=iO;var xv=class extends od{};xv.prototype._setValue=FP;var bv=class extends od{};bv.prototype._setValue=zP;var wv=class extends od{};wv.prototype._setValue=NP;var Sv=class extends od{};Sv.prototype._setValue=UP;var su=class extends uo{setValue(t,r){this._values.set(t,r)}},e2=class extends su{},r2=class extends su{},i2=class extends su{},n2=class extends su{},s2=class extends su{},o2=class extends su{},a2=class extends su{},l2=class extends su{};var c2=class extends fc{constructor(t){super(t),this._offsets=new fv(t.type)}addChild(t,r=\"0\"){if(this.numChildren>0)throw new Error(\"ListBuilder can only have one child.\");return this.children[this.numChildren]=t,this.type=new lc(new si(r,t.type,!0)),this.numChildren-1}_flushPending(t){let r=this._offsets,[i]=this.children;for(let[s,n]of t)if(typeof n>\"u\")r.set(s,0);else{let o=n,c=o.length,f=r.set(s,c).buffer[s];for(let _=-1;++_0)throw new Error(\"ListBuilder can only have one child.\");return this.children[this.numChildren]=t,this.type=new uc(new si(r,t.type,!0),this.type.keysSorted),this.numChildren-1}_flushPending(t){let r=this._offsets,[i]=this.children;for(let[s,n]of t)if(n===void 0)r.set(s,0);else{let{[s]:o,[s+1]:c}=r.set(s,n.size).buffer;for(let f of n.entries())if(i.set(o,f),++o>=c)break}}};var h2=class extends Qn{setValue(t,r){}setValid(t,r){return this.length=Math.max(t+1,this.length),r}};var f2=class extends Qn{setValue(t,r){let{children:i,type:s}=this;switch(Array.isArray(r)||r.constructor){case!0:return s.children.forEach((n,o)=>i[o].set(t,r[o]));case Map:return s.children.forEach((n,o)=>i[o].set(t,r.get(n.name)));default:return s.children.forEach((n,o)=>i[o].set(t,r[n.name]))}}setValid(t,r){return super.setValid(t,r)||this.children.forEach(i=>i.setValid(t,r)),r}addChild(t,r=`${this.numChildren}`){let i=this.children.push(t);return this.type=new un([...this.type.children,new si(r,t.type,!0)]),i}};var ad=class extends uo{};ad.prototype._setValue=JD;var Tv=class extends ad{};Tv.prototype._setValue=EP;var Mv=class extends ad{};Mv.prototype._setValue=PP;var Ev=class extends ad{};Ev.prototype._setValue=IP;var Pv=class extends ad{};Pv.prototype._setValue=CP;var ld=class extends uo{};ld.prototype._setValue=tO;var Iv=class extends ld{};Iv.prototype._setValue=LP;var Cv=class extends ld{};Cv.prototype._setValue=kP;var Lv=class extends ld{};Lv.prototype._setValue=RP;var kv=class extends ld{};kv.prototype._setValue=DP;var wg=class extends Qn{constructor(t){super(t),this._typeIds=new pp(Int8Array,0,1),typeof t.valueToChildTypeId==\"function\"&&(this._valueToChildTypeId=t.valueToChildTypeId)}get typeIdToChildIndex(){return this.type.typeIdToChildIndex}append(t,r){return this.set(this.length,t,r)}set(t,r,i){return i===void 0&&(i=this._valueToChildTypeId(this,r,t)),this.setValue(t,r,i),this}setValue(t,r,i){this._typeIds.set(t,i);let s=this.type.typeIdToChildIndex[i],n=this.children[s];n?.set(t,r)}addChild(t,r=`${this.children.length}`){let i=this.children.push(t),{type:{children:s,mode:n,typeIds:o}}=this,c=[...s,new si(r,t.type)];return this.type=new cc(n,[...o,i],c),i}_valueToChildTypeId(t,r,i){throw new Error(\"Cannot map UnionBuilder value to child typeId. Pass the `childTypeId` as the second argument to unionBuilder.append(), or supply a `valueToChildTypeId` function as part of the UnionBuilder constructor options.\")}},d2=class extends wg{},p2=class extends wg{constructor(t){super(t),this._offsets=new pp(Int32Array)}setValue(t,r,i){let s=this._typeIds.set(t,i).buffer[t],n=this.getChildAt(this.type.typeIdToChildIndex[s]),o=this._offsets.set(t,n.length).buffer[t];n?.set(o,r)}};var Rv=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,$f(r))}_flushPending(t,r){}};Rv.prototype._flushPending=vg.prototype._flushPending;var Dv=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,$f(r))}_flushPending(t,r){}};Dv.prototype._flushPending=xg.prototype._flushPending;var vO=class extends Mr{visitNull(){return h2}visitBool(){return fm}visitInt(){return su}visitInt8(){return e2}visitInt16(){return r2}visitInt32(){return i2}visitInt64(){return n2}visitUint8(){return s2}visitUint16(){return o2}visitUint32(){return a2}visitUint64(){return l2}visitFloat(){return pm}visitFloat16(){return Kw}visitFloat32(){return Jw}visitFloat64(){return t2}visitUtf8(){return Rv}visitLargeUtf8(){return Dv}visitBinary(){return vg}visitLargeBinary(){return xg}visitFixedSizeBinary(){return _v}visitDate(){return dm}visitDateDay(){return Av}visitDateMillisecond(){return mv}visitTimestamp(){return ad}visitTimestampSecond(){return Tv}visitTimestampMillisecond(){return Mv}visitTimestampMicrosecond(){return Ev}visitTimestampNanosecond(){return Pv}visitTime(){return ld}visitTimeSecond(){return Iv}visitTimeMillisecond(){return Cv}visitTimeMicrosecond(){return Lv}visitTimeNanosecond(){return kv}visitDecimal(){return gv}visitList(){return c2}visitStruct(){return f2}visitUnion(){return wg}visitDenseUnion(){return p2}visitSparseUnion(){return d2}visitDictionary(){return $w}visitInterval(){return Am}visitIntervalDayTime(){return yv}visitIntervalYearMonth(){return vv}visitDuration(){return od}visitDurationSecond(){return xv}visitDurationMillisecond(){return bv}visitDurationMicrosecond(){return wv}visitDurationNanosecond(){return Sv}visitFixedSizeList(){return Xw}visitMap(){return u2}},bW=new vO;var Cr=class extends Mr{compareSchemas(t,r){return t===r||r instanceof t.constructor&&this.compareManyFields(t.fields,r.fields)}compareManyFields(t,r){return t===r||Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((i,s)=>this.compareFields(i,r[s]))}compareFields(t,r){return t===r||r instanceof t.constructor&&t.name===r.name&&t.nullable===r.nullable&&this.visit(t.type,r.type)}};function Cl(e,t){return t instanceof e.constructor}function Sg(e,t){return e===t||Cl(e,t)}function yp(e,t){return e===t||Cl(e,t)&&e.bitWidth===t.bitWidth&&e.isSigned===t.isSigned}function JP(e,t){return e===t||Cl(e,t)&&e.precision===t.precision}function mht(e,t){return e===t||Cl(e,t)&&e.byteWidth===t.byteWidth}function xO(e,t){return e===t||Cl(e,t)&&e.unit===t.unit}function A2(e,t){return e===t||Cl(e,t)&&e.unit===t.unit&&e.timezone===t.timezone}function m2(e,t){return e===t||Cl(e,t)&&e.unit===t.unit&&e.bitWidth===t.bitWidth}function ght(e,t){return e===t||Cl(e,t)&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}function _ht(e,t){return e===t||Cl(e,t)&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}function bO(e,t){return e===t||Cl(e,t)&&e.mode===t.mode&&e.typeIds.every((r,i)=>r===t.typeIds[i])&&cd.compareManyFields(e.children,t.children)}function yht(e,t){return e===t||Cl(e,t)&&e.id===t.id&&e.isOrdered===t.isOrdered&&cd.visit(e.indices,t.indices)&&cd.visit(e.dictionary,t.dictionary)}function wO(e,t){return e===t||Cl(e,t)&&e.unit===t.unit}function g2(e,t){return e===t||Cl(e,t)&&e.unit===t.unit}function vht(e,t){return e===t||Cl(e,t)&&e.listSize===t.listSize&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}function xht(e,t){return e===t||Cl(e,t)&&e.keysSorted===t.keysSorted&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}Cr.prototype.visitNull=Sg;Cr.prototype.visitBool=Sg;Cr.prototype.visitInt=yp;Cr.prototype.visitInt8=yp;Cr.prototype.visitInt16=yp;Cr.prototype.visitInt32=yp;Cr.prototype.visitInt64=yp;Cr.prototype.visitUint8=yp;Cr.prototype.visitUint16=yp;Cr.prototype.visitUint32=yp;Cr.prototype.visitUint64=yp;Cr.prototype.visitFloat=JP;Cr.prototype.visitFloat16=JP;Cr.prototype.visitFloat32=JP;Cr.prototype.visitFloat64=JP;Cr.prototype.visitUtf8=Sg;Cr.prototype.visitLargeUtf8=Sg;Cr.prototype.visitBinary=Sg;Cr.prototype.visitLargeBinary=Sg;Cr.prototype.visitFixedSizeBinary=mht;Cr.prototype.visitDate=xO;Cr.prototype.visitDateDay=xO;Cr.prototype.visitDateMillisecond=xO;Cr.prototype.visitTimestamp=A2;Cr.prototype.visitTimestampSecond=A2;Cr.prototype.visitTimestampMillisecond=A2;Cr.prototype.visitTimestampMicrosecond=A2;Cr.prototype.visitTimestampNanosecond=A2;Cr.prototype.visitTime=m2;Cr.prototype.visitTimeSecond=m2;Cr.prototype.visitTimeMillisecond=m2;Cr.prototype.visitTimeMicrosecond=m2;Cr.prototype.visitTimeNanosecond=m2;Cr.prototype.visitDecimal=Sg;Cr.prototype.visitList=ght;Cr.prototype.visitStruct=_ht;Cr.prototype.visitUnion=bO;Cr.prototype.visitDenseUnion=bO;Cr.prototype.visitSparseUnion=bO;Cr.prototype.visitDictionary=yht;Cr.prototype.visitInterval=wO;Cr.prototype.visitIntervalDayTime=wO;Cr.prototype.visitIntervalYearMonth=wO;Cr.prototype.visitDuration=g2;Cr.prototype.visitDurationSecond=g2;Cr.prototype.visitDurationMillisecond=g2;Cr.prototype.visitDurationMicrosecond=g2;Cr.prototype.visitDurationNanosecond=g2;Cr.prototype.visitFixedSizeList=vht;Cr.prototype.visitMap=xht;var cd=new Cr;function Tg(e,t){return cd.compareSchemas(e,t)}function wW(e,t){return cd.compareFields(e,t)}function SW(e,t){return cd.visit(e,t)}function bg(e){let t=e.type,r=new(bW.getVisitFn(t)())(e);if(t.children&&t.children.length>0){let i=e.children||[],s={nullValues:e.nullValues},n=Array.isArray(i)?(o,c)=>i[c]||s:({name:o})=>i[o]||s;for(let[o,c]of t.children.entries()){let{type:f}=c,_=n(c,o);r.children.push(bg(Object.assign(Object.assign({},_),{type:f})))}}return r}function t3(e,t){return bht(e,t.map(r=>r.data.concat()))}function bht(e,t){let r=[...e.fields],i=[],s={numBatches:t.reduce((C,R)=>Math.max(C,R.length),0)},n=0,o=0,c=-1,f=t.length,_,w=[];for(;s.numBatches-- >0;){for(o=Number.POSITIVE_INFINITY,c=-1;++c0&&(i[n++]=yr({type:new un(r),length:o,nullCount:0,children:w.slice()})))}return[e=e.assign(r),i.map(C=>new ks(e,C))]}function wht(e,t,r,i,s){var n;let o=(t+63&-64)>>3;for(let c=-1,f=i.length;++c=t)w===t?r[c]=_:(r[c]=_.slice(0,t),s.numBatches=Math.max(s.numBatches,i[c].unshift(_.slice(t,w-t))));else{let C=e[c];e[c]=C.clone({nullable:!0}),r[c]=(n=_?._changeLengthAndBackfillNullBitmap(t))!==null&&n!==void 0?n:yr({type:C.type,length:t,nullCount:t,nullBitmap:new Uint8Array(o)})}}return r}var MW,ba=class e{constructor(...t){var r,i;if(t.length===0)return this.batches=[],this.schema=new nn([]),this._offsets=[0],this;let s,n;t[0]instanceof nn&&(s=t.shift()),t.at(-1)instanceof Uint32Array&&(n=t.pop());let o=f=>{if(f){if(f instanceof ks)return[f];if(f instanceof e)return f.batches;if(f instanceof Di){if(f.type instanceof un)return[new ks(new nn(f.type.children),f)]}else{if(Array.isArray(f))return f.flatMap(_=>o(_));if(typeof f[Symbol.iterator]==\"function\")return[...f].flatMap(_=>o(_));if(typeof f==\"object\"){let _=Object.keys(f),w=_.map(N=>new wr([f[N]])),C=s??new nn(_.map((N,j)=>new si(String(N),w[j].type,w[j].nullable))),[,R]=t3(C,w);return R.length===0?[new ks(f)]:R}}}return[]},c=t.flatMap(f=>o(f));if(s=(i=s??((r=c[0])===null||r===void 0?void 0:r.schema))!==null&&i!==void 0?i:new nn([]),!(s instanceof nn))throw new TypeError(\"Table constructor expects a [Schema, RecordBatch[]] pair.\");for(let f of c){if(!(f instanceof ks))throw new TypeError(\"Table constructor expects a [Schema, RecordBatch[]] pair.\");if(!Tg(s,f.schema))throw new TypeError(\"Table and inner RecordBatch schemas must be equivalent.\")}this.schema=s,this.batches=c,this._offsets=n??HP(this.data)}get data(){return this.batches.map(({data:t})=>t)}get numCols(){return this.schema.fields.length}get numRows(){return this.data.reduce((t,r)=>t+r.length,0)}get nullCount(){return this._nullCount===-1&&(this._nullCount=WP(this.data)),this._nullCount}isValid(t){return!1}get(t){return null}set(t,r){}indexOf(t,r){return-1}[Symbol.iterator](){return this.batches.length>0?uv.visit(new wr(this.data)):new Array(0)[Symbol.iterator]()}toArray(){return[...this]}toString(){return`[\n ${this.toArray().join(`,\n `)}\n]`}concat(...t){let r=this.schema,i=this.data.concat(t.flatMap(({data:s})=>s));return new e(r,i.map(s=>new ks(r,s)))}slice(t,r){let i=this.schema;[t,r]=Vw({length:this.numRows},t,r);let s=qP(this.data,this._offsets,t,r);return new e(i,s.map(n=>new ks(i,n)))}getChild(t){return this.getChildAt(this.schema.fields.findIndex(r=>r.name===t))}getChildAt(t){if(t>-1&&ti.children[t]);if(r.length===0){let{type:i}=this.schema.fields[t],s=yr({type:i,length:0,nullCount:0});r.push(s._changeLengthAndBackfillNullBitmap(this.numRows))}return new wr(r)}return null}setChild(t,r){var i;return this.setChildAt((i=this.schema.fields)===null||i===void 0?void 0:i.findIndex(s=>s.name===t),r)}setChildAt(t,r){let i=this.schema,s=[...this.batches];if(t>-1&&tthis.getChildAt(_));[n[t],c[t]]=[o,r],[i,s]=t3(i,c)}return new e(i,s)}select(t){let r=this.schema.fields.reduce((i,s,n)=>i.set(s.name,n),new Map);return this.selectAt(t.map(i=>r.get(i)).filter(i=>i>-1))}selectAt(t){let r=this.schema.selectAt(t),i=this.batches.map(s=>s.selectAt(t));return new e(r,i)}assign(t){let r=this.schema.fields,[i,s]=t.schema.fields.reduce((c,f,_)=>{let[w,C]=c,R=r.findIndex(N=>N.name===f.name);return~R?C[R]=_:w.push(_),c},[[],[]]),n=this.schema.assign(t.schema),o=[...r.map((c,f)=>[f,s[f]]).map(([c,f])=>f===void 0?this.getChildAt(c):t.getChildAt(f)),...i.map(c=>t.getChildAt(c))].filter(Boolean);return new e(...t3(n,o))}};MW=Symbol.toStringTag;ba[MW]=(e=>(e.schema=null,e.batches=[],e._offsets=new Uint32Array([0]),e._nullCount=-1,e[Symbol.isConcatSpreadable]=!0,e.isValid=cv(Ww),e.get=cv(co.getVisitFn(Rt.Struct)),e.set=ZP(xa.getVisitFn(Rt.Struct)),e.indexOf=YP(gg.getVisitFn(Rt.Struct)),\"Table\"))(ba.prototype);var PW,ks=class e{constructor(...t){switch(t.length){case 2:{if([this.schema]=t,!(this.schema instanceof nn))throw new TypeError(\"RecordBatch constructor expects a [Schema, Data] pair.\");if([,this.data=yr({nullCount:0,type:new un(this.schema.fields),children:this.schema.fields.map(r=>yr({type:r.type,nullCount:0}))})]=t,!(this.data instanceof Di))throw new TypeError(\"RecordBatch constructor expects a [Schema, Data] pair.\");[this.schema,this.data]=EW(this.schema,this.data.children);break}case 1:{let[r]=t,{fields:i,children:s,length:n}=Object.keys(r).reduce((f,_,w)=>(f.children[w]=r[_],f.length=Math.max(f.length,r[_].length),f.fields[w]=si.new({name:_,type:r[_].type,nullable:!0}),f),{length:0,fields:new Array,children:new Array}),o=new nn(i),c=yr({type:new un(i),length:n,children:s,nullCount:0});[this.schema,this.data]=EW(o,c.children,n);break}default:throw new TypeError(\"RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.\")}}get dictionaries(){return this._dictionaries||(this._dictionaries=IW(this.schema.fields,this.data.children))}get numCols(){return this.schema.fields.length}get numRows(){return this.data.length}get nullCount(){return this.data.nullCount}isValid(t){return this.data.getValid(t)}get(t){return co.visit(this.data,t)}set(t,r){return xa.visit(this.data,t,r)}indexOf(t,r){return gg.visit(this.data,t,r)}[Symbol.iterator](){return uv.visit(new wr([this.data]))}toArray(){return[...this]}concat(...t){return new ba(this.schema,[this,...t])}slice(t,r){let[i]=new wr([this.data]).slice(t,r).data;return new e(this.schema,i)}getChild(t){var r;return this.getChildAt((r=this.schema.fields)===null||r===void 0?void 0:r.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&ts.name===t),r)}setChildAt(t,r){let i=this.schema,s=this.data;if(t>-1&&tc.name===n);~o&&(s[o]=this.data.children[o])}return new e(r,yr({type:i,length:this.numRows,children:s}))}selectAt(t){let r=this.schema.selectAt(t),i=t.map(n=>this.data.children[n]).filter(Boolean),s=yr({type:new un(r.fields),length:this.numRows,children:i});return new e(r,s)}};PW=Symbol.toStringTag;ks[PW]=(e=>(e._nullCount=-1,e[Symbol.isConcatSpreadable]=!0,\"RecordBatch\"))(ks.prototype);function EW(e,t,r=t.reduce((i,s)=>Math.max(i,s.length),0)){var i;let s=[...e.fields],n=[...t],o=(r+63&-64)>>3;for(let[c,f]of e.fields.entries()){let _=t[c];(!_||_.length!==r)&&(s[c]=f.clone({nullable:!0}),n[c]=(i=_?._changeLengthAndBackfillNullBitmap(r))!==null&&i!==void 0?i:yr({type:f.type,length:r,nullCount:r,nullBitmap:new Uint8Array(o)}))}return[e.assign(s),yr({type:new un(s),length:r,children:n})]}function IW(e,t,r=new Map){var i,s;if(((i=e?.length)!==null&&i!==void 0?i:0)>0&&e?.length===t?.length)for(let n=-1,o=e.length;++nyr({type:s.type})),i=yr({type:new un(t.fields),nullCount:0,children:r});super(t,i)}};var sf=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsMessage(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsMessage(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):en.V1}headerType(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint8(this.bb_pos+t):bi.NONE}header(t){let r=this.bb.__offset(this.bb_pos,8);return r?this.bb.__union(t,this.bb_pos+r):null}bodyLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt64(this.bb_pos+t):BigInt(\"0\")}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,12);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startMessage(t){t.startObject(5)}static addVersion(t,r){t.addFieldInt16(0,r,en.V1)}static addHeaderType(t,r){t.addFieldInt8(1,r,bi.NONE)}static addHeader(t,r){t.addFieldOffset(2,r,0)}static addBodyLength(t,r){t.addFieldInt64(3,r,BigInt(\"0\"))}static addCustomMetadata(t,r){t.addFieldOffset(4,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endMessage(t){return t.endObject()}static finishMessageBuffer(t,r){t.finish(r)}static finishSizePrefixedMessageBuffer(t,r){t.finish(r,void 0,!0)}static createMessage(t,r,i,s,n,o){return e.startMessage(t),e.addVersion(t,r),e.addHeaderType(t,i),e.addHeader(t,s),e.addBodyLength(t,n),e.addCustomMetadata(t,o),e.endMessage(t)}};var SO=class extends Mr{visit(t,r){return t==null||r==null?void 0:super.visit(t,r)}visitNull(t,r){return Mw.startNull(r),Mw.endNull(r)}visitInt(t,r){return Xh.startInt(r),Xh.addBitWidth(r,t.bitWidth),Xh.addIsSigned(r,t.isSigned),Xh.endInt(r)}visitFloat(t,r){return sm.startFloatingPoint(r),sm.addPrecision(r,t.precision),sm.endFloatingPoint(r)}visitBinary(t,r){return xw.startBinary(r),xw.endBinary(r)}visitLargeBinary(t,r){return ww.startLargeBinary(r),ww.endLargeBinary(r)}visitBool(t,r){return bw.startBool(r),bw.endBool(r)}visitUtf8(t,r){return Pw.startUtf8(r),Pw.endUtf8(r)}visitLargeUtf8(t,r){return Sw.startLargeUtf8(r),Sw.endLargeUtf8(r)}visitDecimal(t,r){return td.startDecimal(r),td.addScale(r,t.scale),td.addPrecision(r,t.precision),td.addBitWidth(r,t.bitWidth),td.endDecimal(r)}visitDate(t,r){return em.startDate(r),em.addUnit(r,t.unit),em.endDate(r)}visitTime(t,r){return hp.startTime(r),hp.addUnit(r,t.unit),hp.addBitWidth(r,t.bitWidth),hp.endTime(r)}visitTimestamp(t,r){let i=t.timezone&&r.createString(t.timezone)||void 0;return fp.startTimestamp(r),fp.addUnit(r,t.unit),i!==void 0&&fp.addTimezone(r,i),fp.endTimestamp(r)}visitInterval(t,r){return om.startInterval(r),om.addUnit(r,t.unit),om.endInterval(r)}visitDuration(t,r){return rm.startDuration(r),rm.addUnit(r,t.unit),rm.endDuration(r)}visitList(t,r){return Tw.startList(r),Tw.endList(r)}visitStruct(t,r){return Ew.startStruct_(r),Ew.endStruct_(r)}visitUnion(t,r){Kh.startTypeIdsVector(r,t.typeIds.length);let i=Kh.createTypeIdsVector(r,t.typeIds);return Kh.startUnion(r),Kh.addMode(r,t.mode),Kh.addTypeIds(r,i),Kh.endUnion(r)}visitDictionary(t,r){let i=this.visit(t.indices,r);return Jf.startDictionaryEncoding(r),Jf.addId(r,BigInt(t.id)),Jf.addIsOrdered(r,t.isOrdered),i!==void 0&&Jf.addIndexType(r,i),Jf.endDictionaryEncoding(r)}visitFixedSizeBinary(t,r){return im.startFixedSizeBinary(r),im.addByteWidth(r,t.byteWidth),im.endFixedSizeBinary(r)}visitFixedSizeList(t,r){return nm.startFixedSizeList(r),nm.addListSize(r,t.listSize),nm.endFixedSizeList(r)}visitMap(t,r){return am.startMap(r),am.addKeysSorted(r,t.keysSorted),am.endMap(r)}},e3=new SO;function RW(e,t=new Map){return new nn(Sht(e,t),r3(e.metadata),t)}function TO(e){return new wa(e.count,OW(e.columns),BW(e.columns))}function DW(e){return new pc(TO(e.data),e.id,e.isDelta)}function Sht(e,t){return(e.fields||[]).filter(Boolean).map(r=>si.fromJSON(r,t))}function CW(e,t){return(e.children||[]).filter(Boolean).map(r=>si.fromJSON(r,t))}function OW(e){return(e||[]).reduce((t,r)=>[...t,new $u(r.count,Tht(r.VALIDITY)),...OW(r.children)],[])}function BW(e,t=[]){for(let r=-1,i=(e||[]).length;++rt+ +(r===0),0)}function FW(e,t){let r,i,s,n,o,c;return!t||!(n=e.dictionary)?(o=kW(e,CW(e,t)),s=new si(e.name,o,e.nullable,r3(e.metadata))):t.has(r=n.id)?(i=(i=n.indexType)?LW(i):new ef,c=new hc(t.get(r),i,r,n.isOrdered),s=new si(e.name,c,e.nullable,r3(e.metadata))):(i=(i=n.indexType)?LW(i):new ef,t.set(r,o=kW(e,CW(e,t))),c=new hc(o,i,r,n.isOrdered),s=new si(e.name,c,e.nullable,r3(e.metadata))),s||null}function r3(e=[]){return new Map(e.map(({key:t,value:r})=>[t,r]))}function LW(e){return new is(e.isSigned,e.bitWidth)}function kW(e,t){let r=e.type.name;switch(r){case\"NONE\":return new ea;case\"null\":return new ea;case\"binary\":return new Uu;case\"largebinary\":return new ed;case\"utf8\":return new Vu;case\"largeutf8\":return new rd;case\"bool\":return new oc;case\"list\":return new lc((t||[])[0]);case\"struct\":return new un(t||[]);case\"struct_\":return new un(t||[])}switch(r){case\"int\":{let i=e.type;return new is(i.isSigned,i.bitWidth)}case\"floatingpoint\":{let i=e.type;return new lo(qi[i.precision])}case\"decimal\":{let i=e.type;return new ju(i.scale,i.precision,i.bitWidth)}case\"date\":{let i=e.type;return new Gu(Xs[i.unit])}case\"time\":{let i=e.type;return new ac(pr[i.unit],i.bitWidth)}case\"timestamp\":{let i=e.type;return new Wu(pr[i.unit],i.timezone)}case\"interval\":{let i=e.type;return new Hu(Io[i.unit])}case\"duration\":{let i=e.type;return new qu(pr[i.unit])}case\"union\":{let i=e.type,[s,...n]=(i.mode+\"\").toLowerCase(),o=s.toUpperCase()+n.join(\"\");return new cc(Mn[o],i.typeIds||[],t||[])}case\"fixedsizebinary\":{let i=e.type;return new Zu(i.byteWidth)}case\"fixedsizelist\":{let i=e.type;return new Il(i.listSize,(t||[])[0])}case\"map\":{let i=e.type;return new uc((t||[])[0],i.keysSorted)}}throw new Error(`Unrecognized type: \"${r}\"`)}var Mht=dg,Eht=eu,Ac=class e{static fromJSON(t,r){let i=new e(0,en.V5,r);return i._createHeader=Pht(t,r),i}static decode(t){t=new Eht(Rr(t));let r=sf.getRootAsMessage(t),i=r.bodyLength(),s=r.version(),n=r.headerType(),o=new e(i,s,n);return o._createHeader=Iht(r,n),o}static encode(t){let r=new Mht,i=-1;return t.isSchema()?i=nn.encode(r,t.header()):t.isRecordBatch()?i=wa.encode(r,t.header()):t.isDictionaryBatch()&&(i=pc.encode(r,t.header())),sf.startMessage(r),sf.addVersion(r,en.V5),sf.addHeader(r,i),sf.addHeaderType(r,t.headerType),sf.addBodyLength(r,BigInt(t.bodyLength)),sf.finishMessageBuffer(r,sf.endMessage(r)),r.asUint8Array()}static from(t,r=0){if(t instanceof nn)return new e(0,en.V5,bi.Schema,t);if(t instanceof wa)return new e(r,en.V5,bi.RecordBatch,t);if(t instanceof pc)return new e(r,en.V5,bi.DictionaryBatch,t);throw new Error(`Unrecognized Message header: ${t}`)}get type(){return this.headerType}get version(){return this._version}get headerType(){return this._headerType}get bodyLength(){return this._bodyLength}header(){return this._createHeader()}isSchema(){return this.headerType===bi.Schema}isRecordBatch(){return this.headerType===bi.RecordBatch}isDictionaryBatch(){return this.headerType===bi.DictionaryBatch}constructor(t,r,i,s){this._version=r,this._headerType=i,this.body=new Uint8Array(0),s&&(this._createHeader=()=>s),this._bodyLength=ms(t)}},wa=class{get nodes(){return this._nodes}get length(){return this._length}get buffers(){return this._buffers}constructor(t,r,i){this._nodes=r,this._buffers=i,this._length=ms(t)}},pc=class{get id(){return this._id}get data(){return this._data}get isDelta(){return this._isDelta}get length(){return this.data.length}get nodes(){return this.data.nodes}get buffers(){return this.data.buffers}constructor(t,r,i=!1){this._data=t,this._isDelta=i,this._id=ms(r)}},dc=class{constructor(t,r){this.offset=ms(t),this.length=ms(r)}},$u=class{constructor(t,r){this.length=ms(t),this.nullCount=ms(r)}};function Pht(e,t){return()=>{switch(t){case bi.Schema:return nn.fromJSON(e);case bi.RecordBatch:return wa.fromJSON(e);case bi.DictionaryBatch:return pc.fromJSON(e)}throw new Error(`Unrecognized Message type: { name: ${bi[t]}, type: ${t} }`)}}function Iht(e,t){return()=>{switch(t){case bi.Schema:return nn.decode(e.header(new sc),new Map,e.version());case bi.RecordBatch:return wa.decode(e.header(new ru),e.version());case bi.DictionaryBatch:return pc.decode(e.header(new up),e.version())}throw new Error(`Unrecognized Message type: { name: ${bi[t]}, type: ${t} }`)}}si.encode=Uht;si.decode=zht;si.fromJSON=FW;nn.encode=Nht;nn.decode=Cht;nn.fromJSON=RW;wa.encode=Vht;wa.decode=Lht;wa.fromJSON=TO;pc.encode=jht;pc.decode=kht;pc.fromJSON=DW;$u.encode=Ght;$u.decode=Dht;dc.encode=Wht;dc.decode=Rht;function Cht(e,t=new Map,r=en.V5){let i=Fht(e,t);return new nn(i,i3(e),t,r)}function Lht(e,t=en.V5){if(e.compression()!==null)throw new Error(\"Record batch compression not implemented\");return new wa(e.length(),Oht(e),Bht(e,t))}function kht(e,t=en.V5){return new pc(wa.decode(e.data(),t),e.id(),e.isDelta())}function Rht(e){return new dc(e.offset(),e.length())}function Dht(e){return new $u(e.length(),e.nullCount())}function Oht(e){let t=[];for(let r,i=-1,s=-1,n=e.nodesLength();++isi.encode(e,n));sc.startFieldsVector(e,r.length);let i=sc.createFieldsVector(e,r),s=t.metadata&&t.metadata.size>0?sc.createCustomMetadataVector(e,[...t.metadata].map(([n,o])=>{let c=e.createString(`${n}`),f=e.createString(`${o}`);return Co.startKeyValue(e),Co.addKey(e,c),Co.addValue(e,f),Co.endKeyValue(e)})):-1;return sc.startSchema(e),sc.addFields(e,i),sc.addEndianness(e,Hht?tm.Little:tm.Big),s!==-1&&sc.addCustomMetadata(e,s),sc.endSchema(e)}function Uht(e,t){let r=-1,i=-1,s=-1,n=t.type,o=t.typeId;Ne.isDictionary(n)?(o=n.dictionary.typeId,s=e3.visit(n,e),i=e3.visit(n.dictionary,e)):i=e3.visit(n,e);let c=(n.children||[]).map(w=>si.encode(e,w)),f=rl.createChildrenVector(e,c),_=t.metadata&&t.metadata.size>0?rl.createCustomMetadataVector(e,[...t.metadata].map(([w,C])=>{let R=e.createString(`${w}`),N=e.createString(`${C}`);return Co.startKeyValue(e),Co.addKey(e,R),Co.addValue(e,N),Co.endKeyValue(e)})):-1;return t.name&&(r=e.createString(t.name)),rl.startField(e),rl.addType(e,i),rl.addTypeType(e,o),rl.addChildren(e,f),rl.addNullable(e,!!t.nullable),r!==-1&&rl.addName(e,r),s!==-1&&rl.addDictionary(e,s),_!==-1&&rl.addCustomMetadata(e,_),rl.endField(e)}function Vht(e,t){let r=t.nodes||[],i=t.buffers||[];ru.startNodesVector(e,r.length);for(let o of r.slice().reverse())$u.encode(e,o);let s=e.endVector();ru.startBuffersVector(e,i.length);for(let o of i.slice().reverse())dc.encode(e,o);let n=e.endVector();return ru.startRecordBatch(e),ru.addLength(e,BigInt(t.length)),ru.addNodes(e,s),ru.addBuffers(e,n),ru.endRecordBatch(e)}function jht(e,t){let r=wa.encode(e,t.data);return up.startDictionaryBatch(e),up.addId(e,BigInt(t.id)),up.addIsDelta(e,t.isDelta),up.addData(e,r),up.endDictionaryBatch(e)}function Ght(e,t){return tv.createFieldNode(e,BigInt(t.length),BigInt(t.nullCount))}function Wht(e,t){return Jy.createBuffer(e,BigInt(t.offset),BigInt(t.length))}var Hht=(()=>{let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]===256})();var EO=e=>`Expected ${bi[e]} Message in stream, but was null or length 0.`,PO=e=>`Header pointer of flatbuffer-encoded ${bi[e]} Message is null or length 0.`,VW=(e,t)=>`Expected to read ${e} metadata bytes, but only read ${t}.`,jW=(e,t)=>`Expected to read ${e} bytes for message body, but only read ${t}.`,Ov=class{constructor(t){this.source=t instanceof sd?t:new sd(t)}[Symbol.iterator](){return this}next(){let t;return(t=this.readMetadataLength()).done?Nn:t.value===-1&&(t=this.readMetadataLength()).done?Nn:(t=this.readMetadata(t.value)).done?Nn:t}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}readMessage(t){let r;if((r=this.next()).done)return null;if(t!=null&&r.value.headerType!==t)throw new Error(EO(t));return r.value}readMessageBody(t){if(t<=0)return new Uint8Array(0);let r=Rr(this.source.read(t));if(r.byteLength[...s,...n.VALIDITY&&[n.VALIDITY]||[],...n.TYPE_ID&&[n.TYPE_ID]||[],...n.OFFSET&&[n.OFFSET]||[],...n.DATA&&[n.DATA]||[],...r(n.children)],[])}}readMessage(t){let r;if((r=this.next()).done)return null;if(t!=null&&r.value.headerType!==t)throw new Error(EO(t));return r.value}readSchema(){let t=bi.Schema,r=this.readMessage(t),i=r?.header();if(!r||!i)throw new Error(PO(t));return i}},n3=4,MO=\"ARROW1\",Bv=new Uint8Array(MO.length);for(let e=0;ethis):this}readRecordBatch(t){return this._impl.isFile()?this._impl.readRecordBatch(t):null}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}toDOMStream(){return va.toDOMStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this})}toNodeStream(){return va.toNodeStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this},{objectMode:!0})}static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t,r){throw new Error('\"throughDOM\" not available in this environment')}static from(t){return t instanceof e?t:hP(t)?Zht(t):dP(t)?$ht(t):Jc(t)?sr(this,void 0,void 0,function*(){return yield e.from(yield t)}):pP(t)||Aw(t)||mP(t)||zu(t)?Qht(new Qu(t)):Yht(new sd(t))}static readAll(t){return t instanceof e?t.isSync()?WW(t):HW(t):hP(t)||ArrayBuffer.isView(t)||Yh(t)||fP(t)?WW(t):HW(t)}},vp=class extends ou{constructor(t){super(t),this._impl=t}readAll(){return[...this]}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return Kc(this,arguments,function*(){yield ii(yield*Xy(Zh(this[Symbol.iterator]())))})}},Eg=class extends ou{constructor(t){super(t),this._impl=t}readAll(){var t,r,i,s;return sr(this,void 0,void 0,function*(){let n=new Array;try{for(var o=!0,c=Zh(this),f;f=yield c.next(),t=f.done,!t;o=!0){s=f.value,o=!1;let _=s;n.push(_)}}catch(_){r={error:_}}finally{try{!o&&!t&&(i=c.return)&&(yield i.call(c))}finally{if(r)throw r.error}}return n})}[Symbol.iterator](){throw new Error(\"AsyncRecordBatchStreamReader is not Iterable\")}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}},Pg=class extends vp{constructor(t){super(t),this._impl=t}},o3=class extends Eg{constructor(t){super(t),this._impl=t}},a3=class{get numDictionaries(){return this._dictionaryIndex}get numRecordBatches(){return this._recordBatchIndex}constructor(t=new Map){this.closed=!1,this.autoDestroy=!0,this._dictionaryIndex=0,this._recordBatchIndex=0,this.dictionaries=t}isSync(){return!1}isAsync(){return!1}isFile(){return!1}isStream(){return!1}reset(t){return this._dictionaryIndex=0,this._recordBatchIndex=0,this.schema=t,this.dictionaries=new Map,this}_loadRecordBatch(t,r){let i=this._loadVectors(t,r,this.schema.fields),s=yr({type:new un(this.schema.fields),length:t.length,children:i});return new ks(this.schema,s)}_loadDictionaryBatch(t,r){let{id:i,isDelta:s}=t,{dictionaries:n,schema:o}=this,c=n.get(i);if(s||!c){let f=o.dictionaries.get(i),_=this._loadVectors(t.data,r,[f]);return(c&&s?c.concat(new wr(_)):new wr(_)).memoize()}return c.memoize()}_loadVectors(t,r,i){return new Qw(r,t.nodes,t.buffers,this.dictionaries,this.schema.metadataVersion).visitMany(i)}},zv=class extends a3{constructor(t,r){super(r),this._reader=hP(t)?new y2(this._handle=t):new Ov(this._handle=t)}isSync(){return!0}isStream(){return!0}[Symbol.iterator](){return this}cancel(){!this.closed&&(this.closed=!0)&&(this.reset()._reader.return(),this._reader=null,this.dictionaries=null)}open(t){return this.closed||(this.autoDestroy=qW(this,t),this.schema||(this.schema=this._reader.readSchema())||this.cancel()),this}throw(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.throw(t):Nn}return(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.return(t):Nn}next(){if(this.closed)return Nn;let t,{_reader:r}=this;for(;t=this._readNextMessageAndValidate();)if(t.isSchema())this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),s=r.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,s)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),s=r.readMessageBody(t.bodyLength),n=this._loadDictionaryBatch(i,s);this.dictionaries.set(i.id,n)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Mg(this.schema)}):this.return()}_readNextMessageAndValidate(t){return this._reader.readMessage(t)}},Nv=class extends a3{constructor(t,r){super(r),this._reader=new _2(this._handle=t)}isAsync(){return!0}isStream(){return!0}[Symbol.asyncIterator](){return this}cancel(){return sr(this,void 0,void 0,function*(){!this.closed&&(this.closed=!0)&&(yield this.reset()._reader.return(),this._reader=null,this.dictionaries=null)})}open(t){return sr(this,void 0,void 0,function*(){return this.closed||(this.autoDestroy=qW(this,t),this.schema||(this.schema=yield this._reader.readSchema())||(yield this.cancel())),this})}throw(t){return sr(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.throw(t):Nn})}return(t){return sr(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.return(t):Nn})}next(){return sr(this,void 0,void 0,function*(){if(this.closed)return Nn;let t,{_reader:r}=this;for(;t=yield this._readNextMessageAndValidate();)if(t.isSchema())yield this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),s=yield r.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,s)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),s=yield r.readMessageBody(t.bodyLength),n=this._loadDictionaryBatch(i,s);this.dictionaries.set(i.id,n)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Mg(this.schema)}):yield this.return()})}_readNextMessageAndValidate(t){return sr(this,void 0,void 0,function*(){return yield this._reader.readMessage(t)})}},l3=class extends zv{get footer(){return this._footer}get numDictionaries(){return this._footer?this._footer.numDictionaries:0}get numRecordBatches(){return this._footer?this._footer.numRecordBatches:0}constructor(t,r){super(t instanceof qw?t:new qw(t),r)}isSync(){return!0}isFile(){return!0}open(t){if(!this.closed&&!this._footer){this.schema=(this._footer=this._readFooter()).schema;for(let r of this._footer.dictionaryBatches())r&&this._readDictionaryBatch(this._dictionaryIndex++)}return super.open(t)}readRecordBatch(t){var r;if(this.closed)return null;this._footer||this.open();let i=(r=this._footer)===null||r===void 0?void 0:r.getRecordBatch(t);if(i&&this._handle.seek(i.offset)){let s=this._reader.readMessage(bi.RecordBatch);if(s?.isRecordBatch()){let n=s.header(),o=this._reader.readMessageBody(s.bodyLength);return this._loadRecordBatch(n,o)}}return null}_readDictionaryBatch(t){var r;let i=(r=this._footer)===null||r===void 0?void 0:r.getDictionaryBatch(t);if(i&&this._handle.seek(i.offset)){let s=this._reader.readMessage(bi.DictionaryBatch);if(s?.isDictionaryBatch()){let n=s.header(),o=this._reader.readMessageBody(s.bodyLength),c=this._loadDictionaryBatch(n,o);this.dictionaries.set(n.id,c)}}}_readFooter(){let{_handle:t}=this,r=t.size-IO,i=t.readInt32(r),s=t.readAt(r-i,i);return Ap.decode(s)}_readNextMessageAndValidate(t){var r;if(this._footer||this.open(),this._footer&&this._recordBatchIndexsuper.open}});return sr(this,void 0,void 0,function*(){if(!this.closed&&!this._footer){this.schema=(this._footer=yield this._readFooter()).schema;for(let i of this._footer.dictionaryBatches())i&&(yield this._readDictionaryBatch(this._dictionaryIndex++))}return yield r.open.call(this,t)})}readRecordBatch(t){var r;return sr(this,void 0,void 0,function*(){if(this.closed)return null;this._footer||(yield this.open());let i=(r=this._footer)===null||r===void 0?void 0:r.getRecordBatch(t);if(i&&(yield this._handle.seek(i.offset))){let s=yield this._reader.readMessage(bi.RecordBatch);if(s?.isRecordBatch()){let n=s.header(),o=yield this._reader.readMessageBody(s.bodyLength);return this._loadRecordBatch(n,o)}}return null})}_readDictionaryBatch(t){var r;return sr(this,void 0,void 0,function*(){let i=(r=this._footer)===null||r===void 0?void 0:r.getDictionaryBatch(t);if(i&&(yield this._handle.seek(i.offset))){let s=yield this._reader.readMessage(bi.DictionaryBatch);if(s?.isDictionaryBatch()){let n=s.header(),o=yield this._reader.readMessageBody(s.bodyLength),c=this._loadDictionaryBatch(n,o);this.dictionaries.set(n.id,c)}}})}_readFooter(){return sr(this,void 0,void 0,function*(){let{_handle:t}=this;t._pending&&(yield t._pending);let r=t.size-IO,i=yield t.readInt32(r),s=yield t.readAt(r-i,i);return Ap.decode(s)})}_readNextMessageAndValidate(t){return sr(this,void 0,void 0,function*(){if(this._footer||(yield this.open()),this._footer&&this._recordBatchIndex=4?s3(t)?new Pg(new l3(e.read())):new vp(new zv(e)):new vp(new zv(function*(){}()))}function Qht(e){return sr(this,void 0,void 0,function*(){let t=yield e.peek(Fv+7&-8);return t&&t.byteLength>=4?s3(t)?new Pg(new l3(yield e.read())):new Eg(new Nv(e)):new Eg(new Nv(function(){return Kc(this,arguments,function*(){})}()))})}function $ht(e){return sr(this,void 0,void 0,function*(){let{size:t}=yield e.stat(),r=new hm(e,t);return t>=GW&&s3(yield r.readAt(0,Fv+7&-8))?new o3(new CO(r)):new Eg(new Nv(r))})}var ns=class e extends Mr{static assemble(...t){let r=s=>s.flatMap(n=>Array.isArray(n)?r(n):n instanceof ks?n.data.children:n.data),i=new e;return i.visitMany(r(t)),i}constructor(){super(),this._byteLength=0,this._nodes=[],this._buffers=[],this._bufferRegions=[]}visit(t){if(t instanceof wr)return this.visitMany(t.data),this;let{type:r}=t;if(!Ne.isDictionary(r)){let{length:i}=t;if(i>2147483647)throw new RangeError(\"Cannot write arrays larger than 2^31 - 1 in length\");if(Ne.isUnion(r))this.nodes.push(new $u(i,0));else{let{nullCount:s}=t;Ne.isNull(r)||of.call(this,s<=0?new Uint8Array(0):Ag(t.offset,i,t.nullBitmap)),this.nodes.push(new $u(i,s))}}return super.visit(t)}visitNull(t){return this}visitDictionary(t){return this.visit(t.clone(t.type.indices))}get nodes(){return this._nodes}get buffers(){return this._buffers}get byteLength(){return this._byteLength}get bufferRegions(){return this._bufferRegions}};function of(e){let t=e.byteLength+7&-8;return this.buffers.push(e),this.bufferRegions.push(new dc(this._byteLength,t)),this._byteLength+=t,this}function Xht(e){var t;let{type:r,length:i,typeIds:s,valueOffsets:n}=e;if(of.call(this,s),r.mode===Mn.Sparse)return kO.call(this,e);if(r.mode===Mn.Dense){if(e.offset<=0)return of.call(this,n),kO.call(this,e);{let o=new Int32Array(i),c=Object.create(null),f=Object.create(null);for(let _,w,C=-1;++C{let C=r.typeIds[w],R=c[C],N=f[C];return _.slice(R,Math.min(i,N))}))}}return this}function Kht(e){let t;return e.nullCount>=e.length?of.call(this,new Uint8Array(0)):(t=e.values)instanceof Uint8Array?of.call(this,Ag(e.offset,e.length,t)):of.call(this,mg(e.values))}function xp(e){return of.call(this,e.values.subarray(0,e.length*e.stride))}function c3(e){let{length:t,values:r,valueOffsets:i}=e,s=ms(i[0]),n=ms(i[t]),o=Math.min(n-s,r.byteLength-s);return of.call(this,_P(-s,t+1,i)),of.call(this,r.subarray(s,s+o)),this}function RO(e){let{length:t,valueOffsets:r}=e;if(r){let{[0]:i,[t]:s}=r;return of.call(this,_P(-i,t+1,r)),this.visit(e.children[0].slice(i,s-i))}return this.visit(e.children[0])}function kO(e){return this.visitMany(e.type.children.map((t,r)=>e.children[r]).filter(Boolean))[0]}ns.prototype.visitBool=Kht;ns.prototype.visitInt=xp;ns.prototype.visitFloat=xp;ns.prototype.visitUtf8=c3;ns.prototype.visitLargeUtf8=c3;ns.prototype.visitBinary=c3;ns.prototype.visitLargeBinary=c3;ns.prototype.visitFixedSizeBinary=xp;ns.prototype.visitDate=xp;ns.prototype.visitTimestamp=xp;ns.prototype.visitTime=xp;ns.prototype.visitDecimal=xp;ns.prototype.visitList=RO;ns.prototype.visitStruct=kO;ns.prototype.visitUnion=Xht;ns.prototype.visitInterval=xp;ns.prototype.visitDuration=xp;ns.prototype.visitFixedSizeList=RO;ns.prototype.visitMap=RO;var Ig=class extends yg{static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t,r){throw new Error('\"throughDOM\" not available in this environment')}constructor(t){super(),this._position=0,this._started=!1,this._sink=new nd,this._schema=null,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,Pl(t)||(t={autoDestroy:!0,writeLegacyIpcFormat:!1}),this._autoDestroy=typeof t.autoDestroy==\"boolean\"?t.autoDestroy:!0,this._writeLegacyIpcFormat=typeof t.writeLegacyIpcFormat==\"boolean\"?t.writeLegacyIpcFormat:!1}toString(t=!1){return this._sink.toString(t)}toUint8Array(t=!1){return this._sink.toUint8Array(t)}writeAll(t){return Jc(t)?t.then(r=>this.writeAll(r)):zu(t)?OO(this,t):DO(this,t)}get closed(){return this._sink.closed}[Symbol.asyncIterator](){return this._sink[Symbol.asyncIterator]()}toDOMStream(t){return this._sink.toDOMStream(t)}toNodeStream(t){return this._sink.toNodeStream(t)}close(){return this.reset()._sink.close()}abort(t){return this.reset()._sink.abort(t)}finish(){return this._autoDestroy?this.close():this.reset(this._sink,this._schema),this}reset(t=this._sink,r=null){return t===this._sink||t instanceof nd?this._sink=t:(this._sink=new nd,t&&s9(t)?this.toDOMStream({type:\"bytes\"}).pipeTo(t):t&&o9(t)&&this.toNodeStream({objectMode:!1}).pipe(t)),this._started&&this._schema&&this._writeFooter(this._schema),this._started=!1,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,(!r||!Tg(r,this._schema))&&(r==null?(this._position=0,this._schema=null):(this._started=!0,this._schema=r,this._writeSchema(r))),this}write(t){let r=null;if(this._sink){if(t==null)return this.finish()&&void 0;if(t instanceof ba&&!(r=t.schema))return this.finish()&&void 0;if(t instanceof ks&&!(r=t.schema))return this.finish()&&void 0}else throw new Error(\"RecordBatchWriter is closed\");if(r&&!Tg(r,this._schema)){if(this._started&&this._autoDestroy)return this.close();this.reset(this._sink,r)}t instanceof ks?t instanceof Mg||this._writeRecordBatch(t):t instanceof ba?this.writeAll(t.batches):Yh(t)&&this.writeAll(t)}_writeMessage(t,r=8){let i=r-1,s=Ac.encode(t),n=s.byteLength,o=this._writeLegacyIpcFormat?4:8,c=n+o+i&~i,f=c-n-o;return t.headerType===bi.RecordBatch?this._recordBatchBlocks.push(new mp(c,t.bodyLength,this._position)):t.headerType===bi.DictionaryBatch&&this._dictionaryBlocks.push(new mp(c,t.bodyLength,this._position)),this._writeLegacyIpcFormat||this._write(Int32Array.of(-1)),this._write(Int32Array.of(c-o)),n>0&&this._write(s),this._writePadding(f)}_write(t){if(this._started){let r=Rr(t);r&&r.byteLength>0&&(this._sink.write(r),this._position+=r.byteLength)}return this}_writeSchema(t){return this._writeMessage(Ac.from(t))}_writeFooter(t){return this._writeLegacyIpcFormat?this._write(Int32Array.of(0)):this._write(Int32Array.of(-1,0))}_writeMagic(){return this._write(Bv)}_writePadding(t){return t>0?this._write(new Uint8Array(t)):this}_writeRecordBatch(t){let{byteLength:r,nodes:i,bufferRegions:s,buffers:n}=ns.assemble(t),o=new wa(t.numRows,i,s),c=Ac.from(o,r);return this._writeDictionaries(t)._writeMessage(c)._writeBodyBuffers(n)}_writeDictionaryBatch(t,r,i=!1){this._dictionaryDeltaOffsets.set(r,t.length+(this._dictionaryDeltaOffsets.get(r)||0));let{byteLength:s,nodes:n,bufferRegions:o,buffers:c}=ns.assemble(new wr([t])),f=new wa(t.length,n,o),_=new pc(f,r,i),w=Ac.from(_,s);return this._writeMessage(w)._writeBodyBuffers(c)}_writeBodyBuffers(t){let r,i,s;for(let n=-1,o=t.length;++n0&&(this._write(r),(s=(i+7&-8)-i)>0&&this._writePadding(s));return this}_writeDictionaries(t){for(let[r,i]of t.dictionaries){let s=this._dictionaryDeltaOffsets.get(r)||0;if(s===0||(i=i?.slice(s)).length>0)for(let n of i.data)this._writeDictionaryBatch(n,r,s>0),s+=n.length}return this}},v2=class e extends Ig{static writeAll(t,r){let i=new e(r);return Jc(t)?t.then(s=>i.writeAll(s)):zu(t)?OO(i,t):DO(i,t)}},x2=class e extends Ig{static writeAll(t){let r=new e;return Jc(t)?t.then(i=>r.writeAll(i)):zu(t)?OO(r,t):DO(r,t)}constructor(){super(),this._autoDestroy=!0}_writeSchema(t){return this._writeMagic()._writePadding(2)}_writeFooter(t){let r=Ap.encode(new Ap(t,en.V5,this._recordBatchBlocks,this._dictionaryBlocks));return super._writeFooter(t)._write(r)._write(Int32Array.of(r.byteLength))._writeMagic()}};function DO(e,t){let r=t;t instanceof ba&&(r=t.batches,e.reset(void 0,t.schema));for(let i of r)e.write(i);return e.finish()}function OO(e,t){var r,i,s,n,o,c,f;return sr(this,void 0,void 0,function*(){try{for(r=!0,i=Zh(t);s=yield i.next(),n=s.done,!n;r=!0){f=s.value,r=!1;let _=f;e.write(_)}}catch(_){o={error:_}}finally{try{!r&&!n&&(c=i.return)&&(yield c.call(i))}finally{if(o)throw o.error}}return e.finish()})}function ZW(e,t){if(zu(e))return tft(e,t);if(Yh(e))return Jht(e,t);throw new Error(\"toDOMStream() must be called with an Iterable or AsyncIterable\")}function Jht(e,t){let r=null,i=t?.type===\"bytes\"||!1,s=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){n(o,r||(r=e[Symbol.iterator]()))},pull(o){r?n(o,r):o.close()},cancel(){(r?.return&&r.return()||!0)&&(r=null)}}),Object.assign({highWaterMark:i?s:void 0},t));function n(o,c){let f,_=null,w=o.desiredSize||null;for(;!(_=c.next(i?w:null)).done;)if(ArrayBuffer.isView(_.value)&&(f=Rr(_.value))&&(w!=null&&i&&(w=w-f.byteLength+1),_.value=f),o.enqueue(_.value),w!=null&&--w<=0)return;o.close()}}function tft(e,t){let r=null,i=t?.type===\"bytes\"||!1,s=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){return sr(this,void 0,void 0,function*(){yield n(o,r||(r=e[Symbol.asyncIterator]()))})},pull(o){return sr(this,void 0,void 0,function*(){r?yield n(o,r):o.close()})},cancel(){return sr(this,void 0,void 0,function*(){(r?.return&&(yield r.return())||!0)&&(r=null)})}}),Object.assign({highWaterMark:i?s:void 0},t));function n(o,c){return sr(this,void 0,void 0,function*(){let f,_=null,w=o.desiredSize||null;for(;!(_=yield c.next(i?w:null)).done;)if(ArrayBuffer.isView(_.value)&&(f=Rr(_.value))&&(w!=null&&i&&(w=w-f.byteLength+1),_.value=f),o.enqueue(_.value),w!=null&&--w<=0)return;o.close()})}}function $W(e){return new BO(e)}var BO=class{constructor(t){this._numChunks=0,this._finished=!1,this._bufferedSize=0;let{[\"readableStrategy\"]:r,[\"writableStrategy\"]:i,[\"queueingStrategy\"]:s=\"count\"}=t,n=i9(t,[\"readableStrategy\",\"writableStrategy\",\"queueingStrategy\"]);this._controller=null,this._builder=bg(n),this._getSize=s!==\"bytes\"?YW:QW;let{[\"highWaterMark\"]:o=s===\"bytes\"?Math.pow(2,14):1e3}=Object.assign({},r),{[\"highWaterMark\"]:c=s===\"bytes\"?Math.pow(2,14):1e3}=Object.assign({},i);this.readable=new ReadableStream({cancel:()=>{this._builder.clear()},pull:f=>{this._maybeFlush(this._builder,this._controller=f)},start:f=>{this._maybeFlush(this._builder,this._controller=f)}},{highWaterMark:o,size:s!==\"bytes\"?YW:QW}),this.writable=new WritableStream({abort:()=>{this._builder.clear()},write:()=>{this._maybeFlush(this._builder,this._controller)},close:()=>{this._maybeFlush(this._builder.finish(),this._controller)}},{highWaterMark:c,size:f=>this._writeValueAndReturnChunkSize(f)})}_writeValueAndReturnChunkSize(t){let r=this._bufferedSize;return this._bufferedSize=this._getSize(this._builder.append(t)),this._bufferedSize-r}_maybeFlush(t,r){r!=null&&(this._bufferedSize>=r.desiredSize&&++this._numChunks&&this._enqueue(r,t.toVector()),t.finished&&((t.length>0||this._numChunks===0)&&++this._numChunks&&this._enqueue(r,t.toVector()),!this._finished&&(this._finished=!0)&&this._enqueue(r,null)))}_enqueue(t,r){this._bufferedSize=0,this._controller=null,r==null?t.close():t.enqueue(r)}},YW=e=>{var t;return(t=e?.length)!==null&&t!==void 0?t:0},QW=e=>{var t;return(t=e?.byteLength)!==null&&t!==void 0?t:0};function u3(e,t){let r=new nd,i=null,s=new ReadableStream({cancel(){return sr(this,void 0,void 0,function*(){yield r.close()})},start(c){return sr(this,void 0,void 0,function*(){yield o(c,i||(i=yield n()))})},pull(c){return sr(this,void 0,void 0,function*(){i?yield o(c,i):c.close()})}});return{writable:new WritableStream(r,Object.assign({highWaterMark:Math.pow(2,14)},e)),readable:s};function n(){return sr(this,void 0,void 0,function*(){return yield(yield ou.from(r)).open(t)})}function o(c,f){return sr(this,void 0,void 0,function*(){let _=c.desiredSize,w=null;for(;!(w=yield f.next()).done;)if(c.enqueue(w.value),_!=null&&--_<=0)return;c.close()})}}function h3(e,t){let r=new this(e),i=new Qu(r),s=new ReadableStream({cancel(){return sr(this,void 0,void 0,function*(){yield i.cancel()})},pull(o){return sr(this,void 0,void 0,function*(){yield n(o)})},start(o){return sr(this,void 0,void 0,function*(){yield n(o)})}},Object.assign({highWaterMark:Math.pow(2,14)},t));return{writable:new WritableStream(r,e),readable:s};function n(o){return sr(this,void 0,void 0,function*(){let c=null,f=o.desiredSize;for(;c=yield i.read(f||null);)if(o.enqueue(c),f!=null&&(f-=c.byteLength)<=0)return;o.close()})}}function b2(e){let t=ou.from(e);return Jc(t)?t.then(r=>b2(r)):t.isAsync()?t.readAll().then(r=>new ba(r)):new ba(t.readAll())}var bft=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},ZD),yO),uO),YD),jD),cO),HD),{compareSchemas:Tg,compareFields:wW,compareTypes:SW});va.toDOMStream=ZW;Qn.throughDOM=$W;ou.throughDOM=u3;Pg.throughDOM=u3;vp.throughDOM=u3;Ig.throughDOM=h3;x2.throughDOM=h3;v2.throughDOM=h3;var wft=\"0.5.0\",Sft=`https://cdn.jsdelivr.net/npm/parquet-wasm@${wft}/esm/arrow2_bg.wasm`,FO=!1;async function XW(){FO||(await e9(Sft),FO=!0)}function Tft(e){if(!FO)throw new Error(\"wasm not ready\");console.time(\"readParquet\");let t=KG(new Uint8Array(e.buffer)).intoIPCStream(),r=b2(t);return console.timeEnd(\"readParquet\"),r}function w2(e){let t=[];for(let r of e){let i=Tft(r);i.batches.length!==1&&console.warn(\"Expected one batch\"),t.push(...i.batches)}return new ba(t)}var KW=ki(Ji(),1);function zO(e){return e instanceof Array&&e?.[0]instanceof DataView?e?.[0].byteLength>0?w2(e).getChildAt(0):null:e}var Cg=class{model;callbacks;updateStateCallback;constructor(t,r){this.model=t,this.model.on(\"change\",r),this.updateStateCallback=r,this.callbacks=new Map,this.callbacks.set(\"change\",r)}async loadSubModels(){}initRegularAttribute(t,r){this[r]=this.model.get(t),this.model.off(`change:${t}`);let i=()=>{this[r]=this.model.get(t)};this.model.on(`change:${t}`,i),this.callbacks.set(`change:${t}`,i)}initVectorizedAccessor(t,r){this[r]=zO(this.model.get(t)),this.model.off(`change:${t}`);let i=()=>{this[r]=zO(this.model.get(t))};this.model.on(`change:${t}`,i),this.callbacks.set(`change:${t}`,i)}finalize(){for(let[t,r]of Object.entries(this.callbacks))this.model.off(t,r)}};async function d3(e,t){let r=[];for(let i of t)r.push(e.get_model(i.slice(10)));return await Promise.all(r)}function ce(e){return e!=null}var Mft=`\n uniform bool brushing_enabled;\n uniform int brushing_target;\n uniform vec2 brushing_mousePos;\n uniform float brushing_radius;\n\n #ifdef NON_INSTANCED_MODEL\n attribute vec2 brushingTargets;\n #else\n attribute vec2 instanceBrushingTargets;\n #endif\n\n varying float brushing_isVisible;\n\n bool brushing_isPointInRange(vec2 position) {\n if (!brushing_enabled) {\n return true;\n }\n vec2 source_commonspace = project_position(position);\n vec2 target_commonspace = project_position(brushing_mousePos);\n float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);\n\n return distance <= brushing_radius;\n }\n\n bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {\n return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);\n }\n\n void brushing_setVisible(bool visible) {\n brushing_isVisible = float(visible);\n }\n`,Eft=`\n uniform bool brushing_enabled;\n varying float brushing_isVisible;\n`,Pft={source:0,target:1,custom:2,source_target:3},Ift={\"vs:DECKGL_FILTER_GL_POSITION\":`\n vec2 brushingTarget;\n vec2 brushingSource;\n if (brushing_target == 3) {\n brushingTarget = geometry.worldPositionAlt.xy;\n brushingSource = geometry.worldPosition.xy;\n } else if (brushing_target == 0) {\n brushingTarget = geometry.worldPosition.xy;\n } else if (brushing_target == 1) {\n brushingTarget = geometry.worldPositionAlt.xy;\n } else {\n #ifdef NON_INSTANCED_MODEL\n brushingTarget = brushingTargets;\n #else\n brushingTarget = instanceBrushingTargets;\n #endif\n }\n bool visible;\n if (brushing_target == 3) {\n visible = brushing_arePointsInRange(brushingSource, brushingTarget);\n } else {\n visible = brushing_isPointInRange(brushingTarget);\n }\n brushing_setVisible(visible);\n `,\"fs:DECKGL_FILTER_COLOR\":`\n if (brushing_enabled && brushing_isVisible < 0.5) {\n discard;\n }\n `},JW={name:\"brushing\",dependencies:[Uh],vs:Mft,fs:Eft,inject:Ift,getUniforms:e=>{if(!e||!(\"viewport\"in e))return{};let{brushingEnabled:t=!0,brushingRadius:r=1e4,brushingTarget:i=\"source\",mousePosition:s,viewport:n}=e;return{brushing_enabled:!!(t&&s&&n.containsPixel(s)),brushing_radius:r,brushing_target:Pft[i]||0,brushing_mousePos:s?n.unproject([s.x-n.x,s.y-n.y]):[0,0]}}};var Cft={getBrushingTarget:{type:\"accessor\",value:[0,0]},brushingTarget:\"source\",brushingEnabled:!0,brushingRadius:1e4},mm=class extends Bu{getShaders(){return{modules:[JW]}}initializeState(t,r){let i=this.getAttributeManager();i&&i.add({brushingTargets:{size:2,accessor:\"getBrushingTarget\",shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}}),this.state.onMouseMove=()=>{var s;(s=this.getCurrentLayer())===null||s===void 0||s.setNeedsRedraw()},t.deck&&t.deck.eventManager.on({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}finalizeState(t,r){t.deck&&t.deck.eventManager.off({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}};G(mm,\"defaultProps\",Cft);G(mm,\"extensionName\",\"BrushingExtension\");var tH=`\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`,eH=`\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;function rH(e){if(!e||!(\"extensions\"in e))return{};let{filterRange:t=[-1,1],filterEnabled:r=!0,filterTransformSize:i=!0,filterTransformColor:s=!0}=e,n=e.filterSoftRange||t;return{...Number.isFinite(t[0])?{filter_min:t[0],filter_softMin:n[0],filter_softMax:n[1],filter_max:t[1]}:{filter_min:t.map(o=>o[0]),filter_softMin:n.map(o=>o[0]),filter_softMax:n.map(o=>o[1]),filter_max:t.map(o=>o[1])},filter_enabled:r,filter_useSoftMargin:!!e.filterSoftRange,filter_transformSize:r&&i,filter_transformColor:r&&s}}function Lft(e){if(!e||!(\"extensions\"in e))return{};let t=rH(e);if(Number.isFinite(t.filter_min)){let r=Math.fround(t.filter_min);t.filter_min-=r,t.filter_softMin-=r,t.filter_min64High=r;let i=Math.fround(t.filter_max);t.filter_max-=i,t.filter_softMax-=i,t.filter_max64High=i}else{let r=t.filter_min.map(Math.fround);t.filter_min=t.filter_min.map((s,n)=>s-r[n]),t.filter_softMin=t.filter_softMin.map((s,n)=>s-r[n]),t.filter_min64High=r;let i=t.filter_max.map(Math.fround);t.filter_max=t.filter_max.map((s,n)=>s-i[n]),t.filter_softMax=t.filter_softMax.map((s,n)=>s-i[n]),t.filter_max64High=i}return t}var iH={\"vs:#main-start\":`\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\"vs:#main-end\":`\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n `,\"vs:DECKGL_FILTER_SIZE\":`\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\"fs:DECKGL_FILTER_COLOR\":`\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `},nH={name:\"data-filter\",vs:tH,fs:eH,inject:iH,getUniforms:rH},sH={name:\"data-filter-fp64\",vs:tH,fs:eH,inject:iH,getUniforms:Lft};var kft=`#define SHADER_NAME data-filter-vertex-shader\n\n#ifdef FLOAT_TARGET\n attribute float filterIndices;\n attribute float filterPrevIndices;\n#else\n attribute vec2 filterIndices;\n attribute vec2 filterPrevIndices;\n#endif\n\nvarying vec4 vColor;\nconst float component = 1.0 / 255.0;\n\nvoid main() {\n #ifdef FLOAT_TARGET\n dataFilter_value *= float(filterIndices != filterPrevIndices);\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n vColor = vec4(0.0, 0.0, 0.0, 1.0);\n #else\n // Float texture is not supported: pack result into 4 channels x 256 px x 64px\n dataFilter_value *= float(filterIndices.x != filterPrevIndices.x);\n float col = filterIndices.x;\n float row = filterIndices.y * 4.0;\n float channel = floor(row);\n row = fract(row);\n vColor = component * vec4(bvec4(channel == 0.0, channel == 1.0, channel == 2.0, channel == 3.0));\n gl_Position = vec4(col * 2.0 - 1.0, row * 2.0 - 1.0, 0.0, 1.0);\n #endif\n gl_PointSize = 1.0;\n}\n`,Rft=`#define SHADER_NAME data-filter-fragment-shader\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main() {\n if (dataFilter_value < 0.5) {\n discard;\n }\n gl_FragColor = vColor;\n}\n`;function oH(e){return!!(e.getExtension(\"EXT_float_blend\")&&(e.getExtension(\"EXT_color_buffer_float\")||e.getExtension(\"WEBGL_color_buffer_float\")))}function aH(e,t){return t?new yi(e,{width:1,height:1,attachments:{36064:new pi(e,{format:hr(e)?34836:6408,type:5126,mipmaps:!1})}}):new yi(e,{width:256,height:64,depth:!1})}function lH(e,t,r){return t.defines.NON_INSTANCED_MODEL=1,r&&(t.defines.FLOAT_TARGET=1),new Sn(e,{id:\"data-filter-aggregation-model\",vertexCount:1,isInstanced:!1,drawMode:0,vs:kft,fs:Rft,...t})}var cH={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};var Oft={getFilterValue:{type:\"accessor\",value:0},onFilteredItemsChange:{type:\"function\",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0},uH={1:\"float\",2:\"vec2\",3:\"vec3\",4:\"vec4\"},gm=class extends Bu{constructor({filterSize:t=1,fp64:r=!1,countItems:i=!1}={}){if(!uH[t])throw new Error(\"filterSize out of range\");super({filterSize:t,fp64:r,countItems:i})}getShaders(t){let{filterSize:r,fp64:i}=t.opts;return{modules:[i?sH:nH],defines:{DATAFILTER_TYPE:uH[r],DATAFILTER_DOUBLE:!!i}}}initializeState(t,r){let i=this.getAttributeManager();i&&i.add({filterValues:{size:r.opts.filterSize,type:r.opts.fp64?5130:5126,accessor:\"getFilterValue\",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}}});let{gl:s}=this.context;if(i&&r.opts.countItems){let n=oH(s);i.add({filterIndices:{size:n?1:2,vertexOffset:1,type:5121,normalized:!0,accessor:(f,{index:_})=>{let w=f&&f.__source?f.__source.index:_;return n?(w+1)%255:[(w+1)%255,Math.floor(w/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});let o=aH(s,n),c=lH(s,r.getShaders.call(this,r),n);this.setState({filterFBO:o,filterModel:c})}}updateState({props:t,oldProps:r}){if(this.state.filterModel){let s=this.getAttributeManager().attributes.filterValues.needsUpdate()||t.filterEnabled!==r.filterEnabled||t.filterRange!==r.filterRange||t.filterSoftRange!==r.filterSoftRange;s&&this.setState({filterNeedsUpdate:s})}}draw(t,r){let{filterFBO:i,filterModel:s,filterNeedsUpdate:n}=this.state,{onFilteredItemsChange:o}=this.props;if(n&&o&&s){let{attributes:{filterValues:c,filterIndices:f}}=this.getAttributeManager();s.setVertexCount(this.getNumInstances());let{gl:_}=this.context;Gf(_,{framebuffer:i,color:[0,0,0,0]}),s.updateModuleSettings(t.moduleParameters).setAttributes({...c.getShaderAttributes(),...f&&f.getShaderAttributes()}).draw({framebuffer:i,parameters:{...cH,viewport:[0,0,i.width,i.height]}});let w=Rh(i),C=0;for(let R=0;R 1000\n }\n\n if (collision_enabled) {\n vec4 collision_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n vec2 collision_texCoords = collision_getCoords(collision_common_position);\n collision_fade = collision_isVisible(collision_texCoords, geometry.pickingColor / 255.0);\n if (collision_fade < 0.0001) {\n // Position outside clip space bounds to discard\n position = vec4(0.0, 0.0, 2.0, 1.0);\n }\n }\n `,\"vs:DECKGL_FILTER_COLOR\":`\n color.a *= collision_fade;\n `},zft=(e,t)=>{if(!e||!(\"dummyCollisionMap\"in e))return{};let{collisionFBO:r,drawToCollisionMap:i,dummyCollisionMap:s}=e;return{collision_sort:!!i,collision_texture:!i&&r?r:s}},hH={name:\"collision\",dependencies:[Uh],vs:Bft,inject:Fft,getUniforms:zft};var S2=class extends rc{renderCollisionMap(t,r){let i=this.gl,s=1;return bn(i,{scissorTest:!0,scissor:[s,s,t.width-2*s,t.height-2*s],clearColor:[0,0,0,0],blend:!1,depthTest:!0,depthRange:[0,1]},()=>this.render({...r,target:t,pass:\"collision\"}))}getModuleParameters(){return{drawToCollisionMap:!0,pickingActive:1,pickingAttribute:!1,lightSources:{}}}};var T2=class extends rc{constructor(t,r){super(t,r),G(this,\"maskMap\",void 0),G(this,\"fbo\",void 0);let{mapSize:i=2048}=r;this.maskMap=new pi(t,{width:i,height:i,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.fbo=new yi(t,{id:\"maskmap\",width:i,height:i,attachments:{36064:this.maskMap}})}render(t){let r=this.gl,i=[!1,!1,!1,!1];return i[t.channel]=!0,bn(r,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:i,depthTest:!1},()=>super.render({...t,target:this.fbo,pass:\"mask\"}))}shouldDrawLayer(t){return t.props.operation.includes(\"mask\")}delete(){this.fbo.delete(),this.maskMap.delete()}};function fH(e,t){let r=[1/0,1/0,-1/0,-1/0];for(let i of e){let s=i.getBounds();if(s){let n=i.projectPosition(s[0],{viewport:t,autoOffset:!1}),o=i.projectPosition(s[1],{viewport:t,autoOffset:!1});r[0]=Math.min(r[0],n[0]),r[1]=Math.min(r[1],n[1]),r[2]=Math.max(r[2],o[0]),r[3]=Math.max(r[3],o[1])}}return Number.isFinite(r[0])?r:null}var Nft=2048;function dH(e){let{bounds:t,viewport:r,border:i=0}=e,{isGeospatial:s}=r;if(t[2]<=t[0]||t[3]<=t[1])return null;let n=r.unprojectPosition([(t[0]+t[2])/2,(t[1]+t[3])/2,0]),{width:o,height:c,zoom:f}=e;if(f===void 0){o=o-i*2,c=c-i*2;let _=Math.min(o/(t[2]-t[0]),c/(t[3]-t[1]));f=Math.min(Math.log2(_),20)}else if(!o||!c){let _=2**f;o=Math.round(Math.abs(t[2]-t[0])*_),c=Math.round(Math.abs(t[3]-t[1])*_);let w=Nft-i*2;if(o>w||c>w){let C=w/Math.max(o,c);o=Math.round(o*C),c=Math.round(c*C),f+=Math.log2(C)}}return s?new nc({id:r.id,x:i,y:i,width:o,height:c,longitude:n[0],latitude:n[1],zoom:f,orthographic:!0}):new Zy({id:r.id,x:i,y:i,width:o,height:c,target:n,zoom:f,flipY:!1})}function Uft(e,t){let r;if(t&&t.length===2){let[n,o]=t,c=e.getBounds({z:n}),f=e.getBounds({z:o});r=[Math.min(c[0],f[0]),Math.min(c[1],f[1]),Math.max(c[2],f[2]),Math.max(c[3],f[3])]}else r=e.getBounds();let i=e.projectPosition(r.slice(0,2)),s=e.projectPosition(r.slice(2,4));return[i[0],i[1],s[0],s[1]]}function pH(e,t,r){if(!e)return[0,0,1,1];let i=Uft(t,r),s=Vft(i);return e[2]-e[0]<=s[2]-s[0]&&e[3]-e[1]<=s[3]-s[1]?e:[Math.max(e[0],s[0]),Math.max(e[1],s[1]),Math.min(e[2],s[2]),Math.min(e[3],s[3])]}function Vft(e){let t=e[2]-e[0],r=e[3]-e[1],i=(e[0]+e[2])/2,s=(e[1]+e[3])/2;return[i-t,s-r,i+t,s+r]}var M2=class{constructor(){G(this,\"id\",\"mask-effect\"),G(this,\"props\",null),G(this,\"useInPicking\",!0),G(this,\"order\",0),G(this,\"dummyMaskMap\",void 0),G(this,\"channels\",[]),G(this,\"masks\",null),G(this,\"maskPass\",void 0),G(this,\"maskMap\",void 0),G(this,\"lastViewport\",void 0)}preRender(t,{layers:r,layerFilter:i,viewports:s,onViewportActive:n,views:o,isPicking:c}){let f=!1;if(this.dummyMaskMap||(this.dummyMaskMap=new pi(t,{width:1,height:1})),c)return{didRender:f};let _=r.filter(N=>N.props.visible&&N.props.operation.includes(\"mask\"));if(_.length===0)return this.masks=null,this.channels.length=0,{didRender:f};this.masks={},this.maskPass||(this.maskPass=new T2(t,{id:\"default-mask\"}),this.maskMap=this.maskPass.maskMap);let w=this._sortMaskChannels(_),C=s[0],R=!this.lastViewport||!this.lastViewport.equals(C);if(C.resolution!==void 0)return nr.warn(\"MaskExtension is not supported in GlobeView\")(),{didRender:f};for(let N in w){let j=this._renderChannel(w[N],{layerFilter:i,onViewportActive:n,views:o,viewport:C,viewportChanged:R});f||(f=j)}return{didRender:f}}_renderChannel(t,{layerFilter:r,onViewportActive:i,views:s,viewport:n,viewportChanged:o}){let c=!1,f=this.channels[t.index];if(!f)return c;let _=t===f||t.layers.length!==f.layers.length||t.layers.some((w,C)=>w!==f.layers[C]||w.props.transitions)||t.layerBounds.some((w,C)=>w!==f.layerBounds[C]);if(t.bounds=f.bounds,t.maskBounds=f.maskBounds,this.channels[t.index]=t,_||o){this.lastViewport=n;let w=fH(t.layers,n);if(t.bounds=w&&pH(w,n),_||!To(t.bounds,f.bounds)){let{maskPass:C,maskMap:R}=this,N=w&&dH({bounds:t.bounds,viewport:n,width:R.width,height:R.height,border:1});t.maskBounds=N?N.getBounds():[0,0,1,1],C.render({pass:\"mask\",channel:t.index,layers:t.layers,layerFilter:r,viewports:N?[N]:[],onViewportActive:i,views:s,moduleParameters:{devicePixelRatio:1}}),c=!0}}return this.masks[t.id]={index:t.index,bounds:t.maskBounds,coordinateOrigin:t.coordinateOrigin,coordinateSystem:t.coordinateSystem},c}_sortMaskChannels(t){let r={},i=0;for(let s of t){let{id:n}=s.root,o=r[n];if(!o){if(++i>4){nr.warn(\"Too many mask layers. The max supported is 4\")();continue}o={id:n,index:this.channels.findIndex(c=>c?.id===n),layers:[],layerBounds:[],coordinateOrigin:s.root.props.coordinateOrigin,coordinateSystem:s.root.props.coordinateSystem},r[n]=o}o.layers.push(s),o.layerBounds.push(s.getBounds())}for(let s=0;s<4;s++){let n=this.channels[s];(!n||!(n.id in r))&&(this.channels[s]=null)}for(let s in r){let n=r[s];n.index<0&&(n.index=this.channels.findIndex(o=>!o),this.channels[n.index]=n)}return r}getModuleParameters(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}cleanup(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}};var NO=2,E2=class{constructor(){G(this,\"id\",\"collision-filter-effect\"),G(this,\"props\",null),G(this,\"useInPicking\",!0),G(this,\"order\",1),G(this,\"channels\",{}),G(this,\"collisionFilterPass\",void 0),G(this,\"collisionFBOs\",{}),G(this,\"dummyCollisionMap\",void 0),G(this,\"lastViewport\",void 0)}preRender(t,{effects:r,layers:i,layerFilter:s,viewports:n,onViewportActive:o,views:c,isPicking:f,preRenderStats:_={}}){var w;if(this.dummyCollisionMap||(this.dummyCollisionMap=new pi(t,{width:1,height:1})),f)return;let C=i.filter(({props:{visible:$,collisionEnabled:K}})=>$&&K);if(C.length===0){this.channels={};return}this.collisionFilterPass||(this.collisionFilterPass=new S2(t,{id:\"default-collision-filter\"}));let R=r?.filter($=>$.constructor===M2),N=(w=_[\"mask-effect\"])===null||w===void 0?void 0:w.didRender,j=this._groupByCollisionGroup(t,C),Y=n[0],rt=!this.lastViewport||!this.lastViewport.equals(Y)||N;for(let $ in j){let K=this.collisionFBOs[$],tt=j[$];K.resize({width:t.canvas.width/NO,height:t.canvas.height/NO}),this._render(tt,{effects:R,layerFilter:s,onViewportActive:o,views:c,viewport:Y,viewportChanged:rt})}}_render(t,{effects:r,layerFilter:i,onViewportActive:s,views:n,viewport:o,viewportChanged:c}){let{collisionGroup:f}=t,_=this.channels[f];if(!_)return;let w=c||t===_||!ao(_.layers,t.layers,1)||t.layerBounds.some((C,R)=>!To(C,_.layerBounds[R]))||t.allLayersLoaded!==_.allLayersLoaded||t.layers.some(C=>C.props.transitions);if(this.channels[f]=t,w){this.lastViewport=o;let C=this.collisionFBOs[f];this.collisionFilterPass.renderCollisionMap(C,{pass:\"collision-filter\",isPicking:!0,layers:t.layers,effects:r,layerFilter:i,viewports:o?[o]:[],onViewportActive:s,views:n,moduleParameters:{dummyCollisionMap:this.dummyCollisionMap,devicePixelRatio:Sl(C.gl)/NO}})}}_groupByCollisionGroup(t,r){let i={};for(let s of r){let{collisionGroup:n}=s.props,o=i[n];o||(o={collisionGroup:n,layers:[],layerBounds:[],allLayersLoaded:!0},i[n]=o),o.layers.push(s),o.layerBounds.push(s.getBounds()),s.isLoaded||(o.allLayersLoaded=!1)}for(let s of Object.keys(i))this.collisionFBOs[s]||this.createFBO(t,s),this.channels[s]||(this.channels[s]=i[s]);for(let s of Object.keys(this.collisionFBOs))i[s]||this.destroyFBO(s);return i}getModuleParameters(t){let{collisionGroup:r}=t.props,{collisionFBOs:i,dummyCollisionMap:s}=this;return{collisionFBO:i[r],dummyCollisionMap:s}}cleanup(){this.dummyCollisionMap&&(this.dummyCollisionMap.delete(),this.dummyCollisionMap=void 0),this.channels={};for(let t of Object.keys(this.collisionFBOs))this.destroyFBO(t);this.collisionFBOs={},this.lastViewport=void 0}createFBO(t,r){let{width:i,height:s}=t.canvas,n=new pi(t,{width:i,height:s,parameters:{10241:9728,10240:9728,10242:33071,10243:33071}}),o=new tl(t,{format:33189,width:i,height:s});this.collisionFBOs[r]=new yi(t,{id:\"Collision-\".concat(r),width:i,height:s,attachments:{36064:n,36096:o}})}destroyFBO(t){let r=this.collisionFBOs[t];for(let i of Object.values(r.attachments))i.delete();r.delete(),delete this.collisionFBOs[t]}};var jft={getCollisionPriority:{type:\"accessor\",value:0},collisionEnabled:!0,collisionGroup:{type:\"string\",value:\"default\"},collisionTestProps:{}},_m=class extends Bu{getShaders(){return{modules:[hH]}}draw({uniforms:t,context:r,moduleParameters:i}){let{collisionEnabled:s}=this.props,{collisionFBO:n,drawToCollisionMap:o}=i,c=s&&!!n;t.collision_enabled=c,o&&(this.props=this.clone(this.props.collisionTestProps).props)}initializeState(t,r){var i;if(this.getAttributeManager()===null)return;(i=this.context.deck)===null||i===void 0||i._addDefaultEffect(new E2),this.getAttributeManager().add({collisionPriorities:{size:1,accessor:\"getCollisionPriority\",shaderAttributes:{collisionPriorities:{divisor:0},instanceCollisionPriorities:{divisor:1}}}})}getNeedsPickingBuffer(){return this.props.collisionEnabled}};G(_m,\"defaultProps\",jft);G(_m,\"extensionName\",\"CollisionFilterExtension\");var Uv=class extends Cg{static extensionType;constructor(t,r){super(t,r)}},P2=class extends Uv{static extensionType=\"brushing\";extensionInstance;constructor(t,r,i){super(t,i),this.extensionInstance=new mm,r.initRegularAttribute(\"brushing_enabled\",\"brushingEnabled\"),r.initRegularAttribute(\"brushing_target\",\"brushingTarget\"),r.initRegularAttribute(\"brushing_radius\",\"brushingRadius\"),r.initVectorizedAccessor(\"get_brushing_target\",\"getBrushingTarget\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"brushingEnabled\",\"brushingTarget\",\"brushingRadius\",\"getBrushingTarget\"]}},I2=class extends Uv{static extensionType=\"collision-filter\";extensionInstance;constructor(t,r,i){super(t,i),this.extensionInstance=new _m,r.initRegularAttribute(\"collision_enabled\",\"collisionEnabled\"),r.initRegularAttribute(\"collision_group\",\"collisionGroup\"),r.initRegularAttribute(\"collision_test_props\",\"collisionTestProps\"),r.initVectorizedAccessor(\"get_collision_priority\",\"getCollisionPriority\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"collisionEnabled\",\"collisionGroup\",\"collisionTestProps\",\"getCollisionPriority\"]}},p3=class extends Uv{static extensionType=\"data-filter\";extensionInstance;constructor(t,r,i){super(t,i);let s=this.model.get(\"filter_size\");this.extensionInstance=new gm({filterSize:s}),r.initRegularAttribute(\"filter_enabled\",\"filterEnabled\"),r.initRegularAttribute(\"filter_range\",\"filterRange\"),r.initRegularAttribute(\"filter_soft_range\",\"filterSoftRange\"),r.initRegularAttribute(\"filter_transform_size\",\"filterTransformSize\"),r.initRegularAttribute(\"filter_transform_color\",\"filterTransformColor\"),r.initVectorizedAccessor(\"get_filter_value\",\"getFilterValue\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"filterEnabled\",\"filterRange\",\"filterSoftRange\",\"filterTransformSize\",\"filterTransformColor\",\"getFilterValue\"]}};async function UO(e,t,r){let i=e.get(\"_extension_type\"),s;switch(i){case P2.extensionType:s=new P2(e,t,r);break;case I2.extensionType:s=new I2(e,t,r);break;case p3.extensionType:s=new p3(e,t,r);break;default:throw new Error(`no known model for extension type ${i}`)}return await s.loadSubModels(),s}var Lg=class extends Cg{pickable;visible;opacity;autoHighlight;extensions;extensionLayerPropertyNames=[];constructor(t,r){super(t,r),this.initRegularAttribute(\"pickable\",\"pickable\"),this.initRegularAttribute(\"visible\",\"visible\"),this.initRegularAttribute(\"opacity\",\"opacity\"),this.initRegularAttribute(\"auto_highlight\",\"autoHighlight\"),this.extensions=[]}async loadSubModels(){await this.initLayerExtensions()}extensionInstances(){return this.extensions.map(t=>t.extensionInstance)}extensionProps(){let t={};for(let r of this.extensionLayerPropertyNames)ce(this[r])&&(t[r]=this[r]);return t}onClick(t){t.index&&(this.model.set(\"selected_index\",t.index),this.model.save_changes())}baseLayerProps(){return{extensions:this.extensionInstances(),...this.extensionProps(),id:this.model.model_id,pickable:this.pickable,visible:this.visible,opacity:this.opacity,autoHighlight:this.autoHighlight,onClick:this.onClick.bind(this)}}async initLayerExtensions(){let t=async()=>{let r=this.model.get(\"extensions\");if(!r){this.extensions=[];return}let i=await d3(this.model.widget_manager,r),s=[];for(let n of i){let o=await UO(n,this,this.updateStateCallback);s.push(o)}this.extensions=s};await t(),this.model.off(\"change:extensions\"),this.model.on(\"change:extensions\",t),this.callbacks.set(\"change:extensions\",t)}};var AH=`#define SHADER_NAME arc-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec4 instanceSourceColors;\nattribute vec4 instanceTargetColors;\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec3 instancePickingColors;\nattribute float instanceWidths;\nattribute float instanceHeights;\nattribute float instanceTilts;\n\nuniform bool greatCircle;\nuniform bool useShortestPath;\nuniform float numSegments;\nuniform float opacity;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform int widthUnits;\n\nvarying vec4 vColor;\nvarying vec2 uv;\nvarying float isValid;\n\nfloat paraboloid(float distance, float sourceZ, float targetZ, float ratio) {\n\n float deltaZ = targetZ - sourceZ;\n float dh = distance * instanceHeights;\n if (dh == 0.0) {\n return sourceZ + deltaZ * ratio;\n }\n float unitZ = deltaZ / dh;\n float p2 = unitZ * unitZ + 1.0;\n float dir = step(deltaZ, 0.0);\n float z0 = mix(sourceZ, targetZ, dir);\n float r = mix(ratio, 1.0 - ratio, dir);\n return sqrt(r * (p2 - r)) * dh + z0;\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nfloat getSegmentRatio(float index) {\n return smoothstep(0.0, 1.0, index / (numSegments - 1.0));\n}\n\nvec3 interpolateFlat(vec3 source, vec3 target, float segmentRatio) {\n float distance = length(source.xy - target.xy);\n float z = paraboloid(distance, source.z, target.z, segmentRatio);\n\n float tiltAngle = radians(instanceTilts);\n vec2 tiltDirection = normalize(target.xy - source.xy);\n vec2 tilt = vec2(-tiltDirection.y, tiltDirection.x) * z * sin(tiltAngle);\n\n return vec3(\n mix(source.xy, target.xy, segmentRatio) + tilt,\n z * cos(tiltAngle)\n );\n}\nfloat getAngularDist (vec2 source, vec2 target) {\n vec2 sourceRadians = radians(source);\n vec2 targetRadians = radians(target);\n vec2 sin_half_delta = sin((sourceRadians - targetRadians) / 2.0);\n vec2 shd_sq = sin_half_delta * sin_half_delta;\n\n float a = shd_sq.y + cos(sourceRadians.y) * cos(targetRadians.y) * shd_sq.x;\n return 2.0 * asin(sqrt(a));\n}\n\nvec3 interpolateGreatCircle(vec3 source, vec3 target, vec3 source3D, vec3 target3D, float angularDist, float t) {\n vec2 lngLat;\n if(abs(angularDist - PI) < 0.001) {\n lngLat = (1.0 - t) * source.xy + t * target.xy;\n } else {\n float a = sin((1.0 - t) * angularDist);\n float b = sin(t * angularDist);\n vec3 p = source3D.yxz * a + target3D.yxz * b;\n lngLat = degrees(vec2(atan(p.y, -p.x), atan(p.z, length(p.xy))));\n }\n\n float z = paraboloid(angularDist * EARTH_RADIUS, source.z, target.z, t);\n\n return vec3(lngLat, z);\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n float segmentIndex = positions.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float prevSegmentRatio = getSegmentRatio(max(0.0, segmentIndex - 1.0));\n float nextSegmentRatio = getSegmentRatio(min(numSegments - 1.0, segmentIndex + 1.0));\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n isValid = 1.0;\n\n uv = vec2(segmentRatio, positions.y);\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n vec4 curr;\n vec4 next;\n vec3 source;\n vec3 target;\n\n if ((greatCircle || project_uProjectionMode == PROJECTION_MODE_GLOBE) && project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n source = project_globe_(vec3(instanceSourcePositions.xy, 0.0));\n target = project_globe_(vec3(instanceTargetPositions.xy, 0.0));\n float angularDist = getAngularDist(instanceSourcePositions.xy, instanceTargetPositions.xy);\n\n vec3 prevPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, prevSegmentRatio);\n vec3 currPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, segmentRatio);\n vec3 nextPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, nextSegmentRatio);\n\n if (abs(currPos.x - prevPos.x) > 180.0) {\n indexDir = -1.0;\n isValid = 0.0;\n } else if (abs(currPos.x - nextPos.x) > 180.0) {\n indexDir = 1.0;\n isValid = 0.0;\n }\n nextPos = indexDir < 0.0 ? prevPos : nextPos;\n nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\n\n if (isValid == 0.0) {\n nextPos.x += nextPos.x > 0.0 ? -360.0 : 360.0;\n float t = ((currPos.x > 0.0 ? 180.0 : -180.0) - currPos.x) / (nextPos.x - currPos.x);\n currPos = mix(currPos, nextPos, t);\n segmentRatio = mix(segmentRatio, nextSegmentRatio, t);\n }\n\n vec3 currPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, segmentRatio);\n vec3 nextPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, nextSegmentRatio);\n \n curr = project_position_to_clipspace(currPos, currPos64Low, vec3(0.0), geometry.position);\n next = project_position_to_clipspace(nextPos, nextPos64Low, vec3(0.0));\n \n } else {\n vec3 source_world = instanceSourcePositions;\n vec3 target_world = instanceTargetPositions;\n if (useShortestPath) {\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\n\n float deltaLng = target_world.x - source_world.x;\n if (deltaLng > 180.) target_world.x -= 360.;\n if (deltaLng < -180.) source_world.x -= 360.;\n }\n source = project_position(source_world, instanceSourcePositions64Low);\n target = project_position(target_world, instanceTargetPositions64Low);\n float antiMeridianX = 0.0;\n\n if (useShortestPath) {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n antiMeridianX = -(project_uCoordinateOrigin.x + 180.) / 360. * TILE_SIZE;\n }\n float thresholdRatio = (antiMeridianX - source.x) / (target.x - source.x);\n\n if (prevSegmentRatio <= thresholdRatio && nextSegmentRatio > thresholdRatio) {\n isValid = 0.0;\n indexDir = sign(segmentRatio - thresholdRatio);\n segmentRatio = thresholdRatio;\n }\n }\n\n nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\n vec3 currPos = interpolateFlat(source, target, segmentRatio);\n vec3 nextPos = interpolateFlat(source, target, nextSegmentRatio);\n\n if (useShortestPath) {\n if (nextPos.x < antiMeridianX) {\n currPos.x += TILE_SIZE;\n nextPos.x += TILE_SIZE;\n }\n }\n\n curr = project_common_position_to_clipspace(vec4(currPos, 1.0));\n next = project_common_position_to_clipspace(vec4(nextPos, 1.0));\n geometry.position = vec4(currPos, 1.0);\n }\n float widthPixels = clamp(\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels\n );\n vec3 offset = vec3(\n getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n DECKGL_FILTER_GL_POSITION(curr, geometry);\n gl_Position = curr + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n\n vec4 color = mix(instanceSourceColors, instanceTargetColors, segmentRatio);\n vColor = vec4(color.rgb, color.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var mH=`#define SHADER_NAME arc-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\nvarying float isValid;\n\nvoid main(void) {\n if (isValid == 0.0) {\n discard;\n }\n\n gl_FragColor = vColor;\n geometry.uv = uv;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var A3=[0,0,0,255],Gft={getSourcePosition:{type:\"accessor\",value:e=>e.sourcePosition},getTargetPosition:{type:\"accessor\",value:e=>e.targetPosition},getSourceColor:{type:\"accessor\",value:A3},getTargetColor:{type:\"accessor\",value:A3},getWidth:{type:\"accessor\",value:1},getHeight:{type:\"accessor\",value:1},getTilt:{type:\"accessor\",value:0},greatCircle:!1,numSegments:{type:\"number\",value:50,min:1},widthUnits:\"pixels\",widthScale:{type:\"number\",value:1,min:0},widthMinPixels:{type:\"number\",value:0,min:0},widthMaxPixels:{type:\"number\",value:Number.MAX_SAFE_INTEGER,min:0}},bp=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getBounds(){var t;return(t=this.getAttributeManager())===null||t===void 0?void 0:t.getBounds([\"instanceSourcePositions\",\"instanceTargetPositions\"])}getShaders(){return super.getShaders({vs:AH,fs:mH,modules:[oo,ta]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getSourcePosition\"},instanceTargetPositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getTargetPosition\"},instanceSourceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getSourceColor\",defaultValue:A3},instanceTargetColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getTargetColor\",defaultValue:A3},instanceWidths:{size:1,transition:!0,accessor:\"getWidth\",defaultValue:1},instanceHeights:{size:1,transition:!0,accessor:\"getHeight\",defaultValue:1},instanceTilts:{size:1,transition:!0,accessor:\"getTilt\",defaultValue:0}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t;if(s.extensionsChanged||s.propsChanged&&r.numSegments!==i.numSegments){var n;let{gl:o}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(o),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{widthUnits:r,widthScale:i,widthMinPixels:s,widthMaxPixels:n,greatCircle:o,wrapLongitude:c}=this.props;this.state.model.setUniforms(t).setUniforms({greatCircle:o,widthUnits:Ko[r],widthScale:i,widthMinPixels:s,widthMaxPixels:n,useShortestPath:c}).draw()}_getModel(t){let{id:r,numSegments:i}=this.props,s=[];for(let o=0;o0&&j>0&&(c[C++]=w-n,c[C++]=w-n-1,c[C++]=w-1,c[C++]=w-n,c[C++]=w-1,c[C++]=w),w++}}return{vertexCount:o,positions:_,indices:c,texCoords:f}}function qft(e){let t=new Float64Array(12);for(let r=0;r 0.5) {\n vTexPos = geometry.worldPosition.xy;\n }\n\n vec4 color = vec4(0.0);\n DECKGL_FILTER_COLOR(color, geometry);\n}\n`;var Yft=`\nvec3 packUVsIntoRGB(vec2 uv) {\n // Extract the top 8 bits. We want values to be truncated down so we can add a fraction\n vec2 uv8bit = floor(uv * 256.);\n\n // Calculate the normalized remainders of u and v parts that do not fit into 8 bits\n // Scale and clamp to 0-1 range\n vec2 uvFraction = fract(uv * 256.);\n vec2 uvFraction4bit = floor(uvFraction * 16.);\n\n // Remainder can be encoded in blue channel, encode as 4 bits for pixel coordinates\n float fractions = uvFraction4bit.x + uvFraction4bit.y * 16.;\n\n return vec3(uv8bit, fractions) / 255.;\n}\n`,_H=`\n#define SHADER_NAME bitmap-layer-fragment-shader\n\n#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform sampler2D bitmapTexture;\n\nvarying vec2 vTexCoord;\nvarying vec2 vTexPos;\n\nuniform float desaturate;\nuniform vec4 transparentColor;\nuniform vec3 tintColor;\nuniform float opacity;\n\nuniform float coordinateConversion;\nuniform vec4 bounds;\n\n/* projection utils */\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / PI / 2.0;\n\n// from degrees to Web Mercator\nvec2 lnglat_to_mercator(vec2 lnglat) {\n float x = lnglat.x;\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\n// from Web Mercator to degrees\nvec2 mercator_to_lnglat(vec2 xy) {\n xy /= WORLD_SCALE;\n return degrees(vec2(\n xy.x - PI,\n atan(exp(xy.y - PI)) * 2.0 - PI * 0.5\n ));\n}\n/* End projection utils */\n\n// apply desaturation\nvec3 color_desaturate(vec3 color) {\n float luminance = (color.r + color.g + color.b) * 0.333333333;\n return mix(color, vec3(luminance), desaturate);\n}\n\n// apply tint\nvec3 color_tint(vec3 color) {\n return color * tintColor;\n}\n\n// blend with background color\nvec4 apply_opacity(vec3 color, float alpha) {\n if (transparentColor.a == 0.0) {\n return vec4(color, alpha);\n }\n float blendedAlpha = alpha + transparentColor.a * (1.0 - alpha);\n float highLightRatio = alpha / blendedAlpha;\n vec3 blendedRGB = mix(transparentColor.rgb, color, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n}\n\nvec2 getUV(vec2 pos) {\n return vec2(\n (pos.x - bounds[0]) / (bounds[2] - bounds[0]),\n (pos.y - bounds[3]) / (bounds[1] - bounds[3])\n );\n}\n\n`.concat(Yft,`\n\nvoid main(void) {\n vec2 uv = vTexCoord;\n if (coordinateConversion < -0.5) {\n vec2 lnglat = mercator_to_lnglat(vTexPos);\n uv = getUV(lnglat);\n } else if (coordinateConversion > 0.5) {\n vec2 commonPos = lnglat_to_mercator(vTexPos);\n uv = getUV(commonPos);\n }\n vec4 bitmapColor = texture2D(bitmapTexture, uv);\n\n gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity);\n\n geometry.uv = uv;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n\n if (picking_uActive && !picking_uAttribute) {\n // Since instance information is not used, we can use picking color for pixel index\n gl_FragColor.rgb = packUVsIntoRGB(uv);\n }\n}\n`);var Qft={image:{type:\"image\",value:null,async:!0},bounds:{type:\"array\",value:[1,0,0,1],compare:!0},_imageCoordinateSystem:Yr.DEFAULT,desaturate:{type:\"number\",min:0,max:1,value:0},transparentColor:{type:\"color\",value:[0,0,0,0]},tintColor:{type:\"color\",value:[255,255,255]},textureParameters:{type:\"object\",ignore:!0}},wp=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:gH,fs:_H,modules:[oo,ta]})}initializeState(){let t=this.getAttributeManager();t.remove([\"instancePickingColors\"]);let r=!0;t.add({indices:{size:1,isIndexed:!0,update:i=>i.value=this.state.mesh.indices,noAlloc:r},positions:{size:3,type:5130,fp64:this.use64bitPositions(),update:i=>i.value=this.state.mesh.positions,noAlloc:r},texCoords:{size:2,update:i=>i.value=this.state.mesh.texCoords,noAlloc:r}})}updateState({props:t,oldProps:r,changeFlags:i}){let s=this.getAttributeManager();if(i.extensionsChanged){var n;let{gl:o}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(o),s.invalidateAll()}if(t.bounds!==r.bounds){let o=this.state.mesh,c=this._createMesh();this.state.model.setVertexCount(c.vertexCount);for(let f in c)o&&o[f]!==c[f]&&s.invalidate(f);this.setState({mesh:c,...this._getCoordinateUniforms()})}else t._imageCoordinateSystem!==r._imageCoordinateSystem&&this.setState(this._getCoordinateUniforms())}getPickingInfo(t){let{image:r}=this.props,i=t.info;if(!i.color||!r)return i.bitmap=null,i;let{width:s,height:n}=r;i.index=0;let o=$ft(i.color),c=[Math.floor(o[0]*s),Math.floor(o[1]*n)];return i.bitmap={size:{width:s,height:n},uv:o,pixel:c},i}disablePickingIndex(){this.setState({disablePicking:!0})}restorePickingColors(){this.setState({disablePicking:!1})}_updateAutoHighlight(t){super._updateAutoHighlight({...t,color:this.encodePickingColor(0)})}_createMesh(){let{bounds:t}=this.props,r=t;return yH(t)&&(r=[[t[0],t[1]],[t[0],t[3]],[t[2],t[3]],[t[2],t[1]]]),VO(r,this.context.viewport.resolution)}_getModel(t){return t?new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:4,vertexCount:6}),isInstanced:!1}):null}draw(t){let{uniforms:r,moduleParameters:i}=t,{model:s,coordinateConversion:n,bounds:o,disablePicking:c}=this.state,{image:f,desaturate:_,transparentColor:w,tintColor:C}=this.props;i.pickingActive&&c||f&&s&&s.setUniforms(r).setUniforms({bitmapTexture:f,desaturate:_,transparentColor:w.map(R=>R/255),tintColor:C.slice(0,3).map(R=>R/255),coordinateConversion:n,bounds:o}).draw()}_getCoordinateUniforms(){let{LNGLAT:t,CARTESIAN:r,DEFAULT:i}=Yr,{_imageCoordinateSystem:s}=this.props;if(s!==i){let{bounds:n}=this.props;if(!yH(n))throw new Error(\"_imageCoordinateSystem only supports rectangular bounds\");let o=this.context.viewport.resolution?t:r;if(s=s===t?t:r,s===t&&o===r)return{coordinateConversion:-1,bounds:n};if(s===r&&o===t){let c=El([n[0],n[1]]),f=El([n[2],n[3]]);return{coordinateConversion:1,bounds:[c[0],c[1],f[0],f[1]]}}}return{coordinateConversion:0,bounds:[0,0,0,0]}}};G(wp,\"layerName\",\"BitmapLayer\");G(wp,\"defaultProps\",Qft);function $ft(e){let[t,r,i]=e,s=(i&240)/256,n=(i&15)/16;return[(t+n)/256,(r+s)/256]}function yH(e){return Number.isFinite(e[0])}var vH=`#define SHADER_NAME icon-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute vec4 instanceIconFrames;\nattribute float instanceColorModes;\nattribute vec2 instanceOffsets;\nattribute vec2 instancePixelOffset;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;var xH=`#define SHADER_NAME icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float alphaCutoff;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\n float a = texColor.a * opacity * vColor.a;\n\n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color, a);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var Xft=1024,Kft=4,bH=()=>{},wH={10241:9987,10240:9729,10242:33071,10243:33071};function Jft(e){return Math.pow(2,Math.ceil(Math.log2(e)))}function tdt(e,t,r,i){let s=Math.min(r/t.width,i/t.height),n=Math.floor(t.width*s),o=Math.floor(t.height*s);return s===1?{data:t,width:n,height:o}:(e.canvas.height=o,e.canvas.width=n,e.clearRect(0,0,n,o),e.drawImage(t,0,0,t.width,t.height,0,0,n,o),{data:e.canvas,width:n,height:o})}function C2(e){return e&&(e.id||e.url)}function edt(e,t,r,i){let s=e.width,n=e.height,o=new pi(e.gl,{width:t,height:r,parameters:i});return rE(e,o,{targetY:0,width:s,height:n}),e.delete(),o}function SH(e,t,r){for(let i=0;io&&(SH(r,c,s),i=0,s=n+s+t,n=0,c=[]),c.push({icon:_,xOffset:i}),i=i+R+t,n=Math.max(n,C)}}return c.length>0&&SH(r,c,s),{mapping:r,rowHeight:n,xOffset:i,yOffset:s,canvasWidth:o,canvasHeight:Jft(n+s+t)}}function idt(e,t,r){if(!e||!t)return null;r=r||{};let i={},{iterable:s,objectInfo:n}=Xc(e);for(let o of s){n.index++;let c=t(o,n),f=C2(c);if(!c)throw new Error(\"Icon is missing.\");if(!c.url)throw new Error(\"Icon url is missing.\");!i[f]&&(!r[f]||c.url!==r[f].url)&&(i[f]={...c,source:o,sourceIndex:n.index})}return i}var L2=class{constructor(t,{onUpdate:r=bH,onError:i=bH}){G(this,\"gl\",void 0),G(this,\"onUpdate\",void 0),G(this,\"onError\",void 0),G(this,\"_loadOptions\",null),G(this,\"_texture\",null),G(this,\"_externalTexture\",null),G(this,\"_mapping\",{}),G(this,\"_textureParameters\",null),G(this,\"_pendingCount\",0),G(this,\"_autoPacking\",!1),G(this,\"_xOffset\",0),G(this,\"_yOffset\",0),G(this,\"_rowHeight\",0),G(this,\"_buffer\",Kft),G(this,\"_canvasWidth\",Xft),G(this,\"_canvasHeight\",0),G(this,\"_canvas\",null),this.gl=t,this.onUpdate=r,this.onError=i}finalize(){var t;(t=this._texture)===null||t===void 0||t.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(t){let r=this._autoPacking?C2(t):t;return this._mapping[r]||{}}setProps({loadOptions:t,autoPacking:r,iconAtlas:i,iconMapping:s,textureParameters:n}){if(t&&(this._loadOptions=t),r!==void 0&&(this._autoPacking=r),s&&(this._mapping=s),i){var o;(o=this._texture)===null||o===void 0||o.delete(),this._texture=null,this._externalTexture=i}n&&(this._textureParameters=n)}get isLoaded(){return this._pendingCount===0}packIcons(t,r){if(!this._autoPacking||typeof document>\"u\")return;let i=Object.values(idt(t,r,this._mapping)||{});if(i.length>0){let{mapping:s,xOffset:n,yOffset:o,rowHeight:c,canvasHeight:f}=rdt({icons:i,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=c,this._mapping=s,this._xOffset=n,this._yOffset=o,this._canvasHeight=f,this._texture||(this._texture=new pi(this.gl,{width:this._canvasWidth,height:this._canvasHeight,parameters:this._textureParameters||wH})),this._texture.height!==this._canvasHeight&&(this._texture=edt(this._texture,this._canvasWidth,this._canvasHeight,this._textureParameters||wH)),this.onUpdate(),this._canvas=this._canvas||document.createElement(\"canvas\"),this._loadIcons(i)}}_loadIcons(t){let r=this._canvas.getContext(\"2d\",{willReadFrequently:!0});for(let i of t)this._pendingCount++,NA(i.url,this._loadOptions).then(s=>{let n=C2(i),o=this._mapping[n],{x:c,y:f,width:_,height:w}=o,{data:C,width:R,height:N}=tdt(r,s,_,w);this._texture.setSubImageData({data:C,x:c+(_-R)/2,y:f+(w-N)/2,width:R,height:N}),o.width=R,o.height=N,this._texture.generateMipmap(),this.onUpdate()}).catch(s=>{this.onError({url:i.url,source:i.source,sourceIndex:i.sourceIndex,loadOptions:this._loadOptions,error:s})}).finally(()=>{this._pendingCount--})}};var TH=[0,0,0,255],ndt={iconAtlas:{type:\"image\",value:null,async:!0},iconMapping:{type:\"object\",value:{},async:!0},sizeScale:{type:\"number\",value:1,min:0},billboard:!0,sizeUnits:\"pixels\",sizeMinPixels:{type:\"number\",min:0,value:0},sizeMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},alphaCutoff:{type:\"number\",value:.05,min:0,max:1},getPosition:{type:\"accessor\",value:e=>e.position},getIcon:{type:\"accessor\",value:e=>e.icon},getColor:{type:\"accessor\",value:TH},getSize:{type:\"accessor\",value:1},getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]},onIconError:{type:\"function\",value:null,optional:!0},textureParameters:{type:\"object\",ignore:!0}},Sp=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:vH,fs:xH,modules:[oo,ta]})}initializeState(){this.state={iconManager:new L2(this.context.gl,{onUpdate:this._onUpdate.bind(this),onError:this._onError.bind(this)})},this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceSizes:{size:1,transition:!0,accessor:\"getSize\",defaultValue:1},instanceOffsets:{size:2,accessor:\"getIcon\",transform:this.getInstanceOffset},instanceIconFrames:{size:4,accessor:\"getIcon\",transform:this.getInstanceIconFrame},instanceColorModes:{size:1,type:5121,accessor:\"getIcon\",transform:this.getInstanceColorMode},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getColor\",defaultValue:TH},instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instancePixelOffset:{size:2,transition:!0,accessor:\"getPixelOffset\"}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t,n=this.getAttributeManager(),{iconAtlas:o,iconMapping:c,data:f,getIcon:_,textureParameters:w}=r,{iconManager:C}=this.state,R=o||this.internalState.isAsyncPropLoading(\"iconAtlas\");if(C.setProps({loadOptions:r.loadOptions,autoPacking:!R,iconAtlas:o,iconMapping:R?c:null,textureParameters:w}),R?i.iconMapping!==r.iconMapping&&n.invalidate(\"getIcon\"):(s.dataChanged||s.updateTriggersChanged&&(s.updateTriggersChanged.all||s.updateTriggersChanged.getIcon))&&C.packIcons(f,_),s.extensionsChanged){var N;let{gl:j}=this.context;(N=this.state.model)===null||N===void 0||N.delete(),this.state.model=this._getModel(j),n.invalidateAll()}}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(t){super.finalizeState(t),this.state.iconManager.finalize()}draw({uniforms:t}){let{sizeScale:r,sizeMinPixels:i,sizeMaxPixels:s,sizeUnits:n,billboard:o,alphaCutoff:c}=this.props,{iconManager:f}=this.state,_=f.getTexture();_&&this.state.model.setUniforms(t).setUniforms({iconsTexture:_,iconsTextureDim:[_.width,_.height],sizeUnits:Ko[n],sizeScale:r,sizeMinPixels:i,sizeMaxPixels:s,billboard:o,alphaCutoff:c}).draw()}_getModel(t){let r=[-1,-1,-1,1,1,1,1,-1];return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,attributes:{positions:{size:2,value:new Float32Array(r)}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(t){var r;let i=(r=this.getCurrentLayer())===null||r===void 0?void 0:r.props.onIconError;i?i(t):nr.error(t.error.message)()}getInstanceOffset(t){let{width:r,height:i,anchorX:s=r/2,anchorY:n=i/2}=this.state.iconManager.getIconMapping(t);return[r/2-s,i/2-n]}getInstanceColorMode(t){return this.state.iconManager.getIconMapping(t).mask?1:0}getInstanceIconFrame(t){let{x:r,y:i,width:s,height:n}=this.state.iconManager.getIconMapping(t);return[r,i,s,n]}};G(Sp,\"defaultProps\",ndt);G(Sp,\"layerName\",\"IconLayer\");var MH=`#define SHADER_NAME scatterplot-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceRadius;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusScale;\nuniform float radiusMinPixels;\nuniform float radiusMaxPixels;\nuniform float lineWidthScale;\nuniform float lineWidthMinPixels;\nuniform float lineWidthMaxPixels;\nuniform float stroked;\nuniform bool filled;\nuniform bool antialiasing;\nuniform bool billboard;\nuniform int radiusUnits;\nuniform int lineWidthUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n outerRadiusPixels = clamp(\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\n radiusMinPixels, radiusMaxPixels\n );\n float lineWidthPixels = clamp(\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\n lineWidthMinPixels, lineWidthMaxPixels\n );\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\n unitPosition = edgePadding * positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\n \n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = edgePadding * positions * outerRadiusPixels;\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;var EH=`#define SHADER_NAME scatterplot-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool filled;\nuniform float stroked;\nuniform bool antialiasing;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition) * outerRadiusPixels;\n float inCircle = antialiasing ? \n smoothedge(distToCenter, outerRadiusPixels) : \n step(distToCenter, outerRadiusPixels);\n\n if (inCircle == 0.0) {\n discard;\n }\n\n if (stroked > 0.5) {\n float isLine = antialiasing ? \n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\n\n if (filled) {\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\n } else {\n if (isLine == 0.0) {\n discard;\n }\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\n }\n } else if (!filled) {\n discard;\n } else {\n gl_FragColor = vFillColor;\n }\n\n gl_FragColor.a *= inCircle;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var PH=[0,0,0,255],sdt={radiusUnits:\"meters\",radiusScale:{type:\"number\",min:0,value:1},radiusMinPixels:{type:\"number\",min:0,value:0},radiusMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},lineWidthUnits:\"meters\",lineWidthScale:{type:\"number\",min:0,value:1},lineWidthMinPixels:{type:\"number\",min:0,value:0},lineWidthMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},stroked:!1,filled:!0,billboard:!1,antialiasing:!0,getPosition:{type:\"accessor\",value:e=>e.position},getRadius:{type:\"accessor\",value:1},getFillColor:{type:\"accessor\",value:PH},getLineColor:{type:\"accessor\",value:PH},getLineWidth:{type:\"accessor\",value:1},strokeWidth:{deprecatedFor:\"getLineWidth\"},outline:{deprecatedFor:\"stroked\"},getColor:{deprecatedFor:[\"getFillColor\",\"getLineColor\"]}},Xu=class extends Tn{getShaders(){return super.getShaders({vs:MH,fs:EH,modules:[oo,ta]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceRadius:{size:1,transition:!0,accessor:\"getRadius\",defaultValue:1},instanceFillColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:\"getFillColor\",defaultValue:[0,0,0,255]},instanceLineColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:\"getLineColor\",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:\"getLineWidth\",defaultValue:1}})}updateState(t){if(super.updateState(t),t.changeFlags.extensionsChanged){var r;let{gl:i}=this.context;(r=this.state.model)===null||r===void 0||r.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{radiusUnits:r,radiusScale:i,radiusMinPixels:s,radiusMaxPixels:n,stroked:o,filled:c,billboard:f,antialiasing:_,lineWidthUnits:w,lineWidthScale:C,lineWidthMinPixels:R,lineWidthMaxPixels:N}=this.props;this.state.model.setUniforms(t).setUniforms({stroked:o?1:0,filled:c,billboard:f,antialiasing:_,radiusUnits:Ko[r],radiusScale:i,radiusMinPixels:s,radiusMaxPixels:n,lineWidthUnits:Ko[w],lineWidthScale:C,lineWidthMinPixels:R,lineWidthMaxPixels:N}).draw()}_getModel(t){let r=[-1,-1,0,1,-1,0,1,1,0,-1,1,0];return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,vertexCount:4,attributes:{positions:{size:3,value:new Float32Array(r)}}}),isInstanced:!0})}};G(Xu,\"defaultProps\",sdt);G(Xu,\"layerName\",\"ScatterplotLayer\");var Vv={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function kg(e,t,r={}){return IH(e,r)!==t?(odt(e,r),!0):!1}function IH(e,t={}){return Math.sign(m3(e,t))}function m3(e,t={}){let{start:r=0,end:i=e.length}=t,s=t.size||2,n=0;for(let o=r,c=i-s;o0){let s=!0;for(let n=0;nt[2]&&(r|=2),e[1]t[3]&&(r|=8),r}function D2(e,t){let{size:r=2,broken:i=!1,gridResolution:s=10,gridOffset:n=[0,0],startIndex:o=0,endIndex:c=e.length}=t||{},f=(c-o)/r,_=[],w=[_],C=ym(e,0,r,o),R,N,j=kH(C,s,n,[]),Y=[];mc(_,C);for(let rt=1;rtr&&(_=[],w.push(_),mc(_,C)),N=R2(R,j)}mc(_,R),k2(C,R)}return i?w:w[0]}var CH=0,ldt=1;function _3(e,t){for(let r=0;r=0?(mc(_,N)&&C.push(Y),ut+=j):C.length&&(C[C.length-1]=CH),k2(rt,N),$=j,K=Y;return[tt?{pos:f,types:t&&w}:null,ut?{pos:_,types:t&&C}:null]}function kH(e,t,r,i){let s=Math.floor((e[0]-r[0])/t)*t+r[0],n=Math.floor((e[1]-r[1])/t)*t+r[1];return i[0]=s,i[1]=n,i[2]=s+t,i[3]=n+t,i}function cdt(e,t,r){r&8?(e[1]+=t,e[3]+=t):r&4?(e[1]-=t,e[3]-=t):r&2?(e[0]+=t,e[2]+=t):r&1&&(e[0]-=t,e[2]-=t)}function udt(e,t,r,i){let s=1/0,n=-1/0,o=1/0,c=-1/0;for(let f=0;fn?_:n,o=wc?w:c}return i[0][0]=s,i[0][1]=o,i[1][0]=n,i[1][1]=c,i}var hdt=85.051129;function jO(e,t){let{size:r=2,startIndex:i=0,endIndex:s=e.length,normalize:n=!0}=t||{},o=e.slice(i,s);RH(o,r,0,s-i);let c=D2(o,{size:r,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(n)for(let f of c)DH(f,r);return c}function GO(e,t=null,r){let{size:i=2,normalize:s=!0,edgeTypes:n=!1}=r||{};t=t||[];let o=[],c=[],f=0,_=0;for(let C=0;C<=t.length;C++){let R=t[C]||e.length,N=_,j=fdt(e,i,f,R);for(let Y=j;Ys&&(s=c,n=o-1)}return n}function ddt(e,t,r,i,s=hdt){let n=e[r],o=e[i-t];if(Math.abs(n-o)>180){let c=ym(e,0,t,r);c[0]+=Math.round((o-n)/360)*360,mc(e,c),c[1]=Math.sign(c[1])*s,mc(e,c),c[0]=n,mc(e,c)}}function RH(e,t,r,i){let s=e[0],n;for(let o=r;o180||c<-180)&&(n-=Math.round(c/360)*360),e[o]=s=n}}function DH(e,t){let r,i=e.length/t;for(let n=0;n=i),s=s.flatMap(N=>[N[0],N[1]]),kg(s,Vv.COUNTER_CLOCKWISE));let n=r>0,o=i+1,c=n?o*3+1:i,f=Math.PI*2/i,_=new Uint16Array(n?i*3*2:0),w=new Float32Array(c*3),C=new Float32Array(c*3),R=0;if(n){for(let N=0;N 0.0 && instanceElevations >= 0.0);\n float dotRadius = radius * coverage * shouldRender;\n\n geometry.pickingColor = instancePickingColors;\n vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\n vec3 centroidPosition64Low = instancePositions64Low;\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\n if (radiusUnits == UNIT_METERS) {\n offset = project_size(offset);\n }\n vec3 pos = vec3(offset, 0.);\n DECKGL_FILTER_SIZE(pos, geometry);\n\n gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\n geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var BH=`#version 300 es\n#define SHADER_NAME column-layer-fragment-shader\n\nprecision highp float;\n\nuniform vec3 project_uCameraPosition;\nuniform bool extruded;\nuniform bool isStroke;\n\nout vec4 fragColor;\n\nin vec4 vColor;\n#ifdef FLAT_SHADING\nin vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n fragColor = vColor;\n#ifdef FLAT_SHADING\n if (extruded && !isStroke && !picking_uActive) {\n vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\n }\n#endif\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;var y3=[0,0,0,255],mdt={diskResolution:{type:\"number\",min:4,value:20},vertices:null,radius:{type:\"number\",min:0,value:1e3},angle:{type:\"number\",value:0},offset:{type:\"array\",value:[0,0]},coverage:{type:\"number\",min:0,max:1,value:1},elevationScale:{type:\"number\",min:0,value:1},radiusUnits:\"meters\",lineWidthUnits:\"meters\",lineWidthScale:1,lineWidthMinPixels:0,lineWidthMaxPixels:Number.MAX_SAFE_INTEGER,extruded:!0,wireframe:!1,filled:!0,stroked:!1,getPosition:{type:\"accessor\",value:e=>e.position},getFillColor:{type:\"accessor\",value:y3},getLineColor:{type:\"accessor\",value:y3},getLineWidth:{type:\"accessor\",value:1},getElevation:{type:\"accessor\",value:1e3},material:!0,getColor:{deprecatedFor:[\"getFillColor\",\"getLineColor\"]}},af=class extends Tn{getShaders(){let{gl:t}=this.context,r=!hr(t),i={},s=this.props.flatShading&&H0(t,Pi.GLSL_DERIVATIVES);return s&&(i.FLAT_SHADING=1),super.getShaders({vs:OH,fs:BH,defines:i,transpileToGLSL100:r,modules:[oo,s?Cy:YA,ta]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceElevations:{size:1,transition:!0,accessor:\"getElevation\"},instanceFillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getFillColor\",defaultValue:y3},instanceLineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getLineColor\",defaultValue:y3},instanceStrokeWidths:{size:1,accessor:\"getLineWidth\",transition:!0}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t,n=s.extensionsChanged||r.flatShading!==i.flatShading;if(n){var o;let{gl:c}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(c),this.getAttributeManager().invalidateAll()}(n||r.diskResolution!==i.diskResolution||r.vertices!==i.vertices||(r.extruded||r.stroked)!==(i.extruded||i.stroked))&&this._updateGeometry(r)}getGeometry(t,r,i){let s=new B2({radius:1,height:i?2:0,vertices:r,nradial:t}),n=0;if(r)for(let o=0;o=t.length&&(r+=1-t.length/s);let n=r*s;return i[0]=t[n],i[1]=t[n+1],i[2]=s===3&&t[n+2]||0,i}isClosed(t){if(!this.normalize)return!!this.opts.loop;let{positionSize:r}=this,i=t.length-r;return t[0]===t[i]&&t[1]===t[i+1]&&(r===2||t[2]===t[i+2])}};function zH(e){return Array.isArray(e[0])}var NH=`#define SHADER_NAME path-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute float instanceTypes;\nattribute vec3 instanceStartPositions;\nattribute vec3 instanceEndPositions;\nattribute vec3 instanceLeftPositions;\nattribute vec3 instanceRightPositions;\nattribute vec3 instanceLeftPositions64Low;\nattribute vec3 instanceStartPositions64Low;\nattribute vec3 instanceEndPositions64Low;\nattribute vec3 instanceRightPositions64Low;\nattribute float instanceStrokeWidths;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float jointType;\nuniform float capType;\nuniform float miterLimit;\nuniform bool billboard;\nuniform int widthUnits;\n\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nconst float EPSILON = 0.001;\nconst vec3 ZERO_OFFSET = vec3(0.0);\n\nfloat flipIfTrue(bool flag) {\n return -(float(flag) * 2. - 1.);\n}\nvec3 getLineJoinOffset(\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\n vec2 width\n) {\n bool isEnd = positions.x > 0.0;\n float sideOfPath = positions.y;\n float isJoint = float(sideOfPath == 0.0);\n\n vec3 deltaA3 = (currPoint - prevPoint);\n vec3 deltaB3 = (nextPoint - currPoint);\n\n mat3 rotationMatrix;\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\n if (needsRotation) {\n deltaA3 = deltaA3 * rotationMatrix;\n deltaB3 = deltaB3 * rotationMatrix;\n }\n vec2 deltaA = deltaA3.xy / width;\n vec2 deltaB = deltaB3.xy / width;\n\n float lenA = length(deltaA);\n float lenB = length(deltaB);\n\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\n\n vec2 perpA = vec2(-dirA.y, dirA.x);\n vec2 perpB = vec2(-dirB.y, dirB.x);\n vec2 tangent = dirA + dirB;\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\n vec2 miterVec = vec2(-tangent.y, tangent.x);\n vec2 dir = isEnd ? dirA : dirB;\n vec2 perp = isEnd ? perpA : perpB;\n float L = isEnd ? lenA : lenB;\n float sinHalfA = abs(dot(miterVec, perp));\n float cosHalfA = abs(dot(dirA, miterVec));\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\n float cornerPosition = sideOfPath * turnDirection;\n\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\n miterSize = mix(\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\n miterSize,\n step(0.0, cornerPosition)\n );\n\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\n * (sideOfPath + isJoint * turnDirection);\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\n bool isCap = isStartCap || isEndCap;\n if (isCap) {\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\n vJointType = capType;\n } else {\n vJointType = jointType;\n }\n vPathLength = L;\n vCornerOffset = offsetVec;\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\n vMiterLength = isCap ? isJoint : vMiterLength;\n\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\n vPathPosition = vec2(\n dot(offsetFromStartOfPath, perp),\n dot(offsetFromStartOfPath, dir)\n );\n geometry.uv = vPathPosition;\n\n float isValid = step(instanceTypes, 3.5);\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\n\n if (needsRotation) {\n offset = rotationMatrix * offset;\n }\n return offset;\n}\nvoid clipLine(inout vec4 position, vec4 refPosition) {\n if (position.w < EPSILON) {\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\n position = refPosition + (position - refPosition) * r;\n }\n}\n\nvoid main() {\n geometry.pickingColor = instancePickingColors;\n\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n\n float isEnd = positions.x;\n\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\n\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\n\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\n\n geometry.worldPosition = currPosition;\n vec2 widthPixels = vec2(clamp(\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels) / 2.0);\n vec3 width;\n\n if (billboard) {\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\n\n clipLine(prevPositionScreen, currPositionScreen);\n clipLine(nextPositionScreen, currPositionScreen);\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\n\n width = vec3(widthPixels, 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(\n prevPositionScreen.xyz / prevPositionScreen.w,\n currPositionScreen.xyz / currPositionScreen.w,\n nextPositionScreen.xyz / nextPositionScreen.w,\n project_pixel_size_to_clipspace(width.xy)\n );\n\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\n } else {\n prevPosition = project_position(prevPosition, prevPosition64Low);\n currPosition = project_position(currPosition, currPosition64Low);\n nextPosition = project_position(nextPosition, nextPosition64Low);\n\n width = vec3(project_pixel_size(widthPixels), 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\n geometry.position = vec4(currPosition + offset, 1.0);\n gl_Position = project_common_position_to_clipspace(geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var UH=`#define SHADER_NAME path-layer-fragment-shader\n\nprecision highp float;\n\nuniform float miterLimit;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nvoid main(void) {\n geometry.uv = vPathPosition;\n\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\n discard;\n }\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\n discard;\n }\n }\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var VH=[0,0,0,255],ydt={widthUnits:\"meters\",widthScale:{type:\"number\",min:0,value:1},widthMinPixels:{type:\"number\",min:0,value:0},widthMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},jointRounded:!1,capRounded:!1,miterLimit:{type:\"number\",min:0,value:4},billboard:!1,_pathType:null,getPath:{type:\"accessor\",value:e=>e.path},getColor:{type:\"accessor\",value:VH},getWidth:{type:\"accessor\",value:1},rounded:{deprecatedFor:[\"jointRounded\",\"capRounded\"]}},HO={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e},gc=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:NH,fs:UH,modules:[oo,ta]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({positions:{size:3,vertexOffset:1,type:5130,fp64:this.use64bitPositions(),transition:HO,accessor:\"getPath\",update:this.calculatePositions,noAlloc:!0,shaderAttributes:{instanceLeftPositions:{vertexOffset:0},instanceStartPositions:{vertexOffset:1},instanceEndPositions:{vertexOffset:2},instanceRightPositions:{vertexOffset:3}}},instanceTypes:{size:1,type:5121,update:this.calculateSegmentTypes,noAlloc:!0},instanceStrokeWidths:{size:1,accessor:\"getWidth\",transition:HO,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,accessor:\"getColor\",transition:HO,defaultValue:VH},instancePickingColors:{size:3,type:5121,accessor:(i,{index:s,target:n})=>this.encodePickingColor(i&&i.__source?i.__source.index:s,n)}}),this.setState({pathTesselator:new F2({fp64:this.use64bitPositions()})})}updateState(t){super.updateState(t);let{props:r,changeFlags:i}=t,s=this.getAttributeManager();if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPath)){let{pathTesselator:c}=this.state,f=r.data.attributes||{};c.updateGeometry({data:r.data,geometryBuffer:f.getPath,buffers:f,normalize:!r._pathType,loop:r._pathType===\"loop\",getGeometry:r.getPath,positionFormat:r.positionFormat,wrapLongitude:r.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:i.dataChanged}),this.setState({numInstances:c.instanceCount,startIndices:c.vertexStarts}),i.dataChanged||s.invalidateAll()}if(i.extensionsChanged){var o;let{gl:c}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(c),s.invalidateAll()}}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i}=r,{data:s}=this.props;return s[0]&&s[0].__source&&(r.object=s.find(n=>n.__source.index===i)),r}disablePickingIndex(t){let{data:r}=this.props;if(r[0]&&r[0].__source)for(let i=0;i=1&&e[0].length>=2&&Number.isFinite(e[0][0])}function zdt(e){let t=e[0],r=e[e.length-1];return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]}function Ndt(e,t,r,i){for(let s=0;sc/t));let n=Gv(e),o=i&&t===3;if(r){let c=n.length;n=n.slice();let f=[];for(let _=0;_f&&c>_||(f>_?(r||(n=n.slice()),$H(n,0,2,1)):(r||(n=n.slice()),$H(n,2,0,1)))}return(0,XH.default)(n,s,t)}var j2=class extends JA{constructor(t){let{fp64:r,IndexType:i=Uint32Array}=t;super({...t,attributes:{positions:{size:3,type:r?Float64Array:Float32Array},vertexValid:{type:Uint8ClampedArray,size:1},indices:{type:i,size:1}}})}get(t){let{attributes:r}=this;return t===\"indices\"?r.indices&&r.indices.subarray(0,this.vertexCount):r[t]}updateGeometry(t){super.updateGeometry(t);let r=this.buffers.indices;if(r)this.vertexCount=(r.value||r).length;else if(this.data&&!this.getGeometry)throw new Error(\"missing indices buffer\")}normalizeGeometry(t){if(this.normalize){let r=T3(t,this.positionSize);return this.opts.resolution?O2(Gv(r),V2(r),{size:this.positionSize,gridResolution:this.opts.resolution,edgeTypes:!0}):this.opts.wrapLongitude?GO(Gv(r),V2(r),{size:this.positionSize,maxLatitude:86,edgeTypes:!0}):r}return t}getGeometrySize(t){if(tq(t)){let r=0;for(let i of t)r+=this.getGeometrySize(i);return r}return Gv(t).length/this.positionSize}getGeometryFromBuffer(t){return this.normalize||!this.buffers.indices?super.getGeometryFromBuffer(t):null}updateGeometryAttributes(t,r){if(t&&tq(t))for(let i of t){let s=this.getGeometrySize(i);r.geometrySize=s,this.updateGeometryAttributes(i,r),r.vertexStart+=s,r.indexStart=this.indexStarts[r.geometryIndex+1]}else this._updateIndices(t,r),this._updatePositions(t,r),this._updateVertexValid(t,r)}_updateIndices(t,{geometryIndex:r,vertexStart:i,indexStart:s}){let{attributes:n,indexStarts:o,typedArrayManager:c}=this,f=n.indices;if(!f||!t)return;let _=s,w=KH(t,this.positionSize,this.opts.preproject,this.opts.full3d);f=c.allocate(f,s+w.length,{copy:!0});for(let C=0;C2?o[f*n+2]:0;s[c*3]=_,s[c*3+1]=w,s[c*3+2]=C}}_updateVertexValid(t,{vertexStart:r,geometrySize:i}){let{positionSize:s}=this,n=this.attributes.vertexValid,o=t&&V2(t);if(t&&t.edgeTypes?n.set(t.edgeTypes,r):n.fill(1,r,r+i),o)for(let c=0;c0&&!Number.isFinite(e[0])}var M3=`\nattribute vec2 vertexPositions;\nattribute float vertexValid;\n\nuniform bool extruded;\nuniform bool isWireframe;\nuniform float elevationScale;\nuniform float opacity;\n\nvarying vec4 vColor;\n\nstruct PolygonProps {\n vec4 fillColors;\n vec4 lineColors;\n vec3 positions;\n vec3 nextPositions;\n vec3 pickingColors;\n vec3 positions64Low;\n vec3 nextPositions64Low;\n float elevations;\n};\n\nvec3 project_offset_normal(vec3 vector) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\n }\n return project_normal(vector);\n}\n\nvoid calculatePosition(PolygonProps props) {\n#ifdef IS_SIDE_VERTEX\n if(vertexValid < 0.5){\n gl_Position = vec4(0.);\n return;\n }\n#endif\n\n vec3 pos;\n vec3 pos64Low;\n vec3 normal;\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\n\n geometry.worldPosition = props.positions;\n geometry.worldPositionAlt = props.nextPositions;\n geometry.pickingColor = props.pickingColors;\n\n#ifdef IS_SIDE_VERTEX\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\n#else\n pos = props.positions;\n pos64Low = props.positions64Low;\n#endif\n\n if (extruded) {\n pos.z += props.elevations * vertexPositions.y * elevationScale;\n }\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n if (extruded) {\n #ifdef IS_SIDE_VERTEX\n normal = vec3(\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\n 0.0);\n normal = project_offset_normal(normal);\n #else\n normal = project_normal(vec3(0.0, 0.0, 1.0));\n #endif\n geometry.normal = normal;\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\n vColor = vec4(lightColor, colors.a * opacity);\n } else {\n vColor = vec4(colors.rgb, colors.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var eq=`#define SHADER_NAME solid-polygon-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float elevations;\nattribute vec4 fillColors;\nattribute vec4 lineColors;\nattribute vec3 pickingColors;\n\n`.concat(M3,`\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = positions;\n props.positions64Low = positions64Low;\n props.elevations = elevations;\n props.fillColors = fillColors;\n props.lineColors = lineColors;\n props.pickingColors = pickingColors;\n\n calculatePosition(props);\n}\n`);var rq=`#define SHADER_NAME solid-polygon-layer-vertex-shader-side\n#define IS_SIDE_VERTEX\n\n\nattribute vec3 instancePositions;\nattribute vec3 nextPositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 nextPositions64Low;\nattribute float instanceElevations;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\n`.concat(M3,`\n\nvoid main(void) {\n PolygonProps props;\n\n #if RING_WINDING_ORDER_CW == 1\n props.positions = instancePositions;\n props.positions64Low = instancePositions64Low;\n props.nextPositions = nextPositions;\n props.nextPositions64Low = nextPositions64Low;\n #else\n props.positions = nextPositions;\n props.positions64Low = nextPositions64Low;\n props.nextPositions = instancePositions;\n props.nextPositions64Low = instancePositions64Low;\n #endif\n props.elevations = instanceElevations;\n props.fillColors = instanceFillColors;\n props.lineColors = instanceLineColors;\n props.pickingColors = instancePickingColors;\n\n calculatePosition(props);\n}\n`);var iq=`#define SHADER_NAME solid-polygon-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var P3=[0,0,0,255],Udt={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:\"CW\",_full3d:!1,elevationScale:{type:\"number\",min:0,value:1},getPolygon:{type:\"accessor\",value:e=>e.polygon},getElevation:{type:\"accessor\",value:1e3},getFillColor:{type:\"accessor\",value:P3},getLineColor:{type:\"accessor\",value:P3},material:!0},E3={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e},_c=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(t){return super.getShaders({vs:t===\"top\"?eq:rq,fs:iq,defines:{RING_WINDING_ORDER_CW:!this.props._normalize&&this.props._windingOrder===\"CCW\"?0:1},modules:[oo,YA,ta]})}get wrapLongitude(){return!1}initializeState(){let{gl:t,viewport:r}=this.context,{coordinateSystem:i}=this.props,{_full3d:s}=this.props;r.isGeospatial&&i===Yr.DEFAULT&&(i=Yr.LNGLAT);let n;i===Yr.LNGLAT&&(s?n=r.projectPosition.bind(r):n=r.projectFlat.bind(r)),this.setState({numInstances:0,polygonTesselator:new j2({preproject:n,fp64:this.use64bitPositions(),IndexType:!t||Dh(t,Pi.ELEMENT_INDEX_UINT32)?Uint32Array:Uint16Array})});let o=this.getAttributeManager(),c=!0;o.remove([\"instancePickingColors\"]),o.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:c},positions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:E3,accessor:\"getPolygon\",update:this.calculatePositions,noAlloc:c,shaderAttributes:{positions:{vertexOffset:0,divisor:0},instancePositions:{vertexOffset:0,divisor:1},nextPositions:{vertexOffset:1,divisor:1}}},vertexValid:{size:1,divisor:1,type:5121,update:this.calculateVertexValid,noAlloc:c},elevations:{size:1,transition:E3,accessor:\"getElevation\",shaderAttributes:{elevations:{divisor:0},instanceElevations:{divisor:1}}},fillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:E3,accessor:\"getFillColor\",defaultValue:P3,shaderAttributes:{fillColors:{divisor:0},instanceFillColors:{divisor:1}}},lineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:E3,accessor:\"getLineColor\",defaultValue:P3,shaderAttributes:{lineColors:{divisor:0},instanceLineColors:{divisor:1}}},pickingColors:{size:3,type:5121,accessor:(f,{index:_,target:w})=>this.encodePickingColor(f&&f.__source?f.__source.index:_,w),shaderAttributes:{pickingColors:{divisor:0},instancePickingColors:{divisor:1}}}})}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i}=r,{data:s}=this.props;return s[0]&&s[0].__source&&(r.object=s.find(n=>n.__source.index===i)),r}disablePickingIndex(t){let{data:r}=this.props;if(r[0]&&r[0].__source)for(let i=0;if.delete()),this.setState(this._getModels(this.context.gl)),n.invalidateAll()}}updateGeometry({props:t,oldProps:r,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPolygon)){let{polygonTesselator:n}=this.state,o=t.data.attributes||{};n.updateGeometry({data:t.data,normalize:t._normalize,geometryBuffer:o.getPolygon,buffers:o,getGeometry:t.getPolygon,positionFormat:t.positionFormat,wrapLongitude:t.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:i.dataChanged,full3d:t._full3d}),this.setState({numInstances:n.instanceCount,startIndices:n.vertexStarts}),i.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(t){let{id:r,filled:i,extruded:s}=this.props,n,o;if(i){let c=this.getShaders(\"top\");c.defines.NON_INSTANCED_MODEL=1,n=new Sn(t,{...c,id:\"\".concat(r,\"-top\"),drawMode:4,attributes:{vertexPositions:new Float32Array([0,1])},uniforms:{isWireframe:!1,isSideVertex:!1},vertexCount:0,isIndexed:!0})}return s&&(o=new Sn(t,{...this.getShaders(\"side\"),id:\"\".concat(r,\"-side\"),geometry:new As({drawMode:1,vertexCount:4,attributes:{vertexPositions:{size:2,value:new Float32Array([1,0,0,0,0,1,1,1])}}}),instanceCount:0,isInstanced:1}),o.userData.excludeAttributes={indices:!0}),{models:[o,n].filter(Boolean),topModel:n,sideModel:o}}calculateIndices(t){let{polygonTesselator:r}=this.state;t.startIndices=r.indexStarts,t.value=r.get(\"indices\")}calculatePositions(t){let{polygonTesselator:r}=this.state;t.startIndices=r.vertexStarts,t.value=r.get(\"positions\")}calculateVertexValid(t){t.value=this.state.polygonTesselator.get(\"vertexValid\")}};G(_c,\"defaultProps\",Udt);G(_c,\"layerName\",\"SolidPolygonLayer\");function I3({data:e,getIndex:t,dataRange:r,replace:i}){let{startRow:s=0,endRow:n=1/0}=r,o=e.length,c=o,f=o;for(let R=0;RR&&N>=s&&(c=R),N>=n){f=R;break}}let _=c,C=f-c!==i.length?e.slice(f):void 0;for(let R=0;Re.polygon},getFillColor:{type:\"accessor\",value:Vdt},getLineColor:{type:\"accessor\",value:nq},getLineWidth:{type:\"accessor\",value:1},getElevation:{type:\"accessor\",value:1e3},material:!0},lf=class extends tn{initializeState(){this.state={paths:[]},this.props.getLineDashArray&&nr.removed(\"getLineDashArray\",\"PathStyleExtension\")()}updateState({changeFlags:t}){let r=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getPolygon);if(r&&Array.isArray(t.dataChanged)){let i=this.state.paths.slice(),s=t.dataChanged.map(n=>I3({data:i,getIndex:o=>o.__source.index,dataRange:n,replace:this._getPaths(n)}));this.setState({paths:i,pathsDiff:s})}else r&&this.setState({paths:this._getPaths(),pathsDiff:null})}_getPaths(t={}){let{data:r,getPolygon:i,positionFormat:s,_normalize:n}=this.props,o=[],c=s===\"XY\"?2:3,{startRow:f,endRow:_}=t,{iterable:w,objectInfo:C}=Xc(r,f,_);for(let R of w){C.index++;let N=i(R,C);n&&(N=T3(N,c));let{holeIndices:j}=N,Y=N.positions||N;if(j)for(let rt=0;rt<=j.length;rt++){let $=Y.slice(j[rt-1]||0,j[rt]||Y.length);o.push(this.getSubLayerRow({path:$},R,C.index))}else o.push(this.getSubLayerRow({path:Y},R,C.index))}return o}renderLayers(){let{data:t,_dataDiff:r,stroked:i,filled:s,extruded:n,wireframe:o,_normalize:c,_windingOrder:f,elevationScale:_,transitions:w,positionFormat:C}=this.props,{lineWidthUnits:R,lineWidthScale:N,lineWidthMinPixels:j,lineWidthMaxPixels:Y,lineJointRounded:rt,lineMiterLimit:$,lineDashJustified:K}=this.props,{getFillColor:tt,getLineColor:ut,getLineWidth:Pt,getLineDashArray:Ot,getElevation:Kt,getPolygon:Zt,updateTriggers:le,material:ue}=this.props,{paths:Ge,pathsDiff:tr}=this.state,er=this.getSubLayerClass(\"fill\",_c),Lr=this.getSubLayerClass(\"stroke\",gc),zi=this.shouldRenderSubLayer(\"fill\",Ge)&&new er({_dataDiff:r,extruded:n,elevationScale:_,filled:s,wireframe:o,_normalize:c,_windingOrder:f,getElevation:Kt,getFillColor:tt,getLineColor:n&&o?ut:nq,material:ue,transitions:w},this.getSubLayerProps({id:\"fill\",updateTriggers:le&&{getPolygon:le.getPolygon,getElevation:le.getElevation,getFillColor:le.getFillColor,lineColors:n&&o,getLineColor:le.getLineColor}}),{data:t,positionFormat:C,getPolygon:Zt}),Bo=!n&&i&&this.shouldRenderSubLayer(\"stroke\",Ge)&&new Lr({_dataDiff:tr&&(()=>tr),widthUnits:R,widthScale:N,widthMinPixels:j,widthMaxPixels:Y,jointRounded:rt,miterLimit:$,dashJustified:K,_pathType:\"loop\",transitions:w&&{getWidth:w.getLineWidth,getColor:w.getLineColor,getPath:w.getPolygon},getColor:this.getSubLayerAccessor(ut),getWidth:this.getSubLayerAccessor(Pt),getDashArray:this.getSubLayerAccessor(Ot)},this.getSubLayerProps({id:\"stroke\",updateTriggers:le&&{getWidth:le.getLineWidth,getColor:le.getLineColor,getDashArray:le.getLineDashArray}}),{data:Ge,positionFormat:C,getPath:Pc=>Pc.path});return[!n&&zi,Bo,n&&zi]}};G(lf,\"layerName\",\"PolygonLayer\");G(lf,\"defaultProps\",jdt);function sq(e,t){if(!e)return null;let r=\"startIndices\"in e?e.startIndices[t]:t,i=e.featureIds.value[r];return r!==-1?Gdt(e,i,r):null}function Gdt(e,t,r){let i={properties:{...e.properties[t]}};for(let s in e.numericProps)i.properties[s]=e.numericProps[s].value[r];return i}function oq(e,t){let r={points:null,lines:null,polygons:null};for(let i in r){let s=e[i].globalFeatureIds.value;r[i]=new Uint8ClampedArray(s.length*3);let n=[];for(let o=0;o 0.0) {\n float inFill = alpha;\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\n color = mix(outlineColor, vColor, inFill);\n alpha = inBorder;\n }\n }\n float a = alpha * color.a;\n \n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color.rgb, a * opacity);\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var XO=192/256,lq=[],Wdt={getIconOffsets:{type:\"accessor\",value:e=>e.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:\"color\",value:[0,0,0,255]}},Dg=class extends Sp{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return{...super.getShaders(),fs:aq}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:\"getIconOffsets\"},instancePickingColors:{type:5121,size:3,accessor:(r,{index:i,target:s})=>this.encodePickingColor(i,s)}})}updateState(t){super.updateState(t);let{props:r,oldProps:i}=t,{outlineColor:s}=r;s!==i.outlineColor&&(s=s.map(n=>n/255),s[3]=Number.isFinite(s[3])?s[3]:1,this.setState({outlineColor:s})),!r.sdf&&r.outlineWidth&&nr.warn(\"\".concat(this.id,\": fontSettings.sdf is required to render outline\"))()}draw(t){let{sdf:r,smoothing:i,outlineWidth:s}=this.props,{outlineColor:n}=this.state,o=s?Math.max(i,XO*(1-s)):-1;if(t.uniforms={...t.uniforms,sdfBuffer:XO,outlineBuffer:o,gamma:i,sdf:!!r,outlineColor:n},super.draw(t),r&&s){let{iconManager:c}=this.state;c.getTexture()&&this.state.model.draw({uniforms:{outlineBuffer:XO}})}}getInstanceOffset(t){return t?Array.from(t).flatMap(r=>super.getInstanceOffset(r)):lq}getInstanceColorMode(t){return 1}getInstanceIconFrame(t){return t?Array.from(t).flatMap(r=>super.getInstanceIconFrame(r)):lq}};G(Dg,\"defaultProps\",Wdt);G(Dg,\"layerName\",\"MultiIconLayer\");var G2=class{constructor({fontSize:t=24,buffer:r=3,radius:i=8,cutoff:s=.25,fontFamily:n=\"sans-serif\",fontWeight:o=\"normal\",fontStyle:c=\"normal\"}={}){this.buffer=r,this.cutoff=s,this.radius=i;let f=this.size=t+r*4,_=this._createCanvas(f),w=this.ctx=_.getContext(\"2d\",{willReadFrequently:!0});w.font=`${c} ${o} ${t}px ${n}`,w.textBaseline=\"alphabetic\",w.textAlign=\"left\",w.fillStyle=\"black\",this.gridOuter=new Float64Array(f*f),this.gridInner=new Float64Array(f*f),this.f=new Float64Array(f),this.z=new Float64Array(f+1),this.v=new Uint16Array(f)}_createCanvas(t){let r=document.createElement(\"canvas\");return r.width=r.height=t,r}draw(t){let{width:r,actualBoundingBoxAscent:i,actualBoundingBoxDescent:s,actualBoundingBoxLeft:n,actualBoundingBoxRight:o}=this.ctx.measureText(t),c=Math.ceil(i),f=0,_=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-n))),w=Math.min(this.size-this.buffer,c+Math.ceil(s)),C=_+2*this.buffer,R=w+2*this.buffer,N=Math.max(C*R,0),j=new Uint8ClampedArray(N),Y={data:j,width:C,height:R,glyphWidth:_,glyphHeight:w,glyphTop:c,glyphLeft:f,glyphAdvance:r};if(_===0||w===0)return Y;let{ctx:rt,buffer:$,gridInner:K,gridOuter:tt}=this;rt.clearRect($,$,_,w),rt.fillText(t,$,$+c);let ut=rt.getImageData($,$,_,w);tt.fill(1e20,0,N),K.fill(0,0,N);for(let Pt=0;Pt0?le*le:0,K[Zt]=le<0?le*le:0}}cq(tt,0,0,C,R,C,this.f,this.v,this.z),cq(K,$,$,_,w,C,this.f,this.v,this.z);for(let Pt=0;Pt-1);f++,n[f]=c,o[f]=_,o[f+1]=1e20}for(let c=0,f=0;cs&&(_=0,f++),n[C]={x:_+i,y:c+f*w+i,width:R,height:w,layoutWidth:R,layoutHeight:r},_+=R+i*2}return{mapping:n,xOffset:_,yOffset:c+f*w,canvasHeight:Zdt(c+(f+1)*w)}}function fq(e,t,r,i){let s=0;for(let o=t;oi&&(oc){let C=fq(e,c,f,s);_+C>i&&(oi&&(C=dq(e,c,f,i,s,n),o=n[n.length-1])),c=f,_+=C}return _}function Qdt(e,t,r,i,s=0,n){n===void 0&&(n=e.length);let o=[];return t===\"break-all\"?dq(e,s,n,r,i,o):Ydt(e,s,n,r,i,o),o}function $dt(e,t,r,i,s,n){let o=0,c=0;for(let f=t;f0,C=[0,0],R=[0,0],N=0,j=0,Y=0;for(let $=0;$<=o;$++){let K=n[$];if((K===`\n`||$===o)&&(Y=$),Y>j){let tt=w?Qdt(n,r,i,s,j,Y):qdt;for(let ut=0;ut<=tt.length;ut++){let Pt=ut===0?j:tt[ut-1],Ot=ut1||f>0){let N=e.constructor;R=new N(_);for(let j=0;j<_;j++)R[j]=e[j*c+f]}for(let N=0;N=0&&this._order.splice(r,1)}_appendOrder(t){this._order.push(t)}};function Xdt(){let e=[];for(let t=32;t<128;t++)e.push(String.fromCharCode(t));return e}var Og={fontFamily:\"Monaco, monospace\",fontWeight:\"normal\",characterSet:Xdt(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},mq=1024,gq=.9,_q=1.2,vq=3,C3=new Wv(vq);function Kdt(e,t){let r;typeof t==\"string\"?r=new Set(Array.from(t)):r=new Set(t);let i=C3.get(e);if(!i)return r;for(let s in i.mapping)r.has(s)&&r.delete(s);return r}function Jdt(e,t){for(let r=0;r=vq,\"Invalid cache limit\"),C3=new Wv(e)}var W2=class{constructor(){G(this,\"props\",{...Og}),G(this,\"_key\",void 0),G(this,\"_atlas\",void 0)}get texture(){return this._atlas}get mapping(){return this._atlas&&this._atlas.mapping}get scale(){let{fontSize:t,buffer:r}=this.props;return(t*_q+r*2)/t}setProps(t={}){Object.assign(this.props,t),this._key=this._getKey();let r=Kdt(this._key,this.props.characterSet),i=C3.get(this._key);if(i&&r.size===0){this._atlas!==i&&(this._atlas=i);return}let s=this._generateFontAtlas(r,i);this._atlas=s,C3.set(this._key,s)}_generateFontAtlas(t,r){let{fontFamily:i,fontWeight:s,fontSize:n,buffer:o,sdf:c,radius:f,cutoff:_}=this.props,w=r&&r.data;w||(w=document.createElement(\"canvas\"),w.width=mq);let C=w.getContext(\"2d\",{willReadFrequently:!0});yq(C,i,n,s);let{mapping:R,canvasHeight:N,xOffset:j,yOffset:Y}=hq({getFontWidth:rt=>C.measureText(rt).width,fontHeight:n*_q,buffer:o,characterSet:t,maxCanvasWidth:mq,...r&&{mapping:r.mapping,xOffset:r.xOffset,yOffset:r.yOffset}});if(w.height!==N){let rt=C.getImageData(0,0,w.width,w.height);w.height=N,C.putImageData(rt,0,0)}if(yq(C,i,n,s),c){let rt=new G2({fontSize:n,buffer:o,radius:f,cutoff:_,fontFamily:i,fontWeight:\"\".concat(s)});for(let $ of t){let{data:K,width:tt,height:ut,glyphTop:Pt}=rt.draw($);R[$].width=tt,R[$].layoutOffsetY=n*gq-Pt;let Ot=C.createImageData(tt,ut);Jdt(K,Ot),C.putImageData(Ot,R[$].x,R[$].y)}}else for(let rt of t)C.fillText(rt,R[rt].x,R[rt].y+o+n*gq);return{xOffset:j,yOffset:Y,mapping:R,data:w,width:w.width,height:w.height}}_getKey(){let{fontFamily:t,fontWeight:r,fontSize:i,buffer:s,sdf:n,radius:o,cutoff:c}=this.props;return n?\"\".concat(t,\" \").concat(r,\" \").concat(i,\" \").concat(s,\" \").concat(o,\" \").concat(c):\"\".concat(t,\" \").concat(r,\" \").concat(i,\" \").concat(s)}};var bq=`#define SHADER_NAME text-background-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceRects;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec2 instancePixelOffsets;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;var wq=`#define SHADER_NAME text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n if (stroked) {\n float distToEdge = min(\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\n );\n float isBorder = smoothedge(distToEdge, vLineWidth);\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\n } else {\n gl_FragColor = vFillColor;\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var tpt={billboard:!0,sizeScale:1,sizeUnits:\"pixels\",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,padding:{type:\"array\",value:[0,0,0,0]},getPosition:{type:\"accessor\",value:e=>e.position},getSize:{type:\"accessor\",value:1},getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]},getBoundingRect:{type:\"accessor\",value:[0,0,0,0]},getFillColor:{type:\"accessor\",value:[0,0,0,255]},getLineColor:{type:\"accessor\",value:[0,0,0,255]},getLineWidth:{type:\"accessor\",value:1}},Bg=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:bq,fs:wq,modules:[oo,ta]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceSizes:{size:1,transition:!0,accessor:\"getSize\",defaultValue:1},instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instanceRects:{size:4,accessor:\"getBoundingRect\"},instancePixelOffsets:{size:2,transition:!0,accessor:\"getPixelOffset\"},instanceFillColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:\"getFillColor\",defaultValue:[0,0,0,255]},instanceLineColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:\"getLineColor\",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:\"getLineWidth\",defaultValue:1}})}updateState(t){super.updateState(t);let{changeFlags:r}=t;if(r.extensionsChanged){var i;let{gl:s}=this.context;(i=this.state.model)===null||i===void 0||i.delete(),this.state.model=this._getModel(s),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{billboard:r,sizeScale:i,sizeUnits:s,sizeMinPixels:n,sizeMaxPixels:o,getLineWidth:c}=this.props,{padding:f}=this.props;f.length<4&&(f=[f[0],f[1],f[0],f[1]]),this.state.model.setUniforms(t).setUniforms({billboard:r,stroked:!!c,padding:f,sizeUnits:Ko[s],sizeScale:i,sizeMinPixels:n,sizeMaxPixels:o}).draw()}_getModel(t){let r=[0,0,1,0,1,1,0,1];return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,vertexCount:4,attributes:{positions:{size:2,value:new Float32Array(r)}}}),isInstanced:!0})}};G(Bg,\"defaultProps\",tpt);G(Bg,\"layerName\",\"TextBackgroundLayer\");var Sq={start:1,middle:0,end:-1},Tq={top:1,center:0,bottom:-1},KO=[0,0,0,255],ept=1,rpt={billboard:!0,sizeScale:1,sizeUnits:\"pixels\",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,background:!1,getBackgroundColor:{type:\"accessor\",value:[255,255,255,255]},getBorderColor:{type:\"accessor\",value:KO},getBorderWidth:{type:\"accessor\",value:0},backgroundPadding:{type:\"array\",value:[0,0,0,0]},characterSet:{type:\"object\",value:Og.characterSet},fontFamily:Og.fontFamily,fontWeight:Og.fontWeight,lineHeight:ept,outlineWidth:{type:\"number\",value:0,min:0},outlineColor:{type:\"color\",value:KO},fontSettings:{type:\"object\",value:{},compare:1},wordBreak:\"break-word\",maxWidth:{type:\"number\",value:-1},getText:{type:\"accessor\",value:e=>e.text},getPosition:{type:\"accessor\",value:e=>e.position},getColor:{type:\"accessor\",value:KO},getSize:{type:\"accessor\",value:32},getAngle:{type:\"accessor\",value:0},getTextAnchor:{type:\"accessor\",value:\"middle\"},getAlignmentBaseline:{type:\"accessor\",value:\"center\"},getPixelOffset:{type:\"accessor\",value:[0,0]},backgroundColor:{deprecatedFor:[\"background\",\"getBackgroundColor\"]}},cf=class extends tn{constructor(...t){super(...t),G(this,\"state\",void 0),G(this,\"getBoundingRect\",(r,i)=>{let{size:[s,n]}=this.transformParagraph(r,i),{fontSize:o}=this.state.fontAtlasManager.props;s/=o,n/=o;let{getTextAnchor:c,getAlignmentBaseline:f}=this.props,_=Sq[typeof c==\"function\"?c(r,i):c],w=Tq[typeof f==\"function\"?f(r,i):f];return[(_-1)*s/2,(w-1)*n/2,s,n]}),G(this,\"getIconOffsets\",(r,i)=>{let{getTextAnchor:s,getAlignmentBaseline:n}=this.props,{x:o,y:c,rowWidth:f,size:[_,w]}=this.transformParagraph(r,i),C=Sq[typeof s==\"function\"?s(r,i):s],R=Tq[typeof n==\"function\"?n(r,i):n],N=o.length,j=new Array(N*2),Y=0;for(let rt=0;rt0&&nr.warn(\"v8.9 breaking change: TextLayer maxWidth is now relative to text size\")()}updateState(t){let{props:r,oldProps:i,changeFlags:s}=t;(s.dataChanged||s.updateTriggersChanged&&(s.updateTriggersChanged.all||s.updateTriggersChanged.getText))&&this._updateText(),(this._updateFontAtlas()||r.lineHeight!==i.lineHeight||r.wordBreak!==i.wordBreak||r.maxWidth!==i.maxWidth)&&this.setState({styleVersion:this.state.styleVersion+1})}getPickingInfo({info:t}){return t.object=t.index>=0?this.props.data[t.index]:null,t}_updateFontAtlas(){let{fontSettings:t,fontFamily:r,fontWeight:i}=this.props,{fontAtlasManager:s,characterSet:n}=this.state,o={...t,characterSet:n,fontFamily:r,fontWeight:i};if(!s.mapping)return s.setProps(o),!0;for(let c in o)if(o[c]!==s.props[c])return s.setProps(o),!0;return!1}_updateText(){var t;let{data:r,characterSet:i}=this.props,s=(t=r.attributes)===null||t===void 0?void 0:t.getText,{getText:n}=this.props,o=r.startIndices,c,f=i===\"auto\"&&new Set;if(s&&o){let{texts:_,characterCount:w}=Aq({...ArrayBuffer.isView(s)?{value:s}:s,length:r.length,startIndices:o,characterSet:f});c=w,n=(C,{index:R})=>_[R]}else{let{iterable:_,objectInfo:w}=Xc(r);o=[0],c=0;for(let C of _){w.index++;let R=Array.from(n(C,w)||\"\");f&&R.forEach(f.add,f),c+=R.length,o.push(c)}}this.setState({getText:n,startIndices:o,numInstances:c,characterSet:f||i})}transformParagraph(t,r){let{fontAtlasManager:i}=this.state,s=i.mapping,n=this.state.getText,{wordBreak:o,lineHeight:c,maxWidth:f}=this.props,_=n(t,r)||\"\";return pq(_,c,o,f*i.props.fontSize,s)}renderLayers(){let{startIndices:t,numInstances:r,getText:i,fontAtlasManager:{scale:s,texture:n,mapping:o},styleVersion:c}=this.state,{data:f,_dataDiff:_,getPosition:w,getColor:C,getSize:R,getAngle:N,getPixelOffset:j,getBackgroundColor:Y,getBorderColor:rt,getBorderWidth:$,backgroundPadding:K,background:tt,billboard:ut,fontSettings:Pt,outlineWidth:Ot,outlineColor:Kt,sizeScale:Zt,sizeUnits:le,sizeMinPixels:ue,sizeMaxPixels:Ge,transitions:tr,updateTriggers:er}=this.props,Lr=this.getSubLayerClass(\"characters\",Dg),zi=this.getSubLayerClass(\"background\",Bg);return[tt&&new zi({getFillColor:Y,getLineColor:rt,getLineWidth:$,padding:K,getPosition:w,getSize:R,getAngle:N,getPixelOffset:j,billboard:ut,sizeScale:Zt,sizeUnits:le,sizeMinPixels:ue,sizeMaxPixels:Ge,transitions:tr&&{getPosition:tr.getPosition,getAngle:tr.getAngle,getSize:tr.getSize,getFillColor:tr.getBackgroundColor,getLineColor:tr.getBorderColor,getLineWidth:tr.getBorderWidth,getPixelOffset:tr.getPixelOffset}},this.getSubLayerProps({id:\"background\",updateTriggers:{getPosition:er.getPosition,getAngle:er.getAngle,getSize:er.getSize,getFillColor:er.getBackgroundColor,getLineColor:er.getBorderColor,getLineWidth:er.getBorderWidth,getPixelOffset:er.getPixelOffset,getBoundingRect:{getText:er.getText,getTextAnchor:er.getTextAnchor,getAlignmentBaseline:er.getAlignmentBaseline,styleVersion:c}}}),{data:f.attributes&&f.attributes.background?{length:f.length,attributes:f.attributes.background}:f,_dataDiff:_,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new Lr({sdf:Pt.sdf,smoothing:Number.isFinite(Pt.smoothing)?Pt.smoothing:Og.smoothing,outlineWidth:Ot/(Pt.radius||Og.radius),outlineColor:Kt,iconAtlas:n,iconMapping:o,getPosition:w,getColor:C,getSize:R,getAngle:N,getPixelOffset:j,billboard:ut,sizeScale:Zt*s,sizeUnits:le,sizeMinPixels:ue*s,sizeMaxPixels:Ge*s,transitions:tr&&{getPosition:tr.getPosition,getAngle:tr.getAngle,getColor:tr.getColor,getSize:tr.getSize,getPixelOffset:tr.getPixelOffset}},this.getSubLayerProps({id:\"characters\",updateTriggers:{all:er.getText,getPosition:er.getPosition,getAngle:er.getAngle,getColor:er.getColor,getSize:er.getSize,getPixelOffset:er.getPixelOffset,getIconOffsets:{getTextAnchor:er.getTextAnchor,getAlignmentBaseline:er.getAlignmentBaseline,styleVersion:c}}}),{data:f,_dataDiff:_,startIndices:t,numInstances:r,getIconOffsets:this.getIconOffsets,getIcon:i})]}static set fontAtlasCacheLimit(t){xq(t)}};G(cf,\"defaultProps\",rpt);G(cf,\"layerName\",\"TextLayer\");var H2={circle:{type:Xu,props:{filled:\"filled\",stroked:\"stroked\",lineWidthMaxPixels:\"lineWidthMaxPixels\",lineWidthMinPixels:\"lineWidthMinPixels\",lineWidthScale:\"lineWidthScale\",lineWidthUnits:\"lineWidthUnits\",pointRadiusMaxPixels:\"radiusMaxPixels\",pointRadiusMinPixels:\"radiusMinPixels\",pointRadiusScale:\"radiusScale\",pointRadiusUnits:\"radiusUnits\",pointAntialiasing:\"antialiasing\",pointBillboard:\"billboard\",getFillColor:\"getFillColor\",getLineColor:\"getLineColor\",getLineWidth:\"getLineWidth\",getPointRadius:\"getRadius\"}},icon:{type:Sp,props:{iconAtlas:\"iconAtlas\",iconMapping:\"iconMapping\",iconSizeMaxPixels:\"sizeMaxPixels\",iconSizeMinPixels:\"sizeMinPixels\",iconSizeScale:\"sizeScale\",iconSizeUnits:\"sizeUnits\",iconAlphaCutoff:\"alphaCutoff\",iconBillboard:\"billboard\",getIcon:\"getIcon\",getIconAngle:\"getAngle\",getIconColor:\"getColor\",getIconPixelOffset:\"getPixelOffset\",getIconSize:\"getSize\"}},text:{type:cf,props:{textSizeMaxPixels:\"sizeMaxPixels\",textSizeMinPixels:\"sizeMinPixels\",textSizeScale:\"sizeScale\",textSizeUnits:\"sizeUnits\",textBackground:\"background\",textBackgroundPadding:\"backgroundPadding\",textFontFamily:\"fontFamily\",textFontWeight:\"fontWeight\",textLineHeight:\"lineHeight\",textMaxWidth:\"maxWidth\",textOutlineColor:\"outlineColor\",textOutlineWidth:\"outlineWidth\",textWordBreak:\"wordBreak\",textCharacterSet:\"characterSet\",textBillboard:\"billboard\",textFontSettings:\"fontSettings\",getText:\"getText\",getTextAngle:\"getAngle\",getTextColor:\"getColor\",getTextPixelOffset:\"getPixelOffset\",getTextSize:\"getSize\",getTextAnchor:\"getTextAnchor\",getTextAlignmentBaseline:\"getAlignmentBaseline\",getTextBackgroundColor:\"getBackgroundColor\",getTextBorderColor:\"getBorderColor\",getTextBorderWidth:\"getBorderWidth\"}}},q2={type:gc,props:{lineWidthUnits:\"widthUnits\",lineWidthScale:\"widthScale\",lineWidthMinPixels:\"widthMinPixels\",lineWidthMaxPixels:\"widthMaxPixels\",lineJointRounded:\"jointRounded\",lineCapRounded:\"capRounded\",lineMiterLimit:\"miterLimit\",lineBillboard:\"billboard\",getLineColor:\"getColor\",getLineWidth:\"getWidth\"}},L3={type:_c,props:{extruded:\"extruded\",filled:\"filled\",wireframe:\"wireframe\",elevationScale:\"elevationScale\",material:\"material\",_full3d:\"_full3d\",getElevation:\"getElevation\",getFillColor:\"getFillColor\",getLineColor:\"getLineColor\"}};function Hv({type:e,props:t}){let r={};for(let i in t)r[i]=e.defaultProps[t[i]];return r}function k3(e,t){let{transitions:r,updateTriggers:i}=e.props,s={updateTriggers:{},transitions:r&&{getPosition:r.geometry}};for(let n in t){let o=t[n],c=e.props[n];n.startsWith(\"get\")&&(c=e.getSubLayerAccessor(c),s.updateTriggers[o]=i[n],r&&(s.transitions[o]=r[n])),s[o]=c}return s}function Eq(e){if(Array.isArray(e))return e;switch(nr.assert(e.type,\"GeoJSON does not have type\"),e.type){case\"Feature\":return[e];case\"FeatureCollection\":return nr.assert(Array.isArray(e.features),\"GeoJSON does not have features array\"),e.features;default:return[{geometry:e}]}}function JO(e,t,r={}){let i={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:s=0,endRow:n=e.length}=r;for(let o=s;o{c.push(r({geometry:{type:\"Point\",coordinates:C}},i,s))});break;case\"LineString\":f.push(r({geometry:e},i,s));break;case\"MultiLineString\":o.forEach(C=>{f.push(r({geometry:{type:\"LineString\",coordinates:C}},i,s))});break;case\"Polygon\":_.push(r({geometry:e},i,s)),o.forEach(C=>{w.push(r({geometry:{type:\"LineString\",coordinates:C}},i,s))});break;case\"MultiPolygon\":o.forEach(C=>{_.push(r({geometry:{type:\"Polygon\",coordinates:C}},i,s)),C.forEach(R=>{w.push(r({geometry:{type:\"LineString\",coordinates:R}},i,s))})});break;default:}}var ipt={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function npt(e,t){let r=ipt[e];for(nr.assert(r,\"Unknown GeoJSON type \".concat(e));t&&--r>0;)t=t[0];return t&&Number.isFinite(t[0])}function Pq(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function R3(e){return e.geometry.coordinates}function Iq(e,t){let r=Pq(),{pointFeatures:i,lineFeatures:s,polygonFeatures:n,polygonOutlineFeatures:o}=e;return r.points.data=i,r.points._dataDiff=t.pointFeatures&&(()=>t.pointFeatures),r.points.getPosition=R3,r.lines.data=s,r.lines._dataDiff=t.lineFeatures&&(()=>t.lineFeatures),r.lines.getPath=R3,r.polygons.data=n,r.polygons._dataDiff=t.polygonFeatures&&(()=>t.polygonFeatures),r.polygons.getPolygon=R3,r.polygonsOutline.data=o,r.polygonsOutline._dataDiff=t.polygonOutlineFeatures&&(()=>t.polygonOutlineFeatures),r.polygonsOutline.getPath=R3,r}function Cq(e,t){let r=Pq(),{points:i,lines:s,polygons:n}=e,o=oq(e,t);return r.points.data={length:i.positions.value.length/i.positions.size,attributes:{...i.attributes,getPosition:i.positions,instancePickingColors:{size:3,value:o.points}},properties:i.properties,numericProps:i.numericProps,featureIds:i.featureIds},r.lines.data={length:s.pathIndices.value.length-1,startIndices:s.pathIndices.value,attributes:{...s.attributes,getPath:s.positions,instancePickingColors:{size:3,value:o.lines}},properties:s.properties,numericProps:s.numericProps,featureIds:s.featureIds},r.lines._pathType=\"open\",r.polygons.data={length:n.polygonIndices.value.length-1,startIndices:n.polygonIndices.value,attributes:{...n.attributes,getPolygon:n.positions,pickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},r.polygons._normalize=!1,n.triangles&&(r.polygons.data.attributes.indices=n.triangles.value),r.polygonsOutline.data={length:n.primitivePolygonIndices.value.length-1,startIndices:n.primitivePolygonIndices.value,attributes:{...n.attributes,getPath:n.positions,instancePickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},r.polygonsOutline._pathType=\"open\",r}var spt=[\"points\",\"linestrings\",\"polygons\"],opt={...Hv(H2.circle),...Hv(H2.icon),...Hv(H2.text),...Hv(q2),...Hv(L3),stroked:!0,filled:!0,extruded:!1,wireframe:!1,_full3d:!1,iconAtlas:{type:\"object\",value:null},iconMapping:{type:\"object\",value:{}},getIcon:{type:\"accessor\",value:e=>e.properties.icon},getText:{type:\"accessor\",value:e=>e.properties.text},pointType:\"circle\",getRadius:{deprecatedFor:\"getPointRadius\"}},xm=class extends tn{initializeState(){this.state={layerProps:{},features:{}}}updateState({props:t,changeFlags:r}){if(!r.dataChanged)return;let{data:i}=this.props,s=i&&\"points\"in i&&\"polygons\"in i&&\"lines\"in i;this.setState({binary:s}),s?this._updateStateBinary({props:t,changeFlags:r}):this._updateStateJSON({props:t,changeFlags:r})}_updateStateBinary({props:t,changeFlags:r}){let i=Cq(t.data,this.encodePickingColor);this.setState({layerProps:i})}_updateStateJSON({props:t,changeFlags:r}){let i=Eq(t.data),s=this.getSubLayerRow.bind(this),n={},o={};if(Array.isArray(r.dataChanged)){let f=this.state.features;for(let _ in f)n[_]=f[_].slice(),o[_]=[];for(let _ of r.dataChanged){let w=JO(i,s,_);for(let C in f)o[C].push(I3({data:n[C],getIndex:R=>R.__source.index,dataRange:_,replace:w[C]}))}}else n=JO(i,s);let c=Iq(n,o);this.setState({features:n,featuresDiff:o,layerProps:c})}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i,sourceLayer:s}=r;return r.featureType=spt.find(n=>s.id.startsWith(\"\".concat(this.id,\"-\").concat(n,\"-\"))),i>=0&&s.id.startsWith(\"\".concat(this.id,\"-points-text\"))&&this.state.binary&&(r.index=this.props.data.points.globalFeatureIds.value[i]),r}_updateAutoHighlight(t){let r=\"\".concat(this.id,\"-points-\"),i=t.featureType===\"points\";for(let s of this.getSubLayers())s.id.startsWith(r)===i&&s.updateAutoHighlight(t)}_renderPolygonLayer(){let{extruded:t,wireframe:r}=this.props,{layerProps:i}=this.state,s=\"polygons-fill\",n=this.shouldRenderSubLayer(s,i.polygons.data)&&this.getSubLayerClass(s,L3.type);if(n){let o=k3(this,L3.props),c=t&&r;return c||delete o.getLineColor,o.updateTriggers.lineColors=c,new n(o,this.getSubLayerProps({id:s,updateTriggers:o.updateTriggers}),i.polygons)}return null}_renderLineLayers(){let{extruded:t,stroked:r}=this.props,{layerProps:i}=this.state,s=\"polygons-stroke\",n=\"linestrings\",o=!t&&r&&this.shouldRenderSubLayer(s,i.polygonsOutline.data)&&this.getSubLayerClass(s,q2.type),c=this.shouldRenderSubLayer(n,i.lines.data)&&this.getSubLayerClass(n,q2.type);if(o||c){let f=k3(this,q2.props);return[o&&new o(f,this.getSubLayerProps({id:s,updateTriggers:f.updateTriggers}),i.polygonsOutline),c&&new c(f,this.getSubLayerProps({id:n,updateTriggers:f.updateTriggers}),i.lines)]}return null}_renderPointLayers(){let{pointType:t}=this.props,{layerProps:r,binary:i}=this.state,{highlightedObjectIndex:s}=this.props;!i&&Number.isFinite(s)&&(s=r.points.data.findIndex(c=>c.__source.index===s));let n=new Set(t.split(\"+\")),o=[];for(let c of n){let f=\"points-\".concat(c),_=H2[c],w=_&&this.shouldRenderSubLayer(f,r.points.data)&&this.getSubLayerClass(f,_.type);if(w){let C=k3(this,_.props),R=r.points;if(c===\"text\"&&i){let{instancePickingColors:N,...j}=R.data.attributes;R={...R,data:{...R.data,attributes:j}}}o.push(new w(C,this.getSubLayerProps({id:f,updateTriggers:C.updateTriggers,highlightedObjectIndex:s}),R))}}return o}renderLayers(){let{extruded:t}=this.props,r=this._renderPolygonLayer(),i=this._renderLineLayers(),s=this._renderPointLayers();return[!t&&r,i,s,t&&r]}getSubLayerAccessor(t){let{binary:r}=this.state;return!r||typeof t!=\"function\"?super.getSubLayerAccessor(t):(i,s)=>{let{data:n,index:o}=s,c=sq(n,o);return t(c,s)}}};G(xm,\"layerName\",\"GeoJsonLayer\");G(xm,\"defaultProps\",opt);var f$t=1/Math.PI*180,d$t=1/180*Math.PI,apt={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...apt}};var Z2=globalThis.mathgl.config;function Y2(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function qv(e,t,r){let i=Z2.EPSILON;r&&(Z2.EPSILON=r);try{if(e===t)return!0;if(Y2(e)&&Y2(t)){if(e.length!==t.length)return!1;for(let s=0;s{t([r,i],[s,n],o,c)},this.options):Rq(this.points,t,this.options)}modifyWindingDirection(t){return this.isFlatArray?tB(this.points,t,this.options):kq(this.points,t,this.options)}};function nB(e,t,r=2,i,s=\"xy\"){let n=t&&t.length,o=n?t[0]*r:e.length,c=Oq(e,0,o,r,!0,i&&i[0],s),f=[];if(!c||c.next===c.prev)return f;let _,w,C,R,N,j,Y;if(n&&(c=ppt(e,t,c,r,i,s)),e.length>80*r){R=w=e[0],N=C=e[1];for(let rt=r;rtw&&(w=j),Y>C&&(C=Y);_=Math.max(w-R,C-N),_=_!==0?32767/_:0}return Q2(c,f,r,R,N,_,0),f}function Oq(e,t,r,i,s,n,o){let c,f;n===void 0&&(n=Zv(e,{start:t,end:r,size:i,plane:o}));let _=Fg[o[0]],w=Fg[o[1]];if(s===n<0)for(c=t;c=t;c-=i)f=Dq(c,e[c+_],e[c+w],f);return f&&F3(f,f.next)&&(X2(f),f=f.next),f}function zg(e,t){if(!e)return e;t||(t=e);let r=e,i;do if(i=!1,!r.steiner&&(F3(r,r.next)||ys(r.prev,r,r.next)===0)){if(X2(r),r=t=r.prev,r===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function Q2(e,t,r,i,s,n,o){if(!e)return;!o&&n&&ypt(e,i,s,n);let c=e,f,_;for(;e.prev!==e.next;){if(f=e.prev,_=e.next,n?hpt(e,i,s,n):upt(e)){t.push(f.i/r|0),t.push(e.i/r|0),t.push(_.i/r|0),X2(e),e=_.next,c=_.next;continue}if(e=_,e===c){o?o===1?(e=fpt(zg(e),t,r),Q2(e,t,r,i,s,n,2)):o===2&&dpt(e,t,r,i,s,n):Q2(zg(e),t,r,i,s,n,1);break}}}function upt(e){let t=e.prev,r=e,i=e.next;if(ys(t,r,i)>=0)return!1;let s=t.x,n=r.x,o=i.x,c=t.y,f=r.y,_=i.y,w=sn?s>o?s:o:n>o?n:o,N=c>f?c>_?c:_:f>_?f:_,j=i.next;for(;j!==t;){if(j.x>=w&&j.x<=R&&j.y>=C&&j.y<=N&&Qv(s,c,n,f,o,_,j.x,j.y)&&ys(j.prev,j,j.next)>=0)return!1;j=j.next}return!0}function hpt(e,t,r,i){let s=e.prev,n=e,o=e.next;if(ys(s,n,o)>=0)return!1;let c=s.x,f=n.x,_=o.x,w=s.y,C=n.y,R=o.y,N=cf?c>_?c:_:f>_?f:_,rt=w>C?w>R?w:R:C>R?C:R,$=iB(N,j,t,r,i),K=iB(Y,rt,t,r,i),tt=e.prevZ,ut=e.nextZ;for(;tt&&tt.z>=$&&ut&&ut.z<=K;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&Qv(c,w,f,C,_,R,tt.x,tt.y)&&ys(tt.prev,tt,tt.next)>=0||(tt=tt.prevZ,ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&Qv(c,w,f,C,_,R,ut.x,ut.y)&&ys(ut.prev,ut,ut.next)>=0))return!1;ut=ut.nextZ}for(;tt&&tt.z>=$;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&Qv(c,w,f,C,_,R,tt.x,tt.y)&&ys(tt.prev,tt,tt.next)>=0)return!1;tt=tt.prevZ}for(;ut&&ut.z<=K;){if(ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&Qv(c,w,f,C,_,R,ut.x,ut.y)&&ys(ut.prev,ut,ut.next)>=0)return!1;ut=ut.nextZ}return!0}function fpt(e,t,r){let i=e;do{let s=i.prev,n=i.next.next;!F3(s,n)&&Bq(s,i,i.next,n)&&$2(s,n)&&$2(n,s)&&(t.push(s.i/r|0),t.push(i.i/r|0),t.push(n.i/r|0),X2(i),X2(i.next),i=e=n),i=i.next}while(i!==e);return zg(i)}function dpt(e,t,r,i,s,n){let o=e;do{let c=o.next.next;for(;c!==o.prev;){if(o.i!==c.i&&bpt(o,c)){let f=Fq(o,c);o=zg(o,o.next),f=zg(f,f.next),Q2(o,t,r,i,s,n,0),Q2(f,t,r,i,s,n,0);return}c=c.next}o=o.next}while(o!==e)}function ppt(e,t,r,i,s,n){let o=[],c,f,_,w,C;for(c=0,f=t.length;c=r.next.y&&r.next.y!==r.y){let R=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(R<=i&&R>n&&(n=R,o=r.x=r.x&&r.x>=f&&i!==r.x&&Qv(s<_?i:n,s,f,_,s<_?n:i,s,r.x,r.y)&&(C=Math.abs(s-r.y)/(i-r.x),$2(r,e)&&(Co.x||r.x===o.x&&_pt(o,r)))&&(o=r,w=C)),r=r.next;while(r!==c);return o}function _pt(e,t){return ys(e.prev,e,t.prev)<0&&ys(t.next,e,e.next)<0}function ypt(e,t,r,i){let s=e;do s.z===0&&(s.z=iB(s.x,s.y,t,r,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,vpt(s)}function vpt(e){let t,r,i=1,s,n,o,c,f,_;do{for(n=e,e=null,_=null,s=0;n;){for(s++,c=n,o=0,r=0;r0||f>0&&c;)o!==0&&(f===0||!c||n.z<=c.z)?(t=n,n=n.nextZ,o--):(t=c,c=c.nextZ,f--),_?_.nextZ=t:e=t,t.prevZ=_,_=t;n=c}_.nextZ=null,i*=2}while(s>1);return e}function iB(e,t,r,i,s){return e=(e-r)*s|0,t=(t-i)*s|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function xpt(e){let t=e,r=e;do(t.x=(e-o)*(n-c)&&(e-o)*(i-c)>=(r-o)*(t-c)&&(r-o)*(n-c)>=(s-o)*(i-c)}function bpt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!wpt(e,t)&&($2(e,t)&&$2(t,e)&&Spt(e,t)&&(ys(e.prev,e,t.prev)||ys(e,t.prev,t))||F3(e,t)&&ys(e.prev,e,e.next)>0&&ys(t.prev,t,t.next)>0)}function ys(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function F3(e,t){return e.x===t.x&&e.y===t.y}function Bq(e,t,r,i){let s=B3(ys(e,t,r)),n=B3(ys(e,t,i)),o=B3(ys(r,i,e)),c=B3(ys(r,i,t));return!!(s!==n&&o!==c||s===0&&O3(e,r,t)||n===0&&O3(e,i,t)||o===0&&O3(r,e,i)||c===0&&O3(r,t,i))}function O3(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function B3(e){return e>0?1:e<0?-1:0}function wpt(e,t){let r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&Bq(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function $2(e,t){return ys(e.prev,e,e.next)<0?ys(e,t,e.next)>=0&&ys(e,e.prev,t)>=0:ys(e,t,e.prev)<0||ys(e,e.next,t)<0}function Spt(e,t){let r=e,i=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do r.y>n!=r.next.y>n&&r.next.y!==r.y&&s<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next;while(r!==e);return i}function Fq(e,t){let r=new K2(e.i,e.x,e.y),i=new K2(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,r.next=s,s.prev=r,i.next=r,r.prev=i,n.next=i,i.prev=n,i}function Dq(e,t,r,i){let s=new K2(e,t,r);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function X2(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}var K2=class{constructor(t,r,i){G(this,\"i\",void 0),G(this,\"x\",void 0),G(this,\"y\",void 0),G(this,\"prev\",null),G(this,\"next\",null),G(this,\"z\",0),G(this,\"prevZ\",null),G(this,\"nextZ\",null),G(this,\"steiner\",!1),this.i=t,this.x=r,this.y=i}};function Uq(e){e(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),e(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),e(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),e.WGS84=e[\"EPSG:4326\"],e[\"EPSG:3785\"]=e[\"EPSG:3857\"],e.GOOGLE=e[\"EPSG:3857\"],e[\"EPSG:900913\"]=e[\"EPSG:3857\"],e[\"EPSG:102113\"]=e[\"EPSG:3857\"]}var uf=1,hf=2,Tp=3,Vq=4,J2=5,sB=6378137,jq=6356752314e-3,oB=.0066943799901413165,Ng=484813681109536e-20,de=Math.PI/2,Gq=.16666666666666666,Wq=.04722222222222222,Hq=.022156084656084655,we=1e-10,vs=.017453292519943295,yc=57.29577951308232,Fi=Math.PI/4,bm=Math.PI*2,xs=3.14159265359;var Ll={};Ll.greenwich=0;Ll.lisbon=-9.131906111111;Ll.paris=2.337229166667;Ll.bogota=-74.080916666667;Ll.madrid=-3.687938888889;Ll.rome=12.452333333333;Ll.bern=7.439583333333;Ll.jakarta=106.807719444444;Ll.ferro=-17.666666666667;Ll.brussels=4.367975;Ll.stockholm=18.058277777778;Ll.athens=23.7163375;Ll.oslo=10.722916666667;var qq={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}};var Zq=/[\\s_\\-\\/\\(\\)]/g;function au(e,t){if(e[t])return e[t];for(var r=Object.keys(e),i=t.toLowerCase().replace(Zq,\"\"),s=-1,n,o;++s=this.text.length)return;e=this.text[this.place++]}switch(this.state){case eS:return this.neutral(e);case Qq:return this.keyword(e);case z3:return this.quoted(e);case Xq:return this.afterquote(e);case $q:return this.number(e);case aB:return}};Mp.prototype.afterquote=function(e){if(e==='\"'){this.word+='\"',this.state=z3;return}if(N3.test(e)){this.word=this.word.trim(),this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in afterquote yet, index '+this.place)};Mp.prototype.afterItem=function(e){if(e===\",\"){this.word!==null&&this.currentObject.push(this.word),this.word=null,this.state=eS;return}if(e===\"]\"){this.level--,this.word!==null&&(this.currentObject.push(this.word),this.word=null),this.state=eS,this.currentObject=this.stack.pop(),this.currentObject||(this.state=aB);return}};Mp.prototype.number=function(e){if(Kq.test(e)){this.word+=e;return}if(N3.test(e)){this.word=parseFloat(this.word),this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in number yet, index '+this.place)};Mp.prototype.quoted=function(e){if(e==='\"'){this.state=Xq;return}this.word+=e};Mp.prototype.keyword=function(e){if(Cpt.test(e)){this.word+=e;return}if(e===\"[\"){var t=[];t.push(this.word),this.level++,this.root===null?this.root=t:this.currentObject.push(t),this.stack.push(this.currentObject),this.currentObject=t,this.state=eS;return}if(N3.test(e)){this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in keyword yet, index '+this.place)};Mp.prototype.neutral=function(e){if(Ipt.test(e)){this.word=e,this.state=Qq;return}if(e==='\"'){this.word=\"\",this.state=z3;return}if(Kq.test(e)){this.word=e,this.state=$q;return}if(N3.test(e)){this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in neutral yet, index '+this.place)};Mp.prototype.output=function(){for(;this.place0?90:-90),e.lat_ts=e.lat1):!e.lat_ts&&e.lat0&&e.projName===\"Polar_Stereographic\"&&(e.lat_ts=e.lat0,e.lat0=ud(e.lat0>0?90:-90))}function U3(e){var t=Yq(e),r=t.shift(),i=t.shift();t.unshift([\"name\",i]),t.unshift([\"type\",r]);var s={};return Ug(t,s),Dpt(s),s}function Ku(e){var t=this;if(arguments.length===2){var r=arguments[1];typeof r==\"string\"?r.charAt(0)===\"+\"?Ku[e]=tS(arguments[1]):Ku[e]=U3(arguments[1]):Ku[e]=r}else if(arguments.length===1){if(Array.isArray(e))return e.map(function(i){Array.isArray(i)?Ku.apply(t,i):Ku(i)});if(typeof e==\"string\"){if(e in Ku)return Ku[e]}else\"EPSG\"in e?Ku[\"EPSG:\"+e.EPSG]=e:\"ESRI\"in e?Ku[\"ESRI:\"+e.ESRI]=e:\"IAU2000\"in e?Ku[\"IAU2000:\"+e.IAU2000]=e:console.log(e);return}}Uq(Ku);var $v=Ku;function Opt(e){return typeof e==\"string\"}function Bpt(e){return e in $v}var Fpt=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];function zpt(e){return Fpt.some(function(t){return e.indexOf(t)>-1})}var Npt=[\"3857\",\"900913\",\"3785\",\"102113\"];function Upt(e){var t=au(e,\"authority\");if(t){var r=au(t,\"epsg\");return r&&Npt.indexOf(r)>-1}}function Vpt(e){var t=au(e,\"extension\");if(t)return au(t,\"proj4\")}function jpt(e){return e[0]===\"+\"}function Gpt(e){if(Opt(e)){if(Bpt(e))return $v[e];if(zpt(e)){var t=U3(e);if(Upt(t))return $v[\"EPSG:3857\"];var r=Vpt(t);return r?tS(r):t}if(jpt(e))return tS(e)}else return e}var tZ=Gpt;function lB(e,t){e=e||{};var r,i;if(!t)return e;for(i in t)r=t[i],r!==void 0&&(e[i]=r);return e}function il(e,t,r){var i=e*t;return r/Math.sqrt(1-i*i)}function hd(e){return e<0?-1:1}function Ie(e){return Math.abs(e)<=xs?e:e-hd(e)*bm}function kl(e,t,r){var i=e*r,s=.5*e;return i=Math.pow((1-i)/(1+i),s),Math.tan(.5*(de-t))/i}function Ep(e,t){for(var r=.5*e,i,s,n=de-2*Math.atan(t),o=0;o<=15;o++)if(i=e*Math.sin(n),s=de-2*Math.atan(t*Math.pow((1-i)/(1+i),r))-n,n+=s,Math.abs(s)<=1e-10)return n;return-9999}function Wpt(){var e=this.b/this.a;this.es=1-e*e,\"x0\"in this||(this.x0=0),\"y0\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=il(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)}function Hpt(e){var t=e.x,r=e.y;if(r*yc>90&&r*yc<-90&&t*yc>180&&t*yc<-180)return null;var i,s;if(Math.abs(Math.abs(r)-de)<=we)return null;if(this.sphere)i=this.x0+this.a*this.k0*Ie(t-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(Fi+.5*r));else{var n=Math.sin(r),o=kl(this.e,r,n);i=this.x0+this.a*this.k0*Ie(t-this.long0),s=this.y0-this.a*this.k0*Math.log(o)}return e.x=i,e.y=s,e}function qpt(e){var t=e.x-this.x0,r=e.y-this.y0,i,s;if(this.sphere)s=de-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var n=Math.exp(-r/(this.a*this.k0));if(s=Ep(this.e,n),s===-9999)return null}return i=Ie(this.long0+t/(this.a*this.k0)),e.x=i,e.y=s,e}var Zpt=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],eZ={init:Wpt,forward:Hpt,inverse:qpt,names:Zpt};function Ypt(){}function rZ(e){return e}var Qpt=[\"longlat\",\"identity\"],iZ={init:Ypt,forward:rZ,inverse:rZ,names:Qpt};var $pt=[eZ,iZ],V3={},j3=[];function nZ(e,t){var r=j3.length;return e.names?(j3[r]=e,e.names.forEach(function(i){V3[i.toLowerCase()]=r}),this):(console.log(t),!0)}function Xpt(e){if(!e)return!1;var t=e.toLowerCase();if(typeof V3[t]<\"u\"&&j3[V3[t]])return j3[V3[t]]}function Kpt(){$pt.forEach(nZ)}var sZ={start:Kpt,add:nZ,get:Xpt};var Xr={};Xr.MERIT={a:6378137,rf:298.257,ellipseName:\"MERIT 1983\"};Xr.SGS85={a:6378136,rf:298.257,ellipseName:\"Soviet Geodetic System 85\"};Xr.GRS80={a:6378137,rf:298.257222101,ellipseName:\"GRS 1980(IUGG, 1980)\"};Xr.IAU76={a:6378140,rf:298.257,ellipseName:\"IAU 1976\"};Xr.airy={a:6377563396e-3,b:635625691e-2,ellipseName:\"Airy 1830\"};Xr.APL4={a:6378137,rf:298.25,ellipseName:\"Appl. Physics. 1965\"};Xr.NWL9D={a:6378145,rf:298.25,ellipseName:\"Naval Weapons Lab., 1965\"};Xr.mod_airy={a:6377340189e-3,b:6356034446e-3,ellipseName:\"Modified Airy\"};Xr.andrae={a:637710443e-2,rf:300,ellipseName:\"Andrae 1876 (Den., Iclnd.)\"};Xr.aust_SA={a:6378160,rf:298.25,ellipseName:\"Australian Natl & S. Amer. 1969\"};Xr.GRS67={a:6378160,rf:298.247167427,ellipseName:\"GRS 67(IUGG 1967)\"};Xr.bessel={a:6377397155e-3,rf:299.1528128,ellipseName:\"Bessel 1841\"};Xr.bess_nam={a:6377483865e-3,rf:299.1528128,ellipseName:\"Bessel 1841 (Namibia)\"};Xr.clrk66={a:63782064e-1,b:63565838e-1,ellipseName:\"Clarke 1866\"};Xr.clrk80={a:6378249145e-3,rf:293.4663,ellipseName:\"Clarke 1880 mod.\"};Xr.clrk80ign={a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:\"Clarke 1880 (IGN)\"};Xr.clrk58={a:6378293645208759e-9,rf:294.2606763692654,ellipseName:\"Clarke 1858\"};Xr.CPM={a:63757387e-1,rf:334.29,ellipseName:\"Comm. des Poids et Mesures 1799\"};Xr.delmbr={a:6376428,rf:311.5,ellipseName:\"Delambre 1810 (Belgium)\"};Xr.engelis={a:637813605e-2,rf:298.2566,ellipseName:\"Engelis 1985\"};Xr.evrst30={a:6377276345e-3,rf:300.8017,ellipseName:\"Everest 1830\"};Xr.evrst48={a:6377304063e-3,rf:300.8017,ellipseName:\"Everest 1948\"};Xr.evrst56={a:6377301243e-3,rf:300.8017,ellipseName:\"Everest 1956\"};Xr.evrst69={a:6377295664e-3,rf:300.8017,ellipseName:\"Everest 1969\"};Xr.evrstSS={a:6377298556e-3,rf:300.8017,ellipseName:\"Everest (Sabah & Sarawak)\"};Xr.fschr60={a:6378166,rf:298.3,ellipseName:\"Fischer (Mercury Datum) 1960\"};Xr.fschr60m={a:6378155,rf:298.3,ellipseName:\"Fischer 1960\"};Xr.fschr68={a:6378150,rf:298.3,ellipseName:\"Fischer 1968\"};Xr.helmert={a:6378200,rf:298.3,ellipseName:\"Helmert 1906\"};Xr.hough={a:6378270,rf:297,ellipseName:\"Hough\"};Xr.intl={a:6378388,rf:297,ellipseName:\"International 1909 (Hayford)\"};Xr.kaula={a:6378163,rf:298.24,ellipseName:\"Kaula 1961\"};Xr.lerch={a:6378139,rf:298.257,ellipseName:\"Lerch 1979\"};Xr.mprts={a:6397300,rf:191,ellipseName:\"Maupertius 1738\"};Xr.new_intl={a:63781575e-1,b:63567722e-1,ellipseName:\"New International 1967\"};Xr.plessis={a:6376523,rf:6355863,ellipseName:\"Plessis 1817 (France)\"};Xr.krass={a:6378245,rf:298.3,ellipseName:\"Krassovsky, 1942\"};Xr.SEasia={a:6378155,b:63567733205e-4,ellipseName:\"Southeast Asia\"};Xr.walbeck={a:6376896,b:63558348467e-4,ellipseName:\"Walbeck\"};Xr.WGS60={a:6378165,rf:298.3,ellipseName:\"WGS 60\"};Xr.WGS66={a:6378145,rf:298.25,ellipseName:\"WGS 66\"};Xr.WGS7={a:6378135,rf:298.26,ellipseName:\"WGS 72\"};var oZ=Xr.WGS84={a:6378137,rf:298.257223563,ellipseName:\"WGS 84\"};Xr.sphere={a:6370997,b:6370997,ellipseName:\"Normal Sphere (r=6370997)\"};function aZ(e,t,r,i){var s=e*e,n=t*t,o=(s-n)/s,c=0;i?(e*=1-o*(Gq+o*(Wq+o*Hq)),s=e*e,o=0):c=Math.sqrt(o);var f=(s-n)/n;return{es:o,e:c,ep2:f}}function lZ(e,t,r,i,s){if(!e){var n=au(Xr,i);n||(n=oZ),e=n.a,t=n.b,r=n.rf}return r&&!t&&(t=(1-1/r)*e),(r===0||Math.abs(e-t)3&&(c.datum_params[3]!==0||c.datum_params[4]!==0||c.datum_params[5]!==0||c.datum_params[6]!==0)&&(c.datum_type=hf,c.datum_params[3]*=Ng,c.datum_params[4]*=Ng,c.datum_params[5]*=Ng,c.datum_params[6]=c.datum_params[6]/1e6+1)),o&&(c.datum_type=Tp,c.grids=o),c.a=r,c.b=i,c.es=s,c.ep2=n,c}var cZ=Jpt;var uZ={};function uB(e,t){var r=new DataView(t),i=eAt(r),s=rAt(r,i),n=iAt(r,s,i),o={header:s,subgrids:n};return uZ[e]=o,o}function hZ(e){if(e===void 0)return null;var t=e.split(\",\");return t.map(tAt)}function tAt(e){if(e.length===0)return null;var t=e[0]===\"@\";return t&&(e=e.slice(1)),e===\"null\"?{name:\"null\",mandatory:!t,grid:null,isNull:!0}:{name:e,mandatory:!t,grid:uZ[e]||null,isNull:!1}}function Xv(e){return e/3600*Math.PI/180}function eAt(e){var t=e.getInt32(8,!1);return t===11?!1:(t=e.getInt32(8,!0),t!==11&&console.warn(\"Failed to detect nadgrid endian-ness, defaulting to little-endian\"),!0)}function rAt(e,t){return{nFields:e.getInt32(8,t),nSubgridFields:e.getInt32(24,t),nSubgrids:e.getInt32(40,t),shiftType:cB(e,56,64).trim(),fromSemiMajorAxis:e.getFloat64(120,t),fromSemiMinorAxis:e.getFloat64(136,t),toSemiMajorAxis:e.getFloat64(152,t),toSemiMinorAxis:e.getFloat64(168,t)}}function cB(e,t,r){return String.fromCharCode.apply(null,new Uint8Array(e.buffer.slice(t,r)))}function iAt(e,t,r){for(var i=176,s=[],n=0;n5e-11?!1:e.datum_type===uf?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]:e.datum_type===hf?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]&&e.datum_params[3]===t.datum_params[3]&&e.datum_params[4]===t.datum_params[4]&&e.datum_params[5]===t.datum_params[5]&&e.datum_params[6]===t.datum_params[6]:!0}function G3(e,t,r){var i=e.x,s=e.y,n=e.z?e.z:0,o,c,f,_;if(s<-de&&s>-1.001*de)s=-de;else if(s>de&&s<1.001*de)s=de;else{if(s<-de)return{x:-1/0,y:-1/0,z:e.z};if(s>de)return{x:1/0,y:1/0,z:e.z}}return i>Math.PI&&(i-=2*Math.PI),c=Math.sin(s),_=Math.cos(s),f=c*c,o=r/Math.sqrt(1-t*f),{x:(o+n)*_*Math.cos(i),y:(o+n)*_*Math.sin(i),z:(o*(1-t)+n)*c}}function W3(e,t,r,i){var s=1e-12,n=s*s,o=30,c,f,_,w,C,R,N,j,Y,rt,$,K,tt,ut=e.x,Pt=e.y,Ot=e.z?e.z:0,Kt,Zt,le;if(c=Math.sqrt(ut*ut+Pt*Pt),f=Math.sqrt(ut*ut+Pt*Pt+Ot*Ot),c/rn&&tti.y||j>i.x||$c&&Math.abs(f.y)>c);if(o<0)return console.log(\"Inverse grid shift iterator failed to converge.\"),i;i.x=Ie(n.x+r.ll[0]),i.y=n.y+r.ll[1]}else isNaN(n.x)||(i.x=e.x+n.x,i.y=e.y+n.y);return i}function mZ(e,t){var r={x:e.x/t.del[0],y:e.y/t.del[1]},i={x:Math.floor(r.x),y:Math.floor(r.y)},s={x:r.x-1*i.x,y:r.y-1*i.y},n={x:Number.NaN,y:Number.NaN},o;if(i.x<0||i.x>=t.lim[0]||i.y<0||i.y>=t.lim[1])return n;o=i.y*t.lim[0]+i.x;var c={x:t.cvs[o][0],y:t.cvs[o][1]};o++;var f={x:t.cvs[o][0],y:t.cvs[o][1]};o+=t.lim[0];var _={x:t.cvs[o][0],y:t.cvs[o][1]};o--;var w={x:t.cvs[o][0],y:t.cvs[o][1]},C=s.x*s.y,R=s.x*(1-s.y),N=(1-s.x)*(1-s.y),j=(1-s.x)*s.y;return n.x=N*c.x+R*f.x+j*w.x+C*_.x,n.y=N*c.y+R*f.y+j*w.y+C*_.y,n}function hB(e,t,r){var i=r.x,s=r.y,n=r.z||0,o,c,f,_={};for(f=0;f<3;f++)if(!(t&&f===2&&r.z===void 0))switch(f===0?(o=i,\"ew\".indexOf(e.axis[f])!==-1?c=\"x\":c=\"y\"):f===1?(o=s,\"ns\".indexOf(e.axis[f])!==-1?c=\"y\":c=\"x\"):(o=n,c=\"z\"),e.axis[f]){case\"e\":_[c]=o;break;case\"w\":_[c]=-o;break;case\"n\":_[c]=o;break;case\"s\":_[c]=-o;break;case\"u\":r[c]!==void 0&&(_.z=o);break;case\"d\":r[c]!==void 0&&(_.z=-o);break;default:return null}return _}function q3(e){var t={x:e[0],y:e[1]};return e.length>2&&(t.z=e[2]),e.length>3&&(t.m=e[3]),t}function yZ(e){_Z(e.x),_Z(e.y)}function _Z(e){if(typeof Number.isFinite==\"function\"){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(typeof e!=\"number\"||e!==e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}function lAt(e,t){return(e.datum.datum_type===uf||e.datum.datum_type===hf||e.datum.datum_type===Tp)&&t.datumCode!==\"WGS84\"||(t.datum.datum_type===uf||t.datum.datum_type===hf||t.datum.datum_type===Tp)&&e.datumCode!==\"WGS84\"}function Vg(e,t,r,i){var s;Array.isArray(r)?r=q3(r):r={x:r.x,y:r.y,z:r.z,m:r.m};var n=r.z!==void 0;if(yZ(r),e.datum&&t.datum&&lAt(e,t)&&(s=new wm(\"WGS84\"),r=Vg(e,s,r,i),e=s),i&&e.axis!==\"enu\"&&(r=hB(e,!1,r)),e.projName===\"longlat\")r={x:r.x*vs,y:r.y*vs,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),r=e.inverse(r),!r)return;if(e.from_greenwich&&(r.x+=e.from_greenwich),r=gZ(e.datum,t.datum,r),!!r)return t.from_greenwich&&(r={x:r.x-t.from_greenwich,y:r.y,z:r.z||0}),t.projName===\"longlat\"?r={x:r.x*yc,y:r.y*yc,z:r.z||0}:(r=t.forward(r),t.to_meter&&(r={x:r.x/t.to_meter,y:r.y/t.to_meter,z:r.z||0})),i&&t.axis!==\"enu\"?hB(t,!0,r):(r&&!n&&delete r.z,r)}var vZ=wm(\"WGS84\");function fB(e,t,r,i){var s,n,o;return Array.isArray(r)?(s=Vg(e,t,r,i)||{x:NaN,y:NaN},r.length>2?typeof e.name<\"u\"&&e.name===\"geocent\"||typeof t.name<\"u\"&&t.name===\"geocent\"?typeof s.z==\"number\"?[s.x,s.y,s.z].concat(r.splice(3)):[s.x,s.y,r[2]].concat(r.splice(3)):[s.x,s.y].concat(r.splice(2)):[s.x,s.y]):(n=Vg(e,t,r,i),o=Object.keys(r),o.length===2||o.forEach(function(c){if(typeof e.name<\"u\"&&e.name===\"geocent\"||typeof t.name<\"u\"&&t.name===\"geocent\"){if(c===\"x\"||c===\"y\"||c===\"z\")return}else if(c===\"x\"||c===\"y\")return;n[c]=r[c]}),n)}function xZ(e){return e instanceof wm?e:e.oProj?e.oProj:wm(e)}function cAt(e,t,r){e=xZ(e);var i=!1,s;return typeof t>\"u\"?(t=e,e=vZ,i=!0):(typeof t.x<\"u\"||Array.isArray(t))&&(r=t,t=e,e=vZ,i=!0),t=xZ(t),r?fB(e,t,r):(s={forward:function(n,o){return fB(e,t,n,o)},inverse:function(n,o){return fB(t,e,n,o)}},i&&(s.oProj=t),s)}var vc=cAt;var bZ=6,SZ=\"AJSAJS\",TZ=\"AFAFAF\",Jv=65,xc=73,Ju=79,rS=86,iS=90,MZ={forward:pB,inverse:uAt,toPoint:AB};function pB(e,t){return t=t||5,dAt(hAt({lat:e[1],lon:e[0]}),t)}function uAt(e){var t=mB(PZ(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat,t.lon,t.lat]:[t.left,t.bottom,t.right,t.top]}function AB(e){var t=mB(PZ(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat]:[(t.left+t.right)/2,(t.top+t.bottom)/2]}function dB(e){return e*(Math.PI/180)}function wZ(e){return 180*(e/Math.PI)}function hAt(e){var t=e.lat,r=e.lon,i=6378137,s=.00669438,n=.9996,o,c,f,_,w,C,R,N=dB(t),j=dB(r),Y,rt;rt=Math.floor((r+180)/6)+1,r===180&&(rt=60),t>=56&&t<64&&r>=3&&r<12&&(rt=32),t>=72&&t<84&&(r>=0&&r<9?rt=31:r>=9&&r<21?rt=33:r>=21&&r<33?rt=35:r>=33&&r<42&&(rt=37)),o=(rt-1)*6-180+3,Y=dB(o),c=s/(1-s),f=i/Math.sqrt(1-s*Math.sin(N)*Math.sin(N)),_=Math.tan(N)*Math.tan(N),w=c*Math.cos(N)*Math.cos(N),C=Math.cos(N)*(j-Y),R=i*((1-s/4-3*s*s/64-5*s*s*s/256)*N-(3*s/8+3*s*s/32+45*s*s*s/1024)*Math.sin(2*N)+(15*s*s/256+45*s*s*s/1024)*Math.sin(4*N)-35*s*s*s/3072*Math.sin(6*N));var $=n*f*(C+(1-_+w)*C*C*C/6+(5-18*_+_*_+72*w-58*c)*C*C*C*C*C/120)+5e5,K=n*(R+f*Math.tan(N)*(C*C/2+(5-_+9*w+4*w*w)*C*C*C*C/24+(61-58*_+_*_+600*w-330*c)*C*C*C*C*C*C/720));return t<0&&(K+=1e7),{northing:Math.round(K),easting:Math.round($),zoneNumber:rt,zoneLetter:fAt(t)}}function mB(e){var t=e.northing,r=e.easting,i=e.zoneLetter,s=e.zoneNumber;if(s<0||s>60)return null;var n=.9996,o=6378137,c=.00669438,f,_=(1-Math.sqrt(1-c))/(1+Math.sqrt(1-c)),w,C,R,N,j,Y,rt,$,K,tt=r-5e5,ut=t;i<\"N\"&&(ut-=1e7),rt=(s-1)*6-180+3,f=c/(1-c),Y=ut/n,$=Y/(o*(1-c/4-3*c*c/64-5*c*c*c/256)),K=$+(3*_/2-27*_*_*_/32)*Math.sin(2*$)+(21*_*_/16-55*_*_*_*_/32)*Math.sin(4*$)+151*_*_*_/96*Math.sin(6*$),w=o/Math.sqrt(1-c*Math.sin(K)*Math.sin(K)),C=Math.tan(K)*Math.tan(K),R=f*Math.cos(K)*Math.cos(K),N=o*(1-c)/Math.pow(1-c*Math.sin(K)*Math.sin(K),1.5),j=tt/(w*n);var Pt=K-w*Math.tan(K)/N*(j*j/2-(5+3*C+10*R-4*R*R-9*f)*j*j*j*j/24+(61+90*C+298*R+45*C*C-252*f-3*R*R)*j*j*j*j*j*j/720);Pt=wZ(Pt);var Ot=(j-(1+2*C+R)*j*j*j/6+(5-2*R+28*C-3*R*R+8*f+24*C*C)*j*j*j*j*j/120)/Math.cos(K);Ot=rt+wZ(Ot);var Kt;if(e.accuracy){var Zt=mB({northing:e.northing+e.accuracy,easting:e.easting+e.accuracy,zoneLetter:e.zoneLetter,zoneNumber:e.zoneNumber});Kt={top:Zt.lat,right:Zt.lon,bottom:Pt,left:Ot}}else Kt={lat:Pt,lon:Ot};return Kt}function fAt(e){var t=\"Z\";return 84>=e&&e>=72?t=\"X\":72>e&&e>=64?t=\"W\":64>e&&e>=56?t=\"V\":56>e&&e>=48?t=\"U\":48>e&&e>=40?t=\"T\":40>e&&e>=32?t=\"S\":32>e&&e>=24?t=\"R\":24>e&&e>=16?t=\"Q\":16>e&&e>=8?t=\"P\":8>e&&e>=0?t=\"N\":0>e&&e>=-8?t=\"M\":-8>e&&e>=-16?t=\"L\":-16>e&&e>=-24?t=\"K\":-24>e&&e>=-32?t=\"J\":-32>e&&e>=-40?t=\"H\":-40>e&&e>=-48?t=\"G\":-48>e&&e>=-56?t=\"F\":-56>e&&e>=-64?t=\"E\":-64>e&&e>=-72?t=\"D\":-72>e&&e>=-80&&(t=\"C\"),t}function dAt(e,t){var r=\"00000\"+e.easting,i=\"00000\"+e.northing;return e.zoneNumber+e.zoneLetter+pAt(e.easting,e.northing,e.zoneNumber)+r.substr(r.length-5,t)+i.substr(i.length-5,t)}function pAt(e,t,r){var i=EZ(r),s=Math.floor(e/1e5),n=Math.floor(t/1e5)%20;return AAt(s,n,i)}function EZ(e){var t=e%bZ;return t===0&&(t=bZ),t}function AAt(e,t,r){var i=r-1,s=SZ.charCodeAt(i),n=TZ.charCodeAt(i),o=s+e-1,c=n+t,f=!1;o>iS&&(o=o-iS+Jv-1,f=!0),(o===xc||sxc||(o>xc||sJu||(o>Ju||siS&&(o=o-iS+Jv-1),c>rS?(c=c-rS+Jv-1,f=!0):f=!1,(c===xc||nxc||(c>xc||nJu||(c>Ju||nrS&&(c=c-rS+Jv-1);var _=String.fromCharCode(o)+String.fromCharCode(c);return _}function PZ(e){if(e&&e.length===0)throw\"MGRSPoint coverting from nothing\";for(var t=e.length,r=null,i=\"\",s,n=0;!/[A-Z]/.test(s=e.charAt(n));){if(n>=2)throw\"MGRSPoint bad conversion from: \"+e;i+=s,n++}var o=parseInt(i,10);if(n===0||n+3>t)throw\"MGRSPoint bad conversion from: \"+e;var c=e.charAt(n++);if(c<=\"A\"||c===\"B\"||c===\"Y\"||c>=\"Z\"||c===\"I\"||c===\"O\")throw\"MGRSPoint zone letter \"+c+\" not handled: \"+e;r=e.substring(n,n+=2);for(var f=EZ(o),_=mAt(r.charAt(0),f),w=gAt(r.charAt(1),f);w<_At(c);)w+=2e6;var C=t-n;if(C%2!==0)throw`MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters`+e;var R=C/2,N=0,j=0,Y,rt,$,K,tt;return R>0&&(Y=1e5/Math.pow(10,R),rt=e.substring(n,n+R),N=parseFloat(rt)*Y,$=e.substring(n+R),j=parseFloat($)*Y),K=N+_,tt=j+w,{easting:K,northing:tt,zoneLetter:c,zoneNumber:o,accuracy:Y}}function mAt(e,t){for(var r=SZ.charCodeAt(t-1),i=1e5,s=!1;r!==e.charCodeAt(0);){if(r++,r===xc&&r++,r===Ju&&r++,r>iS){if(s)throw\"Bad character: \"+e;r=Jv,s=!0}i+=1e5}return i}function gAt(e,t){if(e>\"V\")throw\"MGRSPoint given invalid Northing \"+e;for(var r=TZ.charCodeAt(t-1),i=0,s=!1;r!==e.charCodeAt(0);){if(r++,r===xc&&r++,r===Ju&&r++,r>rS){if(s)throw\"Bad character: \"+e;r=Jv,s=!0}i+=1e5}return i}function _At(e){var t;switch(e){case\"C\":t=11e5;break;case\"D\":t=2e6;break;case\"E\":t=28e5;break;case\"F\":t=37e5;break;case\"G\":t=46e5;break;case\"H\":t=55e5;break;case\"J\":t=64e5;break;case\"K\":t=73e5;break;case\"L\":t=82e5;break;case\"M\":t=91e5;break;case\"N\":t=0;break;case\"P\":t=8e5;break;case\"Q\":t=17e5;break;case\"R\":t=26e5;break;case\"S\":t=35e5;break;case\"T\":t=44e5;break;case\"U\":t=53e5;break;case\"V\":t=62e5;break;case\"W\":t=7e6;break;case\"X\":t=79e5;break;default:t=-1}if(t>=0)return t;throw\"Invalid zone letter: \"+e}function tx(e,t,r){if(!(this instanceof tx))return new tx(e,t,r);if(Array.isArray(e))this.x=e[0],this.y=e[1],this.z=e[2]||0;else if(typeof e==\"object\")this.x=e.x,this.y=e.y,this.z=e.z||0;else if(typeof e==\"string\"&&typeof t>\"u\"){var i=e.split(\",\");this.x=parseFloat(i[0],10),this.y=parseFloat(i[1],10),this.z=parseFloat(i[2],10)||0}else this.x=e,this.y=t,this.z=r||0;console.warn(\"proj4.Point will be removed in version 3, use proj4.toPoint\")}tx.fromMGRS=function(e){return new tx(AB(e))};tx.prototype.toMGRS=function(e){return pB([this.x,this.y],e)};var IZ=tx;var yAt=1,vAt=.25,CZ=.046875,LZ=.01953125,kZ=.01068115234375,xAt=.75,bAt=.46875,wAt=.013020833333333334,SAt=.007120768229166667,TAt=.3645833333333333,MAt=.005696614583333333,EAt=.3076171875;function Z3(e){var t=[];t[0]=yAt-e*(vAt+e*(CZ+e*(LZ+e*kZ))),t[1]=e*(xAt-e*(CZ+e*(LZ+e*kZ)));var r=e*e;return t[2]=r*(bAt-e*(wAt+e*SAt)),r*=e,t[3]=r*(TAt-e*MAt),t[4]=r*e*EAt,t}function jg(e,t,r,i){return r*=t,t*=t,i[0]*e-r*(i[1]+t*(i[2]+t*(i[3]+t*i[4])))}var PAt=20;function Y3(e,t,r){for(var i=1/(1-t),s=e,n=PAt;n;--n){var o=Math.sin(s),c=1-t*o*o;if(c=(jg(s,o,Math.cos(s),r)-e)*(c*Math.sqrt(c))*i,s-=c,Math.abs(c)we?Math.tan(r):0,Y=Math.pow(j,2),rt=Math.pow(Y,2);s=1-this.es*Math.pow(c,2),w=w/Math.sqrt(s);var $=jg(r,c,f,this.en);n=this.a*(this.k0*w*(1+C/6*(1-Y+R+C/20*(5-18*Y+rt+14*R-58*Y*R+C/42*(61+179*rt-rt*Y-479*Y)))))+this.x0,o=this.a*(this.k0*($-this.ml0+c*i*w/2*(1+C/12*(5-Y+9*R+4*N+C/30*(61+rt-58*Y+270*R-330*Y*R+C/56*(1385+543*rt-rt*Y-3111*Y))))))+this.y0}else{var _=f*Math.sin(i);if(Math.abs(Math.abs(_)-1)=1){if(_-1>we)return 93;o=0}else o=Math.acos(o);r<0&&(o=-o),o=this.a*this.k0*(o-this.lat0)+this.y0}return e.x=n,e.y=o,e}function LAt(e){var t,r,i,s,n=(e.x-this.x0)*(1/this.a),o=(e.y-this.y0)*(1/this.a);if(this.es)if(t=this.ml0+o/this.k0,r=Y3(t,this.es,this.en),Math.abs(r)we?Math.tan(r):0,j=this.ep2*Math.pow(R,2),Y=Math.pow(j,2),rt=Math.pow(N,2),$=Math.pow(rt,2);t=1-this.es*Math.pow(C,2);var K=n*Math.sqrt(t)/this.k0,tt=Math.pow(K,2);t=t*N,i=r-t*tt/(1-this.es)*.5*(1-tt/12*(5+3*rt-9*j*rt+j-4*Y-tt/30*(61+90*rt-252*j*rt+45*$+46*j-tt/56*(1385+3633*rt+4095*$+1574*$*rt)))),s=Ie(this.long0+K*(1-tt/6*(1+2*rt+j-tt/20*(5+28*rt+24*$+8*j*rt+6*j-tt/42*(61+662*rt+1320*$+720*$*rt))))/R)}else i=de*hd(o),s=0;else{var c=Math.exp(n/this.k0),f=.5*(c-1/c),_=this.lat0+o/this.k0,w=Math.cos(_);t=Math.sqrt((1-Math.pow(w,2))/(1+Math.pow(f,2))),i=Math.asin(t),o<0&&(i=-i),f===0&&w===0?s=0:s=Ie(Math.atan2(f,w)+this.long0)}return e.x=s,e.y=i,e}var kAt=[\"Fast_Transverse_Mercator\",\"Fast Transverse Mercator\"],ex={init:IAt,forward:CAt,inverse:LAt,names:kAt};function Q3(e){var t=Math.exp(e);return t=(t-1/t)/2,t}function Sa(e,t){e=Math.abs(e),t=Math.abs(t);var r=Math.max(e,t),i=Math.min(e,t)/(r||1);return r*Math.sqrt(1+Math.pow(i,2))}function RZ(e){var t=1+e,r=t-1;return r===0?e:e*Math.log(t)/r}function DZ(e){var t=Math.abs(e);return t=RZ(t*(1+t/(Sa(1,t)+1))),e<0?-t:t}function $3(e,t){for(var r=2*Math.cos(2*t),i=e.length-1,s=e[i],n=0,o;--i>=0;)o=-n+r*s+e[i],n=s,s=o;return t+o*Math.sin(2*t)}function OZ(e,t){for(var r=2*Math.cos(t),i=e.length-1,s=e[i],n=0,o;--i>=0;)o=-n+r*s+e[i],n=s,s=o;return Math.sin(t)*o}function BZ(e){var t=Math.exp(e);return t=(t+1/t)/2,t}function gB(e,t,r){for(var i=Math.sin(t),s=Math.cos(t),n=Q3(r),o=BZ(r),c=2*s*o,f=-2*i*n,_=e.length-1,w=e[_],C=0,R=0,N=0,j,Y;--_>=0;)j=R,Y=C,R=w,C=N,w=-j+c*R-f*C+e[_],N=-Y+f*R+c*C;return c=i*o,f=s*n,[c*w-f*N,c*N+f*w]}function RAt(){if(!this.approx&&(isNaN(this.es)||this.es<=0))throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');this.approx&&(ex.init.apply(this),this.forward=ex.forward,this.inverse=ex.inverse),this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var e=this.es/(1+Math.sqrt(1-this.es)),t=e/(2-e),r=t;this.cgb[0]=t*(2+t*(-2/3+t*(-2+t*(116/45+t*(26/45+t*(-2854/675)))))),this.cbg[0]=t*(-2+t*(2/3+t*(4/3+t*(-82/45+t*(32/45+t*(4642/4725)))))),r=r*t,this.cgb[1]=r*(7/3+t*(-8/5+t*(-227/45+t*(2704/315+t*(2323/945))))),this.cbg[1]=r*(5/3+t*(-16/15+t*(-13/9+t*(904/315+t*(-1522/945))))),r=r*t,this.cgb[2]=r*(56/15+t*(-136/35+t*(-1262/105+t*(73814/2835)))),this.cbg[2]=r*(-26/15+t*(34/21+t*(8/5+t*(-12686/2835)))),r=r*t,this.cgb[3]=r*(4279/630+t*(-332/35+t*(-399572/14175))),this.cbg[3]=r*(1237/630+t*(-12/5+t*(-24832/14175))),r=r*t,this.cgb[4]=r*(4174/315+t*(-144838/6237)),this.cbg[4]=r*(-734/315+t*(109598/31185)),r=r*t,this.cgb[5]=r*(601676/22275),this.cbg[5]=r*(444337/155925),r=Math.pow(t,2),this.Qn=this.k0/(1+t)*(1+r*(1/4+r*(1/64+r/256))),this.utg[0]=t*(-.5+t*(2/3+t*(-37/96+t*(1/360+t*(81/512+t*(-96199/604800)))))),this.gtu[0]=t*(.5+t*(-2/3+t*(5/16+t*(41/180+t*(-127/288+t*(7891/37800)))))),this.utg[1]=r*(-1/48+t*(-1/15+t*(437/1440+t*(-46/105+t*(1118711/3870720))))),this.gtu[1]=r*(13/48+t*(-3/5+t*(557/1440+t*(281/630+t*(-1983433/1935360))))),r=r*t,this.utg[2]=r*(-17/480+t*(37/840+t*(209/4480+t*(-5569/90720)))),this.gtu[2]=r*(61/240+t*(-103/140+t*(15061/26880+t*(167603/181440)))),r=r*t,this.utg[3]=r*(-4397/161280+t*(11/504+t*(830251/7257600))),this.gtu[3]=r*(49561/161280+t*(-179/168+t*(6601661/7257600))),r=r*t,this.utg[4]=r*(-4583/161280+t*(108847/3991680)),this.gtu[4]=r*(34729/80640+t*(-3418889/1995840)),r=r*t,this.utg[5]=r*(-20648693/638668800),this.gtu[5]=r*(212378941/319334400);var i=$3(this.cbg,this.lat0);this.Zb=-this.Qn*(i+OZ(this.gtu,2*i))}function DAt(e){var t=Ie(e.x-this.long0),r=e.y;r=$3(this.cbg,r);var i=Math.sin(r),s=Math.cos(r),n=Math.sin(t),o=Math.cos(t);r=Math.atan2(i,o*s),t=Math.atan2(n*s,Sa(i,s*o)),t=DZ(Math.tan(t));var c=gB(this.gtu,2*r,2*t);r=r+c[0],t=t+c[1];var f,_;return Math.abs(t)<=2.623395162778?(f=this.a*(this.Qn*t)+this.x0,_=this.a*(this.Qn*r+this.Zb)+this.y0):(f=1/0,_=1/0),e.x=f,e.y=_,e}function OAt(e){var t=(e.x-this.x0)*(1/this.a),r=(e.y-this.y0)*(1/this.a);r=(r-this.Zb)/this.Qn,t=t/this.Qn;var i,s;if(Math.abs(t)<=2.623395162778){var n=gB(this.utg,2*r,2*t);r=r+n[0],t=t+n[1],t=Math.atan(Q3(t));var o=Math.sin(r),c=Math.cos(r),f=Math.sin(t),_=Math.cos(t);r=Math.atan2(o*_,Sa(f,_*c)),t=Math.atan2(f,_*c),i=Ie(t+this.long0),s=$3(this.cgb,r)}else i=1/0,s=1/0;return e.x=i,e.y=s,e}var BAt=[\"Extended_Transverse_Mercator\",\"Extended Transverse Mercator\",\"etmerc\",\"Transverse_Mercator\",\"Transverse Mercator\",\"Gauss Kruger\",\"Gauss_Kruger\",\"tmerc\"],rx={init:RAt,forward:DAt,inverse:OAt,names:BAt};function FZ(e,t){if(e===void 0){if(e=Math.floor((Ie(t)+Math.PI)*30/Math.PI)+1,e<0)return 0;if(e>60)return 60}return e}var FAt=\"etmerc\";function zAt(){var e=FZ(this.zone,this.long0);if(e===void 0)throw new Error(\"unknown utm zone\");this.lat0=0,this.long0=(6*Math.abs(e)-183)*vs,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,rx.init.apply(this),this.forward=rx.forward,this.inverse=rx.inverse}var NAt=[\"Universal Transverse Mercator System\",\"utm\"],zZ={init:zAt,names:NAt,dependsOn:FAt};function X3(e,t){return Math.pow((1-e)/(1+e),t)}var UAt=20;function VAt(){var e=Math.sin(this.lat0),t=Math.cos(this.lat0);t*=t,this.rc=Math.sqrt(1-this.es)/(1-this.es*e*e),this.C=Math.sqrt(1+this.es*t*t/(1-this.es)),this.phic0=Math.asin(e/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+Fi)/(Math.pow(Math.tan(.5*this.lat0+Fi),this.C)*X3(this.e*e,this.ratexp))}function jAt(e){var t=e.x,r=e.y;return e.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*r+Fi),this.C)*X3(this.e*Math.sin(r),this.ratexp))-de,e.x=this.C*t,e}function GAt(e){for(var t=1e-14,r=e.x/this.C,i=e.y,s=Math.pow(Math.tan(.5*i+Fi)/this.K,1/this.C),n=UAt;n>0&&(i=2*Math.atan(s*X3(this.e*Math.sin(e.y),-.5*this.e))-de,!(Math.abs(i-e.y)0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=we&&Math.abs(Math.cos(this.lat_ts))>we&&(this.k0=.5*this.cons*il(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/kl(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=il(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-de,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))}function XAt(e){var t=e.x,r=e.y,i=Math.sin(r),s=Math.cos(r),n,o,c,f,_,w,C=Ie(t-this.long0);return Math.abs(Math.abs(t-this.long0)-Math.PI)<=we&&Math.abs(r+this.lat0)<=we?(e.x=NaN,e.y=NaN,e):this.sphere?(n=2*this.k0/(1+this.sinlat0*i+this.coslat0*s*Math.cos(C)),e.x=this.a*n*s*Math.sin(C)+this.x0,e.y=this.a*n*(this.coslat0*i-this.sinlat0*s*Math.cos(C))+this.y0,e):(o=2*Math.atan(this.ssfn_(r,i,this.e))-de,f=Math.cos(o),c=Math.sin(o),Math.abs(this.coslat0)<=we?(_=kl(this.e,r*this.con,this.con*i),w=2*this.a*this.k0*_/this.cons,e.x=this.x0+w*Math.sin(t-this.long0),e.y=this.y0-this.con*w*Math.cos(t-this.long0),e):(Math.abs(this.sinlat0)0?t=Ie(this.long0+Math.atan2(e.x,-1*e.y)):t=Ie(this.long0+Math.atan2(e.x,e.y)):t=Ie(this.long0+Math.atan2(e.x*Math.sin(c),o*this.coslat0*Math.cos(c)-e.y*this.sinlat0*Math.sin(c))),e.x=t,e.y=r,e)}else if(Math.abs(this.coslat0)<=we){if(o<=we)return r=this.lat0,t=this.long0,e.x=t,e.y=r,e;e.x*=this.con,e.y*=this.con,i=o*this.cons/(2*this.a*this.k0),r=this.con*Ep(this.e,i),t=this.con*Ie(this.con*this.long0+Math.atan2(e.x,-1*e.y))}else s=2*Math.atan(o*this.cosX0/(2*this.a*this.k0*this.ms1)),t=this.long0,o<=we?n=this.X0:(n=Math.asin(Math.cos(s)*this.sinX0+e.y*Math.sin(s)*this.cosX0/o),t=Ie(this.long0+Math.atan2(e.x*Math.sin(s),o*this.cosX0*Math.cos(s)-e.y*this.sinX0*Math.sin(s)))),r=-1*Ep(this.e,Math.tan(.5*(de+n)));return e.x=t,e.y=r,e}var JAt=[\"stere\",\"Stereographic_South_Pole\",\"Polar Stereographic (variant B)\",\"Polar_Stereographic\"],UZ={init:$At,forward:XAt,inverse:KAt,names:JAt,ssfn_:QAt};function tmt(){var e=this.lat0;this.lambda0=this.long0;var t=Math.sin(e),r=this.a,i=this.rf,s=1/i,n=2*s-Math.pow(s,2),o=this.e=Math.sqrt(n);this.R=this.k0*r*Math.sqrt(1-n)/(1-n*Math.pow(t,2)),this.alpha=Math.sqrt(1+n/(1-n)*Math.pow(Math.cos(e),4)),this.b0=Math.asin(t/this.alpha);var c=Math.log(Math.tan(Math.PI/4+this.b0/2)),f=Math.log(Math.tan(Math.PI/4+e/2)),_=Math.log((1+o*t)/(1-o*t));this.K=c-this.alpha*f+this.alpha*o/2*_}function emt(e){var t=Math.log(Math.tan(Math.PI/4-e.y/2)),r=this.e/2*Math.log((1+this.e*Math.sin(e.y))/(1-this.e*Math.sin(e.y))),i=-this.alpha*(t+r)+this.K,s=2*(Math.atan(Math.exp(i))-Math.PI/4),n=this.alpha*(e.x-this.lambda0),o=Math.atan(Math.sin(n)/(Math.sin(this.b0)*Math.tan(s)+Math.cos(this.b0)*Math.cos(n))),c=Math.asin(Math.cos(this.b0)*Math.sin(s)-Math.sin(this.b0)*Math.cos(s)*Math.cos(n));return e.y=this.R/2*Math.log((1+Math.sin(c))/(1-Math.sin(c)))+this.y0,e.x=this.R*o+this.x0,e}function rmt(e){for(var t=e.x-this.x0,r=e.y-this.y0,i=t/this.R,s=2*(Math.atan(Math.exp(r/this.R))-Math.PI/4),n=Math.asin(Math.cos(this.b0)*Math.sin(s)+Math.sin(this.b0)*Math.cos(s)*Math.cos(i)),o=Math.atan(Math.sin(i)/(Math.cos(this.b0)*Math.cos(i)-Math.sin(this.b0)*Math.tan(s))),c=this.lambda0+o/this.alpha,f=0,_=n,w=-1e3,C=0;Math.abs(_-w)>1e-7;){if(++C>20)return;f=1/this.alpha*(Math.log(Math.tan(Math.PI/4+n/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(_))/2)),w=_,_=2*Math.atan(Math.exp(f))-Math.PI/2}return e.x=c,e.y=_,e}var imt=[\"somerc\"],VZ={init:tmt,forward:emt,inverse:rmt,names:imt};var ix=1e-7;function nmt(e){var t=[\"Hotine_Oblique_Mercator\",\"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\"],r=typeof e.PROJECTION==\"object\"?Object.keys(e.PROJECTION)[0]:e.PROJECTION;return\"no_uoff\"in e||\"no_off\"in e||t.indexOf(r)!==-1}function smt(){var e,t,r,i,s,n,o,c,f,_,w=0,C,R=0,N=0,j=0,Y=0,rt=0,$=0,K;this.no_off=nmt(this),this.no_rot=\"no_rot\"in this;var tt=!1;\"alpha\"in this&&(tt=!0);var ut=!1;if(\"rectified_grid_angle\"in this&&(ut=!0),tt&&($=this.alpha),ut&&(w=this.rectified_grid_angle*vs),tt||ut)R=this.longc;else if(N=this.long1,Y=this.lat1,j=this.long2,rt=this.lat2,Math.abs(Y-rt)<=ix||(e=Math.abs(Y))<=ix||Math.abs(e-de)<=ix||Math.abs(Math.abs(this.lat0)-de)<=ix||Math.abs(Math.abs(rt)-de)<=ix)throw new Error;var Pt=1-this.es;t=Math.sqrt(Pt),Math.abs(this.lat0)>we?(c=Math.sin(this.lat0),r=Math.cos(this.lat0),e=1-this.es*c*c,this.B=r*r,this.B=Math.sqrt(1+this.es*this.B*this.B/Pt),this.A=this.B*this.k0*t/e,i=this.B*t/(r*Math.sqrt(e)),s=i*i-1,s<=0?s=0:(s=Math.sqrt(s),this.lat0<0&&(s=-s)),this.E=s+=i,this.E*=Math.pow(kl(this.e,this.lat0,c),this.B)):(this.B=1/t,this.A=this.k0,this.E=i=s=1),tt||ut?(tt?(C=Math.asin(Math.sin($)/i),ut||(w=$)):(C=w,$=Math.asin(i*Math.sin(C))),this.lam0=R-Math.asin(.5*(s-1/s)*Math.tan(C))/this.B):(n=Math.pow(kl(this.e,Y,Math.sin(Y)),this.B),o=Math.pow(kl(this.e,rt,Math.sin(rt)),this.B),s=this.E/n,f=(o-n)/(o+n),_=this.E*this.E,_=(_-o*n)/(_+o*n),e=N-j,e<-Math.pi?j-=bm:e>Math.pi&&(j+=bm),this.lam0=Ie(.5*(N+j)-Math.atan(_*Math.tan(.5*this.B*(N-j))/f)/this.B),C=Math.atan(2*Math.sin(this.B*Ie(N-this.lam0))/(s-1/s)),w=$=Math.asin(i*Math.sin(C))),this.singam=Math.sin(C),this.cosgam=Math.cos(C),this.sinrot=Math.sin(w),this.cosrot=Math.cos(w),this.rB=1/this.B,this.ArB=this.A*this.rB,this.BrA=1/this.ArB,K=this.A*this.B,this.no_off?this.u_0=0:(this.u_0=Math.abs(this.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos($))),this.lat0<0&&(this.u_0=-this.u_0)),s=.5*C,this.v_pole_n=this.ArB*Math.log(Math.tan(Fi-s)),this.v_pole_s=this.ArB*Math.log(Math.tan(Fi+s))}function omt(e){var t={},r,i,s,n,o,c,f,_;if(e.x=e.x-this.lam0,Math.abs(Math.abs(e.y)-de)>we){if(o=this.E/Math.pow(kl(this.e,e.y,Math.sin(e.y)),this.B),c=1/o,r=.5*(o-c),i=.5*(o+c),n=Math.sin(this.B*e.x),s=(r*this.singam-n*this.cosgam)/i,Math.abs(Math.abs(s)-1)0?this.v_pole_n:this.v_pole_s,f=this.ArB*e.y;return this.no_rot?(t.x=f,t.y=_):(f-=this.u_0,t.x=_*this.cosrot+f*this.sinrot,t.y=f*this.cosrot-_*this.sinrot),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t}function amt(e){var t,r,i,s,n,o,c,f={};if(e.x=(e.x-this.x0)*(1/this.a),e.y=(e.y-this.y0)*(1/this.a),this.no_rot?(r=e.y,t=e.x):(r=e.x*this.cosrot-e.y*this.sinrot,t=e.y*this.cosrot+e.x*this.sinrot+this.u_0),i=Math.exp(-this.BrA*r),s=.5*(i-1/i),n=.5*(i+1/i),o=Math.sin(this.BrA*t),c=(o*this.cosgam+s*this.singam)/n,Math.abs(Math.abs(c)-1)we?this.ns=Math.log(i/c)/Math.log(s/f):this.ns=t,isNaN(this.ns)&&(this.ns=t),this.f0=i/(this.ns*Math.pow(s,this.ns)),this.rh=this.a*this.f0*Math.pow(_,this.ns),this.title||(this.title=\"Lambert Conformal Conic\")}}function umt(e){var t=e.x,r=e.y;Math.abs(2*Math.abs(r)-Math.PI)<=we&&(r=hd(r)*(de-2*we));var i=Math.abs(Math.abs(r)-de),s,n;if(i>we)s=kl(this.e,r,Math.sin(r)),n=this.a*this.f0*Math.pow(s,this.ns);else{if(i=r*this.ns,i<=0)return null;n=0}var o=this.ns*Ie(t-this.long0);return e.x=this.k0*(n*Math.sin(o))+this.x0,e.y=this.k0*(this.rh-n*Math.cos(o))+this.y0,e}function hmt(e){var t,r,i,s,n,o=(e.x-this.x0)/this.k0,c=this.rh-(e.y-this.y0)/this.k0;this.ns>0?(t=Math.sqrt(o*o+c*c),r=1):(t=-Math.sqrt(o*o+c*c),r=-1);var f=0;if(t!==0&&(f=Math.atan2(r*o,r*c)),t!==0||this.ns>0){if(r=1/this.ns,i=Math.pow(t/(this.a*this.f0),r),s=Ep(this.e,i),s===-9999)return null}else s=-de;return n=Ie(f/this.ns+this.long0),e.x=n,e.y=s,e}var fmt=[\"Lambert Tangential Conformal Conic Projection\",\"Lambert_Conformal_Conic\",\"Lambert_Conformal_Conic_1SP\",\"Lambert_Conformal_Conic_2SP\",\"lcc\",\"Lambert Conic Conformal (1SP)\",\"Lambert Conic Conformal (2SP)\"],GZ={init:cmt,forward:umt,inverse:hmt,names:fmt};function dmt(){this.a=6377397155e-3,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.7417649320975901-.308341501185665),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq}function pmt(e){var t,r,i,s,n,o,c,f=e.x,_=e.y,w=Ie(f-this.long0);return t=Math.pow((1+this.e*Math.sin(_))/(1-this.e*Math.sin(_)),this.alfa*this.e/2),r=2*(Math.atan(this.k*Math.pow(Math.tan(_/2+this.s45),this.alfa)/t)-this.s45),i=-w*this.alfa,s=Math.asin(Math.cos(this.ad)*Math.sin(r)+Math.sin(this.ad)*Math.cos(r)*Math.cos(i)),n=Math.asin(Math.cos(r)*Math.sin(i)/Math.cos(s)),o=this.n*n,c=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(s/2+this.s45),this.n),e.y=c*Math.cos(o)/1,e.x=c*Math.sin(o)/1,this.czech||(e.y*=-1,e.x*=-1),e}function Amt(e){var t,r,i,s,n,o,c,f,_=e.x;e.x=e.y,e.y=_,this.czech||(e.y*=-1,e.x*=-1),o=Math.sqrt(e.x*e.x+e.y*e.y),n=Math.atan2(e.y,e.x),s=n/Math.sin(this.s0),i=2*(Math.atan(Math.pow(this.ro0/o,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),t=Math.asin(Math.cos(this.ad)*Math.sin(i)-Math.sin(this.ad)*Math.cos(i)*Math.cos(s)),r=Math.asin(Math.cos(i)*Math.sin(s)/Math.cos(t)),e.x=this.long0-r/this.alfa,c=t,f=0;var w=0;do e.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(t/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(c))/(1-this.e*Math.sin(c)),this.e/2))-this.s45),Math.abs(c-e.y)<1e-10&&(f=1),c=e.y,w+=1;while(f===0&&w<15);return w>=15?null:e}var mmt=[\"Krovak\",\"krovak\"],WZ={init:dmt,forward:pmt,inverse:Amt,names:mmt};function Lo(e,t,r,i,s){return e*s-t*Math.sin(2*s)+r*Math.sin(4*s)-i*Math.sin(6*s)}function Pp(e){return 1-.25*e*(1+e/16*(3+1.25*e))}function Ip(e){return .375*e*(1+.25*e*(1+.46875*e))}function Cp(e){return .05859375*e*e*(1+.75*e)}function Lp(e){return e*e*e*(35/3072)}function kp(e,t,r){var i=t*r;return e/Math.sqrt(1-i*i)}function ff(e){return Math.abs(e)1e-7?(r=e*t,(1-e*e)*(t/(1-r*r)-.5/e*Math.log((1-r)/(1+r)))):2*t}var xmt=1,bmt=2,wmt=3,Smt=4;function Tmt(){var e=Math.abs(this.lat0);if(Math.abs(e-de)0){var t;switch(this.qp=df(this.e,1),this.mmf=.5/(1-this.es),this.apa=Dmt(this.es),this.mode){case this.N_POLE:this.dd=1;break;case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=df(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd;break}}else this.mode===this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))}function Mmt(e){var t,r,i,s,n,o,c,f,_,w,C=e.x,R=e.y;if(C=Ie(C-this.long0),this.sphere){if(n=Math.sin(R),w=Math.cos(R),i=Math.cos(C),this.mode===this.OBLIQ||this.mode===this.EQUIT){if(r=this.mode===this.EQUIT?1+w*i:1+this.sinph0*n+this.cosph0*w*i,r<=we)return null;r=Math.sqrt(2/r),t=r*w*Math.sin(C),r*=this.mode===this.EQUIT?n:this.cosph0*n-this.sinph0*w*i}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(i=-i),Math.abs(R+this.lat0)=0?(t=(_=Math.sqrt(o))*s,r=i*(this.mode===this.S_POLE?_:-_)):t=r=0;break}}return e.x=this.a*t+this.x0,e.y=this.a*r+this.y0,e}function Emt(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,r=e.y/this.a,i,s,n,o,c,f,_;if(this.sphere){var w=0,C,R=0;if(C=Math.sqrt(t*t+r*r),s=C*.5,s>1)return null;switch(s=2*Math.asin(s),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(R=Math.sin(s),w=Math.cos(s)),this.mode){case this.EQUIT:s=Math.abs(C)<=we?0:Math.asin(r*R/C),t*=R,r=w*C;break;case this.OBLIQ:s=Math.abs(C)<=we?this.lat0:Math.asin(w*this.sinph0+r*R*this.cosph0/C),t*=R*this.cosph0,r=(w-Math.sin(s)*this.sinph0)*C;break;case this.N_POLE:r=-r,s=de-s;break;case this.S_POLE:s-=de;break}i=r===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(t,r)}else{if(_=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(t/=this.dd,r*=this.dd,f=Math.sqrt(t*t+r*r),f1&&(e=e>1?1:-1),Math.asin(e)}function Fmt(){Math.abs(this.lat1+this.lat2)we?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)}function zmt(e){var t=e.x,r=e.y;this.sin_phi=Math.sin(r),this.cos_phi=Math.cos(r);var i=df(this.e3,this.sin_phi),s=this.a*Math.sqrt(this.c-this.ns0*i)/this.ns0,n=this.ns0*Ie(t-this.long0),o=s*Math.sin(n)+this.x0,c=this.rh-s*Math.cos(n)+this.y0;return e.x=o,e.y=c,e}function Nmt(e){var t,r,i,s,n,o;return e.x-=this.x0,e.y=this.rh-e.y+this.y0,this.ns0>=0?(t=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(t=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),s=0,t!==0&&(s=Math.atan2(i*e.x,i*e.y)),i=t*this.ns0/this.a,this.sphere?o=Math.asin((this.c-i*i)/(2*this.ns0)):(r=(this.c-i*i)/this.ns0,o=this.phi1z(this.e3,r)),n=Ie(s/this.ns0+this.long0),e.x=n,e.y=o,e}function Umt(e,t){var r,i,s,n,o,c=bc(.5*t);if(e0||Math.abs(o)<=we?(c=this.x0+this.a*n*r*Math.sin(i)/o,f=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*s)/o):(c=this.x0+this.infinity_dist*r*Math.sin(i),f=this.y0+this.infinity_dist*(this.cos_p14*t-this.sin_p14*r*s)),e.x=c,e.y=f,e}function Wmt(e){var t,r,i,s,n,o;return e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,(t=Math.sqrt(e.x*e.x+e.y*e.y))?(s=Math.atan2(t,this.rc),r=Math.sin(s),i=Math.cos(s),o=bc(i*this.sin_p14+e.y*r*this.cos_p14/t),n=Math.atan2(e.x*r,t*this.cos_p14*i-e.y*this.sin_p14*r),n=Ie(this.long0+n)):(o=this.phic0,n=0),e.x=n,e.y=o,e}var Hmt=[\"gnom\"],YZ={init:jmt,forward:Gmt,inverse:Wmt,names:Hmt};function QZ(e,t){var r=1-(1-e*e)/(2*e)*Math.log((1-e)/(1+e));if(Math.abs(Math.abs(t)-r)<1e-6)return t<0?-1*de:de;for(var i=Math.asin(.5*t),s,n,o,c,f=0;f<30;f++)if(n=Math.sin(i),o=Math.cos(i),c=e*n,s=Math.pow(1-c*c,2)/(2*o)*(t/(1-e*e)-n/(1-c*c)+.5/e*Math.log((1-c)/(1+c))),i+=s,Math.abs(s)<=1e-10)return i;return NaN}function qmt(){this.sphere||(this.k0=il(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))}function Zmt(e){var t=e.x,r=e.y,i,s,n=Ie(t-this.long0);if(this.sphere)i=this.x0+this.a*n*Math.cos(this.lat_ts),s=this.y0+this.a*Math.sin(r)/Math.cos(this.lat_ts);else{var o=df(this.e,Math.sin(r));i=this.x0+this.a*this.k0*n,s=this.y0+this.a*o*.5/this.k0}return e.x=i,e.y=s,e}function Ymt(e){e.x-=this.x0,e.y-=this.y0;var t,r;return this.sphere?(t=Ie(this.long0+e.x/this.a/Math.cos(this.lat_ts)),r=Math.asin(e.y/this.a*Math.cos(this.lat_ts))):(r=QZ(this.e,2*e.y*this.k0/this.a),t=Ie(this.long0+e.x/(this.a*this.k0))),e.x=t,e.y=r,e}var Qmt=[\"cea\"],$Z={init:qmt,forward:Zmt,inverse:Ymt,names:Qmt};function $mt(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||\"Equidistant Cylindrical (Plate Carre)\",this.rc=Math.cos(this.lat_ts)}function Xmt(e){var t=e.x,r=e.y,i=Ie(t-this.long0),s=ff(r-this.lat0);return e.x=this.x0+this.a*i*this.rc,e.y=this.y0+this.a*s,e}function Kmt(e){var t=e.x,r=e.y;return e.x=Ie(this.long0+(t-this.x0)/(this.a*this.rc)),e.y=ff(this.lat0+(r-this.y0)/this.a),e}var Jmt=[\"Equirectangular\",\"Equidistant_Cylindrical\",\"eqc\"],XZ={init:$mt,forward:Xmt,inverse:Kmt,names:Jmt};var KZ=20;function t0t(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Pp(this.es),this.e1=Ip(this.es),this.e2=Cp(this.es),this.e3=Lp(this.es),this.ml0=this.a*Lo(this.e0,this.e1,this.e2,this.e3,this.lat0)}function e0t(e){var t=e.x,r=e.y,i,s,n,o=Ie(t-this.long0);if(n=o*Math.sin(r),this.sphere)Math.abs(r)<=we?(i=this.a*o,s=-1*this.a*this.lat0):(i=this.a*Math.sin(n)/Math.tan(r),s=this.a*(ff(r-this.lat0)+(1-Math.cos(n))/Math.tan(r)));else if(Math.abs(r)<=we)i=this.a*o,s=-1*this.ml0;else{var c=kp(this.a,this.e,Math.sin(r))/Math.tan(r);i=c*Math.sin(n),s=this.a*Lo(this.e0,this.e1,this.e2,this.e3,r)-this.ml0+c*(1-Math.cos(n))}return e.x=i+this.x0,e.y=s+this.y0,e}function r0t(e){var t,r,i,s,n,o,c,f,_;if(i=e.x-this.x0,s=e.y-this.y0,this.sphere)if(Math.abs(s+this.a*this.lat0)<=we)t=Ie(i/this.a+this.long0),r=0;else{o=this.lat0+s/this.a,c=i*i/this.a/this.a+o*o,f=o;var w;for(n=KZ;n;--n)if(w=Math.tan(f),_=-1*(o*(f*w+1)-f-.5*(f*f+c)*w)/((f-o)/w-1),f+=_,Math.abs(_)<=we){r=f;break}t=Ie(this.long0+Math.asin(i*Math.tan(f)/this.a)/Math.sin(r))}else if(Math.abs(s+this.ml0)<=we)r=0,t=Ie(this.long0+i/this.a);else{o=(this.ml0+s)/this.a,c=i*i/this.a/this.a+o*o,f=o;var C,R,N,j,Y;for(n=KZ;n;--n)if(Y=this.e*Math.sin(f),C=Math.sqrt(1-Y*Y)*Math.tan(f),R=this.a*Lo(this.e0,this.e1,this.e2,this.e3,f),N=this.e0-2*this.e1*Math.cos(2*f)+4*this.e2*Math.cos(4*f)-6*this.e3*Math.cos(6*f),j=R/this.a,_=(o*(C*j+1)-j-.5*C*(j*j+c))/(this.es*Math.sin(2*f)*(j*j+c-2*o*j)/(4*C)+(o-j)*(C*N-2/Math.sin(2*f))-N),f-=_,Math.abs(_)<=we){r=f;break}C=Math.sqrt(1-this.es*Math.pow(Math.sin(r),2))*Math.tan(r),t=Ie(this.long0+Math.asin(i*C/this.a)/Math.sin(r))}return e.x=t,e.y=r,e}var i0t=[\"Polyconic\",\"poly\"],JZ={init:t0t,forward:e0t,inverse:r0t,names:i0t};function n0t(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013}function s0t(e){var t,r=e.x,i=e.y,s=i-this.lat0,n=r-this.long0,o=s/Ng*1e-5,c=n,f=1,_=0;for(t=1;t<=10;t++)f=f*o,_=_+this.A[t]*f;var w=_,C=c,R=1,N=0,j,Y,rt=0,$=0;for(t=1;t<=6;t++)j=R*w-N*C,Y=N*w+R*C,R=j,N=Y,rt=rt+this.B_re[t]*R-this.B_im[t]*N,$=$+this.B_im[t]*R+this.B_re[t]*N;return e.x=$*this.a+this.x0,e.y=rt*this.a+this.y0,e}function o0t(e){var t,r=e.x,i=e.y,s=r-this.x0,n=i-this.y0,o=n/this.a,c=s/this.a,f=1,_=0,w,C,R=0,N=0;for(t=1;t<=6;t++)w=f*o-_*c,C=_*o+f*c,f=w,_=C,R=R+this.C_re[t]*f-this.C_im[t]*_,N=N+this.C_im[t]*f+this.C_re[t]*_;for(var j=0;j.999999999999&&(r=.999999999999),t=Math.asin(r);var i=Ie(this.long0+e.x/(.900316316158*this.a*Math.cos(t)));i<-Math.PI&&(i=-Math.PI),i>Math.PI&&(i=Math.PI),r=(2*t+Math.sin(2*t))/Math.PI,Math.abs(r)>1&&(r=1);var s=Math.asin(r);return e.x=i,e.y=s,e}var v0t=[\"Mollweide\",\"moll\"],iY={init:g0t,forward:_0t,inverse:y0t,names:v0t};function x0t(){Math.abs(this.lat1+this.lat2)=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),t=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),t=-1);var n=0;if(r!==0&&(n=Math.atan2(t*e.x,t*e.y)),this.sphere)return s=Ie(this.long0+n/this.ns),i=ff(this.g-r/this.a),e.x=s,e.y=i,e;var o=this.g-r/this.a;return i=Gg(o,this.e0,this.e1,this.e2,this.e3),s=Ie(this.long0+n/this.ns),e.x=s,e.y=i,e}var S0t=[\"Equidistant_Conic\",\"eqdc\"],nY={init:x0t,forward:b0t,inverse:w0t,names:S0t};function T0t(){this.R=this.a}function M0t(e){var t=e.x,r=e.y,i=Ie(t-this.long0),s,n;Math.abs(r)<=we&&(s=this.x0+this.R*i,n=this.y0);var o=bc(2*Math.abs(r/Math.PI));(Math.abs(i)<=we||Math.abs(Math.abs(r)-de)<=we)&&(s=this.x0,r>=0?n=this.y0+Math.PI*this.R*Math.tan(.5*o):n=this.y0+Math.PI*this.R*-Math.tan(.5*o));var c=.5*Math.abs(Math.PI/i-i/Math.PI),f=c*c,_=Math.sin(o),w=Math.cos(o),C=w/(_+w-1),R=C*C,N=C*(2/_-1),j=N*N,Y=Math.PI*this.R*(c*(C-j)+Math.sqrt(f*(C-j)*(C-j)-(j+f)*(R-j)))/(j+f);i<0&&(Y=-Y),s=this.x0+Y;var rt=f+C;return Y=Math.PI*this.R*(N*rt-c*Math.sqrt((j+f)*(f+1)-rt*rt))/(j+f),r>=0?n=this.y0+Y:n=this.y0-Y,e.x=s,e.y=n,e}function E0t(e){var t,r,i,s,n,o,c,f,_,w,C,R,N;return e.x-=this.x0,e.y-=this.y0,C=Math.PI*this.R,i=e.x/C,s=e.y/C,n=i*i+s*s,o=-Math.abs(s)*(1+n),c=o-2*s*s+i*i,f=-2*o+1+2*s*s+n*n,N=s*s/f+(2*c*c*c/f/f/f-9*o*c/f/f)/27,_=(o-c*c/3/f)/f,w=2*Math.sqrt(-_/3),C=3*N/_/w,Math.abs(C)>1&&(C>=0?C=1:C=-1),R=Math.acos(C)/3,e.y>=0?r=(-w*Math.cos(R+Math.PI/3)-c/3/f)*Math.PI:r=-(-w*Math.cos(R+Math.PI/3)-c/3/f)*Math.PI,Math.abs(i)2*de*this.a?void 0:(r=t/this.a,i=Math.sin(r),s=Math.cos(r),n=this.long0,Math.abs(t)<=we?o=this.lat0:(o=bc(s*this.sin_p12+e.y*i*this.cos_p12/t),c=Math.abs(this.lat0)-de,Math.abs(c)<=we?this.lat0>=0?n=Ie(this.long0+Math.atan2(e.x,-e.y)):n=Ie(this.long0-Math.atan2(-e.x,e.y)):n=Ie(this.long0+Math.atan2(e.x*i,t*this.cos_p12*s-e.y*this.sin_p12*i))),e.x=n,e.y=o,e)):(f=Pp(this.es),_=Ip(this.es),w=Cp(this.es),C=Lp(this.es),Math.abs(this.sin_p12-1)<=we?(R=this.a*Lo(f,_,w,C,de),t=Math.sqrt(e.x*e.x+e.y*e.y),N=R-t,o=Gg(N/this.a,f,_,w,C),n=Ie(this.long0+Math.atan2(e.x,-1*e.y)),e.x=n,e.y=o,e):Math.abs(this.sin_p12+1)<=we?(R=this.a*Lo(f,_,w,C,de),t=Math.sqrt(e.x*e.x+e.y*e.y),N=t-R,o=Gg(N/this.a,f,_,w,C),n=Ie(this.long0+Math.atan2(e.x,e.y)),e.x=n,e.y=o,e):(t=Math.sqrt(e.x*e.x+e.y*e.y),rt=Math.atan2(e.x,e.y),j=kp(this.a,this.e,this.sin_p12),$=Math.cos(rt),K=this.e*this.cos_p12*$,tt=-K*K/(1-this.es),ut=3*this.es*(1-tt)*this.sin_p12*this.cos_p12*$/(1-this.es),Pt=t/j,Ot=Pt-tt*(1+tt)*Math.pow(Pt,3)/6-ut*(1+3*tt)*Math.pow(Pt,4)/24,Kt=1-tt*Ot*Ot/2-Pt*Ot*Ot*Ot/6,Y=Math.asin(this.sin_p12*Math.cos(Ot)+this.cos_p12*Math.sin(Ot)*$),n=Ie(this.long0+Math.asin(Math.sin(rt)*Math.sin(Ot)/Math.cos(Y))),Zt=Math.sin(Y),o=Math.atan2((Zt-this.es*Kt*this.sin_p12)*Math.tan(Y),Zt*(1-this.es)),e.x=n,e.y=o,e))}var k0t=[\"Azimuthal_Equidistant\",\"aeqd\"],oY={init:I0t,forward:C0t,inverse:L0t,names:k0t};function R0t(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)}function D0t(e){var t,r,i,s,n,o,c,f,_=e.x,w=e.y;return i=Ie(_-this.long0),t=Math.sin(w),r=Math.cos(w),s=Math.cos(i),o=this.sin_p14*t+this.cos_p14*r*s,n=1,(o>0||Math.abs(o)<=we)&&(c=this.a*n*r*Math.sin(i),f=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*s)),e.x=c,e.y=f,e}function O0t(e){var t,r,i,s,n,o,c;return e.x-=this.x0,e.y-=this.y0,t=Math.sqrt(e.x*e.x+e.y*e.y),r=bc(t/this.a),i=Math.sin(r),s=Math.cos(r),o=this.long0,Math.abs(t)<=we?(c=this.lat0,e.x=o,e.y=c,e):(c=bc(s*this.sin_p14+e.y*i*this.cos_p14/t),n=Math.abs(this.lat0)-de,Math.abs(n)<=we?(this.lat0>=0?o=Ie(this.long0+Math.atan2(e.x,-e.y)):o=Ie(this.long0-Math.atan2(-e.x,e.y)),e.x=o,e.y=c,e):(o=Ie(this.long0+Math.atan2(e.x*i,t*this.cos_p14*s-e.y*this.sin_p14*i)),e.x=o,e.y=c,e))}var B0t=[\"ortho\"],aY={init:R0t,forward:D0t,inverse:O0t,names:B0t};var bs={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},hn={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function F0t(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||\"Quadrilateralized Spherical Cube\",this.lat0>=de-Fi/2?this.face=bs.TOP:this.lat0<=-(de-Fi/2)?this.face=bs.BOTTOM:Math.abs(this.long0)<=Fi?this.face=bs.FRONT:Math.abs(this.long0)<=de+Fi?this.face=this.long0>0?bs.RIGHT:bs.LEFT:this.face=bs.BACK,this.es!==0&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)}function z0t(e){var t={x:0,y:0},r,i,s,n,o,c,f={value:0};if(e.x-=this.long0,this.es!==0?r=Math.atan(this.one_minus_f_squared*Math.tan(e.y)):r=e.y,i=e.x,this.face===bs.TOP)n=de-r,i>=Fi&&i<=de+Fi?(f.value=hn.AREA_0,s=i-de):i>de+Fi||i<=-(de+Fi)?(f.value=hn.AREA_1,s=i>0?i-xs:i+xs):i>-(de+Fi)&&i<=-Fi?(f.value=hn.AREA_2,s=i+de):(f.value=hn.AREA_3,s=i);else if(this.face===bs.BOTTOM)n=de+r,i>=Fi&&i<=de+Fi?(f.value=hn.AREA_0,s=-i+de):i=-Fi?(f.value=hn.AREA_1,s=-i):i<-Fi&&i>=-(de+Fi)?(f.value=hn.AREA_2,s=-i-de):(f.value=hn.AREA_3,s=i>0?-i+xs:-i-xs);else{var _,w,C,R,N,j,Y;this.face===bs.RIGHT?i=nx(i,+de):this.face===bs.BACK?i=nx(i,+xs):this.face===bs.LEFT&&(i=nx(i,-de)),R=Math.sin(r),N=Math.cos(r),j=Math.sin(i),Y=Math.cos(i),_=N*Y,w=N*j,C=R,this.face===bs.FRONT?(n=Math.acos(_),s=J3(n,C,w,f)):this.face===bs.RIGHT?(n=Math.acos(w),s=J3(n,C,-_,f)):this.face===bs.BACK?(n=Math.acos(-_),s=J3(n,C,-w,f)):this.face===bs.LEFT?(n=Math.acos(-w),s=J3(n,C,_,f)):(n=s=0,f.value=hn.AREA_0)}return c=Math.atan(12/xs*(s+Math.acos(Math.sin(s)*Math.cos(Fi))-de)),o=Math.sqrt((1-Math.cos(n))/(Math.cos(c)*Math.cos(c))/(1-Math.cos(Math.atan(1/Math.cos(s))))),f.value===hn.AREA_1?c+=de:f.value===hn.AREA_2?c+=xs:f.value===hn.AREA_3&&(c+=1.5*xs),t.x=o*Math.cos(c),t.y=o*Math.sin(c),t.x=t.x*this.a+this.x0,t.y=t.y*this.a+this.y0,e.x=t.x,e.y=t.y,e}function N0t(e){var t={lam:0,phi:0},r,i,s,n,o,c,f,_,w,C={value:0};if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,i=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),r=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?C.value=hn.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(C.value=hn.AREA_1,r-=de):e.x<0&&-e.x>=Math.abs(e.y)?(C.value=hn.AREA_2,r=r<0?r+xs:r-xs):(C.value=hn.AREA_3,r+=de),w=xs/12*Math.tan(r),o=Math.sin(w)/(Math.cos(w)-1/Math.sqrt(2)),c=Math.atan(o),s=Math.cos(r),n=Math.tan(i),f=1-s*s*n*n*(1-Math.cos(Math.atan(1/Math.cos(c)))),f<-1?f=-1:f>1&&(f=1),this.face===bs.TOP)_=Math.acos(f),t.phi=de-_,C.value===hn.AREA_0?t.lam=c+de:C.value===hn.AREA_1?t.lam=c<0?c+xs:c-xs:C.value===hn.AREA_2?t.lam=c-de:t.lam=c;else if(this.face===bs.BOTTOM)_=Math.acos(f),t.phi=_-de,C.value===hn.AREA_0?t.lam=-c+de:C.value===hn.AREA_1?t.lam=-c:C.value===hn.AREA_2?t.lam=-c-de:t.lam=c<0?-c-xs:-c+xs;else{var R,N,j;R=f,w=R*R,w>=1?j=0:j=Math.sqrt(1-w)*Math.sin(c),w+=j*j,w>=1?N=0:N=Math.sqrt(1-w),C.value===hn.AREA_1?(w=N,N=-j,j=w):C.value===hn.AREA_2?(N=-N,j=-j):C.value===hn.AREA_3&&(w=N,N=j,j=-w),this.face===bs.RIGHT?(w=R,R=-N,N=w):this.face===bs.BACK?(R=-R,N=-N):this.face===bs.LEFT&&(w=R,R=N,N=-w),t.phi=Math.acos(-j)-de,t.lam=Math.atan2(N,R),this.face===bs.RIGHT?t.lam=nx(t.lam,-de):this.face===bs.BACK?t.lam=nx(t.lam,-xs):this.face===bs.LEFT&&(t.lam=nx(t.lam,+de))}if(this.es!==0){var Y,rt,$;Y=t.phi<0?1:0,rt=Math.tan(t.phi),$=this.b/Math.sqrt(rt*rt+this.one_minus_f_squared),t.phi=Math.atan(Math.sqrt(this.a*this.a-$*$)/(this.one_minus_f*$)),Y&&(t.phi=-t.phi)}return t.lam+=this.long0,e.x=t.lam,e.y=t.phi,e}function J3(e,t,r,i){var s;return eFi&&s<=de+Fi?(i.value=hn.AREA_1,s-=de):s>de+Fi||s<=-(de+Fi)?(i.value=hn.AREA_2,s=s>=0?s-xs:s+xs):(i.value=hn.AREA_3,s+=de)),s}function nx(e,t){var r=e+t;return r<-xs?r+=bm:r>+xs&&(r-=bm),r}var U0t=[\"Quadrilateralized Spherical Cube\",\"Quadrilateralized_Spherical_Cube\",\"qsc\"],lY={init:F0t,forward:z0t,inverse:N0t,names:U0t};var _B=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],nS=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],cY=.8487,uY=1.3523,hY=yc/5,V0t=1/hY,sx=18,tI=function(e,t){return e[0]+t*(e[1]+t*(e[2]+t*e[3]))},j0t=function(e,t){return e[1]+t*(2*e[2]+t*3*e[3])};function G0t(e,t,r,i){for(var s=t;i;--i){var n=e(s);if(s-=n,Math.abs(n)=sx&&(i=sx-1),r=yc*(r-V0t*i);var s={x:tI(_B[i],r)*t,y:tI(nS[i],r)};return e.y<0&&(s.y=-s.y),s.x=s.x*this.a*cY+this.x0,s.y=s.y*this.a*uY+this.y0,s}function q0t(e){var t={x:(e.x-this.x0)/(this.a*cY),y:Math.abs(e.y-this.y0)/(this.a*uY)};if(t.y>=1)t.x/=_B[sx][0],t.y=e.y<0?-de:de;else{var r=Math.floor(t.y*sx);for(r<0?r=0:r>=sx&&(r=sx-1);;)if(nS[r][0]>t.y)--r;else if(nS[r+1][0]<=t.y)++r;else break;var i=nS[r],s=5*(t.y-i[0])/(nS[r+1][0]-i[0]);s=G0t(function(n){return(tI(i,n)-t.y)/j0t(i,n)},s,we,100),t.x/=tI(_B[r],s),t.y=(5*r+s)*vs,e.y<0&&(t.y=-t.y)}return t.x=Ie(t.x+this.long0),t}var Z0t=[\"Robinson\",\"robin\"],fY={init:W0t,forward:H0t,inverse:q0t,names:Z0t};function Y0t(){this.name=\"geocent\"}function Q0t(e){var t=G3(e,this.es,this.a);return t}function $0t(e){var t=W3(e,this.es,this.a,this.b);return t}var X0t=[\"Geocentric\",\"geocentric\",\"geocent\",\"Geocent\"],dY={init:Y0t,forward:Q0t,inverse:$0t,names:X0t};var nl={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3},sS={h:{def:1e5,num:!0},azi:{def:0,num:!0,degrees:!0},tilt:{def:0,num:!0,degrees:!0},long0:{def:0,num:!0},lat0:{def:0,num:!0}};function K0t(){if(Object.keys(sS).forEach(function(r){if(typeof this[r]>\"u\")this[r]=sS[r].def;else{if(sS[r].num&&isNaN(this[r]))throw new Error(\"Invalid parameter value, must be numeric \"+r+\" = \"+this[r]);sS[r].num&&(this[r]=parseFloat(this[r]))}sS[r].degrees&&(this[r]=this[r]*vs)}.bind(this)),Math.abs(Math.abs(this.lat0)-de)1e10)throw new Error(\"Invalid height\");this.p=1+this.pn1,this.rp=1/this.p,this.h1=1/this.pn1,this.pfact=(this.p+1)*this.h1,this.es=0;var e=this.tilt,t=this.azi;this.cg=Math.cos(t),this.sg=Math.sin(t),this.cw=Math.cos(e),this.sw=Math.sin(e)}function J0t(e){e.x-=this.long0;var t=Math.sin(e.y),r=Math.cos(e.y),i=Math.cos(e.x),s,n;switch(this.mode){case nl.OBLIQ:n=this.sinph0*t+this.cosph0*r*i;break;case nl.EQUIT:n=r*i;break;case nl.S_POLE:n=-t;break;case nl.N_POLE:n=t;break}switch(n=this.pn1/(this.p-n),s=n*r*Math.sin(e.x),this.mode){case nl.OBLIQ:n*=this.cosph0*t-this.sinph0*r*i;break;case nl.EQUIT:n*=t;break;case nl.N_POLE:n*=-(r*i);break;case nl.S_POLE:n*=r*i;break}var o,c;return o=n*this.cg+s*this.sg,c=1/(o*this.sw*this.h1+this.cw),s=(s*this.cg-n*this.sg)*this.cw*c,n=o*c,e.x=s*this.a,e.y=n*this.a,e}function tgt(e){e.x/=this.a,e.y/=this.a;var t={x:e.x,y:e.y},r,i,s;s=1/(this.pn1-e.y*this.sw),r=this.pn1*e.x*s,i=this.pn1*e.y*this.cw*s,e.x=r*this.cg+i*this.sg,e.y=i*this.cg-r*this.sg;var n=Sa(e.x,e.y);if(Math.abs(n)1e10)throw new Error;if(this.radius_g=1+this.radius_g_1,this.C=this.radius_g*this.radius_g-1,this.es!==0){var e=1-this.es,t=1/e;this.radius_p=Math.sqrt(e),this.radius_p2=e,this.radius_p_inv2=t,this.shape=\"ellipse\"}else this.radius_p=1,this.radius_p2=1,this.radius_p_inv2=1,this.shape=\"sphere\";this.title||(this.title=\"Geostationary Satellite View\")}function igt(e){var t=e.x,r=e.y,i,s,n,o;if(t=t-this.long0,this.shape===\"ellipse\"){r=Math.atan(this.radius_p2*Math.tan(r));var c=this.radius_p/Sa(this.radius_p*Math.cos(r),Math.sin(r));if(s=c*Math.cos(t)*Math.cos(r),n=c*Math.sin(t)*Math.cos(r),o=c*Math.sin(r),(this.radius_g-s)*s-n*n-o*o*this.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=this.radius_g-s,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Sa(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Sa(n,i)))}else this.shape===\"sphere\"&&(i=Math.cos(r),s=Math.cos(t)*i,n=Math.sin(t)*i,o=Math.sin(r),i=this.radius_g-s,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Sa(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Sa(n,i))));return e.x=e.x*this.a,e.y=e.y*this.a,e}function ngt(e){var t=-1,r=0,i=0,s,n,o,c;if(e.x=e.x/this.a,e.y=e.y/this.a,this.shape===\"ellipse\"){this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Sa(1,i)):(r=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Sa(1,r));var f=i/this.radius_p;if(s=r*r+f*f+t*t,n=2*this.radius_g*t,o=n*n-4*s*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-n-Math.sqrt(o))/(2*s),t=this.radius_g+c*t,r*=c,i*=c,e.x=Math.atan2(r,t),e.y=Math.atan(i*Math.cos(e.x)/t),e.y=Math.atan(this.radius_p_inv2*Math.tan(e.y))}else if(this.shape===\"sphere\"){if(this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Math.sqrt(1+i*i)):(r=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Math.sqrt(1+r*r)),s=r*r+i*i+t*t,n=2*this.radius_g*t,o=n*n-4*s*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-n-Math.sqrt(o))/(2*s),t=this.radius_g+c*t,r*=c,i*=c,e.x=Math.atan2(r,t),e.y=Math.atan(i*Math.cos(e.x)/t)}return e.x=e.x+this.long0,e}var sgt=[\"Geostationary Satellite View\",\"Geostationary_Satellite\",\"geos\"],AY={init:rgt,forward:igt,inverse:ngt,names:sgt};function mY(e){e.Proj.projections.add(ex),e.Proj.projections.add(rx),e.Proj.projections.add(zZ),e.Proj.projections.add(NZ),e.Proj.projections.add(UZ),e.Proj.projections.add(VZ),e.Proj.projections.add(jZ),e.Proj.projections.add(GZ),e.Proj.projections.add(WZ),e.Proj.projections.add(HZ),e.Proj.projections.add(qZ),e.Proj.projections.add(ZZ),e.Proj.projections.add(YZ),e.Proj.projections.add($Z),e.Proj.projections.add(XZ),e.Proj.projections.add(JZ),e.Proj.projections.add(tY),e.Proj.projections.add(eY),e.Proj.projections.add(rY),e.Proj.projections.add(iY),e.Proj.projections.add(nY),e.Proj.projections.add(sY),e.Proj.projections.add(oY),e.Proj.projections.add(aY),e.Proj.projections.add(lY),e.Proj.projections.add(fY),e.Proj.projections.add(dY),e.Proj.projections.add(pY),e.Proj.projections.add(AY)}vc.defaultDatum=\"WGS84\";vc.Proj=wm;vc.WGS84=new vc.Proj(\"WGS84\");vc.Point=IZ;vc.toPoint=q3;vc.defs=$v;vc.nadgrid=uB;vc.transform=Vg;vc.mgrs=MZ;vc.version=\"__VERSION__\";mY(vc);var gY=vc;function lS(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function cS(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function ox(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function ogt(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function agt(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function sI(e){return\"data\"in e?e.getChildAt(0):e.children[0]}var Oi=Object.freeze({__proto__:null,getLineStringChild:cS,getMultiLineStringChild:agt,getMultiPointChild:ogt,getMultiPolygonChild:sI,getPointChild:lS,getPolygonChild:ox});function oI(e,t){let r=e.valueOffsets,i=ox(e),s=i.valueOffsets,n=cS(i),o=n.type.listSize,c=lS(n),f=r[t],_=r[t+1],w=s[f],C=s[_],R=c.values.subarray(w*o,C*o);return new Yv(R,{size:o,isClosed:!0})}function yY(e){if(\"data\"in e)return new wr(e.data.map(r=>yY(r)));let t=new Float64Array(e.length);for(let r=0;rvY(r)));let t=new Float64Array(e.length);for(let r=0;rxY(n));let t=[],r=0;for(let n=0;nbY(t))):ox(e)}function wY(e){return\"data\"in e?new wr(e.data.map(t=>wY(t))):sI(e)}function aI(e){return Ne.isFixedSizeList(e)?!(![2,3,4].includes(e.listSize)||!Ne.isFloat(e.children[0])):Ne.isStruct(e)?!(![2,3,4].includes(e.children.length)||!e.children.every(t=>[\"x\",\"y\",\"z\",\"m\"].includes(t.name))||!e.children.every(t=>Ne.isFloat(t))):!1}function lI(e){return!(!Ne.isList(e)||!aI(e.children[0].type))}function bB(e){return!(!Ne.isList(e)||!lI(e.children[0].type))}function SY(e){return!(!Ne.isList(e)||!aI(e.children[0].type))}function TY(e){return!(!Ne.isList(e)||!lI(e.children[0].type))}function MY(e){return!(!Ne.isList(e)||!bB(e.children[0].type))}function cgt(e){return aI(e.type)}function ugt(e){return lI(e.type)}function hgt(e){return bB(e.type)}function fgt(e){return SY(e.type)}function dgt(e){return TY(e.type)}function pgt(e){return MY(e.type)}function Agt(e,t){if(!e)throw new Error(`assertion failed ${t}`)}function mgt(){throw new Error(\"assertion failed\")}function EY(e,t){if(cgt(e))return PY(e,t);if(ugt(e))return yB(e,t);if(hgt(e))return vB(e,t);if(fgt(e))return yB(e,t);if(dgt(e))return vB(e,t);if(pgt(e))return ggt(e,t);mgt()}function PY(e,t){Agt(e.type.listSize===2,\"expected 2D\");let r=lS(e),i=r.values,s=new Float64Array(i.length);for(let o=0;o_Y(s,i))):_Y(e,i)}function _Y(e,t){let r=[0,0];return EY(e,(s,n)=>(r[0]=s,r[1]=n,t.forward(r)))}var Sm;(function(e){e.POINT=\"geoarrow.point\",e.LINESTRING=\"geoarrow.linestring\",e.POLYGON=\"geoarrow.polygon\",e.MULTIPOINT=\"geoarrow.multipoint\",e.MULTILINESTRING=\"geoarrow.multilinestring\",e.MULTIPOLYGON=\"geoarrow.multipolygon\"})(Sm||(Sm={}));var nI=class{minX;minY;maxX;maxY;constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}updateBbox(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.maxY>this.maxY&&(this.maxY=t.maxY)}updateCoord(t,r){tthis.maxX&&(this.maxX=t),r>this.maxY&&(this.maxY=r)}};function ygt(e,t){switch(t.metadata.get(\"ARROW:extension:name\")){case Sm.POINT:return IY(e);case Sm.LINESTRING:case Sm.MULTIPOINT:return CY(e);case Sm.POLYGON:case Sm.MULTILINESTRING:return LY(e);case Sm.MULTIPOLYGON:return xgt(e);default:throw new Error(\"Unknown ext type name\")}}function vgt(e){let r=lS(e).values,i=new nI;for(let s=0;skY(r)));let t=new fm({type:new oc,nullValues:[null]});t.set(e.length-1,null);for(let r=0;rRY(r,t));return}for(let r=0;raS(n,t)));let r=[];for(let n of e.children)r.push(aS(n,t));let i;e.dictionary!==void 0&&(i=aS(e.dictionary,t));let s={[Ci.OFFSET]:eI(e.buffers[Ci.OFFSET],t),[Ci.DATA]:eI(e.buffers[Ci.DATA],t),[Ci.VALIDITY]:eI(e.buffers[Ci.VALIDITY],t),[Ci.TYPE]:eI(e.buffers[Ci.TYPE],t)};return new Di(e.type,e.offset,e.length,e._nullCount,s,r,i)}function rI(e){if(\"data\"in e)return e.data.some(r=>rI(r));for(let r of e.children)if(rI(r))return!0;if(e.dictionary!==void 0&&rI(e.dictionary))return!0;let t=[Ci.OFFSET,Ci.DATA,Ci.VALIDITY,Ci.TYPE];for(let r of t)if(e.buffers[r]!==void 0&&DY(e.buffers[r]))return!0;return!1}function DY(e){return!(e.byteOffset===0&&e.byteLength===e.buffer.byteLength)}function eI(e,t){return e===void 0||!t&&!DY(e)?e:e.slice()}function iI(e,t=!1){if(\"data\"in e){let i=[],s=[];for(let o of e.data){let[c,f]=iI(o);i.push(c),s.push(...f)}return[new wr(i),s]}e=aS(e,t);let r=[];for(let i=0;i1)throw new Error(\"expected 1 field\");return new lc(t[0])}case Rt.Struct:{let t=e.children.map(oS);return new un(t)}case Rt.Union:{let t=e.children.map(oS);return new cc(e.mode,e.typeIds,t)}case Rt.FixedSizeBinary:return new Zu(e.byteWidth);case Rt.FixedSizeList:{let t=e.children.map(oS);if(t.length>1)throw new Error(\"expected 1 field\");return new Il(e.listSize,t[0])}case Rt.Map:{let t=e.children.map(oS);if(t.length>1)throw new Error(\"expected 1 field\");let r=t[0];return new uc(r,e.keysSorted)}case Rt.Duration:return new qu(e.unit);default:throw new Error(`unknown type ${e}`)}}function oS(e){let t=OY(e.type);return new si(e.name,t,e.nullable,e.metadata)}function SB(e){let t=e.children.map(s=>SB(s)),r=e.dictionary?BY(e.dictionary):void 0,i={[Ci.OFFSET]:e.valueOffsets,[Ci.DATA]:e.values,[Ci.VALIDITY]:e.nullBitmap,[Ci.TYPE]:e.typeIds};return new Di(OY(e.type),e.offset,e.length,e._nullCount,i,t,r)}function BY(e){return new wr(e.data.map(t=>SB(t)))}var TB=Object.freeze({__proto__:null,hardClone:aS,isShared:rI,preparePostMessage:iI,rehydrateData:SB,rehydrateVector:BY});function Pgt(e,t,r){let i=e.fields.findIndex(s=>s.name===r||s.metadata.get(\"ARROW:extension:name\")===t);return i!==-1?i:null}function Igt(e,t){let{index:r,data:i}=e,s=r;i.invertedGeomOffsets!==void 0&&(s=i.invertedGeomOffsets[r]);let n={data:i.data,length:i.length,attributes:i.attributes},o={index:s,data:n,target:e.target};return t(o)}function ko(e){let{props:t,propName:r,propInput:i,chunkIdx:s,geomCoordOffsets:n}=e;if(i!==void 0)if(i instanceof wr){let o=i.data[s];if(Ne.isFixedSizeList(o)){br(o.children.length===1);let c=o.children[0].values;n&&(c=cI(c,o.type.listSize,n)),t.data.attributes[r]={value:c,size:o.type.listSize,normalized:!0}}else if(Ne.isFloat(o)){let c=o.values;n&&(c=cI(c,1,n)),t.data.attributes[r]={value:c,size:1}}}else typeof i==\"function\"?t[r]=(o,c)=>r===\"getPolygonOffset\"?i(o,c):Igt(c,i):t[r]=i}function cI(e,t,r){let i=r[r.length-1],s=new e.constructor(i*t);for(let n=0;n(t[i+1]=t[i]+r.length,t),new Uint32Array(e.length+1))}function Oo(e,t){let r=[],i=[];for(let[s,n]of Object.entries(e))s.startsWith(\"get\")&&n instanceof wr&&(r.push(n),s.endsWith(\"Color\")&&i.push(n));Cgt(t,r);for(let s of i)Lgt(s)}function Cgt(e,t){for(let r of t)br(e.batches.length===r.data.length);for(let r of t)for(let i=0;ithis.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let t=this.content?this.content.byteLength:0;return Number.isFinite(t)||console.error(\"byteLength not defined in tile data\"),t}async _loadData({getData:t,requestScheduler:r,onLoad:i,onError:s}){let{index:n,id:o,bbox:c,userData:f,zoom:_}=this,w=this._loaderId;this._abortController=new AbortController;let{signal:C}=this._abortController,R=await r.scheduleRequest(this,Y=>Y.isSelected?1:-1);if(!R){this._isCancelled=!0;return}if(this._isCancelled){R.done();return}let N=null,j;try{N=await t({index:n,id:o,bbox:c,userData:f,zoom:_,signal:C})}catch(Y){j=Y||!0}finally{R.done()}if(w===this._loaderId){if(this._loader=void 0,this.content=N,this._isCancelled&&!N){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,j?s(j,this):i(this)}}loadData(t){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(t),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){var t;this.isLoaded||(this._isCancelled=!0,(t=this._abortController)===null||t===void 0||t.abort())}};var Js={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var VY=new Fe,Bgt=new Fe,Wg=class e{constructor(t=[0,0,0],r=[0,0,0],i){G(this,\"center\",void 0),G(this,\"halfDiagonal\",void 0),G(this,\"minimum\",void 0),G(this,\"maximum\",void 0),i=i||VY.copy(t).add(r).scale(.5),this.center=new Fe(i),this.halfDiagonal=new Fe(r).subtract(this.center),this.minimum=new Fe(t),this.maximum=new Fe(r)}clone(){return new e(this.minimum,this.maximum,this.center)}equals(t){return this===t||!!t&&this.minimum.equals(t.minimum)&&this.maximum.equals(t.maximum)}transform(t){return this.center.transformAsPoint(t),this.halfDiagonal.transform(t),this.minimum.transform(t),this.maximum.transform(t),this}intersectPlane(t){let{halfDiagonal:r}=this,i=Bgt.from(t.normal),s=r.x*Math.abs(i.x)+r.y*Math.abs(i.y)+r.z*Math.abs(i.z),n=this.center.dot(i)+t.distance;return n-s>0?Js.INSIDE:n+s<0?Js.OUTSIDE:Js.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=VY.from(t).subtract(this.center),{halfDiagonal:i}=this,s=0,n;return n=Math.abs(r.x)-i.x,n>0&&(s+=n*n),n=Math.abs(r.y)-i.y,n>0&&(s+=n*n),n=Math.abs(r.z)-i.z,n>0&&(s+=n*n),s}};var fS=new Fe,jY=new Fe,Hg=class e{constructor(t=[0,0,0],r=0){G(this,\"center\",void 0),G(this,\"radius\",void 0),this.radius=-0,this.center=new Fe,this.fromCenterRadius(t,r)}fromCenterRadius(t,r){return this.center.from(t),this.radius=r,this}fromCornerPoints(t,r){return r=fS.from(r),this.center=new Fe().from(t).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new e(this.center,this.radius)}union(t){let r=this.center,i=this.radius,s=t.center,n=t.radius,o=fS.copy(s).subtract(r),c=o.magnitude();if(i>=c+n)return this.clone();if(n>=c+i)return t.clone();let f=(i+c+n)*.5;return jY.copy(o).scale((-i+f)/c).add(r),this.center.copy(jY),this.radius=f,this}expand(t){let i=fS.from(t).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(t){this.center.transform(t);let r=jj(fS,t);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(t){let r=this.distanceTo(t);return r*r}distanceTo(t){let i=fS.from(t).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(t){let r=this.center,i=this.radius,n=t.normal.dot(r)+t.distance;return n<-i?Js.OUTSIDE:n=f?Js.INSIDE:Js.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=zgt.from(t).subtract(this.center),i=this.halfAxes,s=i.getColumn(0,hI),n=i.getColumn(1,fI),o=i.getColumn(2,dI),c=s.magnitude(),f=n.magnitude(),_=o.magnitude();s.normalize(),n.normalize(),o.normalize();let w=0,C;return C=Math.abs(r.dot(s))-c,C>0&&(w+=C*C),C=Math.abs(r.dot(n))-f,C>0&&(w+=C*C),C=Math.abs(r.dot(o))-_,C>0&&(w+=C*C),w}computePlaneDistances(t,r,i=[-0,-0]){let s=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,o=this.center,c=this.halfAxes,f=c.getColumn(0,hI),_=c.getColumn(1,fI),w=c.getColumn(2,dI),C=Ngt.copy(f).add(_).add(w).add(o),R=Ugt.copy(C).subtract(t),N=r.dot(R);return s=Math.min(N,s),n=Math.max(N,n),C.copy(o).add(f).add(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),C.copy(o).add(f).subtract(_).add(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),C.copy(o).add(f).subtract(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).add(_).add(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).add(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).subtract(_).add(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).subtract(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),i[0]=s,i[1]=n,i}transform(t){this.center.transformAsPoint(t);let r=this.halfAxes.getColumn(0,hI);r.transformAsPoint(t);let i=this.halfAxes.getColumn(1,fI);i.transformAsPoint(t);let s=this.halfAxes.getColumn(2,dI);return s.transformAsPoint(t),this.halfAxes=new rs([...r,...i,...s]),this}getTransform(){throw new Error(\"not implemented\")}};var GY=new Fe,WY=new Fe,pf=class e{constructor(t=[0,0,1],r=0){G(this,\"normal\",void 0),G(this,\"distance\",void 0),this.normal=new Fe,this.distance=-0,this.fromNormalDistance(t,r)}fromNormalDistance(t,r){return Oh(Number.isFinite(r)),this.normal.from(t).normalize(),this.distance=r,this}fromPointNormal(t,r){t=GY.from(t),this.normal.from(r).normalize();let i=-this.normal.dot(t);return this.distance=i,this}fromCoefficients(t,r,i,s){return this.normal.set(t,r,i),Oh(To(this.normal.len(),1)),this.distance=s,this}clone(){return new e(this.normal,this.distance)}equals(t){return To(this.distance,t.distance)&&To(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let r=WY.copy(this.normal).transformAsVector(t).normalize(),i=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(i,r)}projectPointOntoPlane(t,r=[0,0,0]){t=GY.from(t);let i=this.getPointDistance(t),s=WY.copy(this.normal).scale(i);return t.subtract(s).to(r)}};var HY=[new Fe([1,0,0]),new Fe([0,1,0]),new Fe([0,0,1])],qY=new Fe,Vgt=new Fe,$ie=new pf(new Fe(1,0,0),0),dd=class e{constructor(t=[]){G(this,\"planes\",void 0),this.planes=t}fromBoundingSphere(t){this.planes.length=2*HY.length;let r=t.center,i=t.radius,s=0;for(let n of HY){let o=this.planes[s],c=this.planes[s+1];o||(o=this.planes[s]=new pf),c||(c=this.planes[s+1]=new pf);let f=qY.copy(n).scale(-i).add(r),_=-n.dot(f);o.fromPointNormal(f,n);let w=qY.copy(n).scale(i).add(r),C=Vgt.copy(n).negate(),R=-C.dot(w);c.fromPointNormal(w,C),s+=2}return this}computeVisibility(t){let r=Js.INSIDE;for(let i of this.planes)switch(t.intersectPlane(i)){case Js.OUTSIDE:return Js.OUTSIDE;case Js.INTERSECTING:r=Js.INTERSECTING;break;default:}return r}computeVisibilityWithPlaneMask(t,r){if(Oh(Number.isFinite(r),\"parentPlaneMask is required.\"),r===e.MASK_OUTSIDE||r===e.MASK_INSIDE)return r;let i=e.MASK_INSIDE,s=this.planes;for(let n=0;nf;)Zgt(c,pI),ZY.copy(pI).transpose(),c.multiplyRight(pI),c.multiplyLeft(ZY),o.multiplyRight(pI),++s>2&&(++n,s=0);return t.unitary=o.toTarget(t.unitary),t.diagonal=c.toTarget(t.diagonal),t}function Hgt(e){let t=0;for(let r=0;r<9;++r){let i=e[r];t+=i*i}return Math.sqrt(t)}var EB=[1,0,0],PB=[2,2,1];function qgt(e){let t=0;for(let r=0;r<3;++r){let i=e[pd.getElementIndex(PB[r],EB[r])];t+=2*i*i}return Math.sqrt(t)}function Zgt(e,t){let r=RE.EPSILON15,i=0,s=1;for(let _=0;_<3;++_){let w=Math.abs(e[pd.getElementIndex(PB[_],EB[_])]);w>i&&(s=_,i=w)}let n=EB[s],o=PB[s],c=1,f=0;if(Math.abs(e[pd.getElementIndex(o,n)])>r){let _=e[pd.getElementIndex(o,o)],w=e[pd.getElementIndex(n,n)],C=e[pd.getElementIndex(o,n)],R=(_-w)/2/C,N;R<0?N=-1/(-R+Math.sqrt(1+R*R)):N=1/(R+Math.sqrt(1+R*R)),c=1/Math.sqrt(1+N*N),f=N*c}return rs.IDENTITY.to(t),t[pd.getElementIndex(n,n)]=t[pd.getElementIndex(o,o)]=c,t[pd.getElementIndex(o,n)]=f,t[pd.getElementIndex(n,o)]=-f,t}var Tm=new Fe,Ygt=new Fe,Qgt=new Fe,$gt=new Fe,Xgt=new Fe,Kgt=new rs,Jgt={diagonal:new rs,unitary:new rs};function IB(e,t=new lx){if(!e||e.length===0)return t.halfAxes=new rs([0,0,0,0,0,0,0,0,0]),t.center=new Fe,t;let r=e.length,i=new Fe(0,0,0);for(let le of e)i.add(le);let s=1/r;i.multiplyByScalar(s);let n=0,o=0,c=0,f=0,_=0,w=0;for(let le of e){let ue=Tm.copy(le).subtract(i);n+=ue.x*ue.x,o+=ue.x*ue.y,c+=ue.x*ue.z,f+=ue.y*ue.y,_+=ue.y*ue.z,w+=ue.z*ue.z}n*=s,o*=s,c*=s,f*=s,_*=s,w*=s;let C=Kgt;C[0]=n,C[1]=o,C[2]=c,C[3]=o,C[4]=f,C[5]=_,C[6]=c,C[7]=_,C[8]=w;let{unitary:R}=AI(C,Jgt),N=t.halfAxes.copy(R),j=N.getColumn(0,Qgt),Y=N.getColumn(1,$gt),rt=N.getColumn(2,Xgt),$=-Number.MAX_VALUE,K=-Number.MAX_VALUE,tt=-Number.MAX_VALUE,ut=Number.MAX_VALUE,Pt=Number.MAX_VALUE,Ot=Number.MAX_VALUE;for(let le of e)Tm.copy(le),$=Math.max(Tm.dot(j),$),K=Math.max(Tm.dot(Y),K),tt=Math.max(Tm.dot(rt),tt),ut=Math.min(Tm.dot(j),ut),Pt=Math.min(Tm.dot(Y),Pt),Ot=Math.min(Tm.dot(rt),Ot);j=j.multiplyByScalar(.5*(ut+$)),Y=Y.multiplyByScalar(.5*(Pt+K)),rt=rt.multiplyByScalar(.5*(Ot+tt)),t.center.copy(j).add(Y).add(rt);let Kt=Ygt.set($-ut,K-Pt,tt-Ot).multiplyByScalar(.5),Zt=new rs([Kt[0],0,0,0,Kt[1],0,0,0,Kt[2]]);return t.halfAxes.multiplyRight(Zt),t}var cx=512,YY=3,QY=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],$Y=QY.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),t_t=$Y.concat([[.25,.5],[.75,.5]]),CB=class e{constructor(t,r,i){G(this,\"x\",void 0),G(this,\"y\",void 0),G(this,\"z\",void 0),G(this,\"childVisible\",void 0),G(this,\"selected\",void 0),G(this,\"_children\",void 0),this.x=t,this.y=r,this.z=i}get children(){if(!this._children){let t=this.x*2,r=this.y*2,i=this.z+1;this._children=[new e(t,r,i),new e(t,r+1,i),new e(t+1,r,i),new e(t+1,r+1,i)]}return this._children}update(t){let{viewport:r,cullingVolume:i,elevationBounds:s,minZ:n,maxZ:o,bounds:c,offset:f,project:_}=t,w=this.getBoundingVolume(s,f,_);if(c&&!this.insideBounds(c)||i.computeVisibility(w)<0)return!1;if(!this.childVisible){let{z:R}=this;if(R=n){let N=w.distanceTo(r.cameraPosition)*r.scale/r.height;R+=Math.floor(Math.log2(N))}if(R>=o)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(let R of this.children)R.update(t);return!0}getSelected(t=[]){if(this.selected&&t.push(this),this._children)for(let r of this._children)r.getSelected(t);return t}insideBounds([t,r,i,s]){let n=Math.pow(2,this.z),o=cx/n;return this.x*ot&&(this.y+1)*o>r}getBoundingVolume(t,r,i){if(i){let f=this.z<1?t_t:this.z<2?$Y:QY,_=[];for(let w of f){let C=mI(this.x+w[0],this.y+w[1],this.z);C[2]=t[0],_.push(i(C)),t[0]!==t[1]&&(C[2]=t[1],_.push(i(C)))}return IB(_)}let s=Math.pow(2,this.z),n=cx/s,o=this.x*n+r*cx,c=cx-(this.y+1)*n;return new Wg([o,c,t[0]],[o+n,c+n,t[1]])}};function XY(e,t,r,i){let s=e instanceof qy&&e.resolution?e.projectPosition:null,n=Object.values(e.getFrustumPlanes()).map(({normal:N,distance:j})=>new pf(N.clone().negate(),j)),o=new dd(n),c=e.distanceScales.unitsPerMeter[2],f=r&&r[0]*c||0,_=r&&r[1]*c||0,w=e instanceof nc&&e.pitch<=60?t:0;if(i){let[N,j,Y,rt]=i,$=El([N,rt]),K=El([Y,j]);i=[$[0],cx-$[1],K[0],cx-K[1]]}let C=new CB(0,0,0),R={viewport:e,project:s,cullingVolume:o,elevationBounds:[f,_],minZ:w,maxZ:t,bounds:i,offset:0};if(C.update(R),e instanceof nc&&e.subViewports&&e.subViewports.length>1){for(R.offset=-1;C.update(R)&&!(--R.offset<-YY););for(R.offset=1;C.update(R)&&!(++R.offset>YY););}return C.getSelected()}var Dp=512,e_t=[-1/0,-1/0,1/0,1/0],kB={type:\"object\",value:null,validate:(e,t)=>t.optional&&e===null||typeof e==\"string\"||Array.isArray(e)&&e.every(r=>typeof r==\"string\"),equal:(e,t)=>{if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t))return!1;let r=e.length;if(r!==t.length)return!1;for(let i=0;is[0])),Math.min(...r.map(s=>s[1])),Math.max(...r.map(s=>s[0])),Math.max(...r.map(s=>s[1]))]}function r_t(e){return Math.abs(e.split(\"\").reduce((t,r)=>(t<<5)-t+r.charCodeAt(0)|0,0))}function RB(e,t){if(!e||!e.length)return null;let{index:r,id:i}=t;if(Array.isArray(e)){let n=r_t(i)%e.length;e=e[n]}let s=e;for(let n of Object.keys(r)){let o=new RegExp(\"{\".concat(n,\"}\"),\"g\");s=s.replace(o,String(r[n]))}return Number.isInteger(r.y)&&Number.isInteger(r.z)&&(s=s.replace(/\\{-y\\}/g,String(Math.pow(2,r.z)-r.y-1))),s}function i_t(e,t,r){let i;if(t&&t.length===2){let[s,n]=t,o=e.getBounds({z:s}),c=e.getBounds({z:n});i=[Math.min(o[0],c[0]),Math.min(o[1],c[1]),Math.max(o[2],c[2]),Math.max(o[3],c[3])]}else i=e.getBounds();return e.isGeospatial?[Math.max(i[0],r[0]),Math.max(i[1],r[1]),Math.min(i[2],r[2]),Math.min(i[3],r[3])]:[Math.max(Math.min(i[0],r[2]),r[0]),Math.max(Math.min(i[1],r[3]),r[1]),Math.min(Math.max(i[2],r[0]),r[2]),Math.min(Math.max(i[3],r[1]),r[3])]}function tQ({viewport:e,z:t=0,cullRect:r}){return(e.subViewports||[e]).map(s=>LB(s,t,r))}function LB(e,t,r){if(!Array.isArray(t)){let n=r.x-e.x,o=r.y-e.y,{width:c,height:f}=r,_={targetZ:t},w=e.unproject([n,o],_),C=e.unproject([n+c,o],_),R=e.unproject([n,o+f],_),N=e.unproject([n+c,o+f],_);return[Math.min(w[0],C[0],R[0],N[0]),Math.min(w[1],C[1],R[1],N[1]),Math.max(w[0],C[0],R[0],N[0]),Math.max(w[1],C[1],R[1],N[1])]}let i=LB(e,t[0],r),s=LB(e,t[1],r);return[Math.min(i[0],s[0]),Math.min(i[1],s[1]),Math.max(i[2],s[2]),Math.max(i[3],s[3])]}function n_t(e,t,r){return r?JY(e,r).map(s=>s*t/Dp):e.map(i=>i*t/Dp)}function DB(e,t){return Math.pow(2,e)*Dp/t}function mI(e,t,r){let i=DB(r,Dp),s=e/i*360-180,n=Math.PI-2*Math.PI*t/i,o=180/Math.PI*Math.atan(.5*(Math.exp(n)-Math.exp(-n)));return[s,o]}function KY(e,t,r,i){let s=DB(r,i);return[e/s*Dp,t/s*Dp]}function OB(e,t,r,i,s=Dp){if(e.isGeospatial){let[_,w]=mI(t,r,i),[C,R]=mI(t+1,r+1,i);return{west:_,north:w,east:C,south:R}}let[n,o]=KY(t,r,i,s),[c,f]=KY(t+1,r+1,i,s);return{left:n,top:o,right:c,bottom:f}}function s_t(e,t,r,i,s){let n=i_t(e,null,i),o=DB(t,r),[c,f,_,w]=n_t(n,o,s),C=[];for(let R=Math.floor(c);R<_;R++)for(let N=Math.floor(f);Nt&&(_=t);let w=s;return o&&c&&s&&!e.isGeospatial&&(w=JY(s,o)),e.isGeospatial?XY(e,_,i,s):s_t(e,_,n,w||e_t,c)}function eQ(e){let t={},r;return i=>{for(let s in i)if(!o_t(i[s],t[s])){r=e(i),t=i;break}return r}}function o_t(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i{}},h_t={extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:\"best-available\",zRange:null,maxRequests:6,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{}},dS=class{constructor(t){G(this,\"opts\",void 0),G(this,\"_requestScheduler\",void 0),G(this,\"_cache\",void 0),G(this,\"_dirty\",void 0),G(this,\"_tiles\",void 0),G(this,\"_cacheByteSize\",void 0),G(this,\"_viewport\",void 0),G(this,\"_zRange\",void 0),G(this,\"_selectedTiles\",void 0),G(this,\"_frameNumber\",void 0),G(this,\"_modelMatrix\",void 0),G(this,\"_modelMatrixInverse\",void 0),G(this,\"_maxZoom\",void 0),G(this,\"_minZoom\",void 0),G(this,\"onTileLoad\",void 0),G(this,\"_getCullBounds\",eQ(tQ)),this.opts={...h_t,...t},this.onTileLoad=r=>{var i,s;(i=(s=this.opts).onTileLoad)===null||i===void 0||i.call(s,r),this.opts.maxCacheByteSize&&(this._cacheByteSize+=r.byteLength,this._resizeCache())},this._requestScheduler=new iy({maxRequests:t.maxRequests,throttleRequests:!!(t.maxRequests&&t.maxRequests>0)}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._viewport=null,this._selectedTiles=null,this._frameNumber=0,this._modelMatrix=new wn,this._modelMatrixInverse=new wn,this.setOptions(t)}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(t=>t.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(t=>t.needsReload)}setOptions(t){Object.assign(this.opts,t),Number.isFinite(t.maxZoom)&&(this._maxZoom=Math.floor(t.maxZoom)),Number.isFinite(t.minZoom)&&(this._minZoom=Math.ceil(t.minZoom))}finalize(){for(let t of this._cache.values())t.isLoading&&t.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(let t of this._cache.keys()){let r=this._cache.get(t);!this._selectedTiles||!this._selectedTiles.includes(r)?this._cache.delete(t):r.setNeedsReload()}}update(t,{zRange:r,modelMatrix:i}={}){let s=new wn(i),n=!s.equals(this._modelMatrix);if(!this._viewport||!t.equals(this._viewport)||!To(this._zRange,r)||n){n&&(this._modelMatrixInverse=s.clone().invert(),this._modelMatrix=s),this._viewport=t,this._zRange=r;let c=this.getTileIndices({viewport:t,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:r,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=c.map(f=>this._getTile(f,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(c=>this._getTile(c.index,!0)));let o=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),o&&this._frameNumber++,this._frameNumber}isTileVisible(t,r){if(!t.isVisible)return!1;if(r&&this._viewport){let i=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:r}),{bbox:s}=t;for(let[n,o,c,f]of i){let _;if(\"west\"in s)_=s.westn&&s.southo;else{let w=Math.min(s.top,s.bottom),C=Math.max(s.top,s.bottom);_=s.leftn&&wo}if(_)return!0}return!1}return!0}getTileIndices({viewport:t,maxZoom:r,minZoom:i,zRange:s,modelMatrix:n,modelMatrixInverse:o}){let{tileSize:c,extent:f,zoomOffset:_}=this.opts;return BB({viewport:t,maxZoom:r,minZoom:i,zRange:s,tileSize:c,extent:f,modelMatrix:n,modelMatrixInverse:o,zoomOffset:_})}getTileId(t){return\"\".concat(t.x,\"-\").concat(t.y,\"-\").concat(t.z)}getTileZoom(t){return t.z}getTileMetadata(t){let{tileSize:r}=this.opts;return{bbox:OB(this._viewport,t.x,t.y,t.z,r)}}getParentIndex(t){let r=Math.floor(t.x/2),i=Math.floor(t.y/2),s=t.z-1;return{x:r,y:i,z:s}}updateTileStates(){let t=this.opts.refinementStrategy||pS,r=new Array(this._cache.size),i=0;for(let s of this._cache.values())r[i++]=s.isVisible,s.isSelected=!1,s.isVisible=!1;for(let s of this._selectedTiles)s.isSelected=!0,s.isVisible=!0;(typeof t==\"function\"?t:u_t[t])(Array.from(this._cache.values())),i=0;for(let s of this._cache.values())if(r[i++]!==s.isVisible)return!0;return!1}_pruneRequests(){let{maxRequests:t=0}=this.opts,r=[],i=0;for(let s of this._cache.values())s.isLoading&&(i++,!s.isSelected&&!s.isVisible&&r.push(s));for(;t>0&&i>t&&r.length>0;)r.shift().abort(),i--}_rebuildTree(){let{_cache:t}=this;for(let r of t.values())r.parent=null,r.children&&(r.children.length=0);for(let r of t.values()){let i=this._getNearestAncestor(r);r.parent=i,i!=null&&i.children&&i.children.push(r)}}_resizeCache(){let{_cache:t,opts:r}=this,i=r.maxCacheSize||(r.maxCacheByteSize?1/0:c_t*this.selectedTiles.length),s=r.maxCacheByteSize||1/0;if(t.size>i||this._cacheByteSize>s){for(let[f,_]of t){if(!_.isVisible&&!_.isSelected){var o,c;this._cacheByteSize-=r.maxCacheByteSize?_.byteLength:0,t.delete(f),(o=(c=this.opts).onTileUnload)===null||o===void 0||o.call(c,_)}if(t.size<=i&&this._cacheByteSize<=s)break}this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((f,_)=>f.zoom-_.zoom),this._dirty=!1)}_getTile(t,r){let i=this.getTileId(t),s=this._cache.get(i),n=!1;return!s&&r?(s=new uI(t),Object.assign(s,this.getTileMetadata(s.index)),Object.assign(s,{id:i,zoom:this.getTileZoom(s.index)}),n=!0,this._cache.set(i,s),this._dirty=!0):s&&s.needsReload&&(n=!0),s&&n&&s.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),s}_getNearestAncestor(t){let{_minZoom:r=0}=this,i=t.index;for(;this.getTileZoom(i)>r;){i=this.getParentIndex(i);let s=this._getTile(i);if(s)return s}return null}};function f_t(e){for(let t of e)t.state=0;for(let t of e)t.isSelected&&!iQ(t)&&FB(t);for(let t of e)t.isVisible=!!(t.state&gI)}function d_t(e){for(let r of e)r.state=0;for(let r of e)r.isSelected&&iQ(r);let t=Array.from(e).sort((r,i)=>r.zoom-i.zoom);for(let r of t)if(r.isVisible=!!(r.state&gI),r.children&&(r.isVisible||r.state&rQ))for(let i of r.children)i.state=rQ;else r.isSelected&&FB(r)}function iQ(e){let t=e;for(;t;){if(t.isLoaded||t.content)return t.state|=gI,!0;t=t.parent}return!1}function FB(e){for(let t of e.children)t.isLoaded||t.content?t.state|=gI:FB(t)}var p_t={TilesetClass:dS,data:{type:\"data\",value:[]},dataComparator:kB.equal,renderSubLayers:{type:\"function\",value:e=>new xm(e)},getTileData:{type:\"function\",optional:!0,value:null},onViewportLoad:{type:\"function\",optional:!0,value:null},onTileLoad:{type:\"function\",value:e=>{}},onTileUnload:{type:\"function\",value:e=>{}},onTileError:{type:\"function\",value:e=>console.error(e)},extent:{type:\"array\",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:pS,zRange:null,maxRequests:6,zoomOffset:0},Mm=class extends tn{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){var t,r;(t=this.state)===null||t===void 0||(r=t.tileset)===null||r===void 0||r.finalize()}get isLoaded(){var t,r,i;return(t=this.state)===null||t===void 0||(r=t.tileset)===null||r===void 0||(i=r.selectedTiles)===null||i===void 0?void 0:i.every(s=>s.isLoaded&&s.layers&&s.layers.every(n=>n.isLoaded))}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState({changeFlags:t}){let{tileset:r}=this.state,i=t.propsOrDataChanged||t.updateTriggersChanged,s=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getTileData);r?i&&(r.setOptions(this._getTilesetOptions()),s?r.reloadAll():this.state.tileset.tiles.forEach(n=>{n.layers=null})):(r=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:r})),this._updateTileset()}_getTilesetOptions(){let{tileSize:t,maxCacheSize:r,maxCacheByteSize:i,refinementStrategy:s,extent:n,maxZoom:o,minZoom:c,maxRequests:f,zoomOffset:_}=this.props;return{maxCacheSize:r,maxCacheByteSize:i,maxZoom:o,minZoom:c,tileSize:t,refinementStrategy:s,extent:n,maxRequests:f,zoomOffset:_,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){let{tileset:t}=this.state,{zRange:r,modelMatrix:i}=this.props,s=t.update(this.context.viewport,{zRange:r,modelMatrix:i}),{isLoaded:n}=t,o=this.state.isLoaded!==n,c=this.state.frameNumber!==s;n&&(o||c)&&this._onViewportLoad(),c&&this.setState({frameNumber:s}),this.state.isLoaded=n}_onViewportLoad(){let{tileset:t}=this.state,{onViewportLoad:r}=this.props;r&&r(t.selectedTiles)}_onTileLoad(t){this.props.onTileLoad(t),t.layers=null,this.setNeedsUpdate()}_onTileError(t,r){this.props.onTileError(t),r.layers=null,this.setNeedsUpdate()}_onTileUnload(t){this.props.onTileUnload(t)}getTileData(t){let{data:r,getTileData:i,fetch:s}=this.props,{signal:n}=t;return t.url=typeof r==\"string\"||Array.isArray(r)?RB(r,t):null,i?i(t):s&&t.url?s(t.url,{propName:\"data\",layer:this,signal:n}):null}renderSubLayers(t){return this.props.renderSubLayers(t)}getSubLayerPropsByTile(t){return null}getPickingInfo({info:t,sourceLayer:r}){let i=r.props.tile;return t.picked&&(t.tile=i),t.sourceTile=i,t}_updateAutoHighlight(t){let r=t.sourceTile;if(r&&r.layers)for(let i of r.layers)i.updateAutoHighlight(t)}renderLayers(){return this.state.tileset.tiles.map(t=>{let r=this.getSubLayerPropsByTile(t);if(!(!t.isLoaded&&!t.content))if(t.layers)r&&t.layers[0]&&Object.keys(r).some(i=>t.layers[0].props[i]!==r[i])&&(t.layers=t.layers.map(i=>i.clone(r)));else{let i=this.renderSubLayers({...this.props,...this.getSubLayerProps({id:t.id,updateTriggers:this.props.updateTriggers}),data:t.content,_offset:0,tile:t});t.layers=np(i,Boolean).map(s=>s.clone({tile:t,...r}))}return t.layers})}filterSubLayer({layer:t,cullRect:r}){let{tile:i}=t.props;return this.state.tileset.isTileVisible(i,r)}};G(Mm,\"defaultProps\",p_t);G(Mm,\"layerName\",\"TileLayer\");var Tc=function(e){e=e||{};var t=typeof e<\"u\"?e:{},r={},i;for(i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);var s=[],n=\"\";function o(Ht){return t.locateFile?t.locateFile(Ht,n):n+Ht}var c;document.currentScript&&(n=document.currentScript.src),n.indexOf(\"blob:\")!==0?n=n.substr(0,n.lastIndexOf(\"/\")+1):n=\"\",c=function(fe,De,vr){var g=new XMLHttpRequest;g.open(\"GET\",fe,!0),g.responseType=\"arraybuffer\",g.onload=function(){if(g.status==200||g.status==0&&g.response){De(g.response);return}var Si=ht(fe);if(Si){De(Si.buffer);return}vr()},g.onerror=vr,g.send(null)};var f=t.print||console.log.bind(console),_=t.printErr||console.warn.bind(console);for(i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);r=null,t.arguments&&(s=t.arguments);var w=0,C=function(Ht){w=Ht},R=function(){return w},N=8;function j(Ht,fe,De,vr){switch(De=De||\"i8\",De.charAt(De.length-1)===\"*\"&&(De=\"i32\"),De){case\"i1\":Lr[Ht>>0]=fe;break;case\"i8\":Lr[Ht>>0]=fe;break;case\"i16\":Bo[Ht>>1]=fe;break;case\"i32\":Fo[Ht>>2]=fe;break;case\"i64\":ve=[fe>>>0,(Ao=fe,+Ol(Ao)>=1?Ao>0?(fn(+os(Ao/4294967296),4294967295)|0)>>>0:~~+te((Ao-+(~~Ao>>>0))/4294967296)>>>0:0)],Fo[Ht>>2]=ve[0],Fo[Ht+4>>2]=ve[1];break;case\"float\":zo[Ht>>2]=fe;break;case\"double\":wi[Ht>>3]=fe;break;default:sh(\"invalid type for setValue: \"+De)}}function Y(Ht,fe,De){switch(fe=fe||\"i8\",fe.charAt(fe.length-1)===\"*\"&&(fe=\"i32\"),fe){case\"i1\":return Lr[Ht>>0];case\"i8\":return Lr[Ht>>0];case\"i16\":return Bo[Ht>>1];case\"i32\":return Fo[Ht>>2];case\"i64\":return Fo[Ht>>2];case\"float\":return zo[Ht>>2];case\"double\":return wi[Ht>>3];default:sh(\"invalid type for getValue: \"+fe)}return null}var rt=!1;function $(Ht,fe){Ht||sh(\"Assertion failed: \"+fe)}function K(Ht){var fe=t[\"_\"+Ht];return $(fe,\"Cannot call unknown function \"+Ht+\", make sure it is exported\"),fe}function tt(Ht,fe,De,vr,g){var Ni={string:function(Ur){var hi=0;if(Ur!=null&&Ur!==0){var go=(Ur.length<<2)+1;hi=jp(go),le(Ur,hi,go)}return hi},array:function(Ur){var hi=jp(Ur.length);return Ge(Ur,hi),hi}};function Si(Ur){return fe===\"string\"?Kt(Ur):fe===\"boolean\"?!!Ur:Ur}var Tt=K(Ht),Ts=[],as=0;if(vr)for(var li=0;li=vr);)++g;if(g-fe>16&&Ht.subarray&&Pt)return Pt.decode(Ht.subarray(fe,g));for(var Ni=\"\";fe>10,56320|as&1023)}}return Ni}function Kt(Ht,fe){return Ht?Ot(zi,Ht,fe):\"\"}function Zt(Ht,fe,De,vr){if(!(vr>0))return 0;for(var g=De,Ni=De+vr-1,Si=0;Si=55296&&Tt<=57343){var Ts=Ht.charCodeAt(++Si);Tt=65536+((Tt&1023)<<10)|Ts&1023}if(Tt<=127){if(De>=Ni)break;fe[De++]=Tt}else if(Tt<=2047){if(De+1>=Ni)break;fe[De++]=192|Tt>>6,fe[De++]=128|Tt&63}else if(Tt<=65535){if(De+2>=Ni)break;fe[De++]=224|Tt>>12,fe[De++]=128|Tt>>6&63,fe[De++]=128|Tt&63}else{if(De+3>=Ni)break;fe[De++]=240|Tt>>18,fe[De++]=128|Tt>>12&63,fe[De++]=128|Tt>>6&63,fe[De++]=128|Tt&63}}return fe[De]=0,De-g}function le(Ht,fe,De){return Zt(Ht,zi,fe,De)}var ue=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function Ge(Ht,fe){Lr.set(Ht,fe)}function tr(Ht,fe){return Ht%fe>0&&(Ht+=fe-Ht%fe),Ht}var er,Lr,zi,Bo,Pc,Fo,rh,zo,wi;function Ds(Ht){er=Ht,t.HEAP8=Lr=new Int8Array(Ht),t.HEAP16=Bo=new Int16Array(Ht),t.HEAP32=Fo=new Int32Array(Ht),t.HEAPU8=zi=new Uint8Array(Ht),t.HEAPU16=Pc=new Uint16Array(Ht),t.HEAPU32=rh=new Uint32Array(Ht),t.HEAPF32=zo=new Float32Array(Ht),t.HEAPF64=wi=new Float64Array(Ht)}var sl=5266928,Ic=24016,Cc=t.TOTAL_MEMORY||33554432;t.buffer?er=t.buffer:er=new ArrayBuffer(Cc),Cc=er.byteLength,Ds(er),Fo[Ic>>2]=sl;function Zi(Ht){for(;Ht.length>0;){var fe=Ht.shift();if(typeof fe==\"function\"){fe();continue}var De=fe.func;typeof De==\"number\"?fe.arg===void 0?t.dynCall_v(De):t.dynCall_vi(De,fe.arg):De(fe.arg===void 0?null:fe.arg)}}var $n=[],Ii=[],Xn=[],No=[];function ol(){if(t.preRun)for(typeof t.preRun==\"function\"&&(t.preRun=[t.preRun]);t.preRun.length;)ss(t.preRun.shift());Zi($n)}function fo(){Zi(Ii)}function Ea(){Zi(Xn)}function na(){if(t.postRun)for(typeof t.postRun==\"function\"&&(t.postRun=[t.postRun]);t.postRun.length;)to(t.postRun.shift());Zi(No)}function ss(Ht){$n.unshift(Ht)}function to(Ht){No.unshift(Ht)}var Ol=Math.abs,te=Math.ceil,os=Math.floor,fn=Math.min,gi=0,oi=null,eo=null;function uu(Ht){gi++,t.monitorRunDependencies&&t.monitorRunDependencies(gi)}function al(Ht){if(gi--,t.monitorRunDependencies&&t.monitorRunDependencies(gi),gi==0&&(oi!==null&&(clearInterval(oi),oi=null),eo)){var fe=eo;eo=null,fe()}}t.preloadedImages={},t.preloadedAudios={};var po=null,ll=\"data:application/octet-stream;base64,\";function Pa(Ht){return String.prototype.startsWith?Ht.startsWith(ll):Ht.indexOf(ll)===0}var Ao,ve;po=\"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";var Uo=24032;function dn(Ht){return Ht}function Bl(Ht){var fe=/\\b__Z[\\w\\d_]+/g;return Ht.replace(fe,function(De){var vr=De;return De===vr?De:vr+\" [\"+De+\"]\"})}function Ia(){var Ht=new Error;if(!Ht.stack){try{throw new Error(0)}catch(fe){Ht=fe}if(!Ht.stack)return\"(no stack trace available)\"}return Ht.stack.toString()}function Se(){var Ht=Ia();return t.extraStackTrace&&(Ht+=`\n`+t.extraStackTrace()),Bl(Ht)}function Dr(Ht,fe,De,vr){sh(\"Assertion failed: \"+Kt(Ht)+\", at: \"+[fe?Kt(fe):\"unknown filename\",De,vr?Kt(vr):\"unknown function\"])}function mr(){return Lr.length}function Os(Ht,fe,De){zi.set(zi.subarray(fe,fe+De),Ht)}function Ca(Ht){return t.___errno_location&&(Fo[t.___errno_location()>>2]=Ht),Ht}function Tr(Ht){sh(\"OOM\")}function sa(Ht){try{var fe=new ArrayBuffer(Ht);return fe.byteLength!=Ht?void 0:(new Int8Array(fe).set(Lr),vi(fe),Ds(fe),1)}catch{}}function gt(Ht){var fe=mr(),De=16777216,vr=2147483648-De;if(Ht>vr)return!1;for(var g=16777216,Ni=Math.max(fe,g);Ni>4,g=(Tt&15)<<4|Ts>>2,Ni=(Ts&3)<<6|as,De=De+String.fromCharCode(vr),Ts!==64&&(De=De+String.fromCharCode(g)),as!==64&&(De=De+String.fromCharCode(Ni));while(li>2]=p,g[k+4>>2]=m,k=(I|0)!=0,k&&(g[I>>2]=0),Ui(p,m)|0)return zt=1,wt=Gt,zt|0;g[zt>>2]=0;t:do if((y|0)>=1)if(k)for(it=0,ot=1,Ct=1,L=0,k=p;;){if(!(L|it)){if(k=jn(k,m,4,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(Ui(k,m)|0){k=1;break t}}if(k=jn(k,m,g[16+(it<<2)>>2]|0,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(p=S+(Ct<<3)|0,g[p>>2]=k,g[p+4>>2]=m,g[I+(Ct<<2)>>2]=ot,L=L+1|0,p=(L|0)==(ot|0),z=it+1|0,H=(z|0)==6,Ui(k,m)|0){k=1;break t}if(ot=ot+(H&p&1)|0,(ot|0)>(y|0)){k=0;break}else it=p?H?0:z:it,Ct=Ct+1|0,L=p?0:L}else for(it=0,ot=1,Ct=1,L=0,k=p;;){if(!(L|it)){if(k=jn(k,m,4,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(Ui(k,m)|0){k=1;break t}}if(k=jn(k,m,g[16+(it<<2)>>2]|0,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(p=S+(Ct<<3)|0,g[p>>2]=k,g[p+4>>2]=m,L=L+1|0,p=(L|0)==(ot|0),z=it+1|0,H=(z|0)==6,Ui(k,m)|0){k=1;break t}if(ot=ot+(H&p&1)|0,(ot|0)>(y|0)){k=0;break}else it=p?H?0:z:it,Ct=Ct+1|0,L=p?0:L}else k=0;while(!1);return zt=k,wt=Gt,zt|0}function Oa(p,m,y,S,I,k,L){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0,k=k|0,L=L|0;var z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0;if(Ct=wt,wt=wt+16|0,ot=Ct,(p|0)==0&(m|0)==0){wt=Ct;return}if(z=qo(p|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0,It()|0,H=S+(z<<3)|0,zt=H,Gt=g[zt>>2]|0,zt=g[zt+4>>2]|0,it=(Gt|0)==(p|0)&(zt|0)==(m|0),!((Gt|0)==0&(zt|0)==0|it))do z=(z+1|0)%(k|0)|0,H=S+(z<<3)|0,Gt=H,zt=g[Gt>>2]|0,Gt=g[Gt+4>>2]|0,it=(zt|0)==(p|0)&(Gt|0)==(m|0);while(!((zt|0)==0&(Gt|0)==0|it));if(z=I+(z<<2)|0,it&&(g[z>>2]|0)<=(L|0)){wt=Ct;return}if(Gt=H,g[Gt>>2]=p,g[Gt+4>>2]=m,g[z>>2]=L,(L|0)>=(y|0)){wt=Ct;return}Gt=L+1|0,g[ot>>2]=0,zt=jn(p,m,2,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,3,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,1,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,5,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,4,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,6,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),wt=Ct}function jn(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0;if((g[S>>2]|0)>0){I=0;do y=za(y)|0,I=I+1|0;while((I|0)<(g[S>>2]|0))}z=me(p|0,m|0,45)|0,It()|0,H=z&127,k=Ms(p,m)|0,I=me(p|0,m|0,52)|0,It()|0,I=I&15;t:do if(!I)L=6;else for(;;){if(Ct=(15-I|0)*3|0,zt=me(p|0,m|0,Ct|0)|0,It()|0,zt=zt&7,Gt=(Go(I)|0)==0,I=I+-1|0,ot=Le(7,0,Ct|0)|0,m=m&~(It()|0),Ct=Le(g[(Gt?464:48)+(zt*28|0)+(y<<2)>>2]|0,0,Ct|0)|0,it=It()|0,y=g[(Gt?672:256)+(zt*28|0)+(y<<2)>>2]|0,p=Ct|p&~ot,m=it|m,!y){y=0;break t}if(!I){L=6;break}}while(!1);(L|0)==6&&(Gt=g[880+(H*28|0)+(y<<2)>>2]|0,zt=Le(Gt|0,0,45)|0,p=zt|p,m=It()|0|m&-1040385,y=g[4304+(H*28|0)+(y<<2)>>2]|0,(Gt&127|0)==127&&(Gt=Le(g[880+(H*28|0)+20>>2]|0,0,45)|0,m=It()|0|m&-1040385,y=g[4304+(H*28|0)+20>>2]|0,p=jo(Gt|p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+1)),L=me(p|0,m|0,45)|0,It()|0,L=L&127;t:do if(fi(L)|0){e:do if((Ms(p,m)|0)==1){if((H|0)!=(L|0))if(lh(L,g[7728+(H*28|0)>>2]|0)|0){p=Od(p,m)|0,k=1,m=It()|0;break}else{p=jo(p,m)|0,k=1,m=It()|0;break}switch(k|0){case 5:{p=Od(p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+5,k=0;break e}case 3:{p=jo(p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+1,k=0;break e}default:return zt=0,Gt=0,$e(zt|0),Gt|0}}else k=0;while(!1);if((y|0)>0){I=0;do p=mh(p,m)|0,m=It()|0,I=I+1|0;while((I|0)!=(y|0))}if((H|0)!=(L|0)){if(!(du(L)|0)){if((k|0)!=0|(Ms(p,m)|0)!=5)break;g[S>>2]=(g[S>>2]|0)+1;break}switch(z&127){case 8:case 118:break t;default:}(Ms(p,m)|0)!=3&&(g[S>>2]=(g[S>>2]|0)+1)}}else if((y|0)>0){I=0;do p=jo(p,m)|0,m=It()|0,I=I+1|0;while((I|0)!=(y|0))}while(!1);return g[S>>2]=((g[S>>2]|0)+y|0)%6|0,zt=m,Gt=p,$e(zt|0),Gt|0}function i_(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0;if(Ct=wt,wt=wt+16|0,ot=Ct,!y)return ot=S,g[ot>>2]=p,g[ot+4>>2]=m,ot=0,wt=Ct,ot|0;g[ot>>2]=0;t:do if(Ui(p,m)|0)p=1;else{if(k=(y|0)>0,k){I=0,it=p;do{if(it=jn(it,m,4,ot)|0,m=It()|0,(it|0)==0&(m|0)==0){p=2;break t}if(I=I+1|0,Ui(it,m)|0){p=1;break t}}while((I|0)<(y|0));if(H=S,g[H>>2]=it,g[H+4>>2]=m,H=y+-1|0,k){k=0,L=1,I=it,p=m;do{if(I=jn(I,p,2,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(L<<3)|0,g[z>>2]=I,g[z+4>>2]=p,L=L+1|0,Ui(I,p)|0){p=1;break t}k=k+1|0}while((k|0)<(y|0));z=0,k=L;do{if(I=jn(I,p,3,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(L=S+(k<<3)|0,g[L>>2]=I,g[L+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}z=z+1|0}while((z|0)<(y|0));L=0;do{if(I=jn(I,p,1,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));L=0;do{if(I=jn(I,p,5,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));L=0;do{if(I=jn(I,p,4,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));for(L=0;;){if(I=jn(I,p,6,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if((L|0)!=(H|0))if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,!(Ui(I,p)|0))k=k+1|0;else{p=1;break t}if(L=L+1|0,(L|0)>=(y|0)){L=it,k=m;break}}}else L=it,I=it,k=m,p=m}else L=S,g[L>>2]=p,g[L+4>>2]=m,L=p,I=p,k=m,p=m;p=((L|0)!=(I|0)|(k|0)!=(p|0))&1}while(!1);return ot=p,wt=Ct,ot|0}function Pd(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;if(k=wt,wt=wt+48|0,I=k+8|0,S=k,z=p,L=g[z+4>>2]|0,y=S,g[y>>2]=g[z>>2],g[y+4>>2]=L,Me(S,I),I=ch(I,m)|0,m=g[S>>2]|0,S=g[p+8>>2]|0,(S|0)<=0)return z=m,L=(I|0)<(z|0),z=L?z:I,z=z+12|0,wt=k,z|0;y=g[p+12>>2]|0,p=0;do m=(g[y+(p<<3)>>2]|0)+m|0,p=p+1|0;while((p|0)<(S|0));return z=(I|0)<(m|0),z=z?m:I,z=z+12|0,wt=k,z|0}function Zp(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0;if(z=wt,wt=wt+48|0,S=z+8|0,I=z,!(Yp(p,m,y)|0)){wt=z;return}if(H=p,k=g[H+4>>2]|0,L=I,g[L>>2]=g[H>>2],g[L+4>>2]=k,Me(I,S),L=ch(S,m)|0,m=g[I>>2]|0,k=g[p+8>>2]|0,(k|0)>0){I=g[p+12>>2]|0,S=0;do m=(g[I+(S<<3)>>2]|0)+m|0,S=S+1|0;while((S|0)!=(k|0))}if(m=(L|0)<(m|0)?m:L,(m|0)<=-12){wt=z;return}H=m+11|0,Dc(y|0,0,(((H|0)>0?H:0)<<3)+8|0)|0,wt=z}function Yp(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0,Ei=0,vn=0,An=0,Or=0;if(Or=wt,wt=wt+112|0,cn=Or+80|0,H=Or+72|0,Ei=Or,vn=Or+56|0,it=p+8|0,An=no((g[it>>2]<<5)+32|0)|0,An||Ti(22848,22448,800,22456),dr(p,An),k=p,S=g[k+4>>2]|0,z=H,g[z>>2]=g[k>>2],g[z+4>>2]=S,Me(H,cn),z=ch(cn,m)|0,S=g[H>>2]|0,k=g[it>>2]|0,(k|0)>0){L=g[p+12>>2]|0,I=0;do S=(g[L+(I<<3)>>2]|0)+S|0,I=I+1|0;while((I|0)!=(k|0))}if(z=(z|0)<(S|0)?S:z,Mi=z+12|0,I=Na(Mi,8)|0,ot=Na(Mi,8)|0,g[cn>>2]=0,Zr=p,Gi=g[Zr+4>>2]|0,S=H,g[S>>2]=g[Zr>>2],g[S+4>>2]=Gi,S=Km(H,Mi,m,cn,I,ot)|0,S|0)return Gr(I),Gr(ot),Gr(An),An=S,wt=Or,An|0;t:do if((g[it>>2]|0)>0){for(k=p+12|0,S=0;L=Km((g[k>>2]|0)+(S<<3)|0,Mi,m,cn,I,ot)|0,S=S+1|0,!(L|0);)if((S|0)>=(g[it>>2]|0))break t;return Gr(I),Gr(ot),Gr(An),An=L,wt=Or,An|0}while(!1);(z|0)>-12&&Dc(ot|0,0,((Mi|0)>1?Mi:1)<<3|0)|0;t:do if((g[cn>>2]|0)>0){Gi=((Mi|0)<0)<<31>>31,Nt=I,Ze=ot,Ke=I,be=I,ze=ot,Zr=I,S=I,Ce=I,Ve=ot,Jt=ot,_e=ot,I=ot;e:for(;;){for(ie=g[cn>>2]|0,Gt=0,ee=0,k=0;;){L=Ei,z=L+56|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(z|0));if(m=Nt+(Gt<<3)|0,H=g[m>>2]|0,m=g[m+4>>2]|0,gf(H,m,1,Ei,0)|0){L=Ei,z=L+56|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(z|0));L=Na(7,4)|0,L|0&&(Oa(H,m,1,Ei,L,7,0),Gr(L))}zt=0;do{Ct=Ei+(zt<<3)|0,ot=g[Ct>>2]|0,Ct=g[Ct+4>>2]|0;r:do if(!((ot|0)==0&(Ct|0)==0)){if(H=qo(ot|0,Ct|0,Mi|0,Gi|0)|0,It()|0,L=y+(H<<3)|0,z=L,m=g[z>>2]|0,z=g[z+4>>2]|0,!((m|0)==0&(z|0)==0))for(it=0;;){if((it|0)>(Mi|0))break e;if((m|0)==(ot|0)&(z|0)==(Ct|0))break r;if(H=(H+1|0)%(Mi|0)|0,L=y+(H<<3)|0,z=L,m=g[z>>2]|0,z=g[z+4>>2]|0,(m|0)==0&(z|0)==0)break;it=it+1|0}(ot|0)==0&(Ct|0)==0||(l(ot,Ct,vn),Xe(p,An,vn)|0&&(it=L,g[it>>2]=ot,g[it+4>>2]=Ct,it=Ze+(k<<3)|0,g[it>>2]=ot,g[it+4>>2]=Ct,k=k+1|0))}while(!1);zt=zt+1|0}while(zt>>>0<7);if(ee=ee+1|0,(ee|0)>=(ie|0))break;Gt=Gt+1|0}if((ie|0)>0&&Dc(Ke|0,0,ie<<3|0)|0,g[cn>>2]=k,(k|0)>0)ot=I,Ct=_e,zt=Zr,Gt=Jt,ee=Ve,ie=Ze,I=Ce,_e=S,Jt=be,Ve=Ke,Ce=ot,S=Ct,Zr=ze,ze=zt,be=Gt,Ke=ee,Ze=Nt,Nt=ie;else break t}return Gr(be),Gr(ze),Gr(An),An=-1,wt=Or,An|0}else S=ot;while(!1);return Gr(An),Gr(I),Gr(S),An=0,wt=Or,An|0}function Km(p,m,y,S,I,k){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0,k=k|0;var L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0;if(Gi=wt,wt=wt+48|0,Ke=Gi+32|0,be=Gi+16|0,ze=Gi,L=g[p>>2]|0,(L|0)<=0)return Zr=0,wt=Gi,Zr|0;Ve=p+4|0,Jt=Ke+8|0,_e=be+8|0,Nt=ze+8|0,Ze=((m|0)<0)<<31>>31,Ce=0;t:for(;;){z=g[Ve>>2]|0,ee=z+(Ce<<4)|0,g[Ke>>2]=g[ee>>2],g[Ke+4>>2]=g[ee+4>>2],g[Ke+8>>2]=g[ee+8>>2],g[Ke+12>>2]=g[ee+12>>2],(Ce|0)==(L+-1|0)?(g[be>>2]=g[z>>2],g[be+4>>2]=g[z+4>>2],g[be+8>>2]=g[z+8>>2],g[be+12>>2]=g[z+12>>2]):(ee=z+(Ce+1<<4)|0,g[be>>2]=g[ee>>2],g[be+4>>2]=g[ee+4>>2],g[be+8>>2]=g[ee+8>>2],g[be+12>>2]=g[ee+12>>2]),ee=la(Ke,be,y)|0;e:do if((ee|0)>0){ie=+(ee|0),Gt=0;r:for(;;){cn=+(ee-Gt|0),Mi=+(Gt|0),Tt[ze>>3]=+Tt[Ke>>3]*cn/ie+ +Tt[be>>3]*Mi/ie,Tt[Nt>>3]=+Tt[Jt>>3]*cn/ie+ +Tt[_e>>3]*Mi/ie,Ct=sA(ze,y)|0,zt=It()|0,z=qo(Ct|0,zt|0,m|0,Ze|0)|0,It()|0,L=k+(z<<3)|0,H=L,it=g[H>>2]|0,H=g[H+4>>2]|0;i:do if((it|0)==0&(H|0)==0)Zr=14;else for(ot=0;;){if((ot|0)>(m|0)){L=1;break i}if((it|0)==(Ct|0)&(H|0)==(zt|0)){L=7;break i}if(z=(z+1|0)%(m|0)|0,L=k+(z<<3)|0,H=L,it=g[H>>2]|0,H=g[H+4>>2]|0,(it|0)==0&(H|0)==0){Zr=14;break}else ot=ot+1|0}while(!1);switch((Zr|0)==14&&(Zr=0,(Ct|0)==0&(zt|0)==0?L=7:(g[L>>2]=Ct,g[L+4>>2]=zt,L=g[S>>2]|0,ot=I+(L<<3)|0,g[ot>>2]=Ct,g[ot+4>>2]=zt,g[S>>2]=L+1,L=0)),L&7){case 7:case 0:break;default:break r}if(Gt=Gt+1|0,(ee|0)<=(Gt|0)){Zr=8;break e}}if(L|0){L=-1,Zr=20;break t}}else Zr=8;while(!1);if((Zr|0)==8&&(Zr=0),Ce=Ce+1|0,L=g[p>>2]|0,(Ce|0)>=(L|0)){L=0,Zr=20;break}}return(Zr|0)==20?(wt=Gi,L|0):0}function Pn(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(it=wt,wt=wt+176|0,H=it,(m|0)<1){gu(y,0,0),wt=it;return}L=p,L=me(g[L>>2]|0,g[L+4>>2]|0,52)|0,It()|0,gu(y,(m|0)>6?m:6,L&15),L=0;do{if(S=p+(L<<3)|0,d(g[S>>2]|0,g[S+4>>2]|0,H),S=g[H>>2]|0,(S|0)>0){z=0;do k=H+8+(z<<4)|0,z=z+1|0,S=H+8+(((z|0)%(S|0)|0)<<4)|0,I=_h(y,S,k)|0,I?Es(y,I)|0:yo(y,k,S)|0,S=g[H>>2]|0;while((z|0)<(S|0))}L=L+1|0}while((L|0)!=(m|0));wt=it}function oh(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if(k=wt,wt=wt+32|0,S=k,I=k+16|0,Pn(p,m,I),g[y>>2]=0,g[y+4>>2]=0,g[y+8>>2]=0,p=Ns(I)|0,!p){Wt(y)|0,gh(I),wt=k;return}do{m=yt(y)|0;do dt(m,p)|0,L=p+16|0,g[S>>2]=g[L>>2],g[S+4>>2]=g[L+4>>2],g[S+8>>2]=g[L+8>>2],g[S+12>>2]=g[L+12>>2],Es(I,p)|0,p=On(I,S)|0;while(p|0);p=Ns(I)|0}while(p|0);Wt(y)|0,gh(I),wt=k}function fi(p){return p=p|0,g[7728+(p*28|0)+16>>2]|0}function du(p){return p=p|0,(p|0)==4|(p|0)==117|0}function _f(p){return p=p|0,g[11152+((g[p>>2]|0)*216|0)+((g[p+4>>2]|0)*72|0)+((g[p+8>>2]|0)*24|0)+(g[p+12>>2]<<3)>>2]|0}function Qp(p){return p=p|0,g[11152+((g[p>>2]|0)*216|0)+((g[p+4>>2]|0)*72|0)+((g[p+8>>2]|0)*24|0)+(g[p+12>>2]<<3)+4>>2]|0}function ah(p,m){p=p|0,m=m|0,p=7728+(p*28|0)|0,g[m>>2]=g[p>>2],g[m+4>>2]=g[p+4>>2],g[m+8>>2]=g[p+8>>2],g[m+12>>2]=g[p+12>>2]}function Id(p,m){p=p|0,m=m|0;var y=0,S=0;if(m>>>0>20)return m=-1,m|0;do if((g[11152+(m*216|0)>>2]|0)!=(p|0))if((g[11152+(m*216|0)+8>>2]|0)!=(p|0))if((g[11152+(m*216|0)+16>>2]|0)!=(p|0))if((g[11152+(m*216|0)+24>>2]|0)!=(p|0))if((g[11152+(m*216|0)+32>>2]|0)!=(p|0))if((g[11152+(m*216|0)+40>>2]|0)!=(p|0))if((g[11152+(m*216|0)+48>>2]|0)!=(p|0))if((g[11152+(m*216|0)+56>>2]|0)!=(p|0))if((g[11152+(m*216|0)+64>>2]|0)!=(p|0))if((g[11152+(m*216|0)+72>>2]|0)!=(p|0))if((g[11152+(m*216|0)+80>>2]|0)!=(p|0))if((g[11152+(m*216|0)+88>>2]|0)!=(p|0))if((g[11152+(m*216|0)+96>>2]|0)!=(p|0))if((g[11152+(m*216|0)+104>>2]|0)!=(p|0))if((g[11152+(m*216|0)+112>>2]|0)!=(p|0))if((g[11152+(m*216|0)+120>>2]|0)!=(p|0))if((g[11152+(m*216|0)+128>>2]|0)!=(p|0))if((g[11152+(m*216|0)+136>>2]|0)==(p|0))p=2,y=1,S=2;else{if((g[11152+(m*216|0)+144>>2]|0)==(p|0)){p=0,y=2,S=0;break}if((g[11152+(m*216|0)+152>>2]|0)==(p|0)){p=0,y=2,S=1;break}if((g[11152+(m*216|0)+160>>2]|0)==(p|0)){p=0,y=2,S=2;break}if((g[11152+(m*216|0)+168>>2]|0)==(p|0)){p=1,y=2,S=0;break}if((g[11152+(m*216|0)+176>>2]|0)==(p|0)){p=1,y=2,S=1;break}if((g[11152+(m*216|0)+184>>2]|0)==(p|0)){p=1,y=2,S=2;break}if((g[11152+(m*216|0)+192>>2]|0)==(p|0)){p=2,y=2,S=0;break}if((g[11152+(m*216|0)+200>>2]|0)==(p|0)){p=2,y=2,S=1;break}if((g[11152+(m*216|0)+208>>2]|0)==(p|0)){p=2,y=2,S=2;break}else p=-1;return p|0}else p=2,y=1,S=1;else p=2,y=1,S=0;else p=1,y=1,S=2;else p=1,y=1,S=1;else p=1,y=1,S=0;else p=0,y=1,S=2;else p=0,y=1,S=1;else p=0,y=1,S=0;else p=2,y=0,S=2;else p=2,y=0,S=1;else p=2,y=0,S=0;else p=1,y=0,S=2;else p=1,y=0,S=1;else p=1,y=0,S=0;else p=0,y=0,S=2;else p=0,y=0,S=1;else p=0,y=0,S=0;while(!1);return m=g[11152+(m*216|0)+(y*72|0)+(p*24|0)+(S<<3)+4>>2]|0,m|0}function lh(p,m){return p=p|0,m=m|0,(g[7728+(p*28|0)+20>>2]|0)==(m|0)?(m=1,m|0):(m=(g[7728+(p*28|0)+24>>2]|0)==(m|0),m|0)}function $p(p,m){return p=p|0,m=m|0,g[880+(p*28|0)+(m<<2)>>2]|0}function Xp(p,m){return p=p|0,m=m|0,(g[880+(p*28|0)>>2]|0)==(m|0)?(m=0,m|0):(g[880+(p*28|0)+4>>2]|0)==(m|0)?(m=1,m|0):(g[880+(p*28|0)+8>>2]|0)==(m|0)?(m=2,m|0):(g[880+(p*28|0)+12>>2]|0)==(m|0)?(m=3,m|0):(g[880+(p*28|0)+16>>2]|0)==(m|0)?(m=4,m|0):(g[880+(p*28|0)+20>>2]|0)==(m|0)?(m=5,m|0):((g[880+(p*28|0)+24>>2]|0)==(m|0)?6:7)|0}function n_(){return 122}function s_(p){p=p|0;var m=0,y=0,S=0;m=0;do Le(m|0,0,45)|0,S=It()|0|134225919,y=p+(m<<3)|0,g[y>>2]=-1,g[y+4>>2]=S,m=m+1|0;while((m|0)!=122)}function Jm(p){return p=p|0,+Tt[p+16>>3]<+Tt[p+24>>3]|0}function hl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;return y=+Tt[m>>3],!(y>=+Tt[p+8>>3])||!(y<=+Tt[p>>3])?(m=0,m|0):(S=+Tt[p+16>>3],y=+Tt[p+24>>3],I=+Tt[m+8>>3],m=I>=y,p=I<=S&1,S>2]=0,k=k+4|0;while((k|0)<(z|0));return O(m,I),k=I,z=g[k>>2]|0,k=g[k+4>>2]|0,l(z,k,y),d(z,k,S),H=+Rc(y,S+8|0),Tt[y>>3]=+Tt[p>>3],k=y+8|0,Tt[k>>3]=+Tt[p+16>>3],Tt[S>>3]=+Tt[p+8>>3],z=S+8|0,Tt[z>>3]=+Tt[p+24>>3],it=+Rc(y,S),z=~~+Qi(+(it*it/+dl(+ +li(+((+Tt[k>>3]-+Tt[z>>3])/(+Tt[y>>3]-+Tt[S>>3]))),3)/(H*(H*2.59807621135)*.8))),wt=L,(z|0?z:1)|0}function la(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0;z=wt,wt=wt+288|0,S=z+264|0,I=z+96|0,k=z,L=k,H=L+96|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(H|0));return O(y,k),H=k,L=g[H>>2]|0,H=g[H+4>>2]|0,l(L,H,S),d(L,H,I),it=+Rc(S,I+8|0),H=~~+Qi(+(+Rc(p,m)/(it*2))),wt=z,(H|0?H:1)|0}function Cd(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0,g[p>>2]=m,g[p+4>>2]=y,g[p+8>>2]=S}function o_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;Ct=m+8|0,g[Ct>>2]=0,H=+Tt[p>>3],L=+li(+H),it=+Tt[p+8>>3],z=+li(+it)/.8660254037844386,L=L+z*.5,y=~~L,p=~~z,L=L-+(y|0),z=z-+(p|0);do if(L<.5)if(L<.3333333333333333)if(g[m>>2]=y,z<(L+1)*.5){g[m+4>>2]=p;break}else{p=p+1|0,g[m+4>>2]=p;break}else if(zt=1-L,p=(!(z>2]=p,zt<=z&z>2]=y;break}else{g[m>>2]=y;break}else{if(!(L<.6666666666666666))if(y=y+1|0,g[m>>2]=y,z>2]=p;break}else{p=p+1|0,g[m+4>>2]=p;break}if(z<1-L){if(g[m+4>>2]=p,L*2+-1>2]=y;break}}else p=p+1|0,g[m+4>>2]=p;y=y+1|0,g[m>>2]=y}while(!1);do if(H<0)if(p&1){ot=(p+1|0)/2|0,ot=Bd(y|0,((y|0)<0)<<31>>31|0,ot|0,((ot|0)<0)<<31>>31|0)|0,y=~~(+(y|0)-((+(ot>>>0)+4294967296*+(It()|0))*2+1)),g[m>>2]=y;break}else{ot=(p|0)/2|0,ot=Bd(y|0,((y|0)<0)<<31>>31|0,ot|0,((ot|0)<0)<<31>>31|0)|0,y=~~(+(y|0)-(+(ot>>>0)+4294967296*+(It()|0))*2),g[m>>2]=y;break}while(!1);ot=m+4|0,it<0&&(y=y-((p<<1|1|0)/2|0)|0,g[m>>2]=y,p=0-p|0,g[ot>>2]=p),S=p-y|0,(y|0)<0?(I=0-y|0,g[ot>>2]=S,g[Ct>>2]=I,g[m>>2]=0,p=S,y=0):I=0,(p|0)<0&&(y=y-p|0,g[m>>2]=y,I=I-p|0,g[Ct>>2]=I,g[ot>>2]=0,p=0),k=y-I|0,S=p-I|0,(I|0)<0&&(g[m>>2]=k,g[ot>>2]=S,g[Ct>>2]=0,p=S,y=k,I=0),S=(p|0)<(y|0)?p:y,S=(I|0)<(S|0)?I:S,!((S|0)<=0)&&(g[m>>2]=y-S,g[ot>>2]=p-S,g[Ct>>2]=I-S)}function Fs(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,(m|0)<0&&(y=y-m|0,g[L>>2]=y,k=p+8|0,g[k>>2]=(g[k>>2]|0)-m,g[p>>2]=0,m=0),(y|0)<0?(m=m-y|0,g[p>>2]=m,k=p+8|0,I=(g[k>>2]|0)-y|0,g[k>>2]=I,g[L>>2]=0,y=0):(I=p+8|0,k=I,I=g[I>>2]|0),(I|0)<0&&(m=m-I|0,g[p>>2]=m,y=y-I|0,g[L>>2]=y,g[k>>2]=0,I=0),S=(y|0)<(m|0)?y:m,S=(I|0)<(S|0)?I:S,!((S|0)<=0)&&(g[p>>2]=m-S,g[L>>2]=y-S,g[k>>2]=I-S)}function pu(p,m){p=p|0,m=m|0;var y=0,S=0;S=g[p+8>>2]|0,y=+((g[p+4>>2]|0)-S|0),Tt[m>>3]=+((g[p>>2]|0)-S|0)-y*.5,Tt[m+8>>3]=y*.8660254037844386}function In(p,m,y){p=p|0,m=m|0,y=y|0,g[y>>2]=(g[m>>2]|0)+(g[p>>2]|0),g[y+4>>2]=(g[m+4>>2]|0)+(g[p+4>>2]|0),g[y+8>>2]=(g[m+8>>2]|0)+(g[p+8>>2]|0)}function Kp(p,m,y){p=p|0,m=m|0,y=y|0,g[y>>2]=(g[p>>2]|0)-(g[m>>2]|0),g[y+4>>2]=(g[p+4>>2]|0)-(g[m+4>>2]|0),g[y+8>>2]=(g[p+8>>2]|0)-(g[m+8>>2]|0)}function ca(p,m){p=p|0,m=m|0;var y=0,S=0;y=kc(g[p>>2]|0,m)|0,g[p>>2]=y,y=p+4|0,S=kc(g[y>>2]|0,m)|0,g[y>>2]=S,p=p+8|0,m=kc(g[p>>2]|0,m)|0,g[p>>2]=m}function Ba(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;L=g[p>>2]|0,z=(L|0)<0,S=(g[p+4>>2]|0)-(z?L:0)|0,k=(S|0)<0,I=(k?0-S|0:0)+((g[p+8>>2]|0)-(z?L:0))|0,y=(I|0)<0,p=y?0:I,m=(k?0:S)-(y?I:0)|0,I=(z?0:L)-(k?S:0)-(y?I:0)|0,y=(m|0)<(I|0)?m:I,y=(p|0)<(y|0)?p:y,S=(y|0)>0,p=p-(S?y:0)|0,m=m-(S?y:0)|0;t:do switch(I-(S?y:0)|0){case 0:switch(m|0){case 0:return z=p|0?(p|0)==1?1:7:0,z|0;case 1:return z=p|0?(p|0)==1?3:7:2,z|0;default:break t}case 1:switch(m|0){case 0:return z=p|0?(p|0)==1?5:7:4,z|0;case 1:{if(!p)p=6;else break t;return p|0}default:break t}default:}while(!1);return z=7,z|0}function Ld(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;L=p+8|0,y=g[L>>2]|0,m=(g[p>>2]|0)-y|0,z=p+4|0,y=(g[z>>2]|0)-y|0,S=pn(+((m*3|0)-y|0)/7)|0,g[p>>2]=S,m=pn(+((y<<1)+m|0)/7)|0,g[z>>2]=m,g[L>>2]=0,y=m-S|0,(S|0)<0?(k=0-S|0,g[z>>2]=y,g[L>>2]=k,g[p>>2]=0,m=y,S=0,y=k):y=0,(m|0)<0&&(S=S-m|0,g[p>>2]=S,y=y-m|0,g[L>>2]=y,g[z>>2]=0,m=0),k=S-y|0,I=m-y|0,(y|0)<0?(g[p>>2]=k,g[z>>2]=I,g[L>>2]=0,m=I,I=k,y=0):I=S,S=(m|0)<(I|0)?m:I,S=(y|0)<(S|0)?y:S,!((S|0)<=0)&&(g[p>>2]=I-S,g[z>>2]=m-S,g[L>>2]=y-S)}function fl(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;L=p+8|0,y=g[L>>2]|0,m=(g[p>>2]|0)-y|0,z=p+4|0,y=(g[z>>2]|0)-y|0,S=pn(+((m<<1)+y|0)/7)|0,g[p>>2]=S,m=pn(+((y*3|0)-m|0)/7)|0,g[z>>2]=m,g[L>>2]=0,y=m-S|0,(S|0)<0?(k=0-S|0,g[z>>2]=y,g[L>>2]=k,g[p>>2]=0,m=y,S=0,y=k):y=0,(m|0)<0&&(S=S-m|0,g[p>>2]=S,y=y-m|0,g[L>>2]=y,g[z>>2]=0,m=0),k=S-y|0,I=m-y|0,(y|0)<0?(g[p>>2]=k,g[z>>2]=I,g[L>>2]=0,m=I,I=k,y=0):I=S,S=(m|0)<(I|0)?m:I,S=(y|0)<(S|0)?y:S,!((S|0)<=0)&&(g[p>>2]=I-S,g[z>>2]=m-S,g[L>>2]=y-S)}function Fa(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,z=p+8|0,S=g[z>>2]|0,I=y+(m*3|0)|0,g[p>>2]=I,y=S+(y*3|0)|0,g[L>>2]=y,m=(S*3|0)+m|0,g[z>>2]=m,S=y-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=S,g[z>>2]=m,g[p>>2]=0,y=S,S=0):S=I,(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function uh(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=(m*3|0)+I|0,I=y+(I*3|0)|0,g[p>>2]=I,g[L>>2]=S,m=(y*3|0)+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,I=0):y=S,(y|0)<0&&(I=I-y|0,g[p>>2]=I,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=I-m|0,S=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=S,g[z>>2]=0,I=k,m=0):S=y,y=(S|0)<(I|0)?S:I,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=I-y,g[L>>2]=S-y,g[z>>2]=m-y)}function Jp(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;(m+-1|0)>>>0>=6||(I=(g[15472+(m*12|0)>>2]|0)+(g[p>>2]|0)|0,g[p>>2]=I,z=p+4|0,S=(g[15472+(m*12|0)+4>>2]|0)+(g[z>>2]|0)|0,g[z>>2]=S,L=p+8|0,m=(g[15472+(m*12|0)+8>>2]|0)+(g[L>>2]|0)|0,g[L>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[z>>2]=y,g[L>>2]=m,g[p>>2]=0,S=0):(y=S,S=I),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[L>>2]=m,g[z>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[z>>2]=I,g[L>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[z>>2]=I-y,g[L>>2]=m-y))}function t0(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=m+I|0,I=y+I|0,g[p>>2]=I,g[L>>2]=S,m=y+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,S=0):(y=S,S=I),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function hh(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,S=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,I=S+m|0,g[p>>2]=I,S=y+S|0,g[L>>2]=S,m=y+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,S=0):(y=S,S=I),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function za(p){switch(p=p|0,p|0){case 1:{p=5;break}case 5:{p=4;break}case 4:{p=6;break}case 6:{p=2;break}case 2:{p=3;break}case 3:{p=1;break}default:}return p|0}function ro(p){switch(p=p|0,p|0){case 1:{p=3;break}case 3:{p=2;break}case 2:{p=6;break}case 6:{p=4;break}case 4:{p=5;break}case 5:{p=1;break}default:}return p|0}function Ue(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,z=p+8|0,S=g[z>>2]|0,I=y+(m<<1)|0,g[p>>2]=I,y=S+(y<<1)|0,g[L>>2]=y,m=(S<<1)+m|0,g[z>>2]=m,S=y-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=S,g[z>>2]=m,g[p>>2]=0,y=S,S=0):S=I,(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function kd(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=(m<<1)+I|0,I=y+(I<<1)|0,g[p>>2]=I,g[L>>2]=S,m=(y<<1)+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,I=0):y=S,(y|0)<0&&(I=I-y|0,g[p>>2]=I,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=I-m|0,S=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=S,g[z>>2]=0,I=k,m=0):S=y,y=(S|0)<(I|0)?S:I,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=I-y,g[L>>2]=S-y,g[z>>2]=m-y)}function Vl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;return L=(g[p>>2]|0)-(g[m>>2]|0)|0,z=(L|0)<0,S=(g[p+4>>2]|0)-(g[m+4>>2]|0)-(z?L:0)|0,k=(S|0)<0,I=(z?0-L|0:0)+(g[p+8>>2]|0)-(g[m+8>>2]|0)+(k?0-S|0:0)|0,p=(I|0)<0,m=p?0:I,y=(k?0:S)-(p?I:0)|0,I=(z?0:L)-(k?S:0)-(p?I:0)|0,p=(y|0)<(I|0)?y:I,p=(m|0)<(p|0)?m:p,S=(p|0)>0,m=m-(S?p:0)|0,y=y-(S?p:0)|0,p=I-(S?p:0)|0,p=(p|0)>-1?p:0-p|0,y=(y|0)>-1?y:0-y|0,m=(m|0)>-1?m:0-m|0,m=(y|0)>(m|0)?y:m,((p|0)>(m|0)?p:m)|0}function yf(p,m){p=p|0,m=m|0;var y=0;y=g[p+8>>2]|0,g[m>>2]=(g[p>>2]|0)-y,g[m+4>>2]=(g[p+4>>2]|0)-y}function a_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;S=g[p>>2]|0,g[m>>2]=S,p=g[p+4>>2]|0,L=m+4|0,g[L>>2]=p,z=m+8|0,g[z>>2]=0,y=p-S|0,(S|0)<0?(p=0-S|0,g[L>>2]=y,g[z>>2]=p,g[m>>2]=0,S=0):(y=p,p=0),(y|0)<0&&(S=S-y|0,g[m>>2]=S,p=p-y|0,g[z>>2]=p,g[L>>2]=0,y=0),k=S-p|0,I=y-p|0,(p|0)<0?(g[m>>2]=k,g[L>>2]=I,g[z>>2]=0,y=I,I=k,p=0):I=S,S=(y|0)<(I|0)?y:I,S=(p|0)<(S|0)?p:S,!((S|0)<=0)&&(g[m>>2]=I-S,g[L>>2]=y-S,g[z>>2]=p-S)}function Re(p){p=p|0;var m=0,y=0,S=0,I=0;m=p+8|0,I=g[m>>2]|0,y=I-(g[p>>2]|0)|0,g[p>>2]=y,S=p+4|0,p=(g[S>>2]|0)-I|0,g[S>>2]=p,g[m>>2]=0-(p+y)}function e0(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;y=g[p>>2]|0,m=0-y|0,g[p>>2]=m,L=p+8|0,g[L>>2]=0,z=p+4|0,S=g[z>>2]|0,I=S+y|0,(y|0)>0?(g[z>>2]=I,g[L>>2]=y,g[p>>2]=0,m=0,S=I):y=0,(S|0)<0?(k=m-S|0,g[p>>2]=k,y=y-S|0,g[L>>2]=y,g[z>>2]=0,I=k-y|0,m=0-y|0,(y|0)<0?(g[p>>2]=I,g[z>>2]=m,g[L>>2]=0,S=m,y=0):(S=0,I=k)):I=m,m=(S|0)<(I|0)?S:I,m=(y|0)<(m|0)?y:m,!((m|0)<=0)&&(g[p>>2]=I-m,g[z>>2]=S-m,g[L>>2]=y-m)}function r0(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;S=wt,wt=wt+16|0,I=S,Ix(p,m,y,I),o_(I,y+4|0),wt=S}function Ix(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0;if(H=wt,wt=wt+32|0,k=H,jl(p,k),g[y>>2]=0,I=+jr(15888,k),L=+jr(15912,k),L>2]=1,I=L),L=+jr(15936,k),L>2]=2,I=L),L=+jr(15960,k),L>2]=3,I=L),L=+jr(15984,k),L>2]=4,I=L),L=+jr(16008,k),L>2]=5,I=L),L=+jr(16032,k),L>2]=6,I=L),L=+jr(16056,k),L>2]=7,I=L),L=+jr(16080,k),L>2]=8,I=L),L=+jr(16104,k),L>2]=9,I=L),L=+jr(16128,k),L>2]=10,I=L),L=+jr(16152,k),L>2]=11,I=L),L=+jr(16176,k),L>2]=12,I=L),L=+jr(16200,k),L>2]=13,I=L),L=+jr(16224,k),L>2]=14,I=L),L=+jr(16248,k),L>2]=15,I=L),L=+jr(16272,k),L>2]=16,I=L),L=+jr(16296,k),L>2]=17,I=L),L=+jr(16320,k),L>2]=18,I=L),L=+jr(16344,k),L>2]=19,I=L),L=+mf(+(1-I*.5)),L<1e-16){g[S>>2]=0,g[S+4>>2]=0,g[S+8>>2]=0,g[S+12>>2]=0,wt=H;return}if(y=g[y>>2]|0,I=+Tt[16368+(y*24|0)>>3],I=+dh(I-+dh(+Rd(15568+(y<<4)|0,p))),Go(m)|0?z=+dh(I+-.3334731722518321):z=I,I=+go(+L)/.381966011250105,(m|0)>0){k=0;do I=I*2.6457513110645907,k=k+1|0;while((k|0)!=(m|0))}L=+Ur(+z)*I,Tt[S>>3]=L,z=+hi(+z)*I,Tt[S+8>>3]=z,wt=H}function fh(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0;if(k=+cs(p),k<1e-16){m=15568+(m<<4)|0,g[I>>2]=g[m>>2],g[I+4>>2]=g[m+4>>2],g[I+8>>2]=g[m+8>>2],g[I+12>>2]=g[m+12>>2];return}if(L=+qr(+ +Tt[p+8>>3],+ +Tt[p>>3]),(y|0)>0){p=0;do k=k/2.6457513110645907,p=p+1|0;while((p|0)!=(y|0))}S?(k=k/3,y=(Go(y)|0)==0,k=+Sd(+((y?k:k/2.6457513110645907)*.381966011250105))):(k=+Sd(+(k*.381966011250105)),Go(y)|0&&(L=+dh(L+.3334731722518321))),a0(15568+(m<<4)|0,+dh(+Tt[16368+(m*24|0)>>3]-L),k,I)}function l_(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;S=wt,wt=wt+16|0,I=S,pu(p+4|0,I),fh(I,g[p>>2]|0,m,0,y),wt=S}function i0(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0,Ei=0,vn=0,An=0,Or=0;if(vn=wt,wt=wt+272|0,k=vn+256|0,Jt=vn+240|0,Mi=vn,cn=vn+224|0,Ei=vn+208|0,_e=vn+176|0,Nt=vn+160|0,Ze=vn+192|0,Ke=vn+144|0,be=vn+128|0,ze=vn+112|0,Zr=vn+96|0,Gi=vn+80|0,g[k>>2]=m,g[Jt>>2]=g[p>>2],g[Jt+4>>2]=g[p+4>>2],g[Jt+8>>2]=g[p+8>>2],g[Jt+12>>2]=g[p+12>>2],n0(Jt,k,Mi),g[I>>2]=0,Jt=S+y+((S|0)==5&1)|0,(Jt|0)<=(y|0)){wt=vn;return}H=g[k>>2]|0,it=cn+4|0,ot=_e+4|0,Ct=y+5|0,zt=16848+(H<<2)|0,Gt=16928+(H<<2)|0,ee=be+8|0,ie=ze+8|0,Ce=Zr+8|0,Ve=Ei+4|0,z=y;t:for(;;){L=Mi+(((z|0)%5|0)<<4)|0,g[Ei>>2]=g[L>>2],g[Ei+4>>2]=g[L+4>>2],g[Ei+8>>2]=g[L+8>>2],g[Ei+12>>2]=g[L+12>>2];do;while((vf(Ei,H,0,1)|0)==2);if((z|0)>(y|0)&(Go(m)|0)!=0){if(g[_e>>2]=g[Ei>>2],g[_e+4>>2]=g[Ei+4>>2],g[_e+8>>2]=g[Ei+8>>2],g[_e+12>>2]=g[Ei+12>>2],pu(it,Nt),S=g[_e>>2]|0,k=g[17008+(S*80|0)+(g[cn>>2]<<2)>>2]|0,g[_e>>2]=g[18608+(S*80|0)+(k*20|0)>>2],L=g[18608+(S*80|0)+(k*20|0)+16>>2]|0,(L|0)>0){p=0;do t0(ot),p=p+1|0;while((p|0)<(L|0))}switch(L=18608+(S*80|0)+(k*20|0)+4|0,g[Ze>>2]=g[L>>2],g[Ze+4>>2]=g[L+4>>2],g[Ze+8>>2]=g[L+8>>2],ca(Ze,(g[zt>>2]|0)*3|0),In(ot,Ze,ot),Fs(ot),pu(ot,Ke),An=+(g[Gt>>2]|0),Tt[be>>3]=An*3,Tt[ee>>3]=0,Or=An*-1.5,Tt[ze>>3]=Or,Tt[ie>>3]=An*2.598076211353316,Tt[Zr>>3]=Or,Tt[Ce>>3]=An*-2.598076211353316,g[17008+((g[_e>>2]|0)*80|0)+(g[Ei>>2]<<2)>>2]|0){case 1:{p=ze,S=be;break}case 3:{p=Zr,S=ze;break}case 2:{p=be,S=Zr;break}default:{p=12;break t}}Dn(Nt,Ke,S,p,Gi),fh(Gi,g[_e>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1}if((z|0)<(Ct|0)&&(pu(Ve,_e),fh(_e,g[Ei>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1),g[cn>>2]=g[Ei>>2],g[cn+4>>2]=g[Ei+4>>2],g[cn+8>>2]=g[Ei+8>>2],g[cn+12>>2]=g[Ei+12>>2],z=z+1|0,(z|0)>=(Jt|0)){p=3;break}}if((p|0)==3){wt=vn;return}else(p|0)==12&&Ti(22474,22521,581,22531)}function n0(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0;H=wt,wt=wt+128|0,S=H+64|0,I=H,k=S,L=20208,z=k+60|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));k=I,L=20272,z=k+60|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));z=(Go(g[m>>2]|0)|0)==0,S=z?S:I,I=p+4|0,Ue(I),kd(I),Go(g[m>>2]|0)|0&&(uh(I),g[m>>2]=(g[m>>2]|0)+1),g[y>>2]=g[p>>2],m=y+4|0,In(I,S,m),Fs(m),g[y+16>>2]=g[p>>2],m=y+20|0,In(I,S+12|0,m),Fs(m),g[y+32>>2]=g[p>>2],m=y+36|0,In(I,S+24|0,m),Fs(m),g[y+48>>2]=g[p>>2],m=y+52|0,In(I,S+36|0,m),Fs(m),g[y+64>>2]=g[p>>2],y=y+68|0,In(I,S+48|0,y),Fs(y),wt=H}function vf(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0;if(ee=wt,wt=wt+32|0,zt=ee+12|0,z=ee,Gt=p+4|0,Ct=g[16928+(m<<2)>>2]|0,ot=(S|0)!=0,Ct=ot?Ct*3|0:Ct,I=g[Gt>>2]|0,it=p+8|0,L=g[it>>2]|0,ot){if(k=p+12|0,S=g[k>>2]|0,I=L+I+S|0,(I|0)==(Ct|0))return Gt=1,wt=ee,Gt|0;H=k}else H=p+12|0,S=g[H>>2]|0,I=L+I+S|0;if((I|0)<=(Ct|0))return Gt=0,wt=ee,Gt|0;do if((S|0)>0){if(S=g[p>>2]|0,(L|0)>0){k=18608+(S*80|0)+60|0,S=p;break}S=18608+(S*80|0)+40|0,y?(Cd(zt,Ct,0,0),Kp(Gt,zt,z),hh(z),In(z,zt,Gt),k=S,S=p):(k=S,S=p)}else k=18608+((g[p>>2]|0)*80|0)+20|0,S=p;while(!1);if(g[S>>2]=g[k>>2],I=k+16|0,(g[I>>2]|0)>0){S=0;do t0(Gt),S=S+1|0;while((S|0)<(g[I>>2]|0))}return p=k+4|0,g[zt>>2]=g[p>>2],g[zt+4>>2]=g[p+4>>2],g[zt+8>>2]=g[p+8>>2],m=g[16848+(m<<2)>>2]|0,ca(zt,ot?m*3|0:m),In(Gt,zt,Gt),Fs(Gt),ot?S=((g[it>>2]|0)+(g[Gt>>2]|0)+(g[H>>2]|0)|0)==(Ct|0)?1:2:S=2,Gt=S,wt=ee,Gt|0}function s0(p,m){p=p|0,m=m|0;var y=0;do y=vf(p,m,0,1)|0;while((y|0)==2);return y|0}function tA(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0;if(Zr=wt,wt=wt+240|0,k=Zr+224|0,Ze=Zr+208|0,Ke=Zr,be=Zr+192|0,ze=Zr+176|0,Ce=Zr+160|0,Ve=Zr+144|0,Jt=Zr+128|0,_e=Zr+112|0,Nt=Zr+96|0,g[k>>2]=m,g[Ze>>2]=g[p>>2],g[Ze+4>>2]=g[p+4>>2],g[Ze+8>>2]=g[p+8>>2],g[Ze+12>>2]=g[p+12>>2],eA(Ze,k,Ke),g[I>>2]=0,ie=S+y+((S|0)==6&1)|0,(ie|0)<=(y|0)){wt=Zr;return}H=g[k>>2]|0,it=y+6|0,ot=16928+(H<<2)|0,Ct=Ve+8|0,zt=Jt+8|0,Gt=_e+8|0,ee=be+4|0,L=0,z=y,S=-1;t:for(;;){if(k=(z|0)%6|0,p=Ke+(k<<4)|0,g[be>>2]=g[p>>2],g[be+4>>2]=g[p+4>>2],g[be+8>>2]=g[p+8>>2],g[be+12>>2]=g[p+12>>2],p=L,L=vf(be,H,0,1)|0,(z|0)>(y|0)&(Go(m)|0)!=0&&(p|0)!=1&&(g[be>>2]|0)!=(S|0)){switch(pu(Ke+(((k+5|0)%6|0)<<4)+4|0,ze),pu(Ke+(k<<4)+4|0,Ce),Gi=+(g[ot>>2]|0),Tt[Ve>>3]=Gi*3,Tt[Ct>>3]=0,Mi=Gi*-1.5,Tt[Jt>>3]=Mi,Tt[zt>>3]=Gi*2.598076211353316,Tt[_e>>3]=Mi,Tt[Gt>>3]=Gi*-2.598076211353316,k=g[Ze>>2]|0,g[17008+(k*80|0)+(((S|0)==(k|0)?g[be>>2]|0:S)<<2)>>2]|0){case 1:{p=Jt,S=Ve;break}case 3:{p=_e,S=Jt;break}case 2:{p=Ve,S=_e;break}default:{p=8;break t}}Dn(ze,Ce,S,p,Nt),!(Wo(ze,Nt)|0)&&!(Wo(Ce,Nt)|0)&&(fh(Nt,g[Ze>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1)}if((z|0)<(it|0)&&(pu(ee,ze),fh(ze,g[be>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1),z=z+1|0,(z|0)>=(ie|0)){p=3;break}else S=g[be>>2]|0}if((p|0)==3){wt=Zr;return}else(p|0)==8&&Ti(22557,22521,746,22602)}function eA(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0;H=wt,wt=wt+160|0,S=H+80|0,I=H,k=S,L=20336,z=k+72|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));k=I,L=20416,z=k+72|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));z=(Go(g[m>>2]|0)|0)==0,S=z?S:I,I=p+4|0,Ue(I),kd(I),Go(g[m>>2]|0)|0&&(uh(I),g[m>>2]=(g[m>>2]|0)+1),g[y>>2]=g[p>>2],m=y+4|0,In(I,S,m),Fs(m),g[y+16>>2]=g[p>>2],m=y+20|0,In(I,S+12|0,m),Fs(m),g[y+32>>2]=g[p>>2],m=y+36|0,In(I,S+24|0,m),Fs(m),g[y+48>>2]=g[p>>2],m=y+52|0,In(I,S+36|0,m),Fs(m),g[y+64>>2]=g[p>>2],m=y+68|0,In(I,S+48|0,m),Fs(m),g[y+80>>2]=g[p>>2],y=y+84|0,In(I,S+60|0,y),Fs(y),wt=H}function dh(p){p=+p;var m=0;return m=p<0?p+6.283185307179586:p,+(p>=6.283185307179586?m+-6.283185307179586:m)}function ls(p,m){return p=p|0,m=m|0,+li(+(+Tt[p>>3]-+Tt[m>>3]))<17453292519943298e-27?(m=+li(+(+Tt[p+8>>3]-+Tt[m+8>>3]))<17453292519943298e-27,m|0):(m=0,m|0)}function Au(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;return I=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((I-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+I)*+Ur(+S)*y),+(+qr(+ +_n(+y),+ +_n(+(1-y)))*2)}function Rc(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;return I=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((I-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+I)*+Ur(+S)*y),+(+qr(+ +_n(+y),+ +_n(+(1-y)))*2*6371.007180918475)}function o0(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;return I=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((I-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+I)*+Ur(+S)*y),+(+qr(+ +_n(+y),+ +_n(+(1-y)))*2*6371.007180918475*1e3)}function Rd(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;return k=+Tt[m>>3],S=+Ur(+k),I=+Tt[m+8>>3]-+Tt[p+8>>3],L=S*+hi(+I),y=+Tt[p>>3],+ +qr(+L,+(+hi(+k)*+Ur(+y)-+Ur(+I)*(S*+hi(+y))))}function a0(p,m,y,S){p=p|0,m=+m,y=+y,S=S|0;var I=0,k=0,L=0,z=0;if(y<1e-16){g[S>>2]=g[p>>2],g[S+4>>2]=g[p+4>>2],g[S+8>>2]=g[p+8>>2],g[S+12>>2]=g[p+12>>2];return}k=m<0?m+6.283185307179586:m,k=m>=6.283185307179586?k+-6.283185307179586:k;do if(k<1e-16)m=+Tt[p>>3]+y,Tt[S>>3]=m,I=S;else{if(I=+li(+(k+-3.141592653589793))<1e-16,m=+Tt[p>>3],I){m=m-y,Tt[S>>3]=m,I=S;break}if(L=+Ur(+y),y=+hi(+y),m=L*+hi(+m)+ +Ur(+k)*(y*+Ur(+m)),m=m>1?1:m,m=+t_(+(m<-1?-1:m)),Tt[S>>3]=m,+li(+(m+-1.5707963267948966))<1e-16){Tt[S>>3]=1.5707963267948966,Tt[S+8>>3]=0;return}if(+li(+(m+1.5707963267948966))<1e-16){Tt[S>>3]=-1.5707963267948966,Tt[S+8>>3]=0;return}if(z=+Ur(+m),k=y*+hi(+k)/z,y=+Tt[p>>3],m=(L-+hi(+m)*+hi(+y))/+Ur(+y)/z,L=k>1?1:k,m=m>1?1:m,m=+Tt[p+8>>3]+ +qr(+(L<-1?-1:L),+(m<-1?-1:m)),m>3.141592653589793)do m=m+-6.283185307179586;while(m>3.141592653589793);if(m<-3.141592653589793)do m=m+6.283185307179586;while(m<-3.141592653589793);Tt[S+8>>3]=m;return}while(!1);if(+li(+(m+-1.5707963267948966))<1e-16){Tt[I>>3]=1.5707963267948966,Tt[S+8>>3]=0;return}if(+li(+(m+1.5707963267948966))<1e-16){Tt[I>>3]=-1.5707963267948966,Tt[S+8>>3]=0;return}if(m=+Tt[p+8>>3],m>3.141592653589793)do m=m+-6.283185307179586;while(m>3.141592653589793);if(m<-3.141592653589793)do m=m+6.283185307179586;while(m<-3.141592653589793);Tt[S+8>>3]=m}function c_(p){return p=p|0,+ +Tt[20496+(p<<3)>>3]}function ua(p){return p=p|0,+ +Tt[20624+(p<<3)>>3]}function ln(p){return p=p|0,+ +Tt[20752+(p<<3)>>3]}function rA(p){return p=p|0,+ +Tt[20880+(p<<3)>>3]}function l0(p){p=p|0;var m=0;return m=21008+(p<<3)|0,p=g[m>>2]|0,$e(g[m+4>>2]|0),p|0}function ph(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;return zt=+Tt[m>>3],ot=+Tt[p>>3],H=+hi(+((zt-ot)*.5)),k=+Tt[m+8>>3],it=+Tt[p+8>>3],L=+hi(+((k-it)*.5)),z=+Ur(+ot),Ct=+Ur(+zt),L=H*H+L*(Ct*z*L),L=+qr(+ +_n(+L),+ +_n(+(1-L)))*2,H=+Tt[y>>3],zt=+hi(+((H-zt)*.5)),S=+Tt[y+8>>3],k=+hi(+((S-k)*.5)),I=+Ur(+H),k=zt*zt+k*(Ct*I*k),k=+qr(+ +_n(+k),+ +_n(+(1-k)))*2,H=+hi(+((ot-H)*.5)),S=+hi(+((it-S)*.5)),S=H*H+S*(z*I*S),S=+qr(+ +_n(+S),+ +_n(+(1-S)))*2,I=(L+k+S)*.5,+(+Sd(+ +_n(+(+go(+(I*.5))*+go(+((I-L)*.5))*+go(+((I-k)*.5))*+go(+((I-S)*.5)))))*4)}function u_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,I=k,l(p,m,S),d(p,m,I),m=g[I>>2]|0,(m|0)<=0)return y=0,wt=k,+y;if(y=+ph(I+8|0,I+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)==1)return wt=k,+y;p=1;do L=p,p=p+1|0,y=y+ +ph(I+8+(L<<4)|0,I+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0));return wt=k,+y}function h_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,I=k,l(p,m,S),d(p,m,I),m=g[I>>2]|0,(m|0)>0){if(y=+ph(I+8|0,I+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)!=1){p=1;do L=p,p=p+1|0,y=y+ +ph(I+8+(L<<4)|0,I+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0))}}else y=0;return wt=k,+(y*6371.007180918475*6371.007180918475)}function Cx(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,I=k,l(p,m,S),d(p,m,I),m=g[I>>2]|0,(m|0)>0){if(y=+ph(I+8|0,I+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)!=1){p=1;do L=p,p=p+1|0,y=y+ +ph(I+8+(L<<4)|0,I+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0))}}else y=0;return wt=k,+(y*6371.007180918475*6371.007180918475*1e3*1e3)}function _o(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return I=0,wt=L,+I;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],I=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=I,I=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((I-z)*.5)),z=it*it+z*(+Ur(+S)*+Ur(+H)*z),y=y+ +qr(+ +_n(+z),+ +_n(+(1-z)))*2;while((p|0)<(m|0));return wt=L,+y}function iA(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return I=0,wt=L,+I;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],I=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=I,I=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((I-z)*.5)),z=it*it+z*(+Ur(+H)*+Ur(+S)*z),y=y+ +qr(+ +_n(+z),+ +_n(+(1-z)))*2;while((p|0)!=(m|0));return it=y*6371.007180918475,wt=L,+it}function rr(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return I=0,wt=L,+I;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],I=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=I,I=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((I-z)*.5)),z=it*it+z*(+Ur(+H)*+Ur(+S)*z),y=y+ +qr(+ +_n(+z),+ +_n(+(1-z)))*2;while((p|0)!=(m|0));return it=y*6371.007180918475*1e3,wt=L,+it}function fr(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,52)|0,It()|0,m&15|0}function xf(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,45)|0,It()|0,m&127|0}function nA(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;if(!(!0&(m&-16777216|0)==134217728)||(L=me(p|0,m|0,45)|0,It()|0,L=L&127,L>>>0>121))return m=0,m|0;y=me(p|0,m|0,52)|0,It()|0,y=y&15;do if(y|0){for(I=1,S=0;;){if(k=me(p|0,m|0,(15-I|0)*3|0)|0,It()|0,k=k&7,(k|0)!=0&(S^1))if((k|0)==1&(fi(L)|0)!=0){z=0,S=13;break}else S=1;if((k|0)==7){z=0,S=13;break}if(I>>>0>>0)I=I+1|0;else{S=9;break}}if((S|0)==9){if((y|0)==15)z=1;else break;return z|0}else if((S|0)==13)return z|0}while(!1);for(;;){if(z=me(p|0,m|0,(14-y|0)*3|0)|0,It()|0,!((z&7|0)==7&!0)){z=0,S=13;break}if(y>>>0<14)y=y+1|0;else{z=1,S=13;break}}return(S|0)==13?z|0:0}function Dd(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,(S|0)>=(y|0)){if((S|0)!=(y|0))if(y>>>0<=15){if(I=Le(y|0,0,52)|0,p=I|p,m=It()|0|m&-15728641,(S|0)>(y|0))do I=Le(7,0,(14-y|0)*3|0)|0,y=y+1|0,p=I|p,m=It()|0|m;while((y|0)<(S|0))}else m=0,p=0}else m=0,p=0;return $e(m|0),p|0}function Gn(p,m,y){return p=p|0,m=m|0,y=y|0,p=me(p|0,m|0,52)|0,It()|0,p=p&15,(y|0)<16&(p|0)<=(y|0)?(y=We(7,y-p|0)|0,y|0):(y=0,y|0)}function io(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(L=me(p|0,m|0,52)|0,It()|0,L=L&15,!!((y|0)<16&(L|0)<=(y|0))){if((L|0)==(y|0)){y=S,g[y>>2]=p,g[y+4>>2]=m;return}if(H=We(7,y-L|0)|0,it=(H|0)/7|0,z=me(p|0,m|0,45)|0,It()|0,!(fi(z&127)|0))k=0;else{t:do if(!L)I=0;else for(k=1;;){if(I=me(p|0,m|0,(15-k|0)*3|0)|0,It()|0,I=I&7,I|0)break t;if(k>>>0>>0)k=k+1|0;else{I=0;break}}while(!1);k=(I|0)==0}if(ot=Le(L+1|0,0,52)|0,I=It()|0|m&-15728641,z=(14-L|0)*3|0,m=Le(7,0,z|0)|0,m=(ot|p)&~m,L=I&~(It()|0),io(m,L,y,S),I=S+(it<<3)|0,!k){ot=Le(1,0,z|0)|0,io(ot|m,It()|0|L,y,I),ot=I+(it<<3)|0,H=Le(2,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(3,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(4,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(5,0,z|0)|0,io(H|m,It()|0|L,y,ot),H=Le(6,0,z|0)|0,io(H|m,It()|0|L,y,ot+(it<<3)|0);return}k=I+(it<<3)|0,(H|0)>6&&(H=I+8|0,ot=(k>>>0>H>>>0?k:H)+-1+(0-I)|0,Dc(I|0,0,ot+8&-8|0)|0,I=H+(ot>>>3<<3)|0),ot=Le(2,0,z|0)|0,io(ot|m,It()|0|L,y,I),ot=I+(it<<3)|0,H=Le(3,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(4,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(5,0,z|0)|0,io(H|m,It()|0|L,y,ot),H=Le(6,0,z|0)|0,io(H|m,It()|0|L,y,ot+(it<<3)|0)}}function Ui(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;if(I=me(p|0,m|0,45)|0,It()|0,!(fi(I&127)|0))return I=0,I|0;I=me(p|0,m|0,52)|0,It()|0,I=I&15;t:do if(!I)y=0;else for(S=1;;){if(y=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,y=y&7,y|0)break t;if(S>>>0>>0)S=S+1|0;else{y=0;break}}while(!1);return I=(y|0)==0&1,I|0}function f_(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,(y|0)<16&(S|0)<=(y|0)){if((S|0)!=(y|0)&&(I=Le(y|0,0,52)|0,p=I|p,m=It()|0|m&-15728641,(S|0)<(y|0)))do I=Le(7,0,(14-S|0)*3|0)|0,S=S+1|0,p=p&~I,m=m&~(It()|0);while((S|0)<(y|0))}else m=0,p=0;return $e(m|0),p|0}function Ah(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0;if(!y)return be=0,be|0;if(I=p,S=g[I>>2]|0,I=g[I+4>>2]|0,!0&(I&15728640|0)==0){if((y|0)<=0||(be=m,g[be>>2]=S,g[be+4>>2]=I,(y|0)==1))return be=0,be|0;S=1;do Ze=p+(S<<3)|0,Ke=g[Ze+4>>2]|0,be=m+(S<<3)|0,g[be>>2]=g[Ze>>2],g[be+4>>2]=Ke,S=S+1|0;while((S|0)!=(y|0));return S=0,S|0}if(Ze=y<<3,Ke=no(Ze)|0,!Ke)return be=-3,be|0;if(Ua(Ke|0,p|0,Ze|0)|0,Nt=Na(y,8)|0,!Nt)return Gr(Ke),be=-3,be|0;S=y;t:for(;;){L=Ke,ot=g[L>>2]|0,L=g[L+4>>2]|0,Jt=me(ot|0,L|0,52)|0,It()|0,Jt=Jt&15,_e=Jt+-1|0,Ve=(S|0)>0;e:do if(Ve){if(Ce=((S|0)<0)<<31>>31,ee=Le(_e|0,0,52)|0,ie=It()|0,_e>>>0>15)for(I=0,p=ot,y=L;;){if(!((p|0)==0&(y|0)==0)){if(k=me(p|0,y|0,52)|0,It()|0,k=k&15,z=(k|0)<(_e|0),k=(k|0)==(_e|0),it=z?0:k?p:0,p=z?0:k?y:0,y=qo(it|0,p|0,S|0,Ce|0)|0,It()|0,k=Nt+(y<<3)|0,z=k,H=g[z>>2]|0,z=g[z+4>>2]|0,(H|0)==0&(z|0)==0)y=it;else for(ee=0,Gt=y,zt=z,y=it;;){if((ee|0)>(S|0)){be=41;break t}if((H|0)==(y|0)&(zt&-117440513|0)==(p|0)){it=me(H|0,zt|0,56)|0,It()|0,it=it&7,Ct=it+1|0,ie=me(H|0,zt|0,45)|0,It()|0;r:do if(!(fi(ie&127)|0))z=7;else{if(H=me(H|0,zt|0,52)|0,It()|0,H=H&15,!H){z=6;break}for(z=1;;){if(ie=Le(7,0,(15-z|0)*3|0)|0,!((ie&y|0)==0&((It()|0)&p|0)==0)){z=7;break r}if(z>>>0>>0)z=z+1|0;else{z=6;break}}}while(!1);if((it+2|0)>>>0>z>>>0){be=51;break t}ie=Le(Ct|0,0,56)|0,p=It()|0|p&-117440513,z=k,g[z>>2]=0,g[z+4>>2]=0,z=Gt,y=ie|y}else z=(Gt+1|0)%(S|0)|0;if(k=Nt+(z<<3)|0,zt=k,H=g[zt>>2]|0,zt=g[zt+4>>2]|0,(H|0)==0&(zt|0)==0)break;ee=ee+1|0,Gt=z}ie=k,g[ie>>2]=y,g[ie+4>>2]=p}if(I=I+1|0,(I|0)>=(S|0))break e;y=Ke+(I<<3)|0,p=g[y>>2]|0,y=g[y+4>>2]|0}for(I=0,p=ot,y=L;;){if(!((p|0)==0&(y|0)==0)){if(z=me(p|0,y|0,52)|0,It()|0,z=z&15,(z|0)>=(_e|0)){if((z|0)!=(_e|0)&&(p=p|ee,y=y&-15728641|ie,z>>>0>=Jt>>>0)){k=_e;do Gt=Le(7,0,(14-k|0)*3|0)|0,k=k+1|0,p=Gt|p,y=It()|0|y;while(k>>>0>>0)}}else p=0,y=0;if(z=qo(p|0,y|0,S|0,Ce|0)|0,It()|0,k=Nt+(z<<3)|0,H=k,it=g[H>>2]|0,H=g[H+4>>2]|0,!((it|0)==0&(H|0)==0))for(Gt=0;;){if((Gt|0)>(S|0)){be=41;break t}if((it|0)==(p|0)&(H&-117440513|0)==(y|0)){Ct=me(it|0,H|0,56)|0,It()|0,Ct=Ct&7,zt=Ct+1|0,ze=me(it|0,H|0,45)|0,It()|0;r:do if(!(fi(ze&127)|0))H=7;else{if(it=me(it|0,H|0,52)|0,It()|0,it=it&15,!it){H=6;break}for(H=1;;){if(ze=Le(7,0,(15-H|0)*3|0)|0,!((ze&p|0)==0&((It()|0)&y|0)==0)){H=7;break r}if(H>>>0>>0)H=H+1|0;else{H=6;break}}}while(!1);if((Ct+2|0)>>>0>H>>>0){be=51;break t}ze=Le(zt|0,0,56)|0,y=It()|0|y&-117440513,zt=k,g[zt>>2]=0,g[zt+4>>2]=0,p=ze|p}else z=(z+1|0)%(S|0)|0;if(k=Nt+(z<<3)|0,H=k,it=g[H>>2]|0,H=g[H+4>>2]|0,(it|0)==0&(H|0)==0)break;Gt=Gt+1|0}ze=k,g[ze>>2]=p,g[ze+4>>2]=y}if(I=I+1|0,(I|0)>=(S|0))break e;y=Ke+(I<<3)|0,p=g[y>>2]|0,y=g[y+4>>2]|0}}while(!1);if((S+5|0)>>>0<11){be=99;break}if(ie=Na((S|0)/6|0,8)|0,!ie){be=58;break}e:do if(Ve){Gt=0,zt=0;do{if(z=Nt+(Gt<<3)|0,p=z,I=g[p>>2]|0,p=g[p+4>>2]|0,!((I|0)==0&(p|0)==0)){H=me(I|0,p|0,56)|0,It()|0,H=H&7,y=H+1|0,it=p&-117440513,ze=me(I|0,p|0,45)|0,It()|0;r:do if(fi(ze&127)|0){if(Ct=me(I|0,p|0,52)|0,It()|0,Ct=Ct&15,Ct|0)for(k=1;;){if(ze=Le(7,0,(15-k|0)*3|0)|0,!((I&ze|0)==0&(it&(It()|0)|0)==0))break r;if(k>>>0>>0)k=k+1|0;else break}p=Le(y|0,0,56)|0,I=p|I,p=It()|0|it,y=z,g[y>>2]=I,g[y+4>>2]=p,y=H+2|0}while(!1);(y|0)==7&&(ze=ie+(zt<<3)|0,g[ze>>2]=I,g[ze+4>>2]=p&-117440513,zt=zt+1|0)}Gt=Gt+1|0}while((Gt|0)!=(S|0));if(Ve){if(ee=((S|0)<0)<<31>>31,Ct=Le(_e|0,0,52)|0,Gt=It()|0,_e>>>0>15)for(p=0,I=0;;){do if(!((ot|0)==0&(L|0)==0)){for(H=me(ot|0,L|0,52)|0,It()|0,H=H&15,k=(H|0)<(_e|0),H=(H|0)==(_e|0),z=k?0:H?ot:0,H=k?0:H?L:0,k=qo(z|0,H|0,S|0,ee|0)|0,It()|0,y=0;;){if((y|0)>(S|0)){be=98;break t}if(ze=Nt+(k<<3)|0,it=g[ze+4>>2]|0,(it&-117440513|0)==(H|0)&&(g[ze>>2]|0)==(z|0)){be=70;break}if(k=(k+1|0)%(S|0)|0,ze=Nt+(k<<3)|0,(g[ze>>2]|0)==(z|0)&&(g[ze+4>>2]|0)==(H|0))break;y=y+1|0}if((be|0)==70&&(be=0,!0&(it&117440512|0)==100663296))break;ze=m+(I<<3)|0,g[ze>>2]=ot,g[ze+4>>2]=L,I=I+1|0}while(!1);if(p=p+1|0,(p|0)>=(S|0)){S=zt;break e}L=Ke+(p<<3)|0,ot=g[L>>2]|0,L=g[L+4>>2]|0}for(p=0,I=0;;){do if(!((ot|0)==0&(L|0)==0)){if(H=me(ot|0,L|0,52)|0,It()|0,H=H&15,(H|0)>=(_e|0))if((H|0)!=(_e|0))if(y=ot|Ct,k=L&-15728641|Gt,H>>>0>>0)H=k;else{z=_e;do ze=Le(7,0,(14-z|0)*3|0)|0,z=z+1|0,y=ze|y,k=It()|0|k;while(z>>>0>>0);H=k}else y=ot,H=L;else y=0,H=0;for(z=qo(y|0,H|0,S|0,ee|0)|0,It()|0,k=0;;){if((k|0)>(S|0)){be=98;break t}if(ze=Nt+(z<<3)|0,it=g[ze+4>>2]|0,(it&-117440513|0)==(H|0)&&(g[ze>>2]|0)==(y|0)){be=93;break}if(z=(z+1|0)%(S|0)|0,ze=Nt+(z<<3)|0,(g[ze>>2]|0)==(y|0)&&(g[ze+4>>2]|0)==(H|0))break;k=k+1|0}if((be|0)==93&&(be=0,!0&(it&117440512|0)==100663296))break;ze=m+(I<<3)|0,g[ze>>2]=ot,g[ze+4>>2]=L,I=I+1|0}while(!1);if(p=p+1|0,(p|0)>=(S|0)){S=zt;break e}L=Ke+(p<<3)|0,ot=g[L>>2]|0,L=g[L+4>>2]|0}}else I=0,S=zt}else I=0,S=0;while(!1);if(Dc(Nt|0,0,Ze|0)|0,Ua(Ke|0,ie|0,S<<3|0)|0,Gr(ie),S)m=m+(I<<3)|0;else break}return(be|0)==41?(Gr(Ke),Gr(Nt),ze=-1,ze|0):(be|0)==51?(Gr(Ke),Gr(Nt),ze=-2,ze|0):(be|0)==58?(Gr(Ke),Gr(Nt),ze=-3,ze|0):(be|0)==98?(Gr(ie),Gr(Ke),Gr(Nt),ze=-1,ze|0):((be|0)==99&&Ua(m|0,Ke|0,S<<3|0)|0,Gr(Ke),Gr(Nt),ze=0,ze|0)}function Cn(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0;if((m|0)<=0)return I=0,I|0;if((I|0)>=16){for(k=0;;){if(ot=p+(k<<3)|0,!((g[ot>>2]|0)==0&(g[ot+4>>2]|0)==0)){k=14;break}if(k=k+1|0,(k|0)>=(m|0)){L=0,k=16;break}}if((k|0)==14)return((S|0)>0?-2:-1)|0;if((k|0)==16)return L|0}k=0,ot=0;t:for(;;){it=p+(ot<<3)|0,z=it,L=g[z>>2]|0,z=g[z+4>>2]|0;do if(!((L|0)==0&(z|0)==0)){if((k|0)>=(S|0)){L=-1,k=16;break t}if(H=me(L|0,z|0,52)|0,It()|0,H=H&15,(H|0)>(I|0)){L=-2,k=16;break t}if((H|0)==(I|0)){it=y+(k<<3)|0,g[it>>2]=L,g[it+4>>2]=z,k=k+1|0;break}if(L=(We(7,I-H|0)|0)+k|0,(L|0)>(S|0)){L=-1,k=16;break t}io(g[it>>2]|0,g[it+4>>2]|0,I,y+(k<<3)|0),k=L}while(!1);if(ot=ot+1|0,(ot|0)>=(m|0)){L=0,k=16;break}}return(k|0)==16?L|0:0}function yn(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if((m|0)<=0)return y=0,y|0;if((y|0)>=16){for(S=0;;){if(L=p+(S<<3)|0,!((g[L>>2]|0)==0&(g[L+4>>2]|0)==0)){S=-1,I=13;break}if(S=S+1|0,(S|0)>=(m|0)){S=0,I=13;break}}if((I|0)==13)return S|0}S=0,L=0;t:for(;;){I=p+(L<<3)|0,k=g[I>>2]|0,I=g[I+4>>2]|0;do if(!((k|0)==0&(I|0)==0)){if(I=me(k|0,I|0,52)|0,It()|0,I=I&15,(I|0)>(y|0)){S=-1,I=13;break t}if((I|0)==(y|0)){S=S+1|0;break}else{S=(We(7,y-I|0)|0)+S|0;break}}while(!1);if(L=L+1|0,(L|0)>=(m|0)){I=13;break}}return(I|0)==13?S|0:0}function bf(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,52)|0,It()|0,m&1|0}function Ms(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;if(I=me(p|0,m|0,52)|0,It()|0,I=I&15,!I)return I=0,I|0;for(S=1;;){if(y=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,y=y&7,y|0){S=5;break}if(S>>>0>>0)S=S+1|0;else{y=0,S=5;break}}return(S|0)==5?y|0:0}function mh(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(H=me(p|0,m|0,52)|0,It()|0,H=H&15,!H)return z=m,H=p,$e(z|0),H|0;for(z=1,y=0;;){k=(15-z|0)*3|0,S=Le(7,0,k|0)|0,I=It()|0,L=me(p|0,m|0,k|0)|0,It()|0,k=Le(za(L&7)|0,0,k|0)|0,L=It()|0,p=k|p&~S,m=L|m&~I;t:do if(!y)if((k&S|0)==0&(L&I|0)==0)y=0;else if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)y=1;else{y=1;e:for(;;){switch(L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,L&7){case 1:break e;case 0:break;default:{y=1;break t}}if(y>>>0>>0)y=y+1|0;else{y=1;break t}}for(y=1;;)if(L=(15-y|0)*3|0,I=me(p|0,m|0,L|0)|0,It()|0,k=Le(7,0,L|0)|0,m=m&~(It()|0),L=Le(za(I&7)|0,0,L|0)|0,p=p&~k|L,m=m|(It()|0),y>>>0>>0)y=y+1|0;else{y=1;break}}while(!1);if(z>>>0>>0)z=z+1|0;else break}return $e(m|0),p|0}function jo(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return y=m,S=p,$e(y|0),S|0;for(y=1;k=(15-y|0)*3|0,L=me(p|0,m|0,k|0)|0,It()|0,I=Le(7,0,k|0)|0,m=m&~(It()|0),k=Le(za(L&7)|0,0,k|0)|0,p=k|p&~I,m=It()|0|m,y>>>0>>0;)y=y+1|0;return $e(m|0),p|0}function c0(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(H=me(p|0,m|0,52)|0,It()|0,H=H&15,!H)return z=m,H=p,$e(z|0),H|0;for(z=1,y=0;;){k=(15-z|0)*3|0,S=Le(7,0,k|0)|0,I=It()|0,L=me(p|0,m|0,k|0)|0,It()|0,k=Le(ro(L&7)|0,0,k|0)|0,L=It()|0,p=k|p&~S,m=L|m&~I;t:do if(!y)if((k&S|0)==0&(L&I|0)==0)y=0;else if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)y=1;else{y=1;e:for(;;){switch(L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,L&7){case 1:break e;case 0:break;default:{y=1;break t}}if(y>>>0>>0)y=y+1|0;else{y=1;break t}}for(y=1;;)if(I=(15-y|0)*3|0,k=Le(7,0,I|0)|0,L=m&~(It()|0),m=me(p|0,m|0,I|0)|0,It()|0,m=Le(ro(m&7)|0,0,I|0)|0,p=p&~k|m,m=L|(It()|0),y>>>0>>0)y=y+1|0;else{y=1;break}}while(!1);if(z>>>0>>0)z=z+1|0;else break}return $e(m|0),p|0}function Od(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return y=m,S=p,$e(y|0),S|0;for(y=1;L=(15-y|0)*3|0,k=Le(7,0,L|0)|0,I=m&~(It()|0),m=me(p|0,m|0,L|0)|0,It()|0,m=Le(ro(m&7)|0,0,L|0)|0,p=m|p&~k,m=It()|0|I,y>>>0>>0;)y=y+1|0;return $e(m|0),p|0}function wf(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(H=wt,wt=wt+64|0,z=H+40|0,S=H+24|0,I=H+12|0,k=H,Le(m|0,0,52)|0,y=It()|0|134225919,!m)return(g[p+4>>2]|0)>2||(g[p+8>>2]|0)>2||(g[p+12>>2]|0)>2?(L=0,z=0,$e(L|0),wt=H,z|0):(Le(_f(p)|0,0,45)|0,L=It()|0|y,z=-1,$e(L|0),wt=H,z|0);if(g[z>>2]=g[p>>2],g[z+4>>2]=g[p+4>>2],g[z+8>>2]=g[p+8>>2],g[z+12>>2]=g[p+12>>2],L=z+4|0,(m|0)>0)for(p=-1;g[S>>2]=g[L>>2],g[S+4>>2]=g[L+4>>2],g[S+8>>2]=g[L+8>>2],m&1?(Ld(L),g[I>>2]=g[L>>2],g[I+4>>2]=g[L+4>>2],g[I+8>>2]=g[L+8>>2],Fa(I)):(fl(L),g[I>>2]=g[L>>2],g[I+4>>2]=g[L+4>>2],g[I+8>>2]=g[L+8>>2],uh(I)),Kp(S,I,k),Fs(k),ot=(15-m|0)*3|0,it=Le(7,0,ot|0)|0,y=y&~(It()|0),ot=Le(Ba(k)|0,0,ot|0)|0,p=ot|p&~it,y=It()|0|y,(m|0)>1;)m=m+-1|0;else p=-1;t:do if((g[L>>2]|0)<=2&&(g[z+8>>2]|0)<=2&&(g[z+12>>2]|0)<=2){if(S=_f(z)|0,m=Le(S|0,0,45)|0,m=m|p,p=It()|0|y&-1040385,k=Qp(z)|0,!(fi(S)|0)){if((k|0)<=0)break;for(I=0;;){if(S=me(m|0,p|0,52)|0,It()|0,S=S&15,S)for(y=1;ot=(15-y|0)*3|0,z=me(m|0,p|0,ot|0)|0,It()|0,it=Le(7,0,ot|0)|0,p=p&~(It()|0),ot=Le(za(z&7)|0,0,ot|0)|0,m=m&~it|ot,p=p|(It()|0),y>>>0>>0;)y=y+1|0;if(I=I+1|0,(I|0)==(k|0))break t}}I=me(m|0,p|0,52)|0,It()|0,I=I&15;e:do if(I){y=1;r:for(;;){switch(ot=me(m|0,p|0,(15-y|0)*3|0)|0,It()|0,ot&7){case 1:break r;case 0:break;default:break e}if(y>>>0>>0)y=y+1|0;else break e}if(lh(S,g[z>>2]|0)|0)for(y=1;z=(15-y|0)*3|0,it=Le(7,0,z|0)|0,ot=p&~(It()|0),p=me(m|0,p|0,z|0)|0,It()|0,p=Le(ro(p&7)|0,0,z|0)|0,m=m&~it|p,p=ot|(It()|0),y>>>0>>0;)y=y+1|0;else for(y=1;ot=(15-y|0)*3|0,z=me(m|0,p|0,ot|0)|0,It()|0,it=Le(7,0,ot|0)|0,p=p&~(It()|0),ot=Le(za(z&7)|0,0,ot|0)|0,m=m&~it|ot,p=p|(It()|0),y>>>0>>0;)y=y+1|0}while(!1);if((k|0)>0){y=0;do m=mh(m,p)|0,p=It()|0,y=y+1|0;while((y|0)!=(k|0))}}else m=0,p=0;while(!1);return it=p,ot=m,$e(it|0),wt=H,ot|0}function Go(p){return p=p|0,(p|0)%2|0|0}function sA(p,m){p=p|0,m=m|0;var y=0,S=0;return S=wt,wt=wt+16|0,y=S,m>>>0<=15&&(g[p+4>>2]&2146435072|0)!=2146435072&&(g[p+8+4>>2]&2146435072|0)!=2146435072?(r0(p,m,y),m=wf(y,m)|0,p=It()|0):(p=0,m=0),$e(p|0),wt=S,m|0}function xi(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if(I=y+4|0,k=me(p|0,m|0,52)|0,It()|0,k=k&15,L=me(p|0,m|0,45)|0,It()|0,S=(k|0)==0,fi(L&127)|0){if(S)return L=1,L|0;S=1}else{if(S)return L=0,L|0;!(g[I>>2]|0)&&!(g[y+8>>2]|0)?S=(g[y+12>>2]|0)!=0&1:S=1}for(y=1;y&1?Fa(I):uh(I),L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,Jp(I,L&7),y>>>0>>0;)y=y+1|0;return S|0}function T(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0;ot=wt,wt=wt+16|0,H=ot,it=me(p|0,m|0,45)|0,It()|0,it=it&127;t:do if(fi(it)|0&&(k=me(p|0,m|0,52)|0,It()|0,k=k&15,(k|0)!=0)){S=1;e:for(;;){switch(z=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,z&7){case 5:break e;case 0:break;default:{S=m;break t}}if(S>>>0>>0)S=S+1|0;else{S=m;break t}}for(I=1,S=m;m=(15-I|0)*3|0,L=Le(7,0,m|0)|0,z=S&~(It()|0),S=me(p|0,S|0,m|0)|0,It()|0,S=Le(ro(S&7)|0,0,m|0)|0,p=p&~L|S,S=z|(It()|0),I>>>0>>0;)I=I+1|0}else S=m;while(!1);if(z=7728+(it*28|0)|0,g[y>>2]=g[z>>2],g[y+4>>2]=g[z+4>>2],g[y+8>>2]=g[z+8>>2],g[y+12>>2]=g[z+12>>2],!(xi(p,S,y)|0)){wt=ot;return}if(L=y+4|0,g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],k=me(p|0,S|0,52)|0,It()|0,z=k&15,k&1?(uh(L),k=z+1|0):k=z,!(fi(it)|0))S=0;else{t:do if(!z)S=0;else for(m=1;;){if(I=me(p|0,S|0,(15-m|0)*3|0)|0,It()|0,I=I&7,I|0){S=I;break t}if(m>>>0>>0)m=m+1|0;else{S=0;break}}while(!1);S=(S|0)==4&1}if(!(vf(y,k,S,0)|0))(k|0)!=(z|0)&&(g[L>>2]=g[H>>2],g[L+4>>2]=g[H+4>>2],g[L+8>>2]=g[H+8>>2]);else{if(fi(it)|0)do;while(vf(y,k,0,0)|0);(k|0)!=(z|0)&&fl(L)}wt=ot}function l(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;S=wt,wt=wt+16|0,I=S,T(p,m,I),m=me(p|0,m|0,52)|0,It()|0,l_(I,m&15,y),wt=S}function d(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0;L=wt,wt=wt+16|0,k=L,T(p,m,k),S=me(p|0,m|0,45)|0,It()|0,S=(fi(S&127)|0)==0,I=me(p|0,m|0,52)|0,It()|0,I=I&15;t:do if(!S){if(I|0)for(S=1;;){if(z=Le(7,0,(15-S|0)*3|0)|0,!((z&p|0)==0&((It()|0)&m|0)==0))break t;if(S>>>0>>0)S=S+1|0;else break}i0(k,I,0,5,y),wt=L;return}while(!1);tA(k,I,0,6,y),wt=L}function v(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;if(S=me(p|0,m|0,45)|0,It()|0,!(fi(S&127)|0))return S=2,S|0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return S=5,S|0;for(y=1;;){if(I=Le(7,0,(15-y|0)*3|0)|0,!((I&p|0)==0&((It()|0)&m|0)==0)){y=2,p=6;break}if(y>>>0>>0)y=y+1|0;else{y=5,p=6;break}}return(p|0)==6?y|0:0}function b(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0;Ct=wt,wt=wt+128|0,it=Ct+112|0,k=Ct+96|0,ot=Ct,I=me(p|0,m|0,52)|0,It()|0,z=I&15,g[it>>2]=z,L=me(p|0,m|0,45)|0,It()|0,L=L&127;t:do if(fi(L)|0){if(z|0)for(S=1;;){if(H=Le(7,0,(15-S|0)*3|0)|0,!((H&p|0)==0&((It()|0)&m|0)==0)){I=0;break t}if(S>>>0>>0)S=S+1|0;else break}if(I&1)I=1;else{H=Le(z+1|0,0,52)|0,ot=It()|0|m&-15728641,it=Le(7,0,(14-z|0)*3|0)|0,b((H|p)&~it,ot&~(It()|0),y),wt=Ct;return}}else I=0;while(!1);T(p,m,k),I?(n0(k,it,ot),H=5):(eA(k,it,ot),H=6);t:do if(fi(L)|0)if(!z)S=20;else for(S=1;;){if(L=Le(7,0,(15-S|0)*3|0)|0,!((L&p|0)==0&((It()|0)&m|0)==0)){S=8;break t}if(S>>>0>>0)S=S+1|0;else{S=20;break}}else S=8;while(!1);if(Dc(y|0,-1,S|0)|0,I){I=0;do{for(k=ot+(I<<4)|0,s0(k,g[it>>2]|0)|0,k=g[k>>2]|0,S=0;L=y+(S<<2)|0,z=g[L>>2]|0,!((z|0)==-1|(z|0)==(k|0));)S=S+1|0;g[L>>2]=k,I=I+1|0}while((I|0)!=(H|0))}else{I=0;do{for(k=ot+(I<<4)|0,vf(k,g[it>>2]|0,0,1)|0,k=g[k>>2]|0,S=0;L=y+(S<<2)|0,z=g[L>>2]|0,!((z|0)==-1|(z|0)==(k|0));)S=S+1|0;g[L>>2]=k,I=I+1|0}while((I|0)!=(H|0))}wt=Ct}function M(){return 12}function O(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(Le(p|0,0,52)|0,z=It()|0|134225919,(p|0)<1){S=0,y=0;do fi(S)|0&&(Le(S|0,0,45)|0,L=z|(It()|0),p=m+(y<<3)|0,g[p>>2]=-1,g[p+4>>2]=L,y=y+1|0),S=S+1|0;while((S|0)!=122);return}L=0,y=0;do{if(fi(L)|0){for(Le(L|0,0,45)|0,S=1,I=-1,k=z|(It()|0);H=Le(7,0,(15-S|0)*3|0)|0,I=I&~H,k=k&~(It()|0),(S|0)!=(p|0);)S=S+1|0;H=m+(y<<3)|0,g[H>>2]=I,g[H+4>>2]=k,y=y+1|0}L=L+1|0}while((L|0)!=122)}function B(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0;if(z=wt,wt=wt+64|0,L=z,(p|0)==(y|0)&(m|0)==(S|0)|(!1|(m&2013265920|0)!=134217728|(!1|(S&2013265920|0)!=134217728))||(I=me(p|0,m|0,52)|0,It()|0,I=I&15,k=me(y|0,S|0,52)|0,It()|0,(I|0)!=(k&15|0)))return L=0,wt=z,L|0;if(k=I+-1|0,I>>>0>1&&(it=Dd(p,m,k)|0,H=It()|0,k=Dd(y,S,k)|0,(it|0)==(k|0)&(H|0)==(It()|0))&&(k=(I^15)*3|0,I=me(p|0,m|0,k|0)|0,It()|0,I=I&7,k=me(y|0,S|0,k|0)|0,It()|0,k=k&7,(I|0)==0|(k|0)==0||(g[21136+(I<<2)>>2]|0)==(k|0)||(g[21168+(I<<2)>>2]|0)==(k|0)))return it=1,wt=z,it|0;I=L,k=I+56|0;do g[I>>2]=0,I=I+4|0;while((I|0)<(k|0));return e_(p,m,1,L),it=L,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0))&&(it=L+8|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+16|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+24|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+32|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+40|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))?(I=L+48|0,I=((g[I>>2]|0)==(y|0)?(g[I+4>>2]|0)==(S|0):0)&1):I=1,it=I,wt=z,it|0}function U(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(it=wt,wt=wt+16|0,L=it,!(B(p,m,y,S)|0))return z=0,H=0,$e(z|0),wt=it,H|0;for(z=m&-2130706433,I=(Ui(p,m)|0)==0,I=I?1:2;g[L>>2]=0,ot=jn(p,m,I,L)|0,k=I+1|0,!((ot|0)==(y|0)&(It()|0)==(S|0));)if(k>>>0<7)I=k;else{I=0,p=0,H=6;break}return(H|0)==6?($e(I|0),wt=it,p|0):(ot=Le(I|0,0,56)|0,H=z|(It()|0)|268435456,ot=p|ot,$e(H|0),wt=it,ot|0)}function W(p,m){p=p|0,m=m|0;var y=0;return y=!0&(m&2013265920|0)==268435456,$e((y?m&-2130706433|134217728:0)|0),(y?p:0)|0}function Z(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;return S=wt,wt=wt+16|0,y=S,!0&(m&2013265920|0)==268435456?(I=me(p|0,m|0,56)|0,It()|0,g[y>>2]=0,y=jn(p,m&-2130706433|134217728,I&7,y)|0,m=It()|0,$e(m|0),wt=S,y|0):(m=0,y=0,$e(m|0),wt=S,y|0)}function Q(p,m){p=p|0,m=m|0;var y=0;if(!(!0&(m&2013265920|0)==268435456))return y=0,y|0;switch(y=me(p|0,m|0,56)|0,It()|0,y&7){case 0:case 7:return y=0,y|0;default:}return y=m&-2130706433|134217728,!0&(m&117440512|0)==16777216&(Ui(p,y)|0)!=0?(y=0,y|0):(y=nA(p,y)|0,y|0)}function st(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0;k=wt,wt=wt+16|0,S=k,L=!0&(m&2013265920|0)==268435456,I=m&-2130706433|134217728,z=y,g[z>>2]=L?p:0,g[z+4>>2]=L?I:0,L?(m=me(p|0,m|0,56)|0,It()|0,g[S>>2]=0,p=jn(p,I,m&7,S)|0,m=It()|0):(p=0,m=0),z=y+8|0,g[z>>2]=p,g[z+4>>2]=m,wt=k}function At(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;I=(Ui(p,m)|0)==0,m=m&-2130706433,S=y,g[S>>2]=I?p:0,g[S+4>>2]=I?m|285212672:0,S=y+8|0,g[S>>2]=p,g[S+4>>2]=m|301989888,S=y+16|0,g[S>>2]=p,g[S+4>>2]=m|318767104,S=y+24|0,g[S>>2]=p,g[S+4>>2]=m|335544320,S=y+32|0,g[S>>2]=p,g[S+4>>2]=m|352321536,y=y+40|0,g[y>>2]=p,g[y+4>>2]=m|369098752}function pt(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0;if(L=wt,wt=wt+16|0,k=L,S=me(p|0,m|0,56)|0,It()|0,z=!0&(m&2013265920|0)==268435456,I=z?p:0,p=z?m&-2130706433|134217728:0,m=mu(I,p,S&7)|0,(m|0)==-1){g[y>>2]=0,wt=L;return}T(I,p,k),S=me(I|0,p|0,52)|0,It()|0,S=S&15,Ui(I,p)|0?i0(k,S,m,2,y):tA(k,S,m,2,y),wt=L}function yt(p){p=p|0;var m=0,y=0,S=0;return m=Na(1,12)|0,m||Ti(22691,22646,49,22704),y=p+4|0,S=g[y>>2]|0,S|0?(S=S+8|0,g[S>>2]=m,g[y>>2]=m,m|0):(g[p>>2]|0&&Ti(22721,22646,61,22744),S=p,g[S>>2]=m,g[y>>2]=m,m|0)}function dt(p,m){p=p|0,m=m|0;var y=0,S=0;return S=no(24)|0,S||Ti(22758,22646,78,22772),g[S>>2]=g[m>>2],g[S+4>>2]=g[m+4>>2],g[S+8>>2]=g[m+8>>2],g[S+12>>2]=g[m+12>>2],g[S+16>>2]=0,m=p+4|0,y=g[m>>2]|0,y|0?(g[y+16>>2]=S,g[m>>2]=S,S|0):(g[p>>2]|0&&Ti(22787,22646,82,22772),g[p>>2]=S,g[m>>2]=S,S|0)}function Ft(p){p=p|0;var m=0,y=0,S=0,I=0;if(p)for(S=1;;){if(m=g[p>>2]|0,m|0)do{if(y=g[m>>2]|0,y|0)do I=y,y=g[y+16>>2]|0,Gr(I);while(y|0);I=m,m=g[m+8>>2]|0,Gr(I)}while(m|0);if(m=p,p=g[p+8>>2]|0,S||Gr(m),p)S=0;else break}}function Wt(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0,Ei=0,vn=0,An=0,Or=0;if(I=p+8|0,g[I>>2]|0)return Or=1,Or|0;if(S=g[p>>2]|0,!S)return Or=0,Or|0;m=S,y=0;do y=y+1|0,m=g[m+8>>2]|0;while(m|0);if(y>>>0<2)return Or=0,Or|0;vn=no(y<<2)|0,vn||Ti(22807,22646,317,22826),Ei=no(y<<5)|0,Ei||Ti(22848,22646,321,22826),g[p>>2]=0,Ke=p+4|0,g[Ke>>2]=0,g[I>>2]=0,y=0,cn=0,Ze=0,Ct=0;t:for(;;){if(ot=g[S>>2]|0,ot){k=0,L=ot;do{if(H=+Tt[L+8>>3],m=L,L=g[L+16>>2]|0,it=(L|0)==0,I=it?ot:L,z=+Tt[I+8>>3],+li(+(H-z))>3.141592653589793){Or=14;break}k=k+(z-H)*(+Tt[m>>3]+ +Tt[I>>3])}while(!it);if((Or|0)==14){Or=0,k=0,m=ot;do Nt=+Tt[m+8>>3],Mi=m+16|0,Gi=g[Mi>>2]|0,Gi=Gi|0?Gi:ot,_e=+Tt[Gi+8>>3],k=k+(+Tt[m>>3]+ +Tt[Gi>>3])*((_e<0?_e+6.283185307179586:_e)-(Nt<0?Nt+6.283185307179586:Nt)),m=g[(m|0?Mi:S)>>2]|0;while(m|0)}k>0?(g[vn+(cn<<2)>>2]=S,cn=cn+1|0,I=Ze,m=Ct):Or=19}else Or=19;if((Or|0)==19){Or=0;do if(y){if(m=y+8|0,g[m>>2]|0){Or=21;break t}if(y=Na(1,12)|0,!y){Or=23;break t}g[m>>2]=y,I=y+4|0,L=y,m=Ct}else if(Ct){I=Ke,L=Ct+8|0,m=S,y=p;break}else if(g[p>>2]|0){Or=27;break t}else{I=Ke,L=p,m=S,y=p;break}while(!1);if(g[L>>2]=S,g[I>>2]=S,L=Ei+(Ze<<5)|0,it=g[S>>2]|0,it){for(ot=Ei+(Ze<<5)+8|0,Tt[ot>>3]=17976931348623157e292,Ct=Ei+(Ze<<5)+24|0,Tt[Ct>>3]=17976931348623157e292,Tt[L>>3]=-17976931348623157e292,zt=Ei+(Ze<<5)+16|0,Tt[zt>>3]=-17976931348623157e292,Ve=17976931348623157e292,Jt=-17976931348623157e292,I=0,Gt=it,H=17976931348623157e292,ie=17976931348623157e292,Ce=-17976931348623157e292,z=-17976931348623157e292;k=+Tt[Gt>>3],Nt=+Tt[Gt+8>>3],Gt=g[Gt+16>>2]|0,ee=(Gt|0)==0,_e=+Tt[(ee?it:Gt)+8>>3],k>3]=k,H=k),Nt>3]=Nt,ie=Nt),k>Ce?Tt[L>>3]=k:k=Ce,Nt>z&&(Tt[zt>>3]=Nt,z=Nt),Ve=Nt>0&NtJt?Nt:Jt,I=I|+li(+(Nt-_e))>3.141592653589793,!ee;)Ce=k;I&&(Tt[zt>>3]=Jt,Tt[Ct>>3]=Ve)}else g[L>>2]=0,g[L+4>>2]=0,g[L+8>>2]=0,g[L+12>>2]=0,g[L+16>>2]=0,g[L+20>>2]=0,g[L+24>>2]=0,g[L+28>>2]=0;I=Ze+1|0}if(Mi=S+8|0,S=g[Mi>>2]|0,g[Mi>>2]=0,S)Ze=I,Ct=m;else{Or=45;break}}if((Or|0)==21)Ti(22624,22646,35,22658);else if((Or|0)==23)Ti(22678,22646,37,22658);else if((Or|0)==27)Ti(22721,22646,61,22744);else if((Or|0)==45){t:do if((cn|0)>0){for(Mi=(I|0)==0,Zr=I<<2,Gi=(p|0)==0,ze=0,m=0;;){if(be=g[vn+(ze<<2)>>2]|0,Mi)Or=73;else{if(Ze=no(Zr)|0,!Ze){Or=50;break}if(Ke=no(Zr)|0,!Ke){Or=52;break}e:do if(Gi)y=0;else{for(I=0,y=0,L=p;S=Ei+(I<<5)|0,St(g[L>>2]|0,S,g[be>>2]|0)|0?(g[Ze+(y<<2)>>2]=L,g[Ke+(y<<2)>>2]=S,ee=y+1|0):ee=y,L=g[L+8>>2]|0,L;)I=I+1|0,y=ee;if((ee|0)>0)if(S=g[Ze>>2]|0,(ee|0)==1)y=S;else for(zt=0,Gt=-1,y=S,Ct=S;;){for(it=g[Ct>>2]|0,S=0,L=0;I=g[g[Ze+(L<<2)>>2]>>2]|0,(I|0)==(it|0)?ot=S:ot=S+((St(I,g[Ke+(L<<2)>>2]|0,g[it>>2]|0)|0)&1)|0,L=L+1|0,(L|0)!=(ee|0);)S=ot;if(I=(ot|0)>(Gt|0),y=I?Ct:y,S=zt+1|0,(S|0)==(ee|0))break e;zt=S,Gt=I?ot:Gt,Ct=g[Ze+(S<<2)>>2]|0}else y=0}while(!1);if(Gr(Ze),Gr(Ke),y){if(I=y+4|0,S=g[I>>2]|0,S)y=S+8|0;else if(g[y>>2]|0){Or=70;break}g[y>>2]=be,g[I>>2]=be}else Or=73}if((Or|0)==73){if(Or=0,m=g[be>>2]|0,m|0)do Ke=m,m=g[m+16>>2]|0,Gr(Ke);while(m|0);Gr(be),m=2}if(ze=ze+1|0,(ze|0)>=(cn|0)){An=m;break t}}(Or|0)==50?Ti(22863,22646,249,22882):(Or|0)==52?Ti(22901,22646,252,22882):(Or|0)==70&&Ti(22721,22646,61,22744)}else An=0;while(!1);return Gr(vn),Gr(Ei),Or=An,Or|0}return 0}function St(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(!(hl(m,y)|0)||(m=Jm(m)|0,it=+Tt[y>>3],S=+Tt[y+8>>3],S=m&S<0?S+6.283185307179586:S,p=g[p>>2]|0,!p))return p=0,p|0;if(m){m=0,y=p;t:for(;;){for(;L=+Tt[y>>3],H=+Tt[y+8>>3],y=y+16|0,ot=g[y>>2]|0,ot=ot|0?ot:p,k=+Tt[ot>>3],I=+Tt[ot+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(itz);)if(y=g[y>>2]|0,!y){y=22;break t}if(H=I<0?I+6.283185307179586:I,L=L<0?L+6.283185307179586:L,S=L==S|H==S?S+-2220446049250313e-31:S,H=H+(it-k)/(z-k)*(L-H),(H<0?H+6.283185307179586:H)>S&&(m=m^1),y=g[y>>2]|0,!y){y=22;break}}if((y|0)==22)return m|0}else{m=0,y=p;t:for(;;){for(;L=+Tt[y>>3],H=+Tt[y+8>>3],y=y+16|0,ot=g[y>>2]|0,ot=ot|0?ot:p,k=+Tt[ot>>3],I=+Tt[ot+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(itz);)if(y=g[y>>2]|0,!y){y=22;break t}if(S=L==S|I==S?S+-2220446049250313e-31:S,I+(it-k)/(z-k)*(L-I)>S&&(m=m^1),y=g[y>>2]|0,!y){y=22;break}}if((y|0)==22)return m|0}return 0}function Bt(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(Jt=wt,wt=wt+32|0,Ve=Jt+16|0,Ce=Jt,k=me(p|0,m|0,52)|0,It()|0,k=k&15,Gt=me(y|0,S|0,52)|0,It()|0,(k|0)!=(Gt&15|0))return Ve=1,wt=Jt,Ve|0;if(it=me(p|0,m|0,45)|0,It()|0,it=it&127,ot=me(y|0,S|0,45)|0,It()|0,ot=ot&127,Gt=(it|0)!=(ot|0),Gt){if(z=Xp(it,ot)|0,(z|0)==7)return Ve=2,wt=Jt,Ve|0;H=Xp(ot,it)|0,(H|0)==7?Ti(22925,22949,151,22959):(ee=z,L=H)}else ee=0,L=0;Ct=fi(it)|0,zt=fi(ot)|0,g[Ve>>2]=0,g[Ve+4>>2]=0,g[Ve+8>>2]=0,g[Ve+12>>2]=0;do if(ee){if(ot=g[4304+(it*28|0)+(ee<<2)>>2]|0,z=(ot|0)>0,zt)if(z){it=0,H=y,z=S;do H=c0(H,z)|0,z=It()|0,L=ro(L)|0,(L|0)==1&&(L=ro(1)|0),it=it+1|0;while((it|0)!=(ot|0));ot=L,it=H,H=z}else ot=L,it=y,H=S;else if(z){it=0,H=y,z=S;do H=Od(H,z)|0,z=It()|0,L=ro(L)|0,it=it+1|0;while((it|0)!=(ot|0));ot=L,it=H,H=z}else ot=L,it=y,H=S;if(xi(it,H,Ve)|0,Gt||Ti(22972,22949,181,22959),z=(Ct|0)!=0,L=(zt|0)!=0,z&L&&Ti(22999,22949,182,22959),z){if(L=Ms(p,m)|0,vr[22032+(L*7|0)+ee>>0]|0){k=3;break}H=g[21200+(L*28|0)+(ee<<2)>>2]|0,it=H,ie=26}else if(L){if(L=Ms(it,H)|0,vr[22032+(L*7|0)+ot>>0]|0){k=4;break}it=0,H=g[21200+(ot*28|0)+(L<<2)>>2]|0,ie=26}else L=0;if((ie|0)==26)if((H|0)<=-1&&Ti(23030,22949,212,22959),(it|0)<=-1&&Ti(23053,22949,213,22959),(H|0)>0){z=Ve+4|0,L=0;do hh(z),L=L+1|0;while((L|0)!=(H|0));L=it}else L=it;if(g[Ce>>2]=0,g[Ce+4>>2]=0,g[Ce+8>>2]=0,Jp(Ce,ee),k|0)for(;Go(k)|0?Fa(Ce):uh(Ce),(k|0)>1;)k=k+-1|0;if((L|0)>0){k=0;do hh(Ce),k=k+1|0;while((k|0)!=(L|0))}ie=Ve+4|0,In(ie,Ce,ie),Fs(ie),ie=50}else if(xi(y,S,Ve)|0,(Ct|0)!=0&(zt|0)!=0)if((ot|0)!=(it|0)&&Ti(23077,22949,243,22959),L=Ms(p,m)|0,k=Ms(y,S)|0,vr[22032+(L*7|0)+k>>0]|0)k=5;else if(L=g[21200+(L*28|0)+(k<<2)>>2]|0,(L|0)>0){z=Ve+4|0,k=0;do hh(z),k=k+1|0;while((k|0)!=(L|0));ie=50}else ie=50;else ie=50;while(!1);return(ie|0)==50&&(k=Ve+4|0,g[I>>2]=g[k>>2],g[I+4>>2]=g[k+4>>2],g[I+8>>2]=g[k+8>>2],k=0),Ve=k,wt=Jt,Ve|0}function Yt(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(ee=wt,wt=wt+48|0,L=ee+36|0,z=ee+24|0,H=ee+12|0,it=ee,k=me(p|0,m|0,52)|0,It()|0,k=k&15,zt=me(p|0,m|0,45)|0,It()|0,zt=zt&127,ot=fi(zt)|0,Le(k|0,0,52)|0,Ce=It()|0|134225919,ie=S,g[ie>>2]=-1,g[ie+4>>2]=Ce,!k)return(g[y>>2]|0)>1||(g[y+4>>2]|0)>1||(g[y+8>>2]|0)>1||(I=$p(zt,Ba(y)|0)|0,(I|0)==127)?(Ce=1,wt=ee,Ce|0):(Gt=Le(I|0,0,45)|0,ie=It()|0,zt=S,ie=g[zt+4>>2]&-1040385|ie,Ce=S,g[Ce>>2]=g[zt>>2]|Gt,g[Ce+4>>2]=ie,Ce=0,wt=ee,Ce|0);for(g[L>>2]=g[y>>2],g[L+4>>2]=g[y+4>>2],g[L+8>>2]=g[y+8>>2];g[z>>2]=g[L>>2],g[z+4>>2]=g[L+4>>2],g[z+8>>2]=g[L+8>>2],Go(k)|0?(Ld(L),g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],Fa(H)):(fl(L),g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],uh(H)),Kp(z,H,it),Fs(it),ie=S,Ve=g[ie>>2]|0,ie=g[ie+4>>2]|0,Jt=(15-k|0)*3|0,y=Le(7,0,Jt|0)|0,ie=ie&~(It()|0),Jt=Le(Ba(it)|0,0,Jt|0)|0,ie=It()|0|ie,Ce=S,g[Ce>>2]=Jt|Ve&~y,g[Ce+4>>2]=ie,(k|0)>1;)k=k+-1|0;t:do if((g[L>>2]|0)<=1&&(g[L+4>>2]|0)<=1&&(g[L+8>>2]|0)<=1){k=Ba(L)|0,z=$p(zt,k)|0,(z|0)==127?it=0:it=fi(z)|0;e:do if(k){if(ot){if(L=21408+((Ms(p,m)|0)*28|0)+(k<<2)|0,L=g[L>>2]|0,(L|0)>0){y=0;do k=za(k)|0,y=y+1|0;while((y|0)!=(L|0))}if((k|0)==1){I=3;break t}y=$p(zt,k)|0,(y|0)==127&&Ti(23104,22949,376,23134),fi(y)|0?Ti(23147,22949,377,23134):(Gt=L,Ct=k,I=y)}else Gt=0,Ct=k,I=z;if(H=g[4304+(zt*28|0)+(Ct<<2)>>2]|0,(H|0)<=-1&&Ti(23178,22949,384,23134),!it){if((Gt|0)<=-1&&Ti(23030,22949,417,23134),Gt|0){L=S,k=0,y=g[L>>2]|0,L=g[L+4>>2]|0;do y=jo(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,k=k+1|0;while((k|0)<(Gt|0))}if((H|0)<=0){k=54;break}for(L=S,k=0,y=g[L>>2]|0,L=g[L+4>>2]|0;;)if(y=jo(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,k=k+1|0,(k|0)==(H|0)){k=54;break e}}if(z=Xp(I,zt)|0,(z|0)==7&&Ti(22925,22949,393,23134),k=S,y=g[k>>2]|0,k=g[k+4>>2]|0,(H|0)>0){L=0;do y=jo(y,k)|0,k=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=k,L=L+1|0;while((L|0)!=(H|0))}if(y=Ms(y,k)|0,Jt=du(I)|0,y=g[(Jt?21824:21616)+(z*28|0)+(y<<2)>>2]|0,(y|0)<=-1&&Ti(23030,22949,412,23134),!y)k=54;else{z=S,k=0,L=g[z>>2]|0,z=g[z+4>>2]|0;do L=mh(L,z)|0,z=It()|0,Jt=S,g[Jt>>2]=L,g[Jt+4>>2]=z,k=k+1|0;while((k|0)<(y|0));k=54}}else if((ot|0)!=0&(it|0)!=0)if(Jt=Ms(p,m)|0,k=S,k=21408+(Jt*28|0)+((Ms(g[k>>2]|0,g[k+4>>2]|0)|0)<<2)|0,k=g[k>>2]|0,(k|0)<=-1&&Ti(23201,22949,433,23134),!k)I=z,k=55;else{L=S,I=0,y=g[L>>2]|0,L=g[L+4>>2]|0;do y=jo(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,I=I+1|0;while((I|0)<(k|0));I=z,k=54}else I=z,k=54;while(!1);if((k|0)==54&&it&&(k=55),(k|0)==55&&(Jt=S,(Ms(g[Jt>>2]|0,g[Jt+4>>2]|0)|0)==1)){I=4;break}Jt=S,Ce=g[Jt>>2]|0,Jt=g[Jt+4>>2]&-1040385,Ve=Le(I|0,0,45)|0,Jt=Jt|(It()|0),I=S,g[I>>2]=Ce|Ve,g[I+4>>2]=Jt,I=0}else I=2;while(!1);return Jt=I,wt=ee,Jt|0}function Qt(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0;return L=wt,wt=wt+16|0,k=L,p=Bt(p,m,y,S,k)|0,p||(yf(k,I),p=0),wt=L,p|0}function se(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0;return I=wt,wt=wt+16|0,k=I,a_(y,k),S=Yt(p,m,k,S)|0,wt=I,S|0}function pe(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0;return L=wt,wt=wt+32|0,I=L+12|0,k=L,!(Bt(p,m,p,m,I)|0)&&!(Bt(p,m,y,S,k)|0)?p=Vl(I,k)|0:p=-1,wt=L,p|0}function he(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0;return L=wt,wt=wt+32|0,I=L+12|0,k=L,!(Bt(p,m,p,m,I)|0)&&!(Bt(p,m,y,S,k)|0)?p=Vl(I,k)|0:p=-1,wt=L,(p>>>31^1)+p|0}function xe(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0;if(Ze=wt,wt=wt+48|0,k=Ze+24|0,L=Ze+12|0,Nt=Ze,!(Bt(p,m,p,m,k)|0)&&!(Bt(p,m,y,S,L)|0)){if(_e=Vl(k,L)|0,(_e|0)<0)return Nt=_e,wt=Ze,Nt|0;for(g[k>>2]=0,g[k+4>>2]=0,g[k+8>>2]=0,g[L>>2]=0,g[L+4>>2]=0,g[L+8>>2]=0,Bt(p,m,p,m,k)|0,Bt(p,m,y,S,L)|0,Re(k),Re(L),_e?(ot=g[k>>2]|0,Gt=+(_e|0),Ce=k+4|0,Ct=g[Ce>>2]|0,Ve=k+8|0,zt=g[Ve>>2]|0,Jt=k,y=ot,S=Ct,k=zt,ee=+((g[L>>2]|0)-ot|0)/Gt,ie=+((g[L+4>>2]|0)-Ct|0)/Gt,Gt=+((g[L+8>>2]|0)-zt|0)/Gt):(S=k+4|0,zt=k+8|0,Ce=S,Ve=zt,Jt=k,y=g[k>>2]|0,S=g[S>>2]|0,k=g[zt>>2]|0,ee=0,ie=0,Gt=0),g[Nt>>2]=y,zt=Nt+4|0,g[zt>>2]=S,Ct=Nt+8|0,g[Ct>>2]=k,ot=0;;){H=+(ot|0),Ke=ee*H+ +(y|0),z=ie*H+ +(g[Ce>>2]|0),H=Gt*H+ +(g[Ve>>2]|0),S=~~+Sf(+Ke),L=~~+Sf(+z),y=~~+Sf(+H),Ke=+li(+(+(S|0)-Ke)),z=+li(+(+(L|0)-z)),H=+li(+(+(y|0)-H));do if(Ke>z&Ke>H)S=0-(L+y)|0,k=L;else if(it=0-S|0,z>H){k=it-y|0;break}else{k=L,y=it-L|0;break}while(!1);if(g[Nt>>2]=S,g[zt>>2]=k,g[Ct>>2]=y,e0(Nt),Yt(p,m,Nt,I+(ot<<3)|0)|0,(ot|0)==(_e|0))break;ot=ot+1|0,y=g[Jt>>2]|0}return Nt=0,wt=Ze,Nt|0}return Nt=-1,wt=Ze,Nt|0}function We(p,m){p=p|0,m=m|0;var y=0;if(!m)return y=1,y|0;y=p,p=1;do p=kc(m&1|0?y:1,p)|0,m=m>>1,y=kc(y,y)|0;while(m|0);return p|0}function Kr(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;if(!(hl(m,y)|0)||(m=Jm(m)|0,zt=+Tt[y>>3],S=+Tt[y+8>>3],S=m&S<0?S+6.283185307179586:S,Ct=g[p>>2]|0,(Ct|0)<=0))return Ct=0,Ct|0;if(ot=g[p+4>>2]|0,m){m=0,y=-1,p=0;t:for(;;){for(it=p;L=+Tt[ot+(it<<4)>>3],H=+Tt[ot+(it<<4)+8>>3],p=(y+2|0)%(Ct|0)|0,k=+Tt[ot+(p<<4)>>3],I=+Tt[ot+(p<<4)+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(ztz);)if(y=it+1|0,(y|0)<(Ct|0))p=it,it=y,y=p;else{y=22;break t}if(H=I<0?I+6.283185307179586:I,L=L<0?L+6.283185307179586:L,S=L==S|H==S?S+-2220446049250313e-31:S,H=H+(zt-k)/(z-k)*(L-H),(H<0?H+6.283185307179586:H)>S&&(m=m^1),p=it+1|0,(p|0)>=(Ct|0)){y=22;break}else y=it}if((y|0)==22)return m|0}else{m=0,y=-1,p=0;t:for(;;){for(it=p;L=+Tt[ot+(it<<4)>>3],H=+Tt[ot+(it<<4)+8>>3],p=(y+2|0)%(Ct|0)|0,k=+Tt[ot+(p<<4)>>3],I=+Tt[ot+(p<<4)+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(ztz);)if(y=it+1|0,(y|0)<(Ct|0))p=it,it=y,y=p;else{y=22;break t}if(S=L==S|I==S?S+-2220446049250313e-31:S,I+(zt-k)/(z-k)*(L-I)>S&&(m=m^1),p=it+1|0,(p|0)>=(Ct|0)){y=22;break}else y=it}if((y|0)==22)return m|0}return 0}function Me(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(ee=g[p>>2]|0,!ee){g[m>>2]=0,g[m+4>>2]=0,g[m+8>>2]=0,g[m+12>>2]=0,g[m+16>>2]=0,g[m+20>>2]=0,g[m+24>>2]=0,g[m+28>>2]=0;return}if(ie=m+8|0,Tt[ie>>3]=17976931348623157e292,Ce=m+24|0,Tt[Ce>>3]=17976931348623157e292,Tt[m>>3]=-17976931348623157e292,Ve=m+16|0,Tt[Ve>>3]=-17976931348623157e292,!((ee|0)<=0)){for(zt=g[p+4>>2]|0,it=17976931348623157e292,ot=-17976931348623157e292,Ct=0,p=-1,k=17976931348623157e292,L=17976931348623157e292,H=-17976931348623157e292,S=-17976931348623157e292,Gt=0;y=+Tt[zt+(Gt<<4)>>3],z=+Tt[zt+(Gt<<4)+8>>3],p=p+2|0,I=+Tt[zt+(((p|0)==(ee|0)?0:p)<<4)+8>>3],y>3]=y,k=y),z>3]=z,L=z),y>H?Tt[m>>3]=y:y=H,z>S&&(Tt[Ve>>3]=z,S=z),it=z>0&zot?z:ot,Ct=Ct|+li(+(z-I))>3.141592653589793,p=Gt+1|0,(p|0)!=(ee|0);)Jt=Gt,H=y,Gt=p,p=Jt;Ct&&(Tt[Ve>>3]=ot,Tt[Ce>>3]=it)}}function dr(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0;if(ee=g[p>>2]|0,ee){if(ie=m+8|0,Tt[ie>>3]=17976931348623157e292,Ce=m+24|0,Tt[Ce>>3]=17976931348623157e292,Tt[m>>3]=-17976931348623157e292,Ve=m+16|0,Tt[Ve>>3]=-17976931348623157e292,(ee|0)>0){for(I=g[p+4>>2]|0,zt=17976931348623157e292,Gt=-17976931348623157e292,S=0,y=-1,H=17976931348623157e292,it=17976931348623157e292,Ct=-17976931348623157e292,L=-17976931348623157e292,Jt=0;k=+Tt[I+(Jt<<4)>>3],ot=+Tt[I+(Jt<<4)+8>>3],Ke=y+2|0,z=+Tt[I+(((Ke|0)==(ee|0)?0:Ke)<<4)+8>>3],k>3]=k,H=k),ot>3]=ot,it=ot),k>Ct?Tt[m>>3]=k:k=Ct,ot>L&&(Tt[Ve>>3]=ot,L=ot),zt=ot>0&otGt?ot:Gt,S=S|+li(+(ot-z))>3.141592653589793,y=Jt+1|0,(y|0)!=(ee|0);)Ke=Jt,Ct=k,Jt=y,y=Ke;S&&(Tt[Ve>>3]=Gt,Tt[Ce>>3]=zt)}}else g[m>>2]=0,g[m+4>>2]=0,g[m+8>>2]=0,g[m+12>>2]=0,g[m+16>>2]=0,g[m+20>>2]=0,g[m+24>>2]=0,g[m+28>>2]=0;if(Ke=p+8|0,y=g[Ke>>2]|0,!((y|0)<=0)){Ze=p+12|0,Nt=0;do if(I=g[Ze>>2]|0,S=Nt,Nt=Nt+1|0,Ce=m+(Nt<<5)|0,Ve=g[I+(S<<3)>>2]|0,Ve){if(Jt=m+(Nt<<5)+8|0,Tt[Jt>>3]=17976931348623157e292,p=m+(Nt<<5)+24|0,Tt[p>>3]=17976931348623157e292,Tt[Ce>>3]=-17976931348623157e292,_e=m+(Nt<<5)+16|0,Tt[_e>>3]=-17976931348623157e292,(Ve|0)>0){for(ee=g[I+(S<<3)+4>>2]|0,zt=17976931348623157e292,Gt=-17976931348623157e292,I=0,S=-1,ie=0,H=17976931348623157e292,it=17976931348623157e292,ot=-17976931348623157e292,L=-17976931348623157e292;k=+Tt[ee+(ie<<4)>>3],Ct=+Tt[ee+(ie<<4)+8>>3],S=S+2|0,z=+Tt[ee+(((S|0)==(Ve|0)?0:S)<<4)+8>>3],k>3]=k,H=k),Ct>3]=Ct,it=Ct),k>ot?Tt[Ce>>3]=k:k=ot,Ct>L&&(Tt[_e>>3]=Ct,L=Ct),zt=Ct>0&CtGt?Ct:Gt,I=I|+li(+(Ct-z))>3.141592653589793,S=ie+1|0,(S|0)!=(Ve|0);)be=ie,ie=S,ot=k,S=be;I&&(Tt[_e>>3]=Gt,Tt[p>>3]=zt)}}else g[Ce>>2]=0,g[Ce+4>>2]=0,g[Ce+8>>2]=0,g[Ce+12>>2]=0,g[Ce+16>>2]=0,g[Ce+20>>2]=0,g[Ce+24>>2]=0,g[Ce+28>>2]=0,y=g[Ke>>2]|0;while((Nt|0)<(y|0))}}function Xe(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0;if(!(Kr(p,m,y)|0))return I=0,I|0;if(I=p+8|0,(g[I>>2]|0)<=0)return I=1,I|0;for(S=p+12|0,p=0;;){if(k=p,p=p+1|0,Kr((g[S>>2]|0)+(k<<3)|0,m+(p<<5)|0,y)|0){p=0,S=6;break}if((p|0)>=(g[I>>2]|0)){p=1,S=6;break}}return(S|0)==6?p|0:0}function Vi(){return 8}function Jr(){return 16}function Vr(){return 168}function ei(){return 8}function Rn(){return 16}function $i(){return 12}function zs(){return 8}function cs(p){p=p|0;var m=0,y=0;return y=+Tt[p>>3],m=+Tt[p+8>>3],+ +_n(+(y*y+m*m))}function Dn(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;it=+Tt[p>>3],H=+Tt[m>>3]-it,z=+Tt[p+8>>3],L=+Tt[m+8>>3]-z,Ct=+Tt[y>>3],k=+Tt[S>>3]-Ct,zt=+Tt[y+8>>3],ot=+Tt[S+8>>3]-zt,k=(k*(z-zt)-(it-Ct)*ot)/(H*ot-L*k),Tt[I>>3]=it+H*k,Tt[I+8>>3]=z+L*k}function Wo(p,m){return p=p|0,m=m|0,+Tt[p>>3]!=+Tt[m>>3]?(m=0,m|0):(m=+Tt[p+8>>3]==+Tt[m+8>>3],m|0)}function jr(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;return I=+Tt[p>>3]-+Tt[m>>3],S=+Tt[p+8>>3]-+Tt[m+8>>3],y=+Tt[p+16>>3]-+Tt[m+16>>3],+(I*I+S*S+y*y)}function jl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;y=+Tt[p>>3],S=+Ur(+y),y=+hi(+y),Tt[m+16>>3]=y,y=+Tt[p+8>>3],I=S*+Ur(+y),Tt[m>>3]=I,y=S*+hi(+y),Tt[m+8>>3]=y}function Gl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(it=wt,wt=wt+32|0,I=it+16|0,k=it,T(p,m,I),L=xf(p,m)|0,H=Ms(p,m)|0,ah(L,k),m=Id(L,g[I>>2]|0)|0,!(fi(L)|0))return H=m,wt=it,H|0;do switch(L|0){case 4:{p=0,y=14;break}case 14:{p=1,y=14;break}case 24:{p=2,y=14;break}case 38:{p=3,y=14;break}case 49:{p=4,y=14;break}case 58:{p=5,y=14;break}case 63:{p=6,y=14;break}case 72:{p=7,y=14;break}case 83:{p=8,y=14;break}case 97:{p=9,y=14;break}case 107:{p=10,y=14;break}case 117:{p=11,y=14;break}default:z=0,S=0}while(!1);return(y|0)==14&&(z=g[22096+(p*24|0)+8>>2]|0,S=g[22096+(p*24|0)+16>>2]|0),p=g[I>>2]|0,(p|0)!=(g[k>>2]|0)&&(L=du(L)|0,p=g[I>>2]|0,L|(p|0)==(S|0)&&(m=(m+1|0)%6|0)),(H|0)==3&(p|0)==(S|0)?(H=(m+5|0)%6|0,wt=it,H|0):(H|0)==5&(p|0)==(z|0)?(H=(m+1|0)%6|0,wt=it,H|0):(H=m,wt=it,H|0)}function mu(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;return S=Ui(p,m)|0,(y+-1|0)>>>0>5||(I=(S|0)!=0,(y|0)==1&I)?(y=-1,y|0):(S=Gl(p,m)|0,I?(y=(5-S+(g[22384+(y<<2)>>2]|0)|0)%5|0,y|0):(y=(6-S+(g[22416+(y<<2)>>2]|0)|0)%6|0,y|0))}function gu(p,m,y){p=p|0,m=m|0,y=y|0;var S=0;(m|0)>0?(S=Na(m,4)|0,g[p>>2]=S,S||Ti(23230,23253,40,23267)):g[p>>2]=0,g[p+4>>2]=m,g[p+8>>2]=0,g[p+12>>2]=y}function gh(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=p+4|0,k=p+12|0,L=p+8|0;t:for(;;){for(y=g[I>>2]|0,m=0;;){if((m|0)>=(y|0))break t;if(S=g[p>>2]|0,z=g[S+(m<<2)>>2]|0,!z)m=m+1|0;else break}m=S+(~~(+li(+(+ul(10,+ +(15-(g[k>>2]|0)|0))*(+Tt[z>>3]+ +Tt[z+8>>3])))%+(y|0))>>>0<<2)|0,y=g[m>>2]|0;e:do if(y|0){if(S=z+32|0,(y|0)==(z|0))g[m>>2]=g[S>>2];else{if(y=y+32|0,m=g[y>>2]|0,!m)break;for(;(m|0)!=(z|0);)if(y=m+32|0,m=g[y>>2]|0,!m)break e;g[y>>2]=g[S>>2]}Gr(z),g[L>>2]=(g[L>>2]|0)+-1}while(!1)}Gr(g[p>>2]|0)}function Ns(p){p=p|0;var m=0,y=0,S=0;for(S=g[p+4>>2]|0,y=0;;){if((y|0)>=(S|0)){m=0,y=4;break}if(m=g[(g[p>>2]|0)+(y<<2)>>2]|0,!m)y=y+1|0;else{y=4;break}}return(y|0)==4?m|0:0}function Es(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;if(y=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,y=(g[p>>2]|0)+(y<<2)|0,S=g[y>>2]|0,!S)return k=1,k|0;k=m+32|0;do if((S|0)!=(m|0)){if(y=g[S+32>>2]|0,!y)return k=1,k|0;for(I=y;;){if((I|0)==(m|0)){I=8;break}if(y=g[I+32>>2]|0,y)S=I,I=y;else{y=1,I=10;break}}if((I|0)==8){g[S+32>>2]=g[k>>2];break}else if((I|0)==10)return y|0}else g[y>>2]=g[k>>2];while(!1);return Gr(m),k=p+8|0,g[k>>2]=(g[k>>2]|0)+-1,k=0,k|0}function yo(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;k=no(40)|0,k||Ti(23283,23253,98,23296),g[k>>2]=g[m>>2],g[k+4>>2]=g[m+4>>2],g[k+8>>2]=g[m+8>>2],g[k+12>>2]=g[m+12>>2],I=k+16|0,g[I>>2]=g[y>>2],g[I+4>>2]=g[y+4>>2],g[I+8>>2]=g[y+8>>2],g[I+12>>2]=g[y+12>>2],g[k+32>>2]=0,I=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,I=(g[p>>2]|0)+(I<<2)|0,S=g[I>>2]|0;do if(!S)g[I>>2]=k;else{for(;!(ls(S,m)|0&&ls(S+16|0,y)|0);)if(I=g[S+32>>2]|0,S=I|0?I:S,!(g[S+32>>2]|0)){L=10;break}if((L|0)==10){g[S+32>>2]=k;break}return Gr(k),L=S,L|0}while(!1);return L=p+8|0,g[L>>2]=(g[L>>2]|0)+1,L=k,L|0}function _h(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;if(I=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,I=g[(g[p>>2]|0)+(I<<2)>>2]|0,!I)return y=0,y|0;if(!y){for(p=I;;){if(ls(p,m)|0){S=10;break}if(p=g[p+32>>2]|0,!p){p=0,S=10;break}}if((S|0)==10)return p|0}for(p=I;;){if(ls(p,m)|0&&ls(p+16|0,y)|0){S=10;break}if(p=g[p+32>>2]|0,!p){p=0,S=10;break}}return(S|0)==10?p|0:0}function On(p,m){p=p|0,m=m|0;var y=0;if(y=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,p=g[(g[p>>2]|0)+(y<<2)>>2]|0,!p)return y=0,y|0;for(;;){if(ls(p,m)|0){m=5;break}if(p=g[p+32>>2]|0,!p){p=0,m=5;break}}return(m|0)==5?p|0:0}function us(){return 23312}function Ho(p){return p=+p,+ +Lx(+p)}function pn(p){return p=+p,~~+Ho(p)|0}function no(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0;Ze=wt,wt=wt+16|0,zt=Ze;do if(p>>>0<245){if(it=p>>>0<11?16:p+11&-8,p=it>>>3,Ct=g[5829]|0,y=Ct>>>p,y&3|0)return m=(y&1^1)+p|0,p=23356+(m<<1<<2)|0,y=p+8|0,S=g[y>>2]|0,I=S+8|0,k=g[I>>2]|0,(k|0)==(p|0)?g[5829]=Ct&~(1<>2]=p,g[y>>2]=k),Nt=m<<3,g[S+4>>2]=Nt|3,Nt=S+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1,Nt=I,wt=Ze,Nt|0;if(ot=g[5831]|0,it>>>0>ot>>>0){if(y|0)return m=2<>>12&16,m=m>>>z,y=m>>>5&8,m=m>>>y,k=m>>>2&4,m=m>>>k,p=m>>>1&2,m=m>>>p,S=m>>>1&1,S=(y|z|k|p|S)+(m>>>S)|0,m=23356+(S<<1<<2)|0,p=m+8|0,k=g[p>>2]|0,z=k+8|0,y=g[z>>2]|0,(y|0)==(m|0)?(p=Ct&~(1<>2]=m,g[p>>2]=y,p=Ct),Nt=S<<3,L=Nt-it|0,g[k+4>>2]=it|3,I=k+it|0,g[I+4>>2]=L|1,g[k+Nt>>2]=L,ot|0&&(S=g[5834]|0,m=ot>>>3,y=23356+(m<<1<<2)|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=S,g[m+12>>2]=S,g[S+8>>2]=m,g[S+12>>2]=y),g[5831]=L,g[5834]=I,Nt=z,wt=Ze,Nt|0;if(k=g[5830]|0,k){for(y=(k&0-k)+-1|0,I=y>>>12&16,y=y>>>I,S=y>>>5&8,y=y>>>S,L=y>>>2&4,y=y>>>L,z=y>>>1&2,y=y>>>z,H=y>>>1&1,H=g[23620+((S|I|L|z|H)+(y>>>H)<<2)>>2]|0,y=H,z=H,H=(g[H+4>>2]&-8)-it|0;p=g[y+16>>2]|0,!(!p&&(p=g[y+20>>2]|0,!p));)L=(g[p+4>>2]&-8)-it|0,I=L>>>0>>0,y=p,z=I?p:z,H=I?L:H;if(L=z+it|0,L>>>0>z>>>0){I=g[z+24>>2]|0,m=g[z+12>>2]|0;do if((m|0)==(z|0)){if(p=z+20|0,m=g[p>>2]|0,!m&&(p=z+16|0,m=g[p>>2]|0,!m)){y=0;break}for(;;)if(S=m+20|0,y=g[S>>2]|0,y)m=y,p=S;else if(S=m+16|0,y=g[S>>2]|0,y)m=y,p=S;else break;g[p>>2]=0,y=m}else y=g[z+8>>2]|0,g[y+12>>2]=m,g[m+8>>2]=y,y=m;while(!1);do if(I|0){if(m=g[z+28>>2]|0,p=23620+(m<<2)|0,(z|0)==(g[p>>2]|0)){if(g[p>>2]=y,!y){g[5830]=k&~(1<>2]|0)==(z|0)?Nt:I+20|0)>>2]=y,!y)break;g[y+24>>2]=I,m=g[z+16>>2]|0,m|0&&(g[y+16>>2]=m,g[m+24>>2]=y),m=g[z+20>>2]|0,m|0&&(g[y+20>>2]=m,g[m+24>>2]=y)}while(!1);return H>>>0<16?(Nt=H+it|0,g[z+4>>2]=Nt|3,Nt=z+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1):(g[z+4>>2]=it|3,g[L+4>>2]=H|1,g[L+H>>2]=H,ot|0&&(S=g[5834]|0,m=ot>>>3,y=23356+(m<<1<<2)|0,m=1<>2]|0):(g[5829]=m|Ct,m=y,p=y+8|0),g[p>>2]=S,g[m+12>>2]=S,g[S+8>>2]=m,g[S+12>>2]=y),g[5831]=H,g[5834]=L),Nt=z+8|0,wt=Ze,Nt|0}else Ct=it}else Ct=it}else Ct=it}else if(p>>>0<=4294967231)if(p=p+11|0,it=p&-8,S=g[5830]|0,S){I=0-it|0,p=p>>>8,p?it>>>0>16777215?H=31:(Ct=(p+1048320|0)>>>16&8,ie=p<>>16&4,ie=ie<>>16&2,H=14-(z|Ct|H)+(ie<>>15)|0,H=it>>>(H+7|0)&1|H<<1):H=0,y=g[23620+(H<<2)>>2]|0;t:do if(!y)y=0,p=0,ie=61;else for(p=0,z=it<<((H|0)==31?0:25-(H>>>1)|0),k=0;;){if(L=(g[y+4>>2]&-8)-it|0,L>>>0>>0)if(L)p=y,I=L;else{p=y,I=0,ie=65;break t}if(ie=g[y+20>>2]|0,y=g[y+16+(z>>>31<<2)>>2]|0,k=(ie|0)==0|(ie|0)==(y|0)?k:ie,y)z=z<<1;else{y=k,ie=61;break}}while(!1);if((ie|0)==61){if((y|0)==0&(p|0)==0){if(p=2<>>12&16,Ct=Ct>>>L,k=Ct>>>5&8,Ct=Ct>>>k,z=Ct>>>2&4,Ct=Ct>>>z,H=Ct>>>1&2,Ct=Ct>>>H,y=Ct>>>1&1,p=0,y=g[23620+((k|L|z|H|y)+(Ct>>>y)<<2)>>2]|0}y?ie=65:(z=p,L=I)}if((ie|0)==65)for(k=y;;)if(Ct=(g[k+4>>2]&-8)-it|0,y=Ct>>>0>>0,I=y?Ct:I,p=y?k:p,y=g[k+16>>2]|0,y||(y=g[k+20>>2]|0),y)k=y;else{z=p,L=I;break}if(z|0&&L>>>0<((g[5831]|0)-it|0)>>>0&&(ot=z+it|0,ot>>>0>z>>>0)){k=g[z+24>>2]|0,m=g[z+12>>2]|0;do if((m|0)==(z|0)){if(p=z+20|0,m=g[p>>2]|0,!m&&(p=z+16|0,m=g[p>>2]|0,!m)){m=0;break}for(;;)if(I=m+20|0,y=g[I>>2]|0,y)m=y,p=I;else if(I=m+16|0,y=g[I>>2]|0,y)m=y,p=I;else break;g[p>>2]=0}else Nt=g[z+8>>2]|0,g[Nt+12>>2]=m,g[m+8>>2]=Nt;while(!1);do if(k){if(p=g[z+28>>2]|0,y=23620+(p<<2)|0,(z|0)==(g[y>>2]|0)){if(g[y>>2]=m,!m){S=S&~(1<>2]|0)==(z|0)?Nt:k+20|0)>>2]=m,!m)break;g[m+24>>2]=k,p=g[z+16>>2]|0,p|0&&(g[m+16>>2]=p,g[p+24>>2]=m),p=g[z+20>>2]|0,p&&(g[m+20>>2]=p,g[p+24>>2]=m)}while(!1);t:do if(L>>>0<16)Nt=L+it|0,g[z+4>>2]=Nt|3,Nt=z+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1;else{if(g[z+4>>2]=it|3,g[ot+4>>2]=L|1,g[ot+L>>2]=L,m=L>>>3,L>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=ot,g[m+12>>2]=ot,g[ot+8>>2]=m,g[ot+12>>2]=y;break}if(m=L>>>8,m?L>>>0>16777215?y=31:(_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,y=14-(Jt|_e|y)+(Nt<>>15)|0,y=L>>>(y+7|0)&1|y<<1):y=0,m=23620+(y<<2)|0,g[ot+28>>2]=y,p=ot+16|0,g[p+4>>2]=0,g[p>>2]=0,p=1<>2]=ot,g[ot+24>>2]=m,g[ot+12>>2]=ot,g[ot+8>>2]=ot;break}m=g[m>>2]|0;e:do if((g[m+4>>2]&-8|0)!=(L|0)){for(S=L<<((y|0)==31?0:25-(y>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(L|0)){m=p;break e}else S=S<<1,m=p;g[y>>2]=ot,g[ot+24>>2]=m,g[ot+12>>2]=ot,g[ot+8>>2]=ot;break t}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=ot,g[_e>>2]=ot,g[ot+8>>2]=Nt,g[ot+12>>2]=m,g[ot+24>>2]=0}while(!1);return Nt=z+8|0,wt=Ze,Nt|0}else Ct=it}else Ct=it;else Ct=-1;while(!1);if(y=g[5831]|0,y>>>0>=Ct>>>0)return m=y-Ct|0,p=g[5834]|0,m>>>0>15?(Nt=p+Ct|0,g[5834]=Nt,g[5831]=m,g[Nt+4>>2]=m|1,g[p+y>>2]=m,g[p+4>>2]=Ct|3):(g[5831]=0,g[5834]=0,g[p+4>>2]=y|3,Nt=p+y+4|0,g[Nt>>2]=g[Nt>>2]|1),Nt=p+8|0,wt=Ze,Nt|0;if(L=g[5832]|0,L>>>0>Ct>>>0)return Jt=L-Ct|0,g[5832]=Jt,Nt=g[5835]|0,_e=Nt+Ct|0,g[5835]=_e,g[_e+4>>2]=Jt|1,g[Nt+4>>2]=Ct|3,Nt=Nt+8|0,wt=Ze,Nt|0;if(g[5947]|0?p=g[5949]|0:(g[5949]=4096,g[5948]=4096,g[5950]=-1,g[5951]=-1,g[5952]=0,g[5940]=0,g[5947]=zt&-16^1431655768,p=4096),z=Ct+48|0,H=Ct+47|0,k=p+H|0,I=0-p|0,it=k&I,it>>>0<=Ct>>>0||(p=g[5939]|0,p|0&&(ot=g[5937]|0,zt=ot+it|0,zt>>>0<=ot>>>0|zt>>>0>p>>>0)))return Nt=0,wt=Ze,Nt|0;t:do if(g[5940]&4)m=0,ie=143;else{y=g[5835]|0;e:do if(y){for(S=23764;zt=g[S>>2]|0,!(zt>>>0<=y>>>0&&(zt+(g[S+4>>2]|0)|0)>>>0>y>>>0);)if(p=g[S+8>>2]|0,p)S=p;else{ie=128;break e}if(m=k-L&I,m>>>0<2147483647)if(p=Xi(m|0)|0,(p|0)==((g[S>>2]|0)+(g[S+4>>2]|0)|0)){if((p|0)!=-1){L=m,k=p,ie=145;break t}}else S=p,ie=136;else m=0}else ie=128;while(!1);do if((ie|0)==128)if(y=Xi(0)|0,(y|0)!=-1&&(m=y,Gt=g[5948]|0,ee=Gt+-1|0,m=(ee&m|0?(ee+m&0-Gt)-m|0:0)+it|0,Gt=g[5937]|0,ee=m+Gt|0,m>>>0>Ct>>>0&m>>>0<2147483647)){if(zt=g[5939]|0,zt|0&&ee>>>0<=Gt>>>0|ee>>>0>zt>>>0){m=0;break}if(p=Xi(m|0)|0,(p|0)==(y|0)){L=m,k=y,ie=145;break t}else S=p,ie=136}else m=0;while(!1);do if((ie|0)==136){if(y=0-m|0,!(z>>>0>m>>>0&(m>>>0<2147483647&(S|0)!=-1)))if((S|0)==-1){m=0;break}else{L=m,k=S,ie=145;break t}if(p=g[5949]|0,p=H-m+p&0-p,p>>>0>=2147483647){L=m,k=S,ie=145;break t}if((Xi(p|0)|0)==-1){Xi(y|0)|0,m=0;break}else{L=p+m|0,k=S,ie=145;break t}}while(!1);g[5940]=g[5940]|4,ie=143}while(!1);if((ie|0)==143&&it>>>0<2147483647&&(Jt=Xi(it|0)|0,ee=Xi(0)|0,Ce=ee-Jt|0,Ve=Ce>>>0>(Ct+40|0)>>>0,!((Jt|0)==-1|Ve^1|Jt>>>0>>0&((Jt|0)!=-1&(ee|0)!=-1)^1))&&(L=Ve?Ce:m,k=Jt,ie=145),(ie|0)==145){m=(g[5937]|0)+L|0,g[5937]=m,m>>>0>(g[5938]|0)>>>0&&(g[5938]=m),H=g[5835]|0;t:do if(H){for(m=23764;;){if(p=g[m>>2]|0,y=g[m+4>>2]|0,(k|0)==(p+y|0)){ie=154;break}if(S=g[m+8>>2]|0,S)m=S;else break}if((ie|0)==154&&(_e=m+4|0,(g[m+12>>2]&8|0)==0)&&k>>>0>H>>>0&p>>>0<=H>>>0){g[_e>>2]=y+L,Nt=(g[5832]|0)+L|0,Jt=H+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=H+Jt|0,Jt=Nt-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[H+Nt+4>>2]=40,g[5836]=g[5951];break}for(k>>>0<(g[5833]|0)>>>0&&(g[5833]=k),y=k+L|0,m=23764;;){if((g[m>>2]|0)==(y|0)){ie=162;break}if(p=g[m+8>>2]|0,p)m=p;else break}if((ie|0)==162&&!(g[m+12>>2]&8|0)){g[m>>2]=k,ot=m+4|0,g[ot>>2]=(g[ot>>2]|0)+L,ot=k+8|0,ot=k+(ot&7|0?0-ot&7:0)|0,m=y+8|0,m=y+(m&7|0?0-m&7:0)|0,it=ot+Ct|0,z=m-ot-Ct|0,g[ot+4>>2]=Ct|3;e:do if((H|0)==(m|0))Nt=(g[5832]|0)+z|0,g[5832]=Nt,g[5835]=it,g[it+4>>2]=Nt|1;else{if((g[5834]|0)==(m|0)){Nt=(g[5831]|0)+z|0,g[5831]=Nt,g[5834]=it,g[it+4>>2]=Nt|1,g[it+Nt>>2]=Nt;break}if(p=g[m+4>>2]|0,(p&3|0)==1){L=p&-8,S=p>>>3;r:do if(p>>>0<256)if(p=g[m+8>>2]|0,y=g[m+12>>2]|0,(y|0)==(p|0)){g[5829]=g[5829]&~(1<>2]=y,g[y+8>>2]=p;break}else{k=g[m+24>>2]|0,p=g[m+12>>2]|0;do if((p|0)==(m|0)){if(y=m+16|0,S=y+4|0,p=g[S>>2]|0,p)y=S;else if(p=g[y>>2]|0,!p){p=0;break}for(;;)if(I=p+20|0,S=g[I>>2]|0,S)p=S,y=I;else if(I=p+16|0,S=g[I>>2]|0,S)p=S,y=I;else break;g[y>>2]=0}else Nt=g[m+8>>2]|0,g[Nt+12>>2]=p,g[p+8>>2]=Nt;while(!1);if(!k)break;y=g[m+28>>2]|0,S=23620+(y<<2)|0;do if((g[S>>2]|0)!=(m|0)){if(Nt=k+16|0,g[((g[Nt>>2]|0)==(m|0)?Nt:k+20|0)>>2]=p,!p)break r}else{if(g[S>>2]=p,p|0)break;g[5830]=g[5830]&~(1<>2]=k,y=m+16|0,S=g[y>>2]|0,S|0&&(g[p+16>>2]=S,g[S+24>>2]=p),y=g[y+4>>2]|0,!y)break;g[p+20>>2]=y,g[y+24>>2]=p}while(!1);m=m+L|0,I=L+z|0}else I=z;if(m=m+4|0,g[m>>2]=g[m>>2]&-2,g[it+4>>2]=I|1,g[it+I>>2]=I,m=I>>>3,I>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=it,g[m+12>>2]=it,g[it+8>>2]=m,g[it+12>>2]=y;break}m=I>>>8;do if(!m)S=0;else{if(I>>>0>16777215){S=31;break}_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,S=14-(Jt|_e|S)+(Nt<>>15)|0,S=I>>>(S+7|0)&1|S<<1}while(!1);if(m=23620+(S<<2)|0,g[it+28>>2]=S,p=it+16|0,g[p+4>>2]=0,g[p>>2]=0,p=g[5830]|0,y=1<>2]=it,g[it+24>>2]=m,g[it+12>>2]=it,g[it+8>>2]=it;break}m=g[m>>2]|0;r:do if((g[m+4>>2]&-8|0)!=(I|0)){for(S=I<<((S|0)==31?0:25-(S>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(I|0)){m=p;break r}else S=S<<1,m=p;g[y>>2]=it,g[it+24>>2]=m,g[it+12>>2]=it,g[it+8>>2]=it;break e}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=it,g[_e>>2]=it,g[it+8>>2]=Nt,g[it+12>>2]=m,g[it+24>>2]=0}while(!1);return Nt=ot+8|0,wt=Ze,Nt|0}for(m=23764;p=g[m>>2]|0,!(p>>>0<=H>>>0&&(Nt=p+(g[m+4>>2]|0)|0,Nt>>>0>H>>>0));)m=g[m+8>>2]|0;I=Nt+-47|0,p=I+8|0,p=I+(p&7|0?0-p&7:0)|0,I=H+16|0,p=p>>>0>>0?H:p,m=p+8|0,y=L+-40|0,Jt=k+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=k+Jt|0,Jt=y-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[k+y+4>>2]=40,g[5836]=g[5951],y=p+4|0,g[y>>2]=27,g[m>>2]=g[5941],g[m+4>>2]=g[5942],g[m+8>>2]=g[5943],g[m+12>>2]=g[5944],g[5941]=k,g[5942]=L,g[5944]=0,g[5943]=m,m=p+24|0;do _e=m,m=m+4|0,g[m>>2]=7;while((_e+8|0)>>>0>>0);if((p|0)!=(H|0)){if(k=p-H|0,g[y>>2]=g[y>>2]&-2,g[H+4>>2]=k|1,g[p>>2]=k,m=k>>>3,k>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=H,g[m+12>>2]=H,g[H+8>>2]=m,g[H+12>>2]=y;break}if(m=k>>>8,m?k>>>0>16777215?S=31:(_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,S=14-(Jt|_e|S)+(Nt<>>15)|0,S=k>>>(S+7|0)&1|S<<1):S=0,y=23620+(S<<2)|0,g[H+28>>2]=S,g[H+20>>2]=0,g[I>>2]=0,m=g[5830]|0,p=1<>2]=H,g[H+24>>2]=y,g[H+12>>2]=H,g[H+8>>2]=H;break}m=g[y>>2]|0;e:do if((g[m+4>>2]&-8|0)!=(k|0)){for(S=k<<((S|0)==31?0:25-(S>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(k|0)){m=p;break e}else S=S<<1,m=p;g[y>>2]=H,g[H+24>>2]=m,g[H+12>>2]=H,g[H+8>>2]=H;break t}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=H,g[_e>>2]=H,g[H+8>>2]=Nt,g[H+12>>2]=m,g[H+24>>2]=0}}else Nt=g[5833]|0,(Nt|0)==0|k>>>0>>0&&(g[5833]=k),g[5941]=k,g[5942]=L,g[5944]=0,g[5838]=g[5947],g[5837]=-1,g[5842]=23356,g[5841]=23356,g[5844]=23364,g[5843]=23364,g[5846]=23372,g[5845]=23372,g[5848]=23380,g[5847]=23380,g[5850]=23388,g[5849]=23388,g[5852]=23396,g[5851]=23396,g[5854]=23404,g[5853]=23404,g[5856]=23412,g[5855]=23412,g[5858]=23420,g[5857]=23420,g[5860]=23428,g[5859]=23428,g[5862]=23436,g[5861]=23436,g[5864]=23444,g[5863]=23444,g[5866]=23452,g[5865]=23452,g[5868]=23460,g[5867]=23460,g[5870]=23468,g[5869]=23468,g[5872]=23476,g[5871]=23476,g[5874]=23484,g[5873]=23484,g[5876]=23492,g[5875]=23492,g[5878]=23500,g[5877]=23500,g[5880]=23508,g[5879]=23508,g[5882]=23516,g[5881]=23516,g[5884]=23524,g[5883]=23524,g[5886]=23532,g[5885]=23532,g[5888]=23540,g[5887]=23540,g[5890]=23548,g[5889]=23548,g[5892]=23556,g[5891]=23556,g[5894]=23564,g[5893]=23564,g[5896]=23572,g[5895]=23572,g[5898]=23580,g[5897]=23580,g[5900]=23588,g[5899]=23588,g[5902]=23596,g[5901]=23596,g[5904]=23604,g[5903]=23604,Nt=L+-40|0,Jt=k+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=k+Jt|0,Jt=Nt-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[k+Nt+4>>2]=40,g[5836]=g[5951];while(!1);if(m=g[5832]|0,m>>>0>Ct>>>0)return Jt=m-Ct|0,g[5832]=Jt,Nt=g[5835]|0,_e=Nt+Ct|0,g[5835]=_e,g[_e+4>>2]=Jt|1,g[Nt+4>>2]=Ct|3,Nt=Nt+8|0,wt=Ze,Nt|0}return Nt=us()|0,g[Nt>>2]=12,Nt=0,wt=Ze,Nt|0}function Gr(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(p){y=p+-8|0,I=g[5833]|0,p=g[p+-4>>2]|0,m=p&-8,H=y+m|0;do if(p&1)z=y,L=y;else{if(S=g[y>>2]|0,!(p&3)||(L=y+(0-S)|0,k=S+m|0,L>>>0>>0))return;if((g[5834]|0)==(L|0)){if(p=H+4|0,m=g[p>>2]|0,(m&3|0)!=3){z=L,m=k;break}g[5831]=k,g[p>>2]=m&-2,g[L+4>>2]=k|1,g[L+k>>2]=k;return}if(y=S>>>3,S>>>0<256)if(p=g[L+8>>2]|0,m=g[L+12>>2]|0,(m|0)==(p|0)){g[5829]=g[5829]&~(1<>2]=m,g[m+8>>2]=p,z=L,m=k;break}I=g[L+24>>2]|0,p=g[L+12>>2]|0;do if((p|0)==(L|0)){if(m=L+16|0,y=m+4|0,p=g[y>>2]|0,p)m=y;else if(p=g[m>>2]|0,!p){p=0;break}for(;;)if(S=p+20|0,y=g[S>>2]|0,y)p=y,m=S;else if(S=p+16|0,y=g[S>>2]|0,y)p=y,m=S;else break;g[m>>2]=0}else z=g[L+8>>2]|0,g[z+12>>2]=p,g[p+8>>2]=z;while(!1);if(I){if(m=g[L+28>>2]|0,y=23620+(m<<2)|0,(g[y>>2]|0)==(L|0)){if(g[y>>2]=p,!p){g[5830]=g[5830]&~(1<>2]|0)==(L|0)?z:I+20|0)>>2]=p,!p){z=L,m=k;break}g[p+24>>2]=I,m=L+16|0,y=g[m>>2]|0,y|0&&(g[p+16>>2]=y,g[y+24>>2]=p),m=g[m+4>>2]|0,m?(g[p+20>>2]=m,g[m+24>>2]=p,z=L,m=k):(z=L,m=k)}else z=L,m=k}while(!1);if(!(L>>>0>=H>>>0)&&(p=H+4|0,S=g[p>>2]|0,!!(S&1))){if(S&2)g[p>>2]=S&-2,g[z+4>>2]=m|1,g[L+m>>2]=m,I=m;else{if((g[5835]|0)==(H|0)){if(H=(g[5832]|0)+m|0,g[5832]=H,g[5835]=z,g[z+4>>2]=H|1,(z|0)!=(g[5834]|0))return;g[5834]=0,g[5831]=0;return}if((g[5834]|0)==(H|0)){H=(g[5831]|0)+m|0,g[5831]=H,g[5834]=L,g[z+4>>2]=H|1,g[L+H>>2]=H;return}I=(S&-8)+m|0,y=S>>>3;do if(S>>>0<256)if(m=g[H+8>>2]|0,p=g[H+12>>2]|0,(p|0)==(m|0)){g[5829]=g[5829]&~(1<>2]=p,g[p+8>>2]=m;break}else{k=g[H+24>>2]|0,p=g[H+12>>2]|0;do if((p|0)==(H|0)){if(m=H+16|0,y=m+4|0,p=g[y>>2]|0,p)m=y;else if(p=g[m>>2]|0,!p){y=0;break}for(;;)if(S=p+20|0,y=g[S>>2]|0,y)p=y,m=S;else if(S=p+16|0,y=g[S>>2]|0,y)p=y,m=S;else break;g[m>>2]=0,y=p}else y=g[H+8>>2]|0,g[y+12>>2]=p,g[p+8>>2]=y,y=p;while(!1);if(k|0){if(p=g[H+28>>2]|0,m=23620+(p<<2)|0,(g[m>>2]|0)==(H|0)){if(g[m>>2]=y,!y){g[5830]=g[5830]&~(1<>2]|0)==(H|0)?S:k+20|0)>>2]=y,!y)break;g[y+24>>2]=k,p=H+16|0,m=g[p>>2]|0,m|0&&(g[y+16>>2]=m,g[m+24>>2]=y),p=g[p+4>>2]|0,p|0&&(g[y+20>>2]=p,g[p+24>>2]=y)}}while(!1);if(g[z+4>>2]=I|1,g[L+I>>2]=I,(z|0)==(g[5834]|0)){g[5831]=I;return}}if(p=I>>>3,I>>>0<256){y=23356+(p<<1<<2)|0,m=g[5829]|0,p=1<>2]|0):(g[5829]=m|p,p=y,m=y+8|0),g[m>>2]=z,g[p+12>>2]=z,g[z+8>>2]=p,g[z+12>>2]=y;return}p=I>>>8,p?I>>>0>16777215?S=31:(L=(p+1048320|0)>>>16&8,H=p<>>16&4,H=H<>>16&2,S=14-(k|L|S)+(H<>>15)|0,S=I>>>(S+7|0)&1|S<<1):S=0,p=23620+(S<<2)|0,g[z+28>>2]=S,g[z+20>>2]=0,g[z+16>>2]=0,m=g[5830]|0,y=1<>2]=z,g[z+24>>2]=p,g[z+12>>2]=z,g[z+8>>2]=z;else{p=g[p>>2]|0;e:do if((g[p+4>>2]&-8|0)!=(I|0)){for(S=I<<((S|0)==31?0:25-(S>>>1)|0);y=p+16+(S>>>31<<2)|0,m=g[y>>2]|0,!!m;)if((g[m+4>>2]&-8|0)==(I|0)){p=m;break e}else S=S<<1,p=m;g[y>>2]=z,g[z+24>>2]=p,g[z+12>>2]=z,g[z+8>>2]=z;break t}while(!1);L=p+8|0,H=g[L>>2]|0,g[H+12>>2]=z,g[L>>2]=z,g[z+8>>2]=H,g[z+12>>2]=p,g[z+24>>2]=0}while(!1);if(H=(g[5837]|0)+-1|0,g[5837]=H,!(H|0)){for(p=23772;p=g[p>>2]|0,p;)p=p+8|0;g[5837]=-1}}}}function Na(p,m){p=p|0,m=m|0;var y=0;return p?(y=kc(m,p)|0,(m|p)>>>0>65535&&(y=((y>>>0)/(p>>>0)|0|0)==(m|0)?y:-1)):y=0,p=no(y)|0,!p||!(g[p+-4>>2]&3)||Dc(p|0,0,y|0)|0,p|0}function d_(p,m,y,S){return p=p|0,m=m|0,y=y|0,S=S|0,y=p+y>>>0,$e(m+S+(y>>>0

>>0|0)>>>0|0),y|0|0}function Bd(p,m,y,S){return p=p|0,m=m|0,y=y|0,S=S|0,S=m-S-(y>>>0>p>>>0|0)>>>0,$e(S|0),p-y>>>0|0|0}function oA(p){return p=p|0,(p?31-(aa(p^p-1)|0)|0:32)|0}function Wl(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0;if(ot=p,H=m,it=H,L=y,zt=S,z=zt,!it)return k=(I|0)!=0,z?k?(g[I>>2]=p|0,g[I+4>>2]=m&0,zt=0,I=0,$e(zt|0),I|0):(zt=0,I=0,$e(zt|0),I|0):(k&&(g[I>>2]=(ot>>>0)%(L>>>0),g[I+4>>2]=0),zt=0,I=(ot>>>0)/(L>>>0)>>>0,$e(zt|0),I|0);k=(z|0)==0;do if(L){if(!k){if(k=(aa(z|0)|0)-(aa(it|0)|0)|0,k>>>0<=31){Ct=k+1|0,z=31-k|0,m=k-31>>31,L=Ct,p=ot>>>(Ct>>>0)&m|it<>>(Ct>>>0)&m,k=0,z=ot<>2]=p|0,g[I+4>>2]=H|m&0,zt=0,I=0,$e(zt|0),I|0):(zt=0,I=0,$e(zt|0),I|0)}if(k=L-1|0,k&L|0){z=(aa(L|0)|0)+33-(aa(it|0)|0)|0,ee=64-z|0,Ct=32-z|0,H=Ct>>31,Gt=z-32|0,m=Gt>>31,L=z,p=Ct-1>>31&it>>>(Gt>>>0)|(it<>>(z>>>0))&m,m=m&it>>>(z>>>0),k=ot<>>(Gt>>>0))&H|ot<>31;break}return I|0&&(g[I>>2]=k&ot,g[I+4>>2]=0),(L|0)==1?(Gt=H|m&0,ee=p|0|0,$e(Gt|0),ee|0):(ee=oA(L|0)|0,Gt=it>>>(ee>>>0)|0,ee=it<<32-ee|ot>>>(ee>>>0)|0,$e(Gt|0),ee|0)}else{if(k)return I|0&&(g[I>>2]=(it>>>0)%(L>>>0),g[I+4>>2]=0),Gt=0,ee=(it>>>0)/(L>>>0)>>>0,$e(Gt|0),ee|0;if(!ot)return I|0&&(g[I>>2]=0,g[I+4>>2]=(it>>>0)%(z>>>0)),Gt=0,ee=(it>>>0)/(z>>>0)>>>0,$e(Gt|0),ee|0;if(k=z-1|0,!(k&z))return I|0&&(g[I>>2]=p|0,g[I+4>>2]=k&it|m&0),Gt=0,ee=it>>>((oA(z|0)|0)>>>0),$e(Gt|0),ee|0;if(k=(aa(z|0)|0)-(aa(it|0)|0)|0,k>>>0<=30){m=k+1|0,z=31-k|0,L=m,p=it<>>(m>>>0),m=it>>>(m>>>0),k=0,z=ot<>2]=p|0,g[I+4>>2]=H|m&0,Gt=0,ee=0,$e(Gt|0),ee|0):(Gt=0,ee=0,$e(Gt|0),ee|0)}while(!1);if(!L)it=z,H=0,z=0;else{Ct=y|0|0,ot=zt|S&0,it=d_(Ct|0,ot|0,-1,-1)|0,y=It()|0,H=z,z=0;do S=H,H=k>>>31|H<<1,k=z|k<<1,S=p<<1|S>>>31|0,zt=p>>>31|m<<1|0,Bd(it|0,y|0,S|0,zt|0)|0,ee=It()|0,Gt=ee>>31|((ee|0)<0?-1:0)<<1,z=Gt&1,p=Bd(S|0,zt|0,Gt&Ct|0,(((ee|0)<0?-1:0)>>31|((ee|0)<0?-1:0)<<1)&ot|0)|0,m=It()|0,L=L-1|0;while(L|0);it=H,H=0}return L=0,I|0&&(g[I>>2]=p,g[I+4>>2]=m),Gt=(k|0)>>>31|(it|L)<<1|(L<<1|k>>>31)&0|H,ee=(k<<1|0)&-2|z,$e(Gt|0),ee|0}function qo(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0;return k=wt,wt=wt+16|0,I=k|0,Wl(p,m,y,S,I)|0,wt=k,$e(g[I+4>>2]|0),g[I>>2]|0|0}function me(p,m,y){return p=p|0,m=m|0,y=y|0,(y|0)<32?($e(m>>>y|0),p>>>y|(m&(1<>>y-32|0)}function Le(p,m,y){return p=p|0,m=m|0,y=y|0,(y|0)<32?($e(m<>>32-y|0),p<=0?+as(p+.5):+Qi(p-.5)}function Ua(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0;if((y|0)>=8192)return Hp(p|0,m|0,y|0)|0,p|0;if(k=p|0,I=p+y|0,(p&3)==(m&3)){for(;p&3;){if(!y)return k|0;vr[p>>0]=vr[m>>0]|0,p=p+1|0,m=m+1|0,y=y-1|0}for(y=I&-4|0,S=y-64|0;(p|0)<=(S|0);)g[p>>2]=g[m>>2],g[p+4>>2]=g[m+4>>2],g[p+8>>2]=g[m+8>>2],g[p+12>>2]=g[m+12>>2],g[p+16>>2]=g[m+16>>2],g[p+20>>2]=g[m+20>>2],g[p+24>>2]=g[m+24>>2],g[p+28>>2]=g[m+28>>2],g[p+32>>2]=g[m+32>>2],g[p+36>>2]=g[m+36>>2],g[p+40>>2]=g[m+40>>2],g[p+44>>2]=g[m+44>>2],g[p+48>>2]=g[m+48>>2],g[p+52>>2]=g[m+52>>2],g[p+56>>2]=g[m+56>>2],g[p+60>>2]=g[m+60>>2],p=p+64|0,m=m+64|0;for(;(p|0)<(y|0);)g[p>>2]=g[m>>2],p=p+4|0,m=m+4|0}else for(y=I-4|0;(p|0)<(y|0);)vr[p>>0]=vr[m>>0]|0,vr[p+1>>0]=vr[m+1>>0]|0,vr[p+2>>0]=vr[m+2>>0]|0,vr[p+3>>0]=vr[m+3>>0]|0,p=p+4|0,m=m+4|0;for(;(p|0)<(I|0);)vr[p>>0]=vr[m>>0]|0,p=p+1|0,m=m+1|0;return k|0}function Dc(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if(k=p+y|0,m=m&255,(y|0)>=67){for(;p&3;)vr[p>>0]=m,p=p+1|0;for(S=k&-4|0,L=m|m<<8|m<<16|m<<24,I=S-64|0;(p|0)<=(I|0);)g[p>>2]=L,g[p+4>>2]=L,g[p+8>>2]=L,g[p+12>>2]=L,g[p+16>>2]=L,g[p+20>>2]=L,g[p+24>>2]=L,g[p+28>>2]=L,g[p+32>>2]=L,g[p+36>>2]=L,g[p+40>>2]=L,g[p+44>>2]=L,g[p+48>>2]=L,g[p+52>>2]=L,g[p+56>>2]=L,g[p+60>>2]=L,p=p+64|0;for(;(p|0)<(S|0);)g[p>>2]=L,p=p+4|0}for(;(p|0)<(k|0);)vr[p>>0]=m,p=p+1|0;return k-y|0}function Lx(p){return p=+p,p>=0?+as(p+.5):+Qi(p-.5)}function Xi(p){p=p|0;var m=0,y=0,S=0;return S=Ym()|0,y=g[Ts>>2]|0,m=y+p|0,(p|0)>0&(m|0)<(y|0)|(m|0)<0?(Qm(m|0)|0,Zm(12),-1):(m|0)>(S|0)&&!(qp(m|0)|0)?(Zm(12),-1):(g[Ts>>2]=m,y|0)}return{___uremdi3:qo,_bitshift64Lshr:me,_bitshift64Shl:Le,_calloc:Na,_cellAreaKm2:h_,_cellAreaM2:Cx,_cellAreaRads2:u_,_compact:Ah,_destroyLinkedPolygon:Ft,_edgeLengthKm:ln,_edgeLengthM:rA,_emscripten_replace_memory:$m,_exactEdgeLengthKm:iA,_exactEdgeLengthM:rr,_exactEdgeLengthRads:_o,_experimentalH3ToLocalIj:Qt,_experimentalLocalIjToH3:se,_free:Gr,_geoToH3:sA,_getDestinationH3IndexFromUnidirectionalEdge:Z,_getH3IndexesFromUnidirectionalEdge:st,_getH3UnidirectionalEdge:U,_getH3UnidirectionalEdgeBoundary:pt,_getH3UnidirectionalEdgesFromHexagon:At,_getOriginH3IndexFromUnidirectionalEdge:W,_getPentagonIndexes:O,_getRes0Indexes:s_,_h3Distance:pe,_h3GetBaseCell:xf,_h3GetFaces:b,_h3GetResolution:fr,_h3IndexesAreNeighbors:B,_h3IsPentagon:Ui,_h3IsResClassIII:bf,_h3IsValid:nA,_h3Line:xe,_h3LineSize:he,_h3SetToLinkedGeo:oh,_h3ToCenterChild:f_,_h3ToChildren:io,_h3ToGeo:l,_h3ToGeoBoundary:d,_h3ToParent:Dd,_h3UnidirectionalEdgeIsValid:Q,_hexAreaKm2:c_,_hexAreaM2:ua,_hexRing:i_,_i64Subtract:Bd,_kRing:e_,_kRingDistances:r_,_llvm_minnum_f64:dl,_llvm_round_f64:Sf,_malloc:no,_maxFaceCount:v,_maxH3ToChildrenSize:Gn,_maxKringSize:Xm,_maxPolyfillSize:Pd,_maxUncompactSize:yn,_memcpy:Ua,_memset:Dc,_numHexagons:l0,_pentagonIndexCount:M,_pointDistKm:Rc,_pointDistM:o0,_pointDistRads:Au,_polyfill:Zp,_res0IndexCount:n_,_round:Lx,_sbrk:Xi,_sizeOfCoordIJ:zs,_sizeOfGeoBoundary:Vr,_sizeOfGeoCoord:Jr,_sizeOfGeoPolygon:Rn,_sizeOfGeofence:ei,_sizeOfH3Index:Vi,_sizeOfLinkedGeoPolygon:$i,_uncompact:Cn,establishStackSpace:Px,stackAlloc:Td,stackRestore:Ed,stackSave:Md}}(vt,xt,er),Dt=t.___uremdi3=_t.___uremdi3,Mt=t._bitshift64Lshr=_t._bitshift64Lshr,Ut=t._bitshift64Shl=_t._bitshift64Shl,re=t._calloc=_t._calloc,ne=t._cellAreaKm2=_t._cellAreaKm2,oe=t._cellAreaM2=_t._cellAreaM2,ar=t._cellAreaRads2=_t._cellAreaRads2,_r=t._compact=_t._compact,Ye=t._destroyLinkedPolygon=_t._destroyLinkedPolygon,lr=t._edgeLengthKm=_t._edgeLengthKm,xr=t._edgeLengthM=_t._edgeLengthM,vi=t._emscripten_replace_memory=_t._emscripten_replace_memory,Bi=t._exactEdgeLengthKm=_t._exactEdgeLengthKm,ni=t._exactEdgeLengthM=_t._exactEdgeLengthM,Hr=t._exactEdgeLengthRads=_t._exactEdgeLengthRads,Un=t._experimentalH3ToLocalIj=_t._experimentalH3ToLocalIj,Li=t._experimentalLocalIjToH3=_t._experimentalLocalIjToH3,gn=t._free=_t._free,Kn=t._geoToH3=_t._geoToH3,oa=t._getDestinationH3IndexFromUnidirectionalEdge=_t._getDestinationH3IndexFromUnidirectionalEdge,Om=t._getH3IndexesFromUnidirectionalEdge=_t._getH3IndexesFromUnidirectionalEdge,Fl=t._getH3UnidirectionalEdge=_t._getH3UnidirectionalEdge,ws=t._getH3UnidirectionalEdgeBoundary=_t._getH3UnidirectionalEdgeBoundary,ih=t._getH3UnidirectionalEdgesFromHexagon=_t._getH3UnidirectionalEdgesFromHexagon,ai=t._getOriginH3IndexFromUnidirectionalEdge=_t._getOriginH3IndexFromUnidirectionalEdge,La=t._getPentagonIndexes=_t._getPentagonIndexes,Lc=t._getRes0Indexes=_t._getRes0Indexes,on=t._h3Distance=_t._h3Distance,kn=t._h3GetBaseCell=_t._h3GetBaseCell,Bm=t._h3GetFaces=_t._h3GetFaces,Vo=t._h3GetResolution=_t._h3GetResolution,Vn=t._h3IndexesAreNeighbors=_t._h3IndexesAreNeighbors,mo=t._h3IsPentagon=_t._h3IsPentagon,zl=t._h3IsResClassIII=_t._h3IsResClassIII,Yi=t._h3IsValid=_t._h3IsValid,_i=t._h3Line=_t._h3Line,Nl=t._h3LineSize=_t._h3LineSize,an=t._h3SetToLinkedGeo=_t._h3SetToLinkedGeo,hu=t._h3ToCenterChild=_t._h3ToCenterChild,Jn=t._h3ToChildren=_t._h3ToChildren,Up=t._h3ToGeo=_t._h3ToGeo,Ul=t._h3ToGeoBoundary=_t._h3ToGeoBoundary,md=t._h3ToParent=_t._h3ToParent,gd=t._h3UnidirectionalEdgeIsValid=_t._h3UnidirectionalEdgeIsValid,_d=t._hexAreaKm2=_t._hexAreaKm2,yd=t._hexAreaM2=_t._hexAreaM2,lt=t._hexRing=_t._hexRing,ft=t._i64Subtract=_t._i64Subtract,Lt=t._kRing=_t._kRing,$t=t._kRingDistances=_t._kRingDistances,ge=t._llvm_minnum_f64=_t._llvm_minnum_f64,qe=t._llvm_round_f64=_t._llvm_round_f64,ti=t._malloc=_t._malloc,ts=t._maxFaceCount=_t._maxFaceCount,Ss=t._maxH3ToChildrenSize=_t._maxH3ToChildrenSize,Bs=t._maxKringSize=_t._maxKringSize,ka=t._maxPolyfillSize=_t._maxPolyfillSize,Fm=t._maxUncompactSize=_t._maxUncompactSize,Mx=t._memcpy=_t._memcpy,Ex=t._memset=_t._memset,Xg=t._numHexagons=_t._numHexagons,Kg=t._pentagonIndexCount=_t._pentagonIndexCount,Af=t._pointDistKm=_t._pointDistKm,zm=t._pointDistM=_t._pointDistM,cl=t._pointDistRads=_t._pointDistRads,Nm=t._polyfill=_t._polyfill,Um=t._res0IndexCount=_t._res0IndexCount,Vp=t._round=_t._round,Vm=t._sbrk=_t._sbrk,vd=t._sizeOfCoordIJ=_t._sizeOfCoordIJ,nh=t._sizeOfGeoBoundary=_t._sizeOfGeoBoundary,ui=t._sizeOfGeoCoord=_t._sizeOfGeoCoord,jm=t._sizeOfGeoPolygon=_t._sizeOfGeoPolygon,Ra=t._sizeOfGeofence=_t._sizeOfGeofence,Da=t._sizeOfH3Index=_t._sizeOfH3Index,Jg=t._sizeOfLinkedGeoPolygon=_t._sizeOfLinkedGeoPolygon,Gm=t._uncompact=_t._uncompact,Wm=t.establishStackSpace=_t.establishStackSpace,jp=t.stackAlloc=_t.stackAlloc,Hm=t.stackRestore=_t.stackRestore,Gp=t.stackSave=_t.stackSave;if(t.asm=_t,t.cwrap=ut,t.setValue=j,t.getValue=Y,t.getTempRet0=R,po){Pa(po)||(po=o(po));{uu(\"memory initializer\");var xd=function(Ht){Ht.byteLength&&(Ht=new Uint8Array(Ht)),zi.set(Ht,N),t.memoryInitializerRequest&&delete t.memoryInitializerRequest.response,al(\"memory initializer\")},Wp=function(){c(po,xd,function(){throw\"could not load memory initializer \"+po})},bd=ht(po);if(bd)xd(bd.buffer);else if(t.memoryInitializerRequest){var qm=function(){var Ht=t.memoryInitializerRequest,fe=Ht.response;if(Ht.status!==200&&Ht.status!==0){var De=ht(t.memoryInitializerRequestURL);if(De)fe=De.buffer;else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+Ht.status+\", retrying \"+po),Wp();return}}xd(fe)};t.memoryInitializerRequest.response?setTimeout(qm,0):t.memoryInitializerRequest.addEventListener(\"load\",qm)}else Wp()}}var wd;eo=function Ht(){wd||fu(),wd||(eo=Ht)};function fu(Ht){if(Ht=Ht||s,gi>0||(ol(),gi>0))return;function fe(){wd||(wd=!0,!rt&&(fo(),Ea(),t.onRuntimeInitialized&&t.onRuntimeInitialized(),na()))}t.setStatus?(t.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){t.setStatus(\"\")},1),fe()},1)):fe()}t.run=fu;function sh(Ht){throw t.onAbort&&t.onAbort(Ht),Ht+=\"\",f(Ht),_(Ht),rt=!0,\"abort(\"+Ht+\"). Build with -s ASSERTIONS=1 for more info.\"}if(t.abort=sh,t.preInit)for(typeof t.preInit==\"function\"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return fu(),e}(typeof Tc==\"object\"?Tc:{}),Sr=\"number\",AS=Sr,$r=Sr,mi=Sr,Sc=Sr,ji=Sr,A_t=[[\"sizeOfH3Index\",Sr],[\"sizeOfGeoCoord\",Sr],[\"sizeOfGeoBoundary\",Sr],[\"sizeOfGeoPolygon\",Sr],[\"sizeOfGeofence\",Sr],[\"sizeOfLinkedGeoPolygon\",Sr],[\"sizeOfCoordIJ\",Sr],[\"h3IsValid\",AS,[$r,mi]],[\"geoToH3\",$r,[Sr,Sr,Sc]],[\"h3ToGeo\",null,[$r,mi,ji]],[\"h3ToGeoBoundary\",null,[$r,mi,ji]],[\"maxKringSize\",Sr,[Sr]],[\"kRing\",null,[$r,mi,Sr,ji]],[\"kRingDistances\",null,[$r,mi,Sr,ji,ji]],[\"hexRing\",null,[$r,mi,Sr,ji]],[\"maxPolyfillSize\",Sr,[ji,Sc]],[\"polyfill\",null,[ji,Sc,ji]],[\"h3SetToLinkedGeo\",null,[ji,Sr,ji]],[\"destroyLinkedPolygon\",null,[ji]],[\"compact\",Sr,[ji,ji,Sr]],[\"uncompact\",Sr,[ji,Sr,ji,Sr,Sc]],[\"maxUncompactSize\",Sr,[ji,Sr,Sc]],[\"h3IsPentagon\",AS,[$r,mi]],[\"h3IsResClassIII\",AS,[$r,mi]],[\"h3GetBaseCell\",Sr,[$r,mi]],[\"h3GetResolution\",Sr,[$r,mi]],[\"maxFaceCount\",Sr,[$r,mi]],[\"h3GetFaces\",null,[$r,mi,ji]],[\"h3ToParent\",$r,[$r,mi,Sc]],[\"h3ToChildren\",null,[$r,mi,Sc,ji]],[\"h3ToCenterChild\",$r,[$r,mi,Sc]],[\"maxH3ToChildrenSize\",Sr,[$r,mi,Sc]],[\"h3IndexesAreNeighbors\",AS,[$r,mi,$r,mi]],[\"getH3UnidirectionalEdge\",$r,[$r,mi,$r,mi]],[\"getOriginH3IndexFromUnidirectionalEdge\",$r,[$r,mi]],[\"getDestinationH3IndexFromUnidirectionalEdge\",$r,[$r,mi]],[\"h3UnidirectionalEdgeIsValid\",AS,[$r,mi]],[\"getH3IndexesFromUnidirectionalEdge\",null,[$r,mi,ji]],[\"getH3UnidirectionalEdgesFromHexagon\",null,[$r,mi,ji]],[\"getH3UnidirectionalEdgeBoundary\",null,[$r,mi,ji]],[\"h3Distance\",Sr,[$r,mi,$r,mi]],[\"h3Line\",Sr,[$r,mi,$r,mi,ji]],[\"h3LineSize\",Sr,[$r,mi,$r,mi]],[\"experimentalH3ToLocalIj\",Sr,[$r,mi,$r,mi,ji]],[\"experimentalLocalIjToH3\",Sr,[$r,mi,ji,ji]],[\"hexAreaM2\",Sr,[Sc]],[\"hexAreaKm2\",Sr,[Sc]],[\"edgeLengthM\",Sr,[Sc]],[\"edgeLengthKm\",Sr,[Sc]],[\"pointDistM\",Sr,[ji,ji]],[\"pointDistKm\",Sr,[ji,ji]],[\"pointDistRads\",Sr,[ji,ji]],[\"cellAreaM2\",Sr,[$r,mi]],[\"cellAreaKm2\",Sr,[$r,mi]],[\"cellAreaRads2\",Sr,[$r,mi]],[\"exactEdgeLengthM\",Sr,[$r,mi]],[\"exactEdgeLengthKm\",Sr,[$r,mi]],[\"exactEdgeLengthRads\",Sr,[$r,mi]],[\"numHexagons\",Sr,[Sc]],[\"getRes0Indexes\",null,[ji]],[\"res0IndexCount\",Sr],[\"getPentagonIndexes\",null,[Sr,ji]],[\"pentagonIndexCount\",Sr]],Ta={};A_t.forEach(function(t){Ta[t[0]]=Tc.cwrap.apply(Tc,t)});var ux=16;var mS=8,bse=Ta.sizeOfH3Index(),oQ=Ta.sizeOfGeoCoord(),m_t=Ta.sizeOfGeoBoundary(),wse=Ta.sizeOfGeoPolygon(),Sse=Ta.sizeOfGeofence(),Tse=Ta.sizeOfLinkedGeoPolygon(),Mse=Ta.sizeOfCoordIJ(),nQ={m:\"m\",m2:\"m2\",km:\"km\",km2:\"km2\",rads:\"rads\",rads2:\"rads2\"};function g_t(e){if(typeof e!=\"number\"||e<0||e>15||Math.floor(e)!==e)throw new Error(\"Invalid resolution: \"+e)}var __t=/[^0-9a-fA-F]/;function hx(e){if(Array.isArray(e)&&e.length===2&&Number.isInteger(e[0])&&Number.isInteger(e[1]))return e;if(typeof e!=\"string\"||__t.test(e))return[0,0];var t=parseInt(e.substring(0,e.length-8),ux),r=parseInt(e.substring(e.length-8),ux);return[r,t]}function sQ(e){if(e>=0)return e.toString(ux);e=e&2147483647;var t=aQ(8,e.toString(ux)),r=(parseInt(t[0],ux)+8).toString(ux);return t=r+t.substring(1),t}function y_t(e,t){return sQ(t)+aQ(8,sQ(e))}function aQ(e,t){for(var r=e-t.length,i=\"\",s=0;s180?r[0]-=360:i<-180&&(r[0]+=360)}}function E_t(e,t,r){let[i,s]=yI(e),n=t.length;mQ(t,s);let o=t[0]===t[n-1]?n-1:n;for(let c=0;ce.hexagon},extruded:!0},Op=class e extends tn{constructor(...t){super(...t),G(this,\"state\",void 0)}initializeState(){e._checkH3Lib(),this.state={edgeLengthKM:0,resolution:-1}}shouldUpdateState({changeFlags:t}){return this._shouldUseHighPrecision()?t.propsOrDataChanged:t.somethingChanged}updateState({props:t,changeFlags:r}){if(t.highPrecision!==!0&&(r.dataChanged||r.updateTriggersChanged&&r.updateTriggersChanged.getHexagon)){let i=this._calculateH3DataProps();this.setState(i)}this._updateVertices(this.context.viewport)}_calculateH3DataProps(){let t=-1,r=!1,i=!1,{iterable:s,objectInfo:n}=Xc(this.props.data);for(let o of s){n.index++;let c=this.props.getHexagon(o,n),f=uQ(c);if(t<0){if(t=f,!this.props.highPrecision)break}else if(t!==f){i=!0;break}if(cQ(c)){r=!0;break}}return{resolution:t,edgeLengthKM:t>=0?pQ(t,\"km\"):0,hasMultipleRes:i,hasPentagon:r}}_shouldUseHighPrecision(){if(this.props.highPrecision===\"auto\"){let{resolution:t,hasPentagon:r,hasMultipleRes:i}=this.state,{viewport:s}=this.context;return!!s?.resolution||i||r||t>=0&&t<=5}return this.props.highPrecision}_updateVertices(t){if(this._shouldUseHighPrecision())return;let{resolution:r,edgeLengthKM:i,centerHex:s}=this.state;if(r<0)return;let n=this.props.centerHexagon||hQ(t.latitude,t.longitude,r);if(s===n)return;if(s){let R=dQ(s,n);if(R>=0&&R*i{let N=t.projectFlat(R);return[(N[0]-w)/o[0],(N[1]-C)/o[1]]}),this.setState({centerHex:n,vertices:c})}renderLayers(){return this._shouldUseHighPrecision()?this._renderPolygonLayer():this._renderColumnLayer()}_getForwardProps(){let{elevationScale:t,material:r,coverage:i,extruded:s,wireframe:n,stroked:o,filled:c,lineWidthUnits:f,lineWidthScale:_,lineWidthMinPixels:w,lineWidthMaxPixels:C,getFillColor:R,getElevation:N,getLineColor:j,getLineWidth:Y,transitions:rt,updateTriggers:$}=this.props;return{elevationScale:t,extruded:s,coverage:i,wireframe:n,stroked:o,filled:c,lineWidthUnits:f,lineWidthScale:_,lineWidthMinPixels:w,lineWidthMaxPixels:C,material:r,getElevation:N,getFillColor:R,getLineColor:j,getLineWidth:Y,transitions:rt,updateTriggers:{getFillColor:$.getFillColor,getElevation:$.getElevation,getLineColor:$.getLineColor,getLineWidth:$.getLineWidth}}}_renderPolygonLayer(){let{data:t,getHexagon:r,updateTriggers:i,coverage:s}=this.props,n=this.getSubLayerClass(\"hexagon-cell-hifi\",lf),o=this._getForwardProps();return o.updateTriggers.getPolygon=C_t(i.getHexagon,s),new n(o,this.getSubLayerProps({id:\"hexagon-cell-hifi\",updateTriggers:o.updateTriggers}),{data:t,_normalize:!1,_windingOrder:\"CCW\",positionFormat:\"XY\",getPolygon:(c,f)=>{let _=r(c,f);return I_t(AQ(_,s))}})}_renderColumnLayer(){let{data:t,getHexagon:r,updateTriggers:i}=this.props,s=this.getSubLayerClass(\"hexagon-cell\",af),n=this._getForwardProps();return n.updateTriggers.getPosition=i.getHexagon,new s(n,this.getSubLayerProps({id:\"hexagon-cell\",flatShading:!0,updateTriggers:n.updateTriggers}),{data:t,diskResolution:6,radius:1,vertices:this.state.vertices,getPosition:P_t.bind(null,r)})}};G(Op,\"defaultProps\",L_t);G(Op,\"layerName\",\"H3HexagonLayer\");G(Op,\"_checkH3Lib\",()=>{});var{data:Vse,getHexagon:jse,...k_t}=Op.defaultProps,R_t={_validate:!0},Gse={...k_t,...R_t};var gQ=[[255,255,178],[254,217,118],[254,178,76],[253,141,60],[240,59,32],[189,0,38]];function _Q(e,t=!1,r=Float32Array){let i;if(Number.isFinite(e[0]))i=new r(e);else{i=new r(e.length*4);let s=0;for(let n=0;nc[0]),r=e.map(c=>c[1]),i=Math.min.apply(null,t),s=Math.max.apply(null,t),n=Math.min.apply(null,r),o=Math.max.apply(null,r);return[i,n,s,o]}function bQ(e,t){return t[0]>=e[0]&&t[2]<=e[2]&&t[1]>=e[1]&&t[3]<=e[3]}var vQ=new Float32Array(12);function zB(e,t=2){let r=0;for(let i of e)for(let s=0;s 0.) {\n maxValue = colorDomain[1];\n minValue = colorDomain[0];\n }\n vIntensityMax = intensity / maxValue;\n vIntensityMin = intensity / minValue;\n}\n`;var EQ=`#define SHADER_NAME triangle-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D texture;\nuniform sampler2D colorTexture;\nuniform float aggregationMode;\n\nvarying vec2 vTexCoords;\nvarying float vIntensityMin;\nvarying float vIntensityMax;\n\nvec4 getLinearColor(float value) {\n float factor = clamp(value * vIntensityMax, 0., 1.);\n vec4 color = texture2D(colorTexture, vec2(factor, 0.5));\n color.a *= min(value * vIntensityMin, 1.0);\n return color;\n}\n\nvoid main(void) {\n vec4 weights = texture2D(texture, vTexCoords);\n float weight = weights.r;\n\n if (aggregationMode > 0.5) {\n weight /= max(1.0, weights.a);\n }\n if (weight <= 0.) {\n discard;\n }\n\n vec4 linearColor = getLinearColor(weight);\n linearColor.a *= opacity;\n gl_FragColor =linearColor;\n}\n`;var dx=class extends Tn{getShaders(){return{vs:MQ,fs:EQ,modules:[oo]}}initializeState({gl:t}){this.getAttributeManager().add({positions:{size:3,noAlloc:!0},texCoords:{size:2,noAlloc:!0}}),this.setState({model:this._getModel(t)})}_getModel(t){let{vertexCount:r}=this.props;return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,vertexCount:r})})}draw({uniforms:t}){let{model:r}=this.state,{texture:i,maxTexture:s,colorTexture:n,intensity:o,threshold:c,aggregationMode:f,colorDomain:_}=this.props;r.setUniforms({...t,texture:i,maxTexture:s,colorTexture:n,intensity:o,threshold:c,aggregationMode:f,colorDomain:_}).draw()}};G(dx,\"layerName\",\"TriangleLayer\");var PQ=`attribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float weights;\nvarying vec4 weightsTexture;\nuniform float radiusPixels;\nuniform float textureWidth;\nuniform vec4 commonBounds;\nuniform float weightsScale;\nvoid main()\n{\n weightsTexture = vec4(weights * weightsScale, 0., 0., 1.);\n\n float radiusTexels = project_pixel_size(radiusPixels) * textureWidth / (commonBounds.z - commonBounds.x);\n gl_PointSize = radiusTexels * 2.;\n\n vec3 commonPosition = project_position(positions, positions64Low);\n gl_Position.xy = (commonPosition.xy - commonBounds.xy) / (commonBounds.zw - commonBounds.xy) ;\n gl_Position.xy = (gl_Position.xy * 2.) - (1.);\n}\n`;var IQ=`varying vec4 weightsTexture;\nfloat gaussianKDE(float u){\n return pow(2.71828, -u*u/0.05555)/(1.77245385*0.166666);\n}\nvoid main()\n{\n float dist = length(gl_PointCoord - vec2(0.5, 0.5));\n if (dist > 0.5) {\n discard;\n }\n gl_FragColor = weightsTexture * gaussianKDE(2. * dist);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var CQ=`attribute vec4 inTexture;\nvarying vec4 outTexture;\n\nvoid main()\n{\noutTexture = inTexture;\ngl_Position = vec4(0, 0, 0, 1.);\ngl_PointSize = 1.0;\n}\n`;var LQ=`varying vec4 outTexture;\nvoid main() {\n gl_FragColor = outTexture;\n gl_FragColor.g = outTexture.r / max(1.0, outTexture.a);\n}\n`;var O_t=2,NB={mipmaps:!1,parameters:{10240:9729,10241:9729,10242:33071,10243:33071},dataFormat:6408},kQ=[0,0],B_t={SUM:0,MEAN:1},F_t={getPosition:{type:\"accessor\",value:e=>e.position},getWeight:{type:\"accessor\",value:1},intensity:{type:\"number\",min:0,value:1},radiusPixels:{type:\"number\",min:1,max:100,value:50},colorRange:gQ,threshold:{type:\"number\",min:0,max:1,value:.05},colorDomain:{type:\"array\",value:null,optional:!0},aggregation:\"SUM\",weightsTextureSize:{type:\"number\",min:128,max:2048,value:2048},debounceTimeout:{type:\"number\",min:0,max:1e3,value:500}},z_t=[Pi.BLEND_EQUATION_MINMAX,Pi.TEXTURE_FLOAT],N_t=[Pi.COLOR_ATTACHMENT_RGBA32F,Pi.FLOAT_BLEND],U_t={data:{props:[\"radiusPixels\"]}},Bp=class extends fx{constructor(...t){super(...t),G(this,\"state\",void 0)}initializeState(){let{gl:t}=this.context;if(!Dh(t,z_t)){this.setState({supported:!1}),nr.error(\"HeatmapLayer: \".concat(this.id,\" is not supported on this browser\"))();return}super.initializeAggregationLayer(U_t),this.setState({supported:!0,colorDomain:kQ}),this._setupTextureParams(),this._setupAttributes(),this._setupResources()}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState(t){this.state.supported&&(super.updateState(t),this._updateHeatmapState(t))}_updateHeatmapState(t){let{props:r,oldProps:i}=t,s=this._getChangeFlags(t);(s.dataChanged||s.viewportChanged)&&(s.boundsChanged=this._updateBounds(s.dataChanged),this._updateTextureRenderingBounds()),s.dataChanged||s.boundsChanged?(clearTimeout(this.state.updateTimer),this.setState({isWeightMapDirty:!0})):s.viewportZoomChanged&&this._debouncedUpdateWeightmap(),r.colorRange!==i.colorRange&&this._updateColorTexture(t),this.state.isWeightMapDirty&&this._updateWeightmap(),this.setState({zoom:t.context.viewport.zoom})}renderLayers(){if(!this.state.supported)return[];let{weightsTexture:t,triPositionBuffer:r,triTexCoordBuffer:i,maxWeightsTexture:s,colorTexture:n,colorDomain:o}=this.state,{updateTriggers:c,intensity:f,threshold:_,aggregation:w}=this.props,C=this.getSubLayerClass(\"triangle\",dx);return new C(this.getSubLayerProps({id:\"triangle-layer\",updateTriggers:c}),{coordinateSystem:Yr.DEFAULT,data:{attributes:{positions:r,texCoords:i}},vertexCount:4,maxTexture:s,colorTexture:n,aggregationMode:B_t[w]||0,texture:t,intensity:f,threshold:_,colorDomain:o})}finalizeState(t){super.finalizeState(t);let{weightsTransform:r,weightsTexture:i,maxWeightTransform:s,maxWeightsTexture:n,triPositionBuffer:o,triTexCoordBuffer:c,colorTexture:f,updateTimer:_}=this.state;r?.delete(),i?.delete(),s?.delete(),n?.delete(),o?.delete(),c?.delete(),f?.delete(),_&&clearTimeout(_)}_getAttributeManager(){return new Yf(this.context.gl,{id:this.props.id,stats:this.context.stats})}_getChangeFlags(t){let r={},{dimensions:i}=this.state;r.dataChanged=this.isAttributeChanged()||this.isAggregationDirty(t,{compareAll:!0,dimension:i.data}),r.viewportChanged=t.changeFlags.viewportChanged;let{zoom:s}=this.state;return(!t.context.viewport||t.context.viewport.zoom!==s)&&(r.viewportZoomChanged=!0),r}_createTextures(){let{gl:t}=this.context,{textureSize:r,format:i,type:s}=this.state;this.setState({weightsTexture:new pi(t,{width:r,height:r,format:i,type:s,...NB}),maxWeightsTexture:new pi(t,{format:i,type:s,...NB})})}_setupAttributes(){this.getAttributeManager().add({positions:{size:3,type:5130,accessor:\"getPosition\"},weights:{size:1,accessor:\"getWeight\"}}),this.setState({positionAttributeName:\"positions\"})}_setupTextureParams(){let{gl:t}=this.context,{weightsTextureSize:r}=this.props,i=Math.min(r,fy(t,3379)),s=Dh(t,N_t),{format:n,type:o}=TQ({gl:t,floatTargetSupport:s}),c=s?1:1/255;this.setState({textureSize:i,format:n,type:o,weightsScale:c}),s||nr.warn(\"HeatmapLayer: \".concat(this.id,\" rendering to float texture not supported, fallingback to low precession format\"))()}getShaders(t){return super.getShaders(t===\"max-weights-transform\"?{vs:CQ,_fs:LQ}:{vs:PQ,_fs:IQ})}_createWeightsTransform(t={}){var r;let{gl:i}=this.context,{weightsTransform:s}=this.state,{weightsTexture:n}=this.state;(r=s)===null||r===void 0||r.delete(),s=new ec(i,{id:\"\".concat(this.id,\"-weights-transform\"),elementCount:1,_targetTexture:n,_targetTextureVarying:\"weightsTexture\",...t}),this.setState({weightsTransform:s})}_setupResources(){let{gl:t}=this.context;this._createTextures();let{textureSize:r,weightsTexture:i,maxWeightsTexture:s}=this.state,n=this.getShaders(\"weights-transform\");this._createWeightsTransform(n);let o=this.getShaders(\"max-weights-transform\"),c=new ec(t,{id:\"\".concat(this.id,\"-max-weights-transform\"),_sourceTextures:{inTexture:i},_targetTexture:s,_targetTextureVarying:\"outTexture\",...o,elementCount:r*r});this.setState({weightsTexture:i,maxWeightsTexture:s,maxWeightTransform:c,zoom:null,triPositionBuffer:new Fr(t,{byteLength:48,accessor:{size:3}}),triTexCoordBuffer:new Fr(t,{byteLength:48,accessor:{size:2}})})}updateShaders(t){this._createWeightsTransform(t)}_updateMaxWeightValue(){let{maxWeightTransform:t}=this.state;t.run({parameters:{blend:!0,depthTest:!1,blendFunc:[1,1],blendEquation:32776}})}_updateBounds(t=!1){let{viewport:r}=this.context,i=[r.unproject([0,0]),r.unproject([r.width,0]),r.unproject([r.width,r.height]),r.unproject([0,r.height])].map(c=>c.map(Math.fround)),s=xQ(i),n={visibleWorldBounds:s,viewportCorners:i},o=!1;if(t||!this.state.worldBounds||!bQ(this.state.worldBounds,s)){let c=this._worldToCommonBounds(s),f=this._commonToWorldBounds(c);this.props.coordinateSystem===Yr.LNGLAT&&(f[1]=Math.max(f[1],-85.051129),f[3]=Math.min(f[3],85.051129),f[0]=Math.max(f[0],-360),f[2]=Math.min(f[2],360));let _=this._worldToCommonBounds(f);n.worldBounds=f,n.normalizedCommonBounds=_,o=!0}return this.setState(n),o}_updateTextureRenderingBounds(){let{triPositionBuffer:t,triTexCoordBuffer:r,normalizedCommonBounds:i,viewportCorners:s}=this.state,{viewport:n}=this.context;t.subData(zB(s,3));let o=s.map(c=>SQ(n.projectPosition(c),i));r.subData(zB(o,2))}_updateColorTexture(t){let{colorRange:r}=t.props,{colorTexture:i}=this.state,s=_Q(r,!1,Uint8Array);i?i.setImageData({data:s,width:r.length}):i=new pi(this.context.gl,{data:s,width:r.length,height:1,...NB}),this.setState({colorTexture:i})}_updateWeightmap(){let{radiusPixels:t,colorDomain:r,aggregation:i}=this.props,{weightsTransform:s,worldBounds:n,textureSize:o,weightsTexture:c,weightsScale:f}=this.state;this.state.isWeightMapDirty=!1;let _=this._worldToCommonBounds(n,{useLayerCoordinateSystem:!0});if(r&&i===\"SUM\"){let{viewport:C}=this.context,R=C.distanceScales.metersPerUnit[2]*(_[2]-_[0])/o;this.state.colorDomain=r.map(N=>N*R*f)}else this.state.colorDomain=r||kQ;let w={radiusPixels:t,commonBounds:_,textureWidth:o,weightsScale:f};s.update({elementCount:this.getNumInstances()}),bn(this.context.gl,{clearColor:[0,0,0,0]},()=>{s.run({uniforms:w,parameters:{blend:!0,depthTest:!1,blendFunc:[1,1],blendEquation:32774},clearRenderTarget:!0,attributes:this.getAttributes(),moduleSettings:this.getModuleSettings()})}),this._updateMaxWeightValue(),c.setParameters({10240:9729,10241:9729})}_debouncedUpdateWeightmap(t=!1){let{updateTimer:r}=this.state,{debounceTimeout:i}=this.props;t?(r=null,this._updateBounds(!0),this._updateTextureRenderingBounds(),this.setState({isWeightMapDirty:!0})):(this.setState({isWeightMapDirty:!1}),clearTimeout(r),r=setTimeout(this._debouncedUpdateWeightmap.bind(this,!0),i)),this.setState({updateTimer:r})}_worldToCommonBounds(t,r={}){let{useLayerCoordinateSystem:i=!1}=r,[s,n,o,c]=t,{viewport:f}=this.context,{textureSize:_}=this.state,{coordinateSystem:w}=this.props,C=i&&(w===Yr.LNGLAT_OFFSETS||w===Yr.METER_OFFSETS),R=C?f.projectPosition(this.props.coordinateOrigin):[0,0],N=_*O_t/f.scale,j,Y;return i&&!C?(j=this.projectPosition([s,n,0]),Y=this.projectPosition([o,c,0])):(j=f.projectPosition([s,n,0]),Y=f.projectPosition([o,c,0])),wQ([j[0]-R[0],j[1]-R[1],Y[0]-R[0],Y[1]-R[1]],N,N)}_commonToWorldBounds(t){let[r,i,s,n]=t,{viewport:o}=this.context,c=o.unprojectPosition([r,i]),f=o.unprojectPosition([s,n]);return c.slice(0,2).concat(f.slice(0,2))}};G(Bp,\"layerName\",\"HeatmapLayer\");G(Bp,\"defaultProps\",F_t);var{data:koe,getPosition:Roe,...V_t}=Bp.defaultProps,RQ={_validate:!0},j_t={...V_t,...RQ},gS=class extends tn{static defaultProps=j_t;static layerName=\"GeoArrowHeatmapLayer\";renderLayers(){let{data:t}=this.props,r=Ro(t,Ks.POINT);if(r!==null)return this._renderLayersPoint(r);let i=this.props.getPosition;if(i!==void 0&&sn.isPointVector(i))return this._renderLayersPoint(i);throw new Error(\"getPosition not GeoArrow point\")}_renderLayersPoint(t){let{data:r}=this.props;this.props._validate&&(br(sn.isPointVector(t)),Oo(this.props,r));let[i,s]=Do(this.props,[\"getPosition\"]),n=ra(r.data),o=[];for(let c=0;cr.text()),earcutWorkerPool:null}}async initEarcutPool(){if(this.state.earcutWorkerPool)return this.state.earcutWorkerPool;let t=await this.state.earcutWorkerRequest;if(!t)return null;let r=W$(()=>j$(G$.fromText(t)),8);return this.state.earcutWorkerPool=r,this.state.earcutWorkerPool}async finalizeState(t){await this.state?.earcutWorkerPool?.terminate(),console.log(\"terminated\")}async updateData(){let{data:t}=this.props,r=await this._updateEarcut(t),i=ra(t.data);this.setState({table:this.props.data,triangles:r,tableOffsets:i})}async _updateEarcut(t){let r=Ro(t,Ks.POLYGON);if(r!==null)return this._earcutPolygonVector(r);let i=Ro(t,Ks.MULTIPOLYGON);if(i!==null)return this._earcutMultiPolygonVector(i);let s=this.props.getPolygon;if(s!==void 0&&sn.isPolygonVector(s))return this._earcutPolygonVector(s);if(s!==void 0&&sn.isMultiPolygonVector(s))return this._earcutMultiPolygonVector(s);throw new Error(\"geometryColumn not Polygon or MultiPolygon\")}async _earcutPolygonVector(t){let r=await this.initEarcutPool();if(!r)return this._earcutPolygonVectorMainThread(t);let i=new Array(t.data.length);console.time(\"earcut\");for(let s=0;s{let _=await f(A6(o,c));i[s]=_})}return await r.completed(),console.timeEnd(\"earcut\"),i}_earcutPolygonVectorMainThread(t){let r=new Array(t.data.length);for(let i=0;i{let w=await _(A6(c,f));i[s]=w})}return await r.completed(),console.timeEnd(\"earcut\"),i}_earcutMultiPolygonVectorMainThread(t){let r=new Array(t.data.length);for(let i=0;i{this.table=w2(this.model.get(t))};this.model.on(`change:${t}`,r),this.callbacks.set(`change:${t}`,r)}},BI=class extends Np{static layerType=\"arc\";greatCircle;numSegments;widthUnits;widthScale;widthMinPixels;widthMaxPixels;getSourcePosition;getTargetPosition;getSourceColor;getTargetColor;getWidth;getHeight;getTilt;constructor(t,r){super(t,r),this.initRegularAttribute(\"great_circle\",\"greatCircle\"),this.initRegularAttribute(\"num_segments\",\"numSegments\"),this.initRegularAttribute(\"width_units\",\"widthUnits\"),this.initRegularAttribute(\"width_scale\",\"widthScale\"),this.initRegularAttribute(\"width_min_pixels\",\"widthMinPixels\"),this.initRegularAttribute(\"width_max_pixels\",\"widthMaxPixels\"),this.initVectorizedAccessor(\"get_source_position\",\"getSourcePosition\"),this.initVectorizedAccessor(\"get_target_position\",\"getTargetPosition\"),this.initVectorizedAccessor(\"get_source_color\",\"getSourceColor\"),this.initVectorizedAccessor(\"get_target_color\",\"getTargetColor\"),this.initVectorizedAccessor(\"get_width\",\"getWidth\"),this.initVectorizedAccessor(\"get_height\",\"getHeight\"),this.initVectorizedAccessor(\"get_tilt\",\"getTilt\")}layerProps(){return{data:this.table,getSourcePosition:this.getSourcePosition,getTargetPosition:this.getTargetPosition,...ce(this.greatCircle)&&{greatCircle:this.greatCircle},...ce(this.numSegments)&&{numSegments:this.numSegments},...ce(this.widthUnits)&&{widthUnits:this.widthUnits},...ce(this.widthScale)&&{widthScale:this.widthScale},...ce(this.widthMinPixels)&&{widthMinPixels:this.widthMinPixels},...ce(this.widthMaxPixels)&&{widthMaxPixels:this.widthMaxPixels},...ce(this.getSourceColor)&&{getSourceColor:this.getSourceColor},...ce(this.getTargetColor)&&{getTargetColor:this.getTargetColor},...ce(this.getWidth)&&{getWidth:this.getWidth},...ce(this.getHeight)&&{getHeight:this.getHeight},...ce(this.getTilt)&&{getTilt:this.getTilt}}}render(){return new uS({...this.baseLayerProps(),...this.layerProps()})}},FI=class extends Lg{static layerType=\"bitmap\";image;bounds;desaturate;transparentColor;tintColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"image\",\"image\"),this.initRegularAttribute(\"bounds\",\"bounds\"),this.initRegularAttribute(\"desaturate\",\"desaturate\"),this.initRegularAttribute(\"transparent_color\",\"transparentColor\"),this.initRegularAttribute(\"tint_color\",\"tintColor\")}layerProps(){return{...ce(this.image)&&{image:this.image},...ce(this.bounds)&&{bounds:this.bounds},...ce(this.desaturate)&&{desaturate:this.desaturate},...ce(this.transparentColor)&&{transparentColor:this.transparentColor},...ce(this.tintColor)&&{tintColor:this.tintColor}}}render(){return new wp({...this.baseLayerProps(),...this.layerProps(),data:void 0,pickable:!1})}},zI=class extends Lg{static layerType=\"bitmap-tile\";data;tileSize;zoomOffset;maxZoom;minZoom;extent;maxCacheSize;maxCacheByteSize;refinementStrategy;maxRequests;desaturate;transparentColor;tintColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"data\",\"data\"),this.initRegularAttribute(\"tile_size\",\"tileSize\"),this.initRegularAttribute(\"zoom_offset\",\"zoomOffset\"),this.initRegularAttribute(\"max_zoom\",\"maxZoom\"),this.initRegularAttribute(\"min_zoom\",\"minZoom\"),this.initRegularAttribute(\"extent\",\"extent\"),this.initRegularAttribute(\"max_cache_size\",\"maxCacheSize\"),this.initRegularAttribute(\"max_cache_byte_size\",\"maxCacheByteSize\"),this.initRegularAttribute(\"refinement_strategy\",\"refinementStrategy\"),this.initRegularAttribute(\"max_requests\",\"maxRequests\"),this.initRegularAttribute(\"desaturate\",\"desaturate\"),this.initRegularAttribute(\"transparent_color\",\"transparentColor\"),this.initRegularAttribute(\"tint_color\",\"tintColor\")}bitmapLayerProps(){return{...ce(this.desaturate)&&{desaturate:this.desaturate},...ce(this.transparentColor)&&{transparentColor:this.transparentColor},...ce(this.tintColor)&&{tintColor:this.tintColor}}}layerProps(){return{data:this.data,...ce(this.tileSize)&&{tileSize:this.tileSize},...ce(this.zoomOffset)&&{zoomOffset:this.zoomOffset},...ce(this.maxZoom)&&{maxZoom:this.maxZoom},...ce(this.minZoom)&&{minZoom:this.minZoom},...ce(this.extent)&&{extent:this.extent},...ce(this.maxCacheSize)&&{maxCacheSize:this.maxCacheSize},...ce(this.maxCacheByteSize)&&{maxCacheByteSize:this.maxCacheByteSize},...ce(this.refinementStrategy)&&{refinementStrategy:this.refinementStrategy},...ce(this.maxRequests)&&{maxRequests:this.maxRequests}}}render(){return new Mm({...this.baseLayerProps(),...this.layerProps(),renderSubLayers:t=>{let[r,i]=t.tile.boundingBox;return new wp(t,{...this.bitmapLayerProps(),data:void 0,image:t.data,bounds:[r[0],r[1],i[0],i[1]]})}})}},NI=class extends Np{static layerType=\"column\";diskResolution;radius;angle;vertices;offset;coverage;elevationScale;filled;stroked;extruded;wireframe;flatShading;radiusUnits;lineWidthUnits;lineWidthScale;lineWidthMinPixels;lineWidthMaxPixels;material;getPosition;getFillColor;getLineColor;getElevation;getLineWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"disk_resolution\",\"diskResolution\"),this.initRegularAttribute(\"radius\",\"radius\"),this.initRegularAttribute(\"angle\",\"angle\"),this.initRegularAttribute(\"vertices\",\"vertices\"),this.initRegularAttribute(\"offset\",\"offset\"),this.initRegularAttribute(\"coverage\",\"coverage\"),this.initRegularAttribute(\"elevation_scale\",\"elevationScale\"),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"stroked\",\"stroked\"),this.initRegularAttribute(\"extruded\",\"extruded\"),this.initRegularAttribute(\"wireframe\",\"wireframe\"),this.initRegularAttribute(\"flat_shading\",\"flatShading\"),this.initRegularAttribute(\"radius_units\",\"radiusUnits\"),this.initRegularAttribute(\"line_width_units\",\"lineWidthUnits\"),this.initRegularAttribute(\"line_width_scale\",\"lineWidthScale\"),this.initRegularAttribute(\"line_width_min_pixels\",\"lineWidthMinPixels\"),this.initRegularAttribute(\"line_width_max_pixels\",\"lineWidthMaxPixels\"),this.initRegularAttribute(\"material\",\"material\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\"),this.initVectorizedAccessor(\"get_elevation\",\"getElevation\"),this.initVectorizedAccessor(\"get_line_width\",\"getLineWidth\")}layerProps(){return{data:this.table,...ce(this.diskResolution)&&{diskResolution:this.diskResolution},...ce(this.radius)&&{radius:this.radius},...ce(this.angle)&&{angle:this.angle},...ce(this.vertices)&&this.vertices!==void 0&&{vertices:this.vertices},...ce(this.offset)&&{offset:this.offset},...ce(this.coverage)&&{coverage:this.coverage},...ce(this.elevationScale)&&{elevationScale:this.elevationScale},...ce(this.filled)&&{filled:this.filled},...ce(this.stroked)&&{stroked:this.stroked},...ce(this.extruded)&&{extruded:this.extruded},...ce(this.wireframe)&&{wireframe:this.wireframe},...ce(this.flatShading)&&{flatShading:this.flatShading},...ce(this.radiusUnits)&&{radiusUnits:this.radiusUnits},...ce(this.lineWidthUnits)&&{lineWidthUnits:this.lineWidthUnits},...ce(this.lineWidthScale)&&{lineWidthScale:this.lineWidthScale},...ce(this.lineWidthMinPixels)&&{lineWidthMinPixels:this.lineWidthMinPixels},...ce(this.lineWidthMaxPixels)&&{lineWidthMaxPixels:this.lineWidthMaxPixels},...ce(this.material)&&{material:this.material},...ce(this.getPosition)&&{getPosition:this.getPosition},...ce(this.getFillColor)&&{getFillColor:this.getFillColor},...ce(this.getLineColor)&&{getLineColor:this.getLineColor},...ce(this.getElevation)&&{getElevation:this.getElevation},...ce(this.getLineWidth)&&{getLineWidth:this.getLineWidth}}}render(){return new hS({...this.baseLayerProps(),...this.layerProps()})}},UI=class extends Np{static layerType=\"heatmap\";radiusPixels;colorRange;intensity;threshold;colorDomain;aggregation;weightsTextureSize;debounceTimeout;getPosition;getWeight;constructor(t,r){super(t,r),this.initRegularAttribute(\"radius_pixels\",\"radiusPixels\"),this.initRegularAttribute(\"color_range\",\"colorRange\"),this.initRegularAttribute(\"intensity\",\"intensity\"),this.initRegularAttribute(\"threshold\",\"threshold\"),this.initRegularAttribute(\"color_domain\",\"colorDomain\"),this.initRegularAttribute(\"aggregation\",\"aggregation\"),this.initRegularAttribute(\"weights_texture_size\",\"weightsTextureSize\"),this.initRegularAttribute(\"debounce_timeout\",\"debounceTimeout\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_weight\",\"getWeight\")}layerProps(){return{data:this.table,...ce(this.radiusPixels)&&{radiusPixels:this.radiusPixels},...ce(this.colorRange)&&{colorRange:this.colorRange},...ce(this.intensity)&&{intensity:this.intensity},...ce(this.threshold)&&{threshold:this.threshold},...ce(this.colorDomain)&&{colorDomain:this.colorDomain},...ce(this.aggregation)&&{aggregation:this.aggregation},...ce(this.weightsTextureSize)&&{weightsTextureSize:this.weightsTextureSize},...ce(this.debounceTimeout)&&{debounceTimeout:this.debounceTimeout},...ce(this.getPosition)&&{getPosition:this.getPosition},...ce(this.getWeight)&&{getWeight:this.getWeight}}}render(){return new gS({...this.baseLayerProps(),...this.layerProps()})}},DS=class extends Np{static layerType=\"path\";widthUnits;widthScale;widthMinPixels;widthMaxPixels;jointRounded;capRounded;miterLimit;billboard;getColor;getWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"width_units\",\"widthUnits\"),this.initRegularAttribute(\"width_scale\",\"widthScale\"),this.initRegularAttribute(\"width_min_pixels\",\"widthMinPixels\"),this.initRegularAttribute(\"width_max_pixels\",\"widthMaxPixels\"),this.initRegularAttribute(\"joint_rounded\",\"jointRounded\"),this.initRegularAttribute(\"cap_rounded\",\"capRounded\"),this.initRegularAttribute(\"miter_limit\",\"miterLimit\"),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_width\",\"getWidth\")}layerProps(){return{data:this.table,...ce(this.widthUnits)&&{widthUnits:this.widthUnits},...ce(this.widthScale)&&{widthScale:this.widthScale},...ce(this.widthMinPixels)&&{widthMinPixels:this.widthMinPixels},...ce(this.widthMaxPixels)&&{widthMaxPixels:this.widthMaxPixels},...ce(this.jointRounded)&&{jointRounded:this.jointRounded},...ce(this.capRounded)&&{capRounded:this.capRounded},...ce(this.miterLimit)&&{miterLimit:this.miterLimit},...ce(this.billboard)&&{billboard:this.billboard},...ce(this.getColor)&&{getColor:this.getColor},...ce(this.getWidth)&&{getWidth:this.getWidth}}}render(){return new px({...this.baseLayerProps(),...this.layerProps()})}},OS=class extends Np{static layerType=\"scatterplot\";radiusUnits;radiusScale;radiusMinPixels;radiusMaxPixels;lineWidthUnits;lineWidthScale;lineWidthMinPixels;lineWidthMaxPixels;stroked;filled;billboard;antialiasing;getRadius;getFillColor;getLineColor;getLineWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"radius_units\",\"radiusUnits\"),this.initRegularAttribute(\"radius_scale\",\"radiusScale\"),this.initRegularAttribute(\"radius_min_pixels\",\"radiusMinPixels\"),this.initRegularAttribute(\"radius_max_pixels\",\"radiusMaxPixels\"),this.initRegularAttribute(\"line_width_units\",\"lineWidthUnits\"),this.initRegularAttribute(\"line_width_scale\",\"lineWidthScale\"),this.initRegularAttribute(\"line_width_min_pixels\",\"lineWidthMinPixels\"),this.initRegularAttribute(\"line_width_max_pixels\",\"lineWidthMaxPixels\"),this.initRegularAttribute(\"stroked\",\"stroked\"),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initRegularAttribute(\"antialiasing\",\"antialiasing\"),this.initVectorizedAccessor(\"get_radius\",\"getRadius\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\"),this.initVectorizedAccessor(\"get_line_width\",\"getLineWidth\")}layerProps(){return{data:this.table,...ce(this.radiusUnits)&&{radiusUnits:this.radiusUnits},...ce(this.radiusScale)&&{radiusScale:this.radiusScale},...ce(this.radiusMinPixels)&&{radiusMinPixels:this.radiusMinPixels},...ce(this.radiusMaxPixels)&&{radiusMaxPixels:this.radiusMaxPixels},...ce(this.lineWidthUnits)&&{lineWidthUnits:this.lineWidthUnits},...ce(this.lineWidthScale)&&{lineWidthScale:this.lineWidthScale},...ce(this.lineWidthMinPixels)&&{lineWidthMinPixels:this.lineWidthMinPixels},...ce(this.lineWidthMaxPixels)&&{lineWidthMaxPixels:this.lineWidthMaxPixels},...ce(this.stroked)&&{stroked:this.stroked},...ce(this.filled)&&{filled:this.filled},...ce(this.billboard)&&{billboard:this.billboard},...ce(this.antialiasing)&&{antialiasing:this.antialiasing},...ce(this.getRadius)&&{getRadius:this.getRadius},...ce(this.getFillColor)&&{getFillColor:this.getFillColor},...ce(this.getLineColor)&&{getLineColor:this.getLineColor},...ce(this.getLineWidth)&&{getLineWidth:this.getLineWidth}}}render(){return new kS({...this.baseLayerProps(),...this.layerProps()})}},BS=class extends Np{static layerType=\"solid-polygon\";filled;extruded;wireframe;elevationScale;getElevation;getFillColor;getLineColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"extruded\",\"extruded\"),this.initRegularAttribute(\"wireframe\",\"wireframe\"),this.initRegularAttribute(\"elevation_scale\",\"elevationScale\"),this.initVectorizedAccessor(\"get_elevation\",\"getElevation\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\")}layerProps(){return{data:this.table,...ce(this.filled)&&{filled:this.filled},...ce(this.extruded)&&{extruded:this.extruded},...ce(this.wireframe)&&{wireframe:this.wireframe},...ce(this.elevationScale)&&{elevationScale:this.elevationScale},...ce(this.getElevation)&&{getElevation:this.getElevation},...ce(this.getFillColor)&&{getFillColor:this.getFillColor},...ce(this.getLineColor)&&{getLineColor:this.getLineColor}}}render(){return new Tx({...this.baseLayerProps(),...this.layerProps()})}},VI=class extends Np{static layerType=\"text\";billboard;sizeScale;sizeUnits;sizeMinPixels;sizeMaxPixels;getBackgroundColor;getBorderColor;getBorderWidth;backgroundPadding;characterSet;fontFamily;fontWeight;lineHeight;outlineWidth;outlineColor;fontSettings;wordBreak;maxWidth;getText;getPosition;getColor;getSize;getAngle;getTextAnchor;getAlignmentBaseline;getPixelOffset;constructor(t,r){super(t,r),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initRegularAttribute(\"size_scale\",\"sizeScale\"),this.initRegularAttribute(\"size_units\",\"sizeUnits\"),this.initRegularAttribute(\"size_min_pixels\",\"sizeMinPixels\"),this.initRegularAttribute(\"size_max_pixels\",\"sizeMaxPixels\"),this.initRegularAttribute(\"background_padding\",\"backgroundPadding\"),this.initRegularAttribute(\"character_set\",\"characterSet\"),this.initRegularAttribute(\"font_family\",\"fontFamily\"),this.initRegularAttribute(\"font_weight\",\"fontWeight\"),this.initRegularAttribute(\"line_height\",\"lineHeight\"),this.initRegularAttribute(\"outline_width\",\"outlineWidth\"),this.initRegularAttribute(\"outline_color\",\"outlineColor\"),this.initRegularAttribute(\"font_settings\",\"fontSettings\"),this.initRegularAttribute(\"word_break\",\"wordBreak\"),this.initRegularAttribute(\"max_width\",\"maxWidth\"),this.initVectorizedAccessor(\"get_background_color\",\"getBackgroundColor\"),this.initVectorizedAccessor(\"get_border_color\",\"getBorderColor\"),this.initVectorizedAccessor(\"get_border_width\",\"getBorderWidth\"),this.initVectorizedAccessor(\"get_text\",\"getText\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_size\",\"getSize\"),this.initVectorizedAccessor(\"get_angle\",\"getAngle\"),this.initVectorizedAccessor(\"get_text_anchor\",\"getTextAnchor\"),this.initVectorizedAccessor(\"get_alignment_baseline\",\"getAlignmentBaseline\"),this.initVectorizedAccessor(\"get_pixel_offset\",\"getPixelOffset\")}layerProps(){return{data:this.table,getText:this.getText,...ce(this.billboard)&&{billboard:this.billboard},...ce(this.sizeScale)&&{sizeScale:this.sizeScale},...ce(this.sizeUnits)&&{sizeUnits:this.sizeUnits},...ce(this.sizeMinPixels)&&{sizeMinPixels:this.sizeMinPixels},...ce(this.sizeMaxPixels)&&{sizeMaxPixels:this.sizeMaxPixels},...ce(this.backgroundPadding)&&{backgroundPadding:this.backgroundPadding},...ce(this.characterSet)&&{characterSet:this.characterSet},...ce(this.fontFamily)&&{fontFamily:this.fontFamily},...ce(this.fontWeight)&&{fontWeight:this.fontWeight},...ce(this.lineHeight)&&{lineHeight:this.lineHeight},...ce(this.outlineWidth)&&{outlineWidth:this.outlineWidth},...ce(this.outlineColor)&&{outlineColor:this.outlineColor},...ce(this.fontSettings)&&{fontSettings:this.fontSettings},...ce(this.wordBreak)&&{wordBreak:this.wordBreak},...ce(this.maxWidth)&&{maxWidth:this.maxWidth},...ce(this.getBackgroundColor)&&{getBackgroundColor:this.getBackgroundColor},...ce(this.getBorderColor)&&{getBorderColor:this.getBorderColor},...ce(this.getBorderWidth)&&{getBorderWidth:this.getBorderWidth},...ce(this.getPosition)&&{getPosition:this.getPosition},...ce(this.getColor)&&{getColor:this.getColor},...ce(this.getSize)&&{getSize:this.getSize},...ce(this.getAngle)&&{getAngle:this.getAngle},...ce(this.getTextAnchor)&&{getTextAnchor:this.getTextAnchor},...ce(this.getAlignmentBaseline)&&{getAlignmentBaseline:this.getAlignmentBaseline},...ce(this.getPixelOffset)&&{getPixelOffset:this.getPixelOffset}}}render(){return new RS({...this.baseLayerProps(),...this.layerProps()})}};async function _6(e,t){let r=e.get(\"_layer_type\"),i;switch(r){case BI.layerType:i=new BI(e,t);break;case FI.layerType:i=new FI(e,t);break;case zI.layerType:i=new zI(e,t);break;case NI.layerType:i=new NI(e,t);break;case UI.layerType:i=new UI(e,t);break;case DS.layerType:i=new DS(e,t);break;case OS.layerType:i=new OS(e,t);break;case BS.layerType:i=new BS(e,t);break;case VI.layerType:i=new VI(e,t);break;default:throw new Error(`no layer supported for ${r}`)}return await i.loadSubModels(),i}var jI=Symbol.for(\"rowIndex\");function Fxt(e){return`\n \n ${Object.keys(e).map(t=>{let r=e[t];return`\n \n \n `}).join(\"\")}\n \n
${t}${r}
`}function q$({object:e}){if(e){if(e[jI]===null||e[jI]===void 0||e[jI]&&e[jI]<0)return null;let t=e.toJSON();return!t||(delete t.geometry,Object.keys(t).length===0)?null:{className:\"lonboard-tooltip\",html:Fxt(t),style:{backgroundColor:\"#fff\",boxShadow:\"0 0 15px rgba(0, 0, 0, 0.1)\",color:\"#000\",padding:\"6px\"}}}return null}var GI,zxt=new Uint8Array(16);function y6(){if(!GI&&(GI=typeof crypto<\"u\"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!GI))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return GI(zxt)}var Ma=[];for(let e=0;e<256;++e)Ma.push((e+256).toString(16).slice(1));function Z$(e,t=0){return Ma[e[t+0]]+Ma[e[t+1]]+Ma[e[t+2]]+Ma[e[t+3]]+\"-\"+Ma[e[t+4]]+Ma[e[t+5]]+\"-\"+Ma[e[t+6]]+Ma[e[t+7]]+\"-\"+Ma[e[t+8]]+Ma[e[t+9]]+\"-\"+Ma[e[t+10]]+Ma[e[t+11]]+Ma[e[t+12]]+Ma[e[t+13]]+Ma[e[t+14]]+Ma[e[t+15]]}var Nxt=typeof crypto<\"u\"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),v6={randomUUID:Nxt};function Uxt(e,t,r){if(v6.randomUUID&&!t&&!e)return v6.randomUUID();e=e||{};let i=e.random||(e.rng||y6)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t){r=r||0;for(let s=0;s<16;++s)t[r+s]=i[s];return t}return Z$(i)}var x6=Uxt;await XW();var Vxt={latitude:10,longitude:0,zoom:.5,bearing:0,pitch:0},jxt=\"https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json\";async function Gxt(e,t,r,i){let s={},n=()=>i(new Date);for(let o=0;o{(async()=>{let j=await d3(f.widget_manager,_),Y=await Gxt(j,_,o,C);c(Y)})().catch(console.error)},[_]);let R=[];for(let N of Object.values(o))R.push(N.render());return(0,$g.useEffect)(()=>{if(r)return;let j=document.getElementById(`map-${n}`)?.parentElement;if(j){let Y=window.getComputedStyle(j);(!Y.height||Y.height===\"0px\")&&(j.style.height=\"100%\",j.style.minHeight=\"500px\")}},[]),WI.createElement(\"div\",{id:`map-${n}`,style:{height:r||\"100%\"}},WI.createElement(SD,{initialViewState:[\"longitude\",\"latitude\",\"zoom\"].every(N=>Object.keys(e).includes(N))?e:Vxt,controller:!0,layers:R,getTooltip:i&&q$,pickingRadius:s},WI.createElement(j8,{mapStyle:t||jxt})))}var Hxt={render:E8(Wxt)},Bce=Hxt;export{Bce as default};\n/*! Bundled license information:\n\nreact/cjs/react.production.min.js:\n (**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nscheduler/cjs/scheduler.production.min.js:\n (**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nreact-dom/cjs/react-dom.production.min.js:\n (**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nhammerjs/hammer.js:\n (*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license *)\n*/\n", "_height": null, "_initial_view_state": { "latitude": 30.27504616188673, "longitude": 21.17458729027878, "zoom": 1 }, "_model_module": "anywidget", "_model_name": "AnyModel", "_view_name": "ErrorWidgetView", "basemap_style": "https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json", "error": {}, "layers": [ "IPY_MODEL_fdfd2c5dc30f43a3b51962546e8e0850" ], "layout": "IPY_MODEL_d51b07e818d04c83a8714c0d1e798549", "msg": "Failed to load model class 'AnyModel' from module 'anywidget'", "picking_radius": 5, "show_tooltip": true } }, "249990eafae8436faf2195f9a1d41008": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatRangeSliderModel", "state": { "_model_name": "FloatRangeSliderModel", "_view_name": "FloatRangeSliderView", "behavior": "drag-tap", "description": "Upload: ", "layout": "IPY_MODEL_047ec5e7425a4654a57cce12177a671e", "max": 50000, "style": "IPY_MODEL_b1b59b8ab73b48808c6255f4b63c75b2", "value": [ 1000, 10000 ] } }, "351fc3f741564cf983d41de16d75d5a3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_ac0ded776d0c4f74b3fade64c534d77b", "IPY_MODEL_249990eafae8436faf2195f9a1d41008", "IPY_MODEL_491fdd28ed9b4289b67cdaf522365135" ], "layout": "IPY_MODEL_c30cb2de57fc4f438a2e6450a3eae199", "value": [ [ 16742.8, 25939.4 ], [ 1000, 10000 ], [ 0, 100 ] ] } }, "45ea03cf622d40ba9f8c2ea8dd56baa2": { "model_module": "anywidget", "model_module_version": "2.0.0", "model_name": "AnyModel", "state": { "_anywidget_id": "lonboard._map.Map", "_css": ".lonboard-tooltip{font-family:var(--jp-ui-font-family);font-size:var(--jp-ui-font-size1)}.lonboard-tooltip table{border-collapse:collapse}.lonboard-tooltip table tr:nth-child(odd){background-color:#fff}.lonboard-tooltip table tr:nth-child(2n){background-color:#f1f1f1}.lonboard-tooltip td{border:1px solid rgb(204,204,204);padding:5px}.lonboard-tooltip td:first-child{font-weight:450}\n", "_esm": "var DK=Object.create;var IC=Object.defineProperty;var OK=Object.getOwnPropertyDescriptor;var BK=Object.getOwnPropertyNames;var FK=Object.getPrototypeOf,zK=Object.prototype.hasOwnProperty;var Br=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),dA=(e,t)=>{for(var r in t)IC(e,r,{get:t[r],enumerable:!0})},NK=(e,t,r,i)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let s of BK(t))!zK.call(e,s)&&s!==r&&IC(e,s,{get:()=>t[s],enumerable:!(i=OK(t,s))||i.enumerable});return e};var ki=(e,t,r)=>(r=e!=null?DK(FK(e)):{},NK(t||!e||!e.__esModule?IC(r,\"default\",{value:e,enumerable:!0}):r,e));var e5=Br(Ri=>{\"use strict\";var Zx=Symbol.for(\"react.element\"),UK=Symbol.for(\"react.portal\"),VK=Symbol.for(\"react.fragment\"),jK=Symbol.for(\"react.strict_mode\"),GK=Symbol.for(\"react.profiler\"),WK=Symbol.for(\"react.provider\"),HK=Symbol.for(\"react.context\"),qK=Symbol.for(\"react.forward_ref\"),ZK=Symbol.for(\"react.suspense\"),YK=Symbol.for(\"react.memo\"),QK=Symbol.for(\"react.lazy\"),HF=Symbol.iterator;function $K(e){return e===null||typeof e!=\"object\"?null:(e=HF&&e[HF]||e[\"@@iterator\"],typeof e==\"function\"?e:null)}var YF={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},QF=Object.assign,$F={};function b_(e,t,r){this.props=e,this.context=t,this.refs=$F,this.updater=r||YF}b_.prototype.isReactComponent={};b_.prototype.setState=function(e,t){if(typeof e!=\"object\"&&typeof e!=\"function\"&&e!=null)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")};b_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function XF(){}XF.prototype=b_.prototype;function LC(e,t,r){this.props=e,this.context=t,this.refs=$F,this.updater=r||YF}var kC=LC.prototype=new XF;kC.constructor=LC;QF(kC,b_.prototype);kC.isPureReactComponent=!0;var qF=Array.isArray,KF=Object.prototype.hasOwnProperty,RC={current:null},JF={key:!0,ref:!0,__self:!0,__source:!0};function t5(e,t,r){var i,s={},n=null,o=null;if(t!=null)for(i in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(n=\"\"+t.key),t)KF.call(t,i)&&!JF.hasOwnProperty(i)&&(s[i]=t[i]);var c=arguments.length-2;if(c===1)s.children=r;else if(1{\"use strict\";r5.exports=e5()});var f5=Br(Bn=>{\"use strict\";function zC(e,t){var r=e.length;e.push(t);t:for(;0>>1,s=e[i];if(0>>1;iiT(c,r))fiT(_,c)?(e[i]=_,e[f]=r,i=f):(e[i]=c,e[o]=r,i=o);else if(fiT(_,r))e[i]=_,e[f]=r,i=f;else break t}}return t}function iT(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}typeof performance==\"object\"&&typeof performance.now==\"function\"?(i5=performance,Bn.unstable_now=function(){return i5.now()}):(OC=Date,n5=OC.now(),Bn.unstable_now=function(){return OC.now()-n5});var i5,OC,n5,Ef=[],pA=[],eJ=1,vu=null,Ha=3,oT=!1,d0=!1,Qx=!1,a5=typeof setTimeout==\"function\"?setTimeout:null,l5=typeof clearTimeout==\"function\"?clearTimeout:null,s5=typeof setImmediate<\"u\"?setImmediate:null;typeof navigator<\"u\"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function NC(e){for(var t=wh(pA);t!==null;){if(t.callback===null)sT(pA);else if(t.startTime<=e)sT(pA),t.sortIndex=t.expirationTime,zC(Ef,t);else break;t=wh(pA)}}function UC(e){if(Qx=!1,NC(e),!d0)if(wh(Ef)!==null)d0=!0,jC(VC);else{var t=wh(pA);t!==null&&GC(UC,t.startTime-e)}}function VC(e,t){d0=!1,Qx&&(Qx=!1,l5($x),$x=-1),oT=!0;var r=Ha;try{for(NC(t),vu=wh(Ef);vu!==null&&(!(vu.expirationTime>t)||e&&!h5());){var i=vu.callback;if(typeof i==\"function\"){vu.callback=null,Ha=vu.priorityLevel;var s=i(vu.expirationTime<=t);t=Bn.unstable_now(),typeof s==\"function\"?vu.callback=s:vu===wh(Ef)&&sT(Ef),NC(t)}else sT(Ef);vu=wh(Ef)}if(vu!==null)var n=!0;else{var o=wh(pA);o!==null&&GC(UC,o.startTime-t),n=!1}return n}finally{vu=null,Ha=r,oT=!1}}var aT=!1,nT=null,$x=-1,c5=5,u5=-1;function h5(){return!(Bn.unstable_now()-u5e||125i?(e.sortIndex=r,zC(pA,e),wh(Ef)===null&&e===wh(pA)&&(Qx?(l5($x),$x=-1):Qx=!0,GC(UC,r-i))):(e.sortIndex=s,zC(Ef,e),d0||oT||(d0=!0,jC(VC))),e};Bn.unstable_shouldYield=h5;Bn.unstable_wrapCallback=function(e){var t=Ha;return function(){var r=Ha;Ha=t;try{return e.apply(this,arguments)}finally{Ha=r}}}});var p5=Br(($xt,d5)=>{\"use strict\";d5.exports=f5()});var v8=Br(Wc=>{\"use strict\";var xz=Ji(),jc=p5();function Ee(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,r=1;r\"u\"||typeof window.document>\"u\"||typeof window.document.createElement>\"u\"),fL=Object.prototype.hasOwnProperty,rJ=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,A5={},m5={};function iJ(e){return fL.call(m5,e)?!0:fL.call(A5,e)?!1:rJ.test(e)?m5[e]=!0:(A5[e]=!0,!1)}function nJ(e,t,r,i){if(r!==null&&r.type===0)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return i?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!==\"data-\"&&e!==\"aria-\");default:return!1}}function sJ(e,t,r,i){if(t===null||typeof t>\"u\"||nJ(e,t,r,i))return!0;if(i)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function xl(e,t,r,i,s,n,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=s,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=n,this.removeEmptyString=o}var ga={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(e){ga[e]=new xl(e,0,!1,e,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(e){var t=e[0];ga[t]=new xl(t,1,!1,e[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(e){ga[e]=new xl(e,2,!1,e.toLowerCase(),null,!1,!1)});[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(e){ga[e]=new xl(e,2,!1,e,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(e){ga[e]=new xl(e,3,!1,e.toLowerCase(),null,!1,!1)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(e){ga[e]=new xl(e,3,!0,e,null,!1,!1)});[\"capture\",\"download\"].forEach(function(e){ga[e]=new xl(e,4,!1,e,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(e){ga[e]=new xl(e,6,!1,e,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(e){ga[e]=new xl(e,5,!1,e.toLowerCase(),null,!1,!1)});var nk=/[\\-:]([a-z])/g;function sk(e){return e[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(e){var t=e.replace(nk,sk);ga[t]=new xl(t,1,!1,e,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(e){var t=e.replace(nk,sk);ga[t]=new xl(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(e){var t=e.replace(nk,sk);ga[t]=new xl(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(e){ga[e]=new xl(e,1,!1,e.toLowerCase(),null,!1,!1)});ga.xlinkHref=new xl(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(e){ga[e]=new xl(e,1,!1,e.toLowerCase(),null,!0,!0)});function ok(e,t,r,i){var s=ga.hasOwnProperty(t)?ga[t]:null;(s!==null?s.type!==0:i||!(2c||s[o]!==n[c]){var f=`\n`+s[o].replace(\" at new \",\" at \");return e.displayName&&f.includes(\"\")&&(f=f.replace(\"\",e.displayName)),f}while(1<=o&&0<=c);break}}}finally{HC=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:\"\")?s1(e):\"\"}function oJ(e){switch(e.tag){case 5:return s1(e.type);case 16:return s1(\"Lazy\");case 13:return s1(\"Suspense\");case 19:return s1(\"SuspenseList\");case 0:case 2:case 15:return e=qC(e.type,!1),e;case 11:return e=qC(e.type.render,!1),e;case 1:return e=qC(e.type,!0),e;default:return\"\"}}function mL(e){if(e==null)return null;if(typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case M_:return\"Fragment\";case T_:return\"Portal\";case dL:return\"Profiler\";case ak:return\"StrictMode\";case pL:return\"Suspense\";case AL:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case Sz:return(e.displayName||\"Context\")+\".Consumer\";case wz:return(e._context.displayName||\"Context\")+\".Provider\";case lk:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||\"\",e=e!==\"\"?\"ForwardRef(\"+e+\")\":\"ForwardRef\"),e;case ck:return t=e.displayName||null,t!==null?t:mL(e.type)||\"Memo\";case mA:t=e._payload,e=e._init;try{return mL(e(t))}catch{}}return null}function aJ(e){var t=e.type;switch(e.tag){case 24:return\"Cache\";case 9:return(t.displayName||\"Context\")+\".Consumer\";case 10:return(t._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return e=t.render,e=e.displayName||e.name||\"\",t.displayName||(e!==\"\"?\"ForwardRef(\"+e+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return t;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return mL(t);case 8:return t===ak?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t==\"function\")return t.displayName||t.name||null;if(typeof t==\"string\")return t}return null}function CA(e){switch(typeof e){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return e;case\"object\":return e;default:return\"\"}}function Mz(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===\"input\"&&(t===\"checkbox\"||t===\"radio\")}function lJ(e){var t=Mz(e)?\"checked\":\"value\",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=\"\"+e[t];if(!e.hasOwnProperty(t)&&typeof r<\"u\"&&typeof r.get==\"function\"&&typeof r.set==\"function\"){var s=r.get,n=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(o){i=\"\"+o,n.call(this,o)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return i},setValue:function(o){i=\"\"+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function cT(e){e._valueTracker||(e._valueTracker=lJ(e))}function Ez(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),i=\"\";return e&&(i=Mz(e)?e.checked?\"true\":\"false\":e.value),e=i,e!==r?(t.setValue(e),!0):!1}function FT(e){if(e=e||(typeof document<\"u\"?document:void 0),typeof e>\"u\")return null;try{return e.activeElement||e.body}catch{return e.body}}function gL(e,t){var r=t.checked;return ps({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function _5(e,t){var r=t.defaultValue==null?\"\":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;r=CA(t.value!=null?t.value:r),e._wrapperState={initialChecked:i,initialValue:r,controlled:t.type===\"checkbox\"||t.type===\"radio\"?t.checked!=null:t.value!=null}}function Pz(e,t){t=t.checked,t!=null&&ok(e,\"checked\",t,!1)}function _L(e,t){Pz(e,t);var r=CA(t.value),i=t.type;if(r!=null)i===\"number\"?(r===0&&e.value===\"\"||e.value!=r)&&(e.value=\"\"+r):e.value!==\"\"+r&&(e.value=\"\"+r);else if(i===\"submit\"||i===\"reset\"){e.removeAttribute(\"value\");return}t.hasOwnProperty(\"value\")?yL(e,t.type,r):t.hasOwnProperty(\"defaultValue\")&&yL(e,t.type,CA(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function y5(e,t,r){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var i=t.type;if(!(i!==\"submit\"&&i!==\"reset\"||t.value!==void 0&&t.value!==null))return;t=\"\"+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==\"\"&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,r!==\"\"&&(e.name=r)}function yL(e,t,r){(t!==\"number\"||FT(e.ownerDocument)!==e)&&(r==null?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+r&&(e.defaultValue=\"\"+r))}var o1=Array.isArray;function F_(e,t,r,i){if(e=e.options,t){t={};for(var s=0;s\"+t.valueOf().toString()+\"\",t=uT.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function y1(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var c1={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},cJ=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(c1).forEach(function(e){cJ.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),c1[t]=c1[e]})});function kz(e,t,r){return t==null||typeof t==\"boolean\"||t===\"\"?\"\":r||typeof t!=\"number\"||t===0||c1.hasOwnProperty(e)&&c1[e]?(\"\"+t).trim():t+\"px\"}function Rz(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var i=r.indexOf(\"--\")===0,s=kz(r,t[r],i);r===\"float\"&&(r=\"cssFloat\"),i?e.setProperty(r,s):e[r]=s}}var uJ=ps({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function bL(e,t){if(t){if(uJ[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Ee(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Ee(60));if(typeof t.dangerouslySetInnerHTML!=\"object\"||!(\"__html\"in t.dangerouslySetInnerHTML))throw Error(Ee(61))}if(t.style!=null&&typeof t.style!=\"object\")throw Error(Ee(62))}}function wL(e,t){if(e.indexOf(\"-\")===-1)return typeof t.is==\"string\";switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var SL=null;function uk(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var TL=null,z_=null,N_=null;function b5(e){if(e=F1(e)){if(typeof TL!=\"function\")throw Error(Ee(280));var t=e.stateNode;t&&(t=hM(t),TL(e.stateNode,e.type,t))}}function Dz(e){z_?N_?N_.push(e):N_=[e]:z_=e}function Oz(){if(z_){var e=z_,t=N_;if(N_=z_=null,b5(e),t)for(e=0;e>>=0,e===0?32:31-(xJ(e)/bJ|0)|0}var hT=64,fT=4194304;function a1(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function VT(e,t){var r=e.pendingLanes;if(r===0)return 0;var i=0,s=e.suspendedLanes,n=e.pingedLanes,o=r&268435455;if(o!==0){var c=o&~s;c!==0?i=a1(c):(n&=o,n!==0&&(i=a1(n)))}else o=r&~s,o!==0?i=a1(o):n!==0&&(i=a1(n));if(i===0)return 0;if(t!==0&&t!==i&&!(t&s)&&(s=i&-i,n=t&-t,s>=n||s===16&&(n&4194240)!==0))return t;if(i&4&&(i|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0r;r++)t.push(e);return t}function O1(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ph(t),e[t]=r}function MJ(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=h1),L5=\" \",k5=!1;function eN(e,t){switch(e){case\"keyup\":return ttt.indexOf(t.keyCode)!==-1;case\"keydown\":return t.keyCode!==229;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function rN(e){return e=e.detail,typeof e==\"object\"&&\"data\"in e?e.data:null}var E_=!1;function rtt(e,t){switch(e){case\"compositionend\":return rN(t);case\"keypress\":return t.which!==32?null:(k5=!0,L5);case\"textInput\":return e=t.data,e===L5&&k5?null:e;default:return null}}function itt(e,t){if(E_)return e===\"compositionend\"||!_k&&eN(e,t)?(e=Jz(),PT=Ak=vA=null,E_=!1,e):null;switch(e){case\"paste\":return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=i}t:{for(;r;){if(r.nextSibling){r=r.nextSibling;break t}r=r.parentNode}r=void 0}r=O5(r)}}function oN(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?oN(e,t.parentNode):\"contains\"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function aN(){for(var e=window,t=FT();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href==\"string\"}catch{r=!1}if(r)e=t.contentWindow;else break;t=FT(e.document)}return t}function yk(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===\"input\"&&(e.type===\"text\"||e.type===\"search\"||e.type===\"tel\"||e.type===\"url\"||e.type===\"password\")||t===\"textarea\"||e.contentEditable===\"true\")}function ftt(e){var t=aN(),r=e.focusedElem,i=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&oN(r.ownerDocument.documentElement,r)){if(i!==null&&yk(r)){if(t=i.start,e=i.end,e===void 0&&(e=t),\"selectionStart\"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=r.textContent.length,n=Math.min(i.start,s);i=i.end===void 0?n:Math.min(i.end,s),!e.extend&&n>i&&(s=i,i=n,n=s),s=B5(r,n);var o=B5(r,i);s&&o&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),n>i?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus==\"function\"&&r.focus(),r=0;r=document.documentMode,P_=null,LL=null,d1=null,kL=!1;function F5(e,t,r){var i=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;kL||P_==null||P_!==FT(i)||(i=P_,\"selectionStart\"in i&&yk(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),d1&&T1(d1,i)||(d1=i,i=WT(LL,\"onSelect\"),0L_||(e.current=zL[L_],zL[L_]=null,L_--)}function Fn(e,t){L_++,zL[L_]=e.current,e.current=t}var LA={},Qa=RA(LA),Yl=RA(!1),x0=LA;function W_(e,t){var r=e.type.contextTypes;if(!r)return LA;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var s={},n;for(n in r)s[n]=t[n];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function Ql(e){return e=e.childContextTypes,e!=null}function qT(){Hn(Yl),Hn(Qa)}function q5(e,t,r){if(Qa.current!==LA)throw Error(Ee(168));Fn(Qa,t),Fn(Yl,r)}function mN(e,t,r){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!=\"function\")return r;i=i.getChildContext();for(var s in i)if(!(s in t))throw Error(Ee(108,aJ(e)||\"Unknown\",s));return ps({},r,i)}function ZT(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||LA,x0=Qa.current,Fn(Qa,e),Fn(Yl,Yl.current),!0}function Z5(e,t,r){var i=e.stateNode;if(!i)throw Error(Ee(169));r?(e=mN(e,t,x0),i.__reactInternalMemoizedMergedChildContext=e,Hn(Yl),Hn(Qa),Fn(Qa,e)):Hn(Yl),Fn(Yl,r)}var jd=null,fM=!1,iL=!1;function gN(e){jd===null?jd=[e]:jd.push(e)}function btt(e){fM=!0,gN(e)}function DA(){if(!iL&&jd!==null){iL=!0;var e=0,t=mn;try{var r=jd;for(mn=1;e>=o,s-=o,Gd=1<<32-Ph(t)+s|r<Zt?(le=Kt,Kt=null):le=Kt.sibling;var ue=R($,Kt,tt[Zt],ut);if(ue===null){Kt===null&&(Kt=le);break}e&&Kt&&ue.alternate===null&&t($,Kt),K=n(ue,K,Zt),Ot===null?Pt=ue:Ot.sibling=ue,Ot=ue,Kt=le}if(Zt===tt.length)return r($,Kt),es&&p0($,Zt),Pt;if(Kt===null){for(;ZtZt?(le=Kt,Kt=null):le=Kt.sibling;var Ge=R($,Kt,ue.value,ut);if(Ge===null){Kt===null&&(Kt=le);break}e&&Kt&&Ge.alternate===null&&t($,Kt),K=n(Ge,K,Zt),Ot===null?Pt=Ge:Ot.sibling=Ge,Ot=Ge,Kt=le}if(ue.done)return r($,Kt),es&&p0($,Zt),Pt;if(Kt===null){for(;!ue.done;Zt++,ue=tt.next())ue=C($,ue.value,ut),ue!==null&&(K=n(ue,K,Zt),Ot===null?Pt=ue:Ot.sibling=ue,Ot=ue);return es&&p0($,Zt),Pt}for(Kt=i($,Kt);!ue.done;Zt++,ue=tt.next())ue=N(Kt,$,Zt,ue.value,ut),ue!==null&&(e&&ue.alternate!==null&&Kt.delete(ue.key===null?Zt:ue.key),K=n(ue,K,Zt),Ot===null?Pt=ue:Ot.sibling=ue,Ot=ue);return e&&Kt.forEach(function(tr){return t($,tr)}),es&&p0($,Zt),Pt}function rt($,K,tt,ut){if(typeof tt==\"object\"&&tt!==null&&tt.type===M_&&tt.key===null&&(tt=tt.props.children),typeof tt==\"object\"&&tt!==null){switch(tt.$$typeof){case lT:t:{for(var Pt=tt.key,Ot=K;Ot!==null;){if(Ot.key===Pt){if(Pt=tt.type,Pt===M_){if(Ot.tag===7){r($,Ot.sibling),K=s(Ot,tt.props.children),K.return=$,$=K;break t}}else if(Ot.elementType===Pt||typeof Pt==\"object\"&&Pt!==null&&Pt.$$typeof===mA&&tz(Pt)===Ot.type){r($,Ot.sibling),K=s(Ot,tt.props),K.ref=e1($,Ot,tt),K.return=$,$=K;break t}r($,Ot);break}else t($,Ot);Ot=Ot.sibling}tt.type===M_?(K=v0(tt.props.children,$.mode,ut,tt.key),K.return=$,$=K):(ut=BT(tt.type,tt.key,tt.props,null,$.mode,ut),ut.ref=e1($,K,tt),ut.return=$,$=ut)}return o($);case T_:t:{for(Ot=tt.key;K!==null;){if(K.key===Ot)if(K.tag===4&&K.stateNode.containerInfo===tt.containerInfo&&K.stateNode.implementation===tt.implementation){r($,K.sibling),K=s(K,tt.children||[]),K.return=$,$=K;break t}else{r($,K);break}else t($,K);K=K.sibling}K=hL(tt,$.mode,ut),K.return=$,$=K}return o($);case mA:return Ot=tt._init,rt($,K,Ot(tt._payload),ut)}if(o1(tt))return j($,K,tt,ut);if(Xx(tt))return Y($,K,tt,ut);wT($,tt)}return typeof tt==\"string\"&&tt!==\"\"||typeof tt==\"number\"?(tt=\"\"+tt,K!==null&&K.tag===6?(r($,K.sibling),K=s(K,tt),K.return=$,$=K):(r($,K),K=uL(tt,$.mode,ut),K.return=$,$=K),o($)):r($,K)}return rt}var q_=TN(!0),MN=TN(!1),z1={},kf=RA(z1),I1=RA(z1),C1=RA(z1);function _0(e){if(e===z1)throw Error(Ee(174));return e}function Pk(e,t){switch(Fn(C1,t),Fn(I1,e),Fn(kf,z1),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:xL(null,\"\");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=xL(t,e)}Hn(kf),Fn(kf,t)}function Z_(){Hn(kf),Hn(I1),Hn(C1)}function EN(e){_0(C1.current);var t=_0(kf.current),r=xL(t,e.type);t!==r&&(Fn(I1,e),Fn(kf,r))}function Ik(e){I1.current===e&&(Hn(kf),Hn(I1))}var fs=RA(0);function JT(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data===\"$?\"||r.data===\"$!\"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var nL=[];function Ck(){for(var e=0;er?r:4,e(!0);var i=sL.transition;sL.transition={};try{e(!1),t()}finally{mn=r,sL.transition=i}}function GN(){return Mu().memoizedState}function Mtt(e,t,r){var i=PA(e);if(r={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null},WN(e))HN(t,r);else if(r=xN(e,t,r,i),r!==null){var s=vl();Ih(r,e,i,s),qN(r,t,i)}}function Ett(e,t,r){var i=PA(e),s={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null};if(WN(e))HN(t,s);else{var n=e.alternate;if(e.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var o=t.lastRenderedState,c=n(o,r);if(s.hasEagerState=!0,s.eagerState=c,Ch(c,o)){var f=t.interleaved;f===null?(s.next=s,Mk(t)):(s.next=f.next,f.next=s),t.interleaved=s;return}}catch{}finally{}r=xN(e,t,s,i),r!==null&&(s=vl(),Ih(r,e,i,s),qN(r,t,i))}}function WN(e){var t=e.alternate;return e===ds||t!==null&&t===ds}function HN(e,t){p1=tM=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function qN(e,t,r){if(r&4194240){var i=t.lanes;i&=e.pendingLanes,r|=i,t.lanes=r,fk(e,r)}}var eM={readContext:Tu,useCallback:qa,useContext:qa,useEffect:qa,useImperativeHandle:qa,useInsertionEffect:qa,useLayoutEffect:qa,useMemo:qa,useReducer:qa,useRef:qa,useState:qa,useDebugValue:qa,useDeferredValue:qa,useTransition:qa,useMutableSource:qa,useSyncExternalStore:qa,useId:qa,unstable_isNewReconciler:!1},Ptt={readContext:Tu,useCallback:function(e,t){return If().memoizedState=[e,t===void 0?null:t],e},useContext:Tu,useEffect:rz,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,kT(4194308,4,zN.bind(null,t,e),r)},useLayoutEffect:function(e,t){return kT(4194308,4,e,t)},useInsertionEffect:function(e,t){return kT(4,2,e,t)},useMemo:function(e,t){var r=If();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var i=If();return t=r!==void 0?r(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=Mtt.bind(null,ds,e),[i.memoizedState,e]},useRef:function(e){var t=If();return e={current:e},t.memoizedState=e},useState:ez,useDebugValue:Ok,useDeferredValue:function(e){return If().memoizedState=e},useTransition:function(){var e=ez(!1),t=e[0];return e=Ttt.bind(null,e[1]),If().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var i=ds,s=If();if(es){if(r===void 0)throw Error(Ee(407));r=r()}else{if(r=t(),Xo===null)throw Error(Ee(349));w0&30||CN(i,t,r)}s.memoizedState=r;var n={value:r,getSnapshot:t};return s.queue=n,rz(kN.bind(null,i,n,e),[e]),i.flags|=2048,R1(9,LN.bind(null,i,n,r,t),void 0,null),r},useId:function(){var e=If(),t=Xo.identifierPrefix;if(es){var r=Wd,i=Gd;r=(i&~(1<<32-Ph(i)-1)).toString(32)+r,t=\":\"+t+\"R\"+r,r=L1++,0<\\/script>\",e=e.removeChild(e.firstChild)):typeof i.is==\"string\"?e=o.createElement(r,{is:i.is}):(e=o.createElement(r),r===\"select\"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,r),e[Cf]=t,e[P1]=i,e8(e,t,!1,!1),t.stateNode=e;t:{switch(o=wL(r,i),r){case\"dialog\":Wn(\"cancel\",e),Wn(\"close\",e),s=i;break;case\"iframe\":case\"object\":case\"embed\":Wn(\"load\",e),s=i;break;case\"video\":case\"audio\":for(s=0;sQ_&&(t.flags|=128,i=!0,r1(n,!1),t.lanes=4194304)}else{if(!i)if(e=JT(o),e!==null){if(t.flags|=128,i=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),r1(n,!0),n.tail===null&&n.tailMode===\"hidden\"&&!o.alternate&&!es)return Za(t),null}else 2*qs()-n.renderingStartTime>Q_&&r!==1073741824&&(t.flags|=128,i=!0,r1(n,!1),t.lanes=4194304);n.isBackwards?(o.sibling=t.child,t.child=o):(r=n.last,r!==null?r.sibling=o:t.child=o,n.last=o)}return n.tail!==null?(t=n.tail,n.rendering=t,n.tail=t.sibling,n.renderingStartTime=qs(),t.sibling=null,r=fs.current,Fn(fs,i?r&1|2:r&1),t):(Za(t),null);case 22:case 23:return Vk(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Nc&1073741824&&(Za(t),t.subtreeFlags&6&&(t.flags|=8192)):Za(t),null;case 24:return null;case 25:return null}throw Error(Ee(156,t.tag))}function Btt(e,t){switch(xk(t),t.tag){case 1:return Ql(t.type)&&qT(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Z_(),Hn(Yl),Hn(Qa),Ck(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Ik(t),null;case 13:if(Hn(fs),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ee(340));H_()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Hn(fs),null;case 4:return Z_(),null;case 10:return Tk(t.type._context),null;case 22:case 23:return Vk(),null;case 24:return null;default:return null}}var TT=!1,Ya=!1,Ftt=typeof WeakSet==\"function\"?WeakSet:Set,cr=null;function O_(e,t){var r=e.ref;if(r!==null)if(typeof r==\"function\")try{r(null)}catch(i){Is(e,t,i)}else r.current=null}function $L(e,t,r){try{r()}catch(i){Is(e,t,i)}}var hz=!1;function ztt(e,t){if(RL=jT,e=aN(),yk(e)){if(\"selectionStart\"in e)var r={start:e.selectionStart,end:e.selectionEnd};else t:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var s=i.anchorOffset,n=i.focusNode;i=i.focusOffset;try{r.nodeType,n.nodeType}catch{r=null;break t}var o=0,c=-1,f=-1,_=0,w=0,C=e,R=null;e:for(;;){for(var N;C!==r||s!==0&&C.nodeType!==3||(c=o+s),C!==n||i!==0&&C.nodeType!==3||(f=o+i),C.nodeType===3&&(o+=C.nodeValue.length),(N=C.firstChild)!==null;)R=C,C=N;for(;;){if(C===e)break e;if(R===r&&++_===s&&(c=o),R===n&&++w===i&&(f=o),(N=C.nextSibling)!==null)break;C=R,R=C.parentNode}C=N}r=c===-1||f===-1?null:{start:c,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(DL={focusedElem:e,selectionRange:r},jT=!1,cr=t;cr!==null;)if(t=cr,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,cr=e;else for(;cr!==null;){t=cr;try{var j=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(j!==null){var Y=j.memoizedProps,rt=j.memoizedState,$=t.stateNode,K=$.getSnapshotBeforeUpdate(t.elementType===t.type?Y:Th(t.type,Y),rt);$.__reactInternalSnapshotBeforeUpdate=K}break;case 3:var tt=t.stateNode.containerInfo;tt.nodeType===1?tt.textContent=\"\":tt.nodeType===9&&tt.documentElement&&tt.removeChild(tt.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Ee(163))}}catch(ut){Is(t,t.return,ut)}if(e=t.sibling,e!==null){e.return=t.return,cr=e;break}cr=t.return}return j=hz,hz=!1,j}function A1(e,t,r){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var s=i=i.next;do{if((s.tag&e)===e){var n=s.destroy;s.destroy=void 0,n!==void 0&&$L(t,r,n)}s=s.next}while(s!==i)}}function AM(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var i=r.create;r.destroy=i()}r=r.next}while(r!==t)}}function XL(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t==\"function\"?t(e):t.current=e}}function n8(e){var t=e.alternate;t!==null&&(e.alternate=null,n8(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Cf],delete t[P1],delete t[FL],delete t[vtt],delete t[xtt])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function s8(e){return e.tag===5||e.tag===3||e.tag===4}function fz(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||s8(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function KL(e,t,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=HT));else if(i!==4&&(e=e.child,e!==null))for(KL(e,t,r),e=e.sibling;e!==null;)KL(e,t,r),e=e.sibling}function JL(e,t,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(JL(e,t,r),e=e.sibling;e!==null;)JL(e,t,r),e=e.sibling}var Aa=null,Mh=!1;function AA(e,t,r){for(r=r.child;r!==null;)o8(e,t,r),r=r.sibling}function o8(e,t,r){if(Lf&&typeof Lf.onCommitFiberUnmount==\"function\")try{Lf.onCommitFiberUnmount(aM,r)}catch{}switch(r.tag){case 5:Ya||O_(r,t);case 6:var i=Aa,s=Mh;Aa=null,AA(e,t,r),Aa=i,Mh=s,Aa!==null&&(Mh?(e=Aa,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Aa.removeChild(r.stateNode));break;case 18:Aa!==null&&(Mh?(e=Aa,r=r.stateNode,e.nodeType===8?rL(e.parentNode,r):e.nodeType===1&&rL(e,r),w1(e)):rL(Aa,r.stateNode));break;case 4:i=Aa,s=Mh,Aa=r.stateNode.containerInfo,Mh=!0,AA(e,t,r),Aa=i,Mh=s;break;case 0:case 11:case 14:case 15:if(!Ya&&(i=r.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){s=i=i.next;do{var n=s,o=n.destroy;n=n.tag,o!==void 0&&(n&2||n&4)&&$L(r,t,o),s=s.next}while(s!==i)}AA(e,t,r);break;case 1:if(!Ya&&(O_(r,t),i=r.stateNode,typeof i.componentWillUnmount==\"function\"))try{i.props=r.memoizedProps,i.state=r.memoizedState,i.componentWillUnmount()}catch(c){Is(r,t,c)}AA(e,t,r);break;case 21:AA(e,t,r);break;case 22:r.mode&1?(Ya=(i=Ya)||r.memoizedState!==null,AA(e,t,r),Ya=i):AA(e,t,r);break;default:AA(e,t,r)}}function dz(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new Ftt),t.forEach(function(i){var s=Ztt.bind(null,e,i);r.has(i)||(r.add(i),i.then(s,s))})}}function Sh(e,t){var r=t.deletions;if(r!==null)for(var i=0;is&&(s=o),i&=~n}if(i=s,i=qs()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*Utt(i/1960))-i,10e?16:e,xA===null)var i=!1;else{if(e=xA,xA=null,nM=0,Wi&6)throw Error(Ee(331));var s=Wi;for(Wi|=4,cr=e.current;cr!==null;){var n=cr,o=n.child;if(cr.flags&16){var c=n.deletions;if(c!==null){for(var f=0;fqs()-Nk?y0(e,0):zk|=r),$l(e,t)}function p8(e,t){t===0&&(e.mode&1?(t=fT,fT<<=1,!(fT&130023424)&&(fT=4194304)):t=1);var r=vl();e=Yd(e,t),e!==null&&(O1(e,t,r),$l(e,r))}function qtt(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),p8(e,r)}function Ztt(e,t){var r=0;switch(e.tag){case 13:var i=e.stateNode,s=e.memoizedState;s!==null&&(r=s.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(Ee(314))}i!==null&&i.delete(t),p8(e,r)}var A8;A8=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Yl.current)Zl=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Zl=!1,Dtt(e,t,r);Zl=!!(e.flags&131072)}else Zl=!1,es&&t.flags&1048576&&_N(t,QT,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;RT(e,t),e=t.pendingProps;var s=W_(t,Qa.current);V_(t,r),s=kk(null,t,i,e,s,r);var n=Rk();return t.flags|=1,typeof s==\"object\"&&s!==null&&typeof s.render==\"function\"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ql(i)?(n=!0,ZT(t)):n=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Ek(t),s.updater=dM,t.stateNode=s,s._reactInternals=t,GL(t,i,e,r),t=qL(null,t,i,!0,n,r)):(t.tag=0,es&&n&&vk(t),yl(null,t,s,r),t=t.child),t;case 16:i=t.elementType;t:{switch(RT(e,t),e=t.pendingProps,s=i._init,i=s(i._payload),t.type=i,s=t.tag=Qtt(i),e=Th(i,e),s){case 0:t=HL(null,t,i,e,r);break t;case 1:t=lz(null,t,i,e,r);break t;case 11:t=oz(null,t,i,e,r);break t;case 14:t=az(null,t,i,Th(i.type,e),r);break t}throw Error(Ee(306,i,\"\"))}return t;case 0:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),HL(e,t,i,s,r);case 1:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),lz(e,t,i,s,r);case 3:t:{if(KN(t),e===null)throw Error(Ee(387));i=t.pendingProps,n=t.memoizedState,s=n.element,bN(e,t),KT(t,i,null,r);var o=t.memoizedState;if(i=o.element,n.isDehydrated)if(n={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){s=Y_(Error(Ee(423)),t),t=cz(e,t,i,r,s);break t}else if(i!==s){s=Y_(Error(Ee(424)),t),t=cz(e,t,i,r,s);break t}else for(Uc=TA(t.stateNode.containerInfo.firstChild),Vc=t,es=!0,Eh=null,r=MN(t,null,i,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(H_(),i===s){t=Qd(e,t,r);break t}yl(e,t,i,r)}t=t.child}return t;case 5:return EN(t),e===null&&UL(t),i=t.type,s=t.pendingProps,n=e!==null?e.memoizedProps:null,o=s.children,OL(i,s)?o=null:n!==null&&OL(i,n)&&(t.flags|=32),XN(e,t),yl(e,t,o,r),t.child;case 6:return e===null&&UL(t),null;case 13:return JN(e,t,r);case 4:return Pk(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=q_(t,null,i,r):yl(e,t,i,r),t.child;case 11:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),oz(e,t,i,s,r);case 7:return yl(e,t,t.pendingProps,r),t.child;case 8:return yl(e,t,t.pendingProps.children,r),t.child;case 12:return yl(e,t,t.pendingProps.children,r),t.child;case 10:t:{if(i=t.type._context,s=t.pendingProps,n=t.memoizedProps,o=s.value,Fn($T,i._currentValue),i._currentValue=o,n!==null)if(Ch(n.value,o)){if(n.children===s.children&&!Yl.current){t=Qd(e,t,r);break t}}else for(n=t.child,n!==null&&(n.return=t);n!==null;){var c=n.dependencies;if(c!==null){o=n.child;for(var f=c.firstContext;f!==null;){if(f.context===i){if(n.tag===1){f=Hd(-1,r&-r),f.tag=2;var _=n.updateQueue;if(_!==null){_=_.shared;var w=_.pending;w===null?f.next=f:(f.next=w.next,w.next=f),_.pending=f}}n.lanes|=r,f=n.alternate,f!==null&&(f.lanes|=r),VL(n.return,r,t),c.lanes|=r;break}f=f.next}}else if(n.tag===10)o=n.type===t.type?null:n.child;else if(n.tag===18){if(o=n.return,o===null)throw Error(Ee(341));o.lanes|=r,c=o.alternate,c!==null&&(c.lanes|=r),VL(o,r,t),o=n.sibling}else o=n.child;if(o!==null)o.return=n;else for(o=n;o!==null;){if(o===t){o=null;break}if(n=o.sibling,n!==null){n.return=o.return,o=n;break}o=o.return}n=o}yl(e,t,s.children,r),t=t.child}return t;case 9:return s=t.type,i=t.pendingProps.children,V_(t,r),s=Tu(s),i=i(s),t.flags|=1,yl(e,t,i,r),t.child;case 14:return i=t.type,s=Th(i,t.pendingProps),s=Th(i.type,s),az(e,t,i,s,r);case 15:return QN(e,t,t.type,t.pendingProps,r);case 17:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),RT(e,t),t.tag=1,Ql(i)?(e=!0,ZT(t)):e=!1,V_(t,r),SN(t,i,s),GL(t,i,s,r),qL(null,t,i,!0,e,r);case 19:return t8(e,t,r);case 22:return $N(e,t,r)}throw Error(Ee(156,t.tag))};function m8(e,t){return jz(e,t)}function Ytt(e,t,r,i){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function wu(e,t,r,i){return new Ytt(e,t,r,i)}function Gk(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Qtt(e){if(typeof e==\"function\")return Gk(e)?1:0;if(e!=null){if(e=e.$$typeof,e===lk)return 11;if(e===ck)return 14}return 2}function IA(e,t){var r=e.alternate;return r===null?(r=wu(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function BT(e,t,r,i,s,n){var o=2;if(i=e,typeof e==\"function\")Gk(e)&&(o=1);else if(typeof e==\"string\")o=5;else t:switch(e){case M_:return v0(r.children,s,n,t);case ak:o=8,s|=8;break;case dL:return e=wu(12,r,t,s|2),e.elementType=dL,e.lanes=n,e;case pL:return e=wu(13,r,t,s),e.elementType=pL,e.lanes=n,e;case AL:return e=wu(19,r,t,s),e.elementType=AL,e.lanes=n,e;case Tz:return gM(r,s,n,t);default:if(typeof e==\"object\"&&e!==null)switch(e.$$typeof){case wz:o=10;break t;case Sz:o=9;break t;case lk:o=11;break t;case ck:o=14;break t;case mA:o=16,i=null;break t}throw Error(Ee(130,e==null?e:typeof e,\"\"))}return t=wu(o,r,t,s),t.elementType=e,t.type=i,t.lanes=n,t}function v0(e,t,r,i){return e=wu(7,e,i,t),e.lanes=r,e}function gM(e,t,r,i){return e=wu(22,e,i,t),e.elementType=Tz,e.lanes=r,e.stateNode={isHidden:!1},e}function uL(e,t,r){return e=wu(6,e,null,t),e.lanes=r,e}function hL(e,t,r){return t=wu(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function $tt(e,t,r,i,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=YC(0),this.expirationTimes=YC(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=YC(0),this.identifierPrefix=i,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Wk(e,t,r,i,s,n,o,c,f){return e=new $tt(e,t,r,c,f),t===1?(t=1,n===!0&&(t|=8)):t=0,n=wu(3,null,null,t),e.current=n,n.stateNode=e,n.memoizedState={element:i,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ek(n),e}function Xtt(e,t,r){var i=3{\"use strict\";function x8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=\"function\"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(x8)}catch(e){console.error(e)}}x8(),b8.exports=v8()});var S8=Br(Yk=>{\"use strict\";var w8=bM();Yk.createRoot=w8.createRoot,Yk.hydrateRoot=w8.hydrateRoot;var Jxt});var U8=Br((s4,o4)=>{(function(e,t){typeof s4==\"object\"&&typeof o4<\"u\"?o4.exports=t():(e=typeof globalThis<\"u\"?globalThis:e||self,e.maplibregl=t())})(s4,function(){\"use strict\";var e,t,r;function i(n,o){if(!e)e=o;else if(!t)t=o;else{var c=\"var sharedChunk = {}; (\"+e+\")(sharedChunk); (\"+t+\")(sharedChunk);\",f={};e(f),r=o(f),typeof window<\"u\"&&(r.workerUrl=window.URL.createObjectURL(new Blob([c],{type:\"text/javascript\"})))}}i([\"exports\"],function(n){\"use strict\";function o(u,a,h,A){return new(h||(h=Promise))(function(x,E){function P(V){try{F(A.next(V))}catch(q){E(q)}}function D(V){try{F(A.throw(V))}catch(q){E(q)}}function F(V){var q;V.done?x(V.value):(q=V.value,q instanceof h?q:new h(function(X){X(q)})).then(P,D)}F((A=A.apply(u,a||[])).next())})}function c(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,\"default\")?u.default:u}typeof SuppressedError==\"function\"&&SuppressedError;var f=_;function _(u,a){this.x=u,this.y=a}_.prototype={clone:function(){return new _(this.x,this.y)},add:function(u){return this.clone()._add(u)},sub:function(u){return this.clone()._sub(u)},multByPoint:function(u){return this.clone()._multByPoint(u)},divByPoint:function(u){return this.clone()._divByPoint(u)},mult:function(u){return this.clone()._mult(u)},div:function(u){return this.clone()._div(u)},rotate:function(u){return this.clone()._rotate(u)},rotateAround:function(u,a){return this.clone()._rotateAround(u,a)},matMult:function(u){return this.clone()._matMult(u)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(u){return this.x===u.x&&this.y===u.y},dist:function(u){return Math.sqrt(this.distSqr(u))},distSqr:function(u){var a=u.x-this.x,h=u.y-this.y;return a*a+h*h},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(u){return Math.atan2(this.y-u.y,this.x-u.x)},angleWith:function(u){return this.angleWithSep(u.x,u.y)},angleWithSep:function(u,a){return Math.atan2(this.x*a-this.y*u,this.x*u+this.y*a)},_matMult:function(u){var a=u[2]*this.x+u[3]*this.y;return this.x=u[0]*this.x+u[1]*this.y,this.y=a,this},_add:function(u){return this.x+=u.x,this.y+=u.y,this},_sub:function(u){return this.x-=u.x,this.y-=u.y,this},_mult:function(u){return this.x*=u,this.y*=u,this},_div:function(u){return this.x/=u,this.y/=u,this},_multByPoint:function(u){return this.x*=u.x,this.y*=u.y,this},_divByPoint:function(u){return this.x/=u.x,this.y/=u.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var u=this.y;return this.y=this.x,this.x=-u,this},_rotate:function(u){var a=Math.cos(u),h=Math.sin(u),A=h*this.x+a*this.y;return this.x=a*this.x-h*this.y,this.y=A,this},_rotateAround:function(u,a){var h=Math.cos(u),A=Math.sin(u),x=a.y+A*(this.x-a.x)+h*(this.y-a.y);return this.x=a.x+h*(this.x-a.x)-A*(this.y-a.y),this.y=x,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},_.convert=function(u){return u instanceof _?u:Array.isArray(u)?new _(u[0],u[1]):u};var w=c(f),C=R;function R(u,a,h,A){this.cx=3*u,this.bx=3*(h-u)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*a,this.by=3*(A-a)-this.cy,this.ay=1-this.cy-this.by,this.p1x=u,this.p1y=a,this.p2x=h,this.p2y=A}R.prototype={sampleCurveX:function(u){return((this.ax*u+this.bx)*u+this.cx)*u},sampleCurveY:function(u){return((this.ay*u+this.by)*u+this.cy)*u},sampleCurveDerivativeX:function(u){return(3*this.ax*u+2*this.bx)*u+this.cx},solveCurveX:function(u,a){if(a===void 0&&(a=1e-6),u<0)return 0;if(u>1)return 1;for(var h=u,A=0;A<8;A++){var x=this.sampleCurveX(h)-u;if(Math.abs(x)x?P=h:D=h,h=.5*(D-P)+P;return h},solve:function(u,a){return this.sampleCurveY(this.solveCurveX(u,a))}};var N=c(C);let j,Y;function rt(){return j==null&&(j=typeof OffscreenCanvas<\"u\"&&new OffscreenCanvas(1,1).getContext(\"2d\")&&typeof createImageBitmap==\"function\"),j}function $(){if(Y==null&&(Y=!1,rt())){let a=new OffscreenCanvas(5,5).getContext(\"2d\",{willReadFrequently:!0});if(a){for(let A=0;A<5*5;A++){let x=4*A;a.fillStyle=`rgb(${x},${x+1},${x+2})`,a.fillRect(A%5,Math.floor(A/5),1,1)}let h=a.getImageData(0,0,5,5).data;for(let A=0;A<5*5*4;A++)if(A%4!=3&&h[A]!==A){Y=!0;break}}}return Y||!1}function K(u,a,h,A){let x=new N(u,a,h,A);return function(E){return x.solve(E)}}let tt=K(.25,.1,.25,1);function ut(u,a,h){return Math.min(h,Math.max(a,u))}function Pt(u,a,h){let A=h-a,x=((u-a)%A+A)%A+a;return x===a?h:x}function Ot(u,...a){for(let h of a)for(let A in h)u[A]=h[A];return u}let Kt=1;function Zt(u,a,h){let A={};for(let x in u)A[x]=a.call(h||this,u[x],x,u);return A}function le(u,a,h){let A={};for(let x in u)a.call(h||this,u[x],x,u)&&(A[x]=u[x]);return A}function ue(u){return Array.isArray(u)?u.map(ue):typeof u==\"object\"&&u?Zt(u,ue):u}let Ge={};function tr(u){Ge[u]||(typeof console<\"u\"&&console.warn(u),Ge[u]=!0)}function er(u,a,h){return(h.y-u.y)*(a.x-u.x)>(a.y-u.y)*(h.x-u.x)}function Lr(u){let a=0;for(let h,A,x=0,E=u.length,P=E-1;x\"u\")throw new Error(\"VideoFrame not supported\");let E=new VideoFrame(u,{timestamp:0});try{let P=E?.format;if(!P||!P.startsWith(\"BGR\")&&!P.startsWith(\"RGB\"))throw new Error(`Unrecognized format ${P}`);let D=P.startsWith(\"BGR\"),F=new Uint8ClampedArray(A*x*4);if(yield E.copyTo(F,function(V,q,X,et,at){let ct=4*Math.max(-q,0),mt=(Math.max(0,X)-X)*et*4+ct,bt=4*et,Et=Math.max(0,q),Vt=Math.max(0,X);return{rect:{x:Et,y:Vt,width:Math.min(V.width,q+et)-Et,height:Math.min(V.height,X+at)-Vt},layout:[{offset:mt,stride:bt}]}}(u,a,h,A,x)),D)for(let V=0;VcancelAnimationFrame(a)}},getImageData(u,a=0){return this.getImageCanvasContext(u).getImageData(-a,-a,u.width+2*a,u.height+2*a)},getImageCanvasContext(u){let a=window.document.createElement(\"canvas\"),h=a.getContext(\"2d\",{willReadFrequently:!0});if(!h)throw new Error(\"failed to create canvas 2d context\");return a.width=u.width,a.height=u.height,h.drawImage(u,0,0,u.width,u.height),h},resolveURL:u=>(Ds||(Ds=document.createElement(\"a\")),Ds.href=u,Ds.href),hardwareConcurrency:typeof navigator<\"u\"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(sl==null&&(sl=matchMedia(\"(prefers-reduced-motion: reduce)\")),sl.matches)}},Cc={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:\"\"};class Zi extends Error{constructor(a,h,A,x){super(`AJAXError: ${h} (${a}): ${A}`),this.status=a,this.statusText=h,this.url=A,this.body=x}}let $n=zi()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol===\"blob:\"?window.parent:window).location.href,Ii=u=>Cc.REGISTERED_PROTOCOLS[u.substring(0,u.indexOf(\"://\"))];function Xn(u,a){let h=new AbortController,A=new Request(u.url,{method:u.method||\"GET\",body:u.body,credentials:u.credentials,headers:u.headers,cache:u.cache,referrer:$n(),signal:h.signal}),x=!1,E=!1;return u.type===\"json\"&&A.headers.set(\"Accept\",\"application/json\"),E||fetch(A).then(P=>P.ok?(D=>{(u.type===\"arrayBuffer\"||u.type===\"image\"?D.arrayBuffer():u.type===\"json\"?D.json():D.text()).then(F=>{E||(x=!0,a(null,F,D.headers.get(\"Cache-Control\"),D.headers.get(\"Expires\")))}).catch(F=>{E||a(new Error(F.message))})})(P):P.blob().then(D=>a(new Zi(P.status,P.statusText,u.url,D)))).catch(P=>{P.code!==20&&a(new Error(P.message))}),{cancel:()=>{E=!0,x||h.abort()}}}let No=function(u,a){if(/:\\/\\//.test(u.url)&&!/^https?:|^file:/.test(u.url)){if(zi()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",u,a);if(!zi())return(Ii(u.url)||Xn)(u,a)}if(!(/^file:/.test(h=u.url)||/^file:/.test($n())&&!/^\\w+:/.test(h))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,\"signal\"))return Xn(u,a);if(zi()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",u,a,void 0,!0)}var h;return function(A,x){let E=new XMLHttpRequest;E.open(A.method||\"GET\",A.url,!0),A.type!==\"arrayBuffer\"&&A.type!==\"image\"||(E.responseType=\"arraybuffer\");for(let P in A.headers)E.setRequestHeader(P,A.headers[P]);return A.type===\"json\"&&(E.responseType=\"text\",E.setRequestHeader(\"Accept\",\"application/json\")),E.withCredentials=A.credentials===\"include\",E.onerror=()=>{x(new Error(E.statusText))},E.onload=()=>{if((E.status>=200&&E.status<300||E.status===0)&&E.response!==null){let P=E.response;if(A.type===\"json\")try{P=JSON.parse(E.response)}catch(D){return x(D)}x(null,P,E.getResponseHeader(\"Cache-Control\"),E.getResponseHeader(\"Expires\"))}else{let P=new Blob([E.response],{type:E.getResponseHeader(\"Content-Type\")});x(new Zi(E.status,E.statusText,A.url,P))}},E.send(A.body),{cancel:()=>E.abort()}}(u,a)},ol=function(u,a){return No(Ot(u,{type:\"arrayBuffer\"}),a)};function fo(u){if(!u||u.indexOf(\"://\")<=0||u.indexOf(\"data:image/\")===0||u.indexOf(\"blob:\")===0)return!0;let a=new URL(u),h=window.location;return a.protocol===h.protocol&&a.host===h.host}function Ea(u,a,h){h[u]&&h[u].indexOf(a)!==-1||(h[u]=h[u]||[],h[u].push(a))}function na(u,a,h){if(h&&h[u]){let A=h[u].indexOf(a);A!==-1&&h[u].splice(A,1)}}class ss{constructor(a,h={}){Ot(this,h),this.type=a}}class to extends ss{constructor(a,h={}){super(\"error\",Ot({error:a},h))}}class Ol{on(a,h){return this._listeners=this._listeners||{},Ea(a,h,this._listeners),this}off(a,h){return na(a,h,this._listeners),na(a,h,this._oneTimeListeners),this}once(a,h){return h?(this._oneTimeListeners=this._oneTimeListeners||{},Ea(a,h,this._oneTimeListeners),this):new Promise(A=>this.once(a,A))}fire(a,h){typeof a==\"string\"&&(a=new ss(a,h||{}));let A=a.type;if(this.listens(A)){a.target=this;let x=this._listeners&&this._listeners[A]?this._listeners[A].slice():[];for(let D of x)D.call(this,a);let E=this._oneTimeListeners&&this._oneTimeListeners[A]?this._oneTimeListeners[A].slice():[];for(let D of E)na(A,D,this._oneTimeListeners),D.call(this,a);let P=this._eventedParent;P&&(Ot(a,typeof this._eventedParentData==\"function\"?this._eventedParentData():this._eventedParentData),P.fire(a))}else a instanceof to&&console.error(a.error);return this}listens(a){return this._listeners&&this._listeners[a]&&this._listeners[a].length>0||this._oneTimeListeners&&this._oneTimeListeners[a]&&this._oneTimeListeners[a].length>0||this._eventedParent&&this._eventedParent.listens(a)}setEventedParent(a,h){return this._eventedParent=a,this._eventedParentData=h,this}}var te={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},terrain:{type:\"terrain\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"sprite\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{},custom:{}},default:\"mapbox\"},redFactor:{type:\"number\",default:1},blueFactor:{type:\"number\",default:1},greenFactor:{type:\"number\",default:1},baseShift:{type:\"number\",default:0},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{required:!0,type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},filter:{type:\"*\"},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"!\":\"icon-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"padding\",default:[2],units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},\"viewport-glyph\":{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-variable-anchor-offset\":{type:\"variableAnchorOffsetCollection\",requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\",{\"!\":\"text-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},terrain:{source:{type:\"string\",required:!0},exaggeration:{type:\"number\",minimum:0,default:1}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}};let os=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];function fn(u,a){let h={};for(let A in u)A!==\"ref\"&&(h[A]=u[A]);return os.forEach(A=>{A in a&&(h[A]=a[A])}),h}function gi(u,a){if(Array.isArray(u)){if(!Array.isArray(a)||u.length!==a.length)return!1;for(let h=0;h`:u.itemType.kind===\"value\"?\"array\":`array<${a}>`}return u.kind}let _t=[Ia,Se,Dr,mr,Os,gt,Ca,vt(Tr),J,nt,ht];function Dt(u,a){if(a.kind===\"error\")return null;if(u.kind===\"array\"){if(a.kind===\"array\"&&(a.N===0&&a.itemType.kind===\"value\"||!Dt(u.itemType,a.itemType))&&(typeof u.N!=\"number\"||u.N===a.N))return null}else{if(u.kind===a.kind)return null;if(u.kind===\"value\"){for(let h of _t)if(!Dt(h,a))return null}}return`Expected ${xt(u)} but found ${xt(a)} instead.`}function Mt(u,a){return a.some(h=>h.kind===u.kind)}function Ut(u,a){return a.some(h=>h===\"null\"?u===null:h===\"array\"?Array.isArray(u):h===\"object\"?u&&!Array.isArray(u)&&typeof u==\"object\":h===typeof u)}function re(u,a){return u.kind===\"array\"&&a.kind===\"array\"?u.itemType.kind===a.itemType.kind&&typeof u.N==\"number\":u.kind===a.kind}let ne=.96422,oe=.82521,ar=4/29,_r=6/29,Ye=3*_r*_r,lr=_r*_r*_r,xr=Math.PI/180,vi=180/Math.PI;function Bi(u){return(u%=360)<0&&(u+=360),u}function ni([u,a,h,A]){let x,E,P=Un((.2225045*(u=Hr(u))+.7168786*(a=Hr(a))+.0606169*(h=Hr(h)))/1);u===a&&a===h?x=E=P:(x=Un((.4360747*u+.3850649*a+.1430804*h)/ne),E=Un((.0139322*u+.0971045*a+.7141733*h)/oe));let D=116*P-16;return[D<0?0:D,500*(x-P),200*(P-E),A]}function Hr(u){return u<=.04045?u/12.92:Math.pow((u+.055)/1.055,2.4)}function Un(u){return u>lr?Math.pow(u,1/3):u/Ye+ar}function Li([u,a,h,A]){let x=(u+16)/116,E=isNaN(a)?x:x+a/500,P=isNaN(h)?x:x-h/200;return x=1*Kn(x),E=ne*Kn(E),P=oe*Kn(P),[gn(3.1338561*E-1.6168667*x-.4906146*P),gn(-.9787684*E+1.9161415*x+.033454*P),gn(.0719453*E-.2289914*x+1.4052427*P),A]}function gn(u){return(u=u<=.00304?12.92*u:1.055*Math.pow(u,1/2.4)-.055)<0?0:u>1?1:u}function Kn(u){return u>_r?u*u*u:Ye*(u-ar)}function oa(u){return parseInt(u.padEnd(2,u),16)/255}function Om(u,a){return Fl(a?u/100:u,0,1)}function Fl(u,a,h){return Math.min(Math.max(a,u),h)}function ws(u){return!u.some(Number.isNaN)}let ih={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class ai{constructor(a,h,A,x=1,E=!0){this.r=a,this.g=h,this.b=A,this.a=x,E||(this.r*=x,this.g*=x,this.b*=x,x||this.overwriteGetter(\"rgb\",[a,h,A,x]))}static parse(a){if(a instanceof ai)return a;if(typeof a!=\"string\")return;let h=function(A){if((A=A.toLowerCase().trim())===\"transparent\")return[0,0,0,0];let x=ih[A];if(x){let[P,D,F]=x;return[P/255,D/255,F/255,1]}if(A.startsWith(\"#\")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(A)){let P=A.length<6?1:2,D=1;return[oa(A.slice(D,D+=P)),oa(A.slice(D,D+=P)),oa(A.slice(D,D+=P)),oa(A.slice(D,D+P)||\"ff\")]}if(A.startsWith(\"rgb\")){let P=A.match(/^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(P){let[D,F,V,q,X,et,at,ct,mt,bt,Et,Vt]=P,kt=[q||\" \",at||\" \",bt].join(\"\");if(kt===\" \"||kt===\" /\"||kt===\",,\"||kt===\",,,\"){let jt=[V,et,mt].join(\"\"),qt=jt===\"%%%\"?100:jt===\"\"?255:0;if(qt){let ae=[Fl(+F/qt,0,1),Fl(+X/qt,0,1),Fl(+ct/qt,0,1),Et?Om(+Et,Vt):1];if(ws(ae))return ae}}return}}let E=A.match(/^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(E){let[P,D,F,V,q,X,et,at,ct]=E,mt=[F||\" \",q||\" \",et].join(\"\");if(mt===\" \"||mt===\" /\"||mt===\",,\"||mt===\",,,\"){let bt=[+D,Fl(+V,0,100),Fl(+X,0,100),at?Om(+at,ct):1];if(ws(bt))return function([Et,Vt,kt,jt]){function qt(ae){let Be=(ae+Et/30)%12,Je=Vt*Math.min(kt,1-kt);return kt-Je*Math.max(-1,Math.min(Be-3,9-Be,1))}return Et=Bi(Et),Vt/=100,kt/=100,[qt(0),qt(8),qt(4),jt]}(bt)}}}(a);return h?new ai(...h,!1):void 0}get rgb(){let{r:a,g:h,b:A,a:x}=this,E=x||1/0;return this.overwriteGetter(\"rgb\",[a/E,h/E,A/E,x])}get hcl(){return this.overwriteGetter(\"hcl\",function(a){let[h,A,x,E]=ni(a),P=Math.sqrt(A*A+x*x);return[Math.round(1e4*P)?Bi(Math.atan2(x,A)*vi):NaN,P,h,E]}(this.rgb))}get lab(){return this.overwriteGetter(\"lab\",ni(this.rgb))}overwriteGetter(a,h){return Object.defineProperty(this,a,{value:h}),h}toString(){let[a,h,A,x]=this.rgb;return`rgba(${[a,h,A].map(E=>Math.round(255*E)).join(\",\")},${x})`}}ai.black=new ai(0,0,0,1),ai.white=new ai(1,1,1,1),ai.transparent=new ai(0,0,0,0),ai.red=new ai(1,0,0,1);class La{constructor(a,h,A){this.sensitivity=a?h?\"variant\":\"case\":h?\"accent\":\"base\",this.locale=A,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})}compare(a,h){return this.collator.compare(a,h)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Lc{constructor(a,h,A,x,E){this.text=a,this.image=h,this.scale=A,this.fontStack=x,this.textColor=E}}class on{constructor(a){this.sections=a}static fromString(a){return new on([new Lc(a,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(a=>a.text.length!==0||a.image&&a.image.name.length!==0)}static factory(a){return a instanceof on?a:on.fromString(a)}toString(){return this.sections.length===0?\"\":this.sections.map(a=>a.text).join(\"\")}}class kn{constructor(a){this.values=a.slice()}static parse(a){if(a instanceof kn)return a;if(typeof a==\"number\")return new kn([a,a,a,a]);if(Array.isArray(a)&&!(a.length<1||a.length>4)){for(let h of a)if(typeof h!=\"number\")return;switch(a.length){case 1:a=[a[0],a[0],a[0],a[0]];break;case 2:a=[a[0],a[1],a[0],a[1]];break;case 3:a=[a[0],a[1],a[2],a[1]]}return new kn(a)}}toString(){return JSON.stringify(this.values)}}let Bm=new Set([\"center\",\"left\",\"right\",\"top\",\"bottom\",\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"]);class Vo{constructor(a){this.values=a.slice()}static parse(a){if(a instanceof Vo)return a;if(Array.isArray(a)&&!(a.length<1)&&a.length%2==0){for(let h=0;h=0&&u<=255&&typeof a==\"number\"&&a>=0&&a<=255&&typeof h==\"number\"&&h>=0&&h<=255?A===void 0||typeof A==\"number\"&&A>=0&&A<=1?null:`Invalid rgba value [${[u,a,h,A].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof A==\"number\"?[u,a,h,A]:[u,a,h]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function zl(u){if(u===null||typeof u==\"string\"||typeof u==\"boolean\"||typeof u==\"number\"||u instanceof ai||u instanceof La||u instanceof on||u instanceof kn||u instanceof Vo||u instanceof Vn)return!0;if(Array.isArray(u)){for(let a of u)if(!zl(a))return!1;return!0}if(typeof u==\"object\"){for(let a in u)if(!zl(u[a]))return!1;return!0}return!1}function Yi(u){if(u===null)return Ia;if(typeof u==\"string\")return Dr;if(typeof u==\"boolean\")return mr;if(typeof u==\"number\")return Se;if(u instanceof ai)return Os;if(u instanceof La)return sa;if(u instanceof on)return gt;if(u instanceof kn)return J;if(u instanceof Vo)return ht;if(u instanceof Vn)return nt;if(Array.isArray(u)){let a=u.length,h;for(let A of u){let x=Yi(A);if(h){if(h===x)continue;h=Tr;break}h=x}return vt(h||Tr,a)}return Ca}function _i(u){let a=typeof u;return u===null?\"\":a===\"string\"||a===\"number\"||a===\"boolean\"?String(u):u instanceof ai||u instanceof on||u instanceof kn||u instanceof Vo||u instanceof Vn?u.toString():JSON.stringify(u)}class Nl{constructor(a,h){this.type=a,this.value=h}static parse(a,h){if(a.length!==2)return h.error(`'literal' expression requires exactly one argument, but found ${a.length-1} instead.`);if(!zl(a[1]))return h.error(\"invalid value\");let A=a[1],x=Yi(A),E=h.expectedType;return x.kind!==\"array\"||x.N!==0||!E||E.kind!==\"array\"||typeof E.N==\"number\"&&E.N!==0||(x=E),new Nl(x,A)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class an{constructor(a){this.name=\"ExpressionEvaluationError\",this.message=a}toJSON(){return this.message}}let hu={string:Dr,number:Se,boolean:mr,object:Ca};class Jn{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A,x=1,E=a[0];if(E===\"array\"){let D,F;if(a.length>2){let V=a[1];if(typeof V!=\"string\"||!(V in hu)||V===\"object\")return h.error('The item type argument of \"array\" must be one of string, number, boolean',1);D=hu[V],x++}else D=Tr;if(a.length>3){if(a[2]!==null&&(typeof a[2]!=\"number\"||a[2]<0||a[2]!==Math.floor(a[2])))return h.error('The length argument to \"array\" must be a positive integer literal',2);F=a[2],x++}A=vt(D,F)}else{if(!hu[E])throw new Error(`Types doesn't contain name = ${E}`);A=hu[E]}let P=[];for(;xa.outputDefined())}}let Up={\"to-boolean\":mr,\"to-color\":Os,\"to-number\":Se,\"to-string\":Dr};class Ul{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A=a[0];if(!Up[A])throw new Error(`Can't parse ${A} as it is not part of the known types`);if((A===\"to-boolean\"||A===\"to-string\")&&a.length!==2)return h.error(\"Expected one argument.\");let x=Up[A],E=[];for(let P=1;P4?`Invalid rbga value ${JSON.stringify(h)}: expected an array containing either three or four numeric values.`:mo(h[0],h[1],h[2],h[3]),!A))return new ai(h[0]/255,h[1]/255,h[2]/255,h[3])}throw new an(A||`Could not parse color from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"padding\":{let h;for(let A of this.args){h=A.evaluate(a);let x=kn.parse(h);if(x)return x}throw new an(`Could not parse padding from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"variableAnchorOffsetCollection\":{let h;for(let A of this.args){h=A.evaluate(a);let x=Vo.parse(h);if(x)return x}throw new an(`Could not parse variableAnchorOffsetCollection from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"number\":{let h=null;for(let A of this.args){if(h=A.evaluate(a),h===null)return 0;let x=Number(h);if(!isNaN(x))return x}throw new an(`Could not convert ${JSON.stringify(h)} to number.`)}case\"formatted\":return on.fromString(_i(this.args[0].evaluate(a)));case\"resolvedImage\":return Vn.fromString(_i(this.args[0].evaluate(a)));default:return _i(this.args[0].evaluate(a))}}eachChild(a){this.args.forEach(a)}outputDefined(){return this.args.every(a=>a.outputDefined())}}let md=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class gd{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type==\"number\"?md[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(a){let h=this._parseColorCache[a];return h||(h=this._parseColorCache[a]=ai.parse(a)),h}}class _d{constructor(a,h,A=[],x,E=new Bl,P=[]){this.registry=a,this.path=A,this.key=A.map(D=>`[${D}]`).join(\"\"),this.scope=E,this.errors=P,this.expectedType=x,this._isConstant=h}parse(a,h,A,x,E={}){return h?this.concat(h,A,x)._parse(a,E):this._parse(a,E)}_parse(a,h){function A(x,E,P){return P===\"assert\"?new Jn(E,[x]):P===\"coerce\"?new Ul(E,[x]):x}if(a!==null&&typeof a!=\"string\"&&typeof a!=\"boolean\"&&typeof a!=\"number\"||(a=[\"literal\",a]),Array.isArray(a)){if(a.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');let x=a[0];if(typeof x!=\"string\")return this.error(`Expression name must be a string, but found ${typeof x} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;let E=this.registry[x];if(E){let P=E.parse(a,this);if(!P)return null;if(this.expectedType){let D=this.expectedType,F=P.type;if(D.kind!==\"string\"&&D.kind!==\"number\"&&D.kind!==\"boolean\"&&D.kind!==\"object\"&&D.kind!==\"array\"||F.kind!==\"value\")if(D.kind!==\"color\"&&D.kind!==\"formatted\"&&D.kind!==\"resolvedImage\"||F.kind!==\"value\"&&F.kind!==\"string\")if(D.kind!==\"padding\"||F.kind!==\"value\"&&F.kind!==\"number\"&&F.kind!==\"array\")if(D.kind!==\"variableAnchorOffsetCollection\"||F.kind!==\"value\"&&F.kind!==\"array\"){if(this.checkSubtype(D,F))return null}else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"assert\")}if(!(P instanceof Nl)&&P.type.kind!==\"resolvedImage\"&&this._isConstant(P)){let D=new gd;try{P=new Nl(P.type,P.evaluate(D))}catch(F){return this.error(F.message),null}}return P}return this.error(`Unknown expression \"${x}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(a===void 0?\"'undefined' value invalid. Use null instead.\":typeof a==\"object\"?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof a} instead.`)}concat(a,h,A){let x=typeof a==\"number\"?this.path.concat(a):this.path,E=A?this.scope.concat(A):this.scope;return new _d(this.registry,this._isConstant,x,h||null,E,this.errors)}error(a,...h){let A=`${this.key}${h.map(x=>`[${x}]`).join(\"\")}`;this.errors.push(new dn(A,a))}checkSubtype(a,h){let A=Dt(a,h);return A&&this.error(A),A}}class yd{constructor(a,h,A){this.type=sa,this.locale=A,this.caseSensitive=a,this.diacriticSensitive=h}static parse(a,h){if(a.length!==2)return h.error(\"Expected one argument.\");let A=a[1];if(typeof A!=\"object\"||Array.isArray(A))return h.error(\"Collator options argument must be an object.\");let x=h.parse(A[\"case-sensitive\"]!==void 0&&A[\"case-sensitive\"],1,mr);if(!x)return null;let E=h.parse(A[\"diacritic-sensitive\"]!==void 0&&A[\"diacritic-sensitive\"],1,mr);if(!E)return null;let P=null;return A.locale&&(P=h.parse(A.locale,1,Dr),!P)?null:new yd(x,E,P)}evaluate(a){return new La(this.caseSensitive.evaluate(a),this.diacriticSensitive.evaluate(a),this.locale?this.locale.evaluate(a):null)}eachChild(a){a(this.caseSensitive),a(this.diacriticSensitive),this.locale&&a(this.locale)}outputDefined(){return!1}}let lt=8192;function ft(u,a){u[0]=Math.min(u[0],a[0]),u[1]=Math.min(u[1],a[1]),u[2]=Math.max(u[2],a[0]),u[3]=Math.max(u[3],a[1])}function Lt(u,a){return!(u[0]<=a[0]||u[2]>=a[2]||u[1]<=a[1]||u[3]>=a[3])}function $t(u,a){let h=(180+u[0])/360,A=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+u[1]*Math.PI/360)))/360,x=Math.pow(2,a.z);return[Math.round(h*x*lt),Math.round(A*x*lt)]}function ge(u,a,h){let A=u[0]-a[0],x=u[1]-a[1],E=u[0]-h[0],P=u[1]-h[1];return A*P-E*x==0&&A*E<=0&&x*P<=0}function qe(u,a){let h=!1;for(let P=0,D=a.length;P(A=u)[1]!=(E=F[V+1])[1]>A[1]&&A[0]<(E[0]-x[0])*(A[1]-x[1])/(E[1]-x[1])+x[0]&&(h=!h)}}var A,x,E;return h}function ti(u,a){for(let h=0;h0&&D<0||P<0&&D>0}function Ss(u,a,h){for(let V of h)for(let q=0;qh[2]){let x=.5*A,E=u[0]-h[0]>x?-A:h[0]-u[0]>x?A:0;E===0&&(E=u[0]-h[2]>x?-A:h[2]-u[0]>x?A:0),u[0]+=E}ft(a,u)}function Xg(u,a,h,A){let x=Math.pow(2,A.z)*lt,E=[A.x*lt,A.y*lt],P=[];for(let D of u)for(let F of D){let V=[F.x+E[0],F.y+E[1]];Ex(V,a,h,x),P.push(V)}return P}function Kg(u,a,h,A){let x=Math.pow(2,A.z)*lt,E=[A.x*lt,A.y*lt],P=[];for(let F of u){let V=[];for(let q of F){let X=[q.x+E[0],q.y+E[1]];ft(a,X),V.push(X)}P.push(V)}if(a[2]-a[0]<=x/2){(D=a)[0]=D[1]=1/0,D[2]=D[3]=-1/0;for(let F of P)for(let V of F)Ex(V,a,h,x)}var D;return P}class Af{constructor(a,h){this.type=mr,this.geojson=a,this.geometries=h}static parse(a,h){if(a.length!==2)return h.error(`'within' expression requires exactly one argument, but found ${a.length-1} instead.`);if(zl(a[1])){let A=a[1];if(A.type===\"FeatureCollection\")for(let x=0;x!Array.isArray(V)||V.length===a.length-1),F=null;for(let[V,q]of D){F=new _d(h.registry,Nm,h.path,null,h.scope);let X=[],et=!1;for(let at=1;at{return et=X,Array.isArray(et)?`(${et.map(xt).join(\", \")})`:`(${xt(et.type)}...)`;var et}).join(\" | \"),q=[];for(let X=1;X{h=a?h&&Nm(A):h&&A instanceof Nl}),!!h&&Um(u)&&Vm(u,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}function Um(u){if(u instanceof cl&&(u.name===\"get\"&&u.args.length===1||u.name===\"feature-state\"||u.name===\"has\"&&u.args.length===1||u.name===\"properties\"||u.name===\"geometry-type\"||u.name===\"id\"||/^filter-/.test(u.name))||u instanceof Af)return!1;let a=!0;return u.eachChild(h=>{a&&!Um(h)&&(a=!1)}),a}function Vp(u){if(u instanceof cl&&u.name===\"feature-state\")return!1;let a=!0;return u.eachChild(h=>{a&&!Vp(h)&&(a=!1)}),a}function Vm(u,a){if(u instanceof cl&&a.indexOf(u.name)>=0)return!1;let h=!0;return u.eachChild(A=>{h&&!Vm(A,a)&&(h=!1)}),h}function vd(u,a){let h=u.length-1,A,x,E=0,P=h,D=0;for(;E<=P;)if(D=Math.floor((E+P)/2),A=u[D],x=u[D+1],A<=a){if(D===h||aa))throw new an(\"Input is not a number.\");P=D-1}return 0}class nh{constructor(a,h,A){this.type=a,this.input=h,this.labels=[],this.outputs=[];for(let[x,E]of A)this.labels.push(x),this.outputs.push(E)}static parse(a,h){if(a.length-1<4)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if((a.length-1)%2!=0)return h.error(\"Expected an even number of arguments.\");let A=h.parse(a[1],1,Se);if(!A)return null;let x=[],E=null;h.expectedType&&h.expectedType.kind!==\"value\"&&(E=h.expectedType);for(let P=1;P=D)return h.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',V);let X=h.parse(F,q,E);if(!X)return null;E=E||X.type,x.push([D,X])}return new nh(E,A,x)}evaluate(a){let h=this.labels,A=this.outputs;if(h.length===1)return A[0].evaluate(a);let x=this.input.evaluate(a);if(x<=h[0])return A[0].evaluate(a);let E=h.length;return x>=h[E-1]?A[E-1].evaluate(a):A[vd(h,x)].evaluate(a)}eachChild(a){a(this.input);for(let h of this.outputs)a(h)}outputDefined(){return this.outputs.every(a=>a.outputDefined())}}function ui(u,a,h){return u+h*(a-u)}function jm(u,a,h){return u.map((A,x)=>ui(A,a[x],h))}let Ra={number:ui,color:function(u,a,h,A=\"rgb\"){switch(A){case\"rgb\":{let[x,E,P,D]=jm(u.rgb,a.rgb,h);return new ai(x,E,P,D,!1)}case\"hcl\":{let[x,E,P,D]=u.hcl,[F,V,q,X]=a.hcl,et,at;if(isNaN(x)||isNaN(F))isNaN(x)?isNaN(F)?et=NaN:(et=F,P!==1&&P!==0||(at=V)):(et=x,q!==1&&q!==0||(at=E));else{let Vt=F-x;F>x&&Vt>180?Vt-=360:F180&&(Vt+=360),et=x+h*Vt}let[ct,mt,bt,Et]=function([Vt,kt,jt,qt]){return Vt=isNaN(Vt)?0:Vt*xr,Li([jt,Math.cos(Vt)*kt,Math.sin(Vt)*kt,qt])}([et,at??ui(E,V,h),ui(P,q,h),ui(D,X,h)]);return new ai(ct,mt,bt,Et,!1)}case\"lab\":{let[x,E,P,D]=Li(jm(u.lab,a.lab,h));return new ai(x,E,P,D,!1)}}},array:jm,padding:function(u,a,h){return new kn(jm(u.values,a.values,h))},variableAnchorOffsetCollection:function(u,a,h){let A=u.values,x=a.values;if(A.length!==x.length)throw new an(`Cannot interpolate values of different length. from: ${u.toString()}, to: ${a.toString()}`);let E=[];for(let P=0;Ptypeof q!=\"number\"||q<0||q>1))return h.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);x={name:\"cubic-bezier\",controlPoints:V}}}if(a.length-1<4)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if((a.length-1)%2!=0)return h.error(\"Expected an even number of arguments.\");if(E=h.parse(E,2,Se),!E)return null;let D=[],F=null;A===\"interpolate-hcl\"||A===\"interpolate-lab\"?F=Os:h.expectedType&&h.expectedType.kind!==\"value\"&&(F=h.expectedType);for(let V=0;V=q)return h.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',et);let ct=h.parse(X,at,F);if(!ct)return null;F=F||ct.type,D.push([q,ct])}return re(F,Se)||re(F,Os)||re(F,J)||re(F,ht)||re(F,vt(Se))?new Da(F,A,x,E,D):h.error(`Type ${xt(F)} is not interpolatable.`)}evaluate(a){let h=this.labels,A=this.outputs;if(h.length===1)return A[0].evaluate(a);let x=this.input.evaluate(a);if(x<=h[0])return A[0].evaluate(a);let E=h.length;if(x>=h[E-1])return A[E-1].evaluate(a);let P=vd(h,x),D=Da.interpolationFactor(this.interpolation,x,h[P],h[P+1]),F=A[P].evaluate(a),V=A[P+1].evaluate(a);switch(this.operator){case\"interpolate\":return Ra[this.type.kind](F,V,D);case\"interpolate-hcl\":return Ra.color(F,V,D,\"hcl\");case\"interpolate-lab\":return Ra.color(F,V,D,\"lab\")}}eachChild(a){a(this.input);for(let h of this.outputs)a(h)}outputDefined(){return this.outputs.every(a=>a.outputDefined())}}function Jg(u,a,h,A){let x=A-h,E=u-h;return x===0?0:a===1?E/x:(Math.pow(a,E)-1)/(Math.pow(a,x)-1)}class Gm{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expectected at least one argument.\");let A=null,x=h.expectedType;x&&x.kind!==\"value\"&&(A=x);let E=[];for(let D of a.slice(1)){let F=h.parse(D,1+E.length,A,void 0,{typeAnnotation:\"omit\"});if(!F)return null;A=A||F.type,E.push(F)}if(!A)throw new Error(\"No output type\");let P=x&&E.some(D=>Dt(x,D.type));return new Gm(P?Tr:A,E)}evaluate(a){let h,A=null,x=0;for(let E of this.args)if(x++,A=E.evaluate(a),A&&A instanceof Vn&&!A.available&&(h||(h=A.name),A=null,x===this.args.length&&(A=h)),A!==null)break;return A}eachChild(a){this.args.forEach(a)}outputDefined(){return this.args.every(a=>a.outputDefined())}}class Wm{constructor(a,h){this.type=h.type,this.bindings=[].concat(a),this.result=h}evaluate(a){return this.result.evaluate(a)}eachChild(a){for(let h of this.bindings)a(h[1]);a(this.result)}static parse(a,h){if(a.length<4)return h.error(`Expected at least 3 arguments, but found ${a.length-1} instead.`);let A=[];for(let E=1;E=A.length)throw new an(`Array index out of bounds: ${h} > ${A.length-1}.`);if(h!==Math.floor(h))throw new an(`Array index must be an integer, but found ${h} instead.`);return A[h]}eachChild(a){a(this.index),a(this.input)}outputDefined(){return!1}}class Hm{constructor(a,h){this.type=mr,this.needle=a,this.haystack=h}static parse(a,h){if(a.length!==3)return h.error(`Expected 2 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Tr);return A&&x?Mt(A.type,[mr,Dr,Se,Ia,Tr])?new Hm(A,x):h.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(A.type)} instead`):null}evaluate(a){let h=this.needle.evaluate(a),A=this.haystack.evaluate(a);if(!A)return!1;if(!Ut(h,[\"boolean\",\"string\",\"number\",\"null\"]))throw new an(`Expected first argument to be of type boolean, string, number or null, but found ${xt(Yi(h))} instead.`);if(!Ut(A,[\"string\",\"array\"]))throw new an(`Expected second argument to be of type array or string, but found ${xt(Yi(A))} instead.`);return A.indexOf(h)>=0}eachChild(a){a(this.needle),a(this.haystack)}outputDefined(){return!0}}class Gp{constructor(a,h,A){this.type=Se,this.needle=a,this.haystack=h,this.fromIndex=A}static parse(a,h){if(a.length<=2||a.length>=5)return h.error(`Expected 3 or 4 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Tr);if(!A||!x)return null;if(!Mt(A.type,[mr,Dr,Se,Ia,Tr]))return h.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(A.type)} instead`);if(a.length===4){let E=h.parse(a[3],3,Se);return E?new Gp(A,x,E):null}return new Gp(A,x)}evaluate(a){let h=this.needle.evaluate(a),A=this.haystack.evaluate(a);if(!Ut(h,[\"boolean\",\"string\",\"number\",\"null\"]))throw new an(`Expected first argument to be of type boolean, string, number or null, but found ${xt(Yi(h))} instead.`);if(!Ut(A,[\"string\",\"array\"]))throw new an(`Expected second argument to be of type array or string, but found ${xt(Yi(A))} instead.`);if(this.fromIndex){let x=this.fromIndex.evaluate(a);return A.indexOf(h,x)}return A.indexOf(h)}eachChild(a){a(this.needle),a(this.haystack),this.fromIndex&&a(this.fromIndex)}outputDefined(){return!1}}class xd{constructor(a,h,A,x,E,P){this.inputType=a,this.type=h,this.input=A,this.cases=x,this.outputs=E,this.otherwise=P}static parse(a,h){if(a.length<5)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if(a.length%2!=1)return h.error(\"Expected an even number of arguments.\");let A,x;h.expectedType&&h.expectedType.kind!==\"value\"&&(x=h.expectedType);let E={},P=[];for(let V=2;VNumber.MAX_SAFE_INTEGER)return et.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof ct==\"number\"&&Math.floor(ct)!==ct)return et.error(\"Numeric branch labels must be integer values.\");if(A){if(et.checkSubtype(A,Yi(ct)))return null}else A=Yi(ct);if(E[String(ct)]!==void 0)return et.error(\"Branch labels must be unique.\");E[String(ct)]=P.length}let at=h.parse(X,V,x);if(!at)return null;x=x||at.type,P.push(at)}let D=h.parse(a[1],1,Tr);if(!D)return null;let F=h.parse(a[a.length-1],a.length-1,x);return F?D.type.kind!==\"value\"&&h.concat(1).checkSubtype(A,D.type)?null:new xd(A,x,D,E,P,F):null}evaluate(a){let h=this.input.evaluate(a);return(Yi(h)===this.inputType&&this.outputs[this.cases[h]]||this.otherwise).evaluate(a)}eachChild(a){a(this.input),this.outputs.forEach(a),a(this.otherwise)}outputDefined(){return this.outputs.every(a=>a.outputDefined())&&this.otherwise.outputDefined()}}class Wp{constructor(a,h,A){this.type=a,this.branches=h,this.otherwise=A}static parse(a,h){if(a.length<4)return h.error(`Expected at least 3 arguments, but found only ${a.length-1}.`);if(a.length%2!=0)return h.error(\"Expected an odd number of arguments.\");let A;h.expectedType&&h.expectedType.kind!==\"value\"&&(A=h.expectedType);let x=[];for(let P=1;Ph.outputDefined())&&this.otherwise.outputDefined()}}class bd{constructor(a,h,A,x){this.type=a,this.input=h,this.beginIndex=A,this.endIndex=x}static parse(a,h){if(a.length<=2||a.length>=5)return h.error(`Expected 3 or 4 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Se);if(!A||!x)return null;if(!Mt(A.type,[vt(Tr),Dr,Tr]))return h.error(`Expected first argument to be of type array or string, but found ${xt(A.type)} instead`);if(a.length===4){let E=h.parse(a[3],3,Se);return E?new bd(A.type,A,x,E):null}return new bd(A.type,A,x)}evaluate(a){let h=this.input.evaluate(a),A=this.beginIndex.evaluate(a);if(!Ut(h,[\"string\",\"array\"]))throw new an(`Expected first argument to be of type array or string, but found ${xt(Yi(h))} instead.`);if(this.endIndex){let x=this.endIndex.evaluate(a);return h.slice(A,x)}return h.slice(A)}eachChild(a){a(this.input),a(this.beginIndex),this.endIndex&&a(this.endIndex)}outputDefined(){return!1}}function qm(u,a){return u===\"==\"||u===\"!=\"?a.kind===\"boolean\"||a.kind===\"string\"||a.kind===\"number\"||a.kind===\"null\"||a.kind===\"value\":a.kind===\"string\"||a.kind===\"number\"||a.kind===\"value\"}function wd(u,a,h,A){return A.compare(a,h)===0}function fu(u,a,h){let A=u!==\"==\"&&u!==\"!=\";return class N8{constructor(E,P,D){this.type=mr,this.lhs=E,this.rhs=P,this.collator=D,this.hasUntypedArgument=E.type.kind===\"value\"||P.type.kind===\"value\"}static parse(E,P){if(E.length!==3&&E.length!==4)return P.error(\"Expected two or three arguments.\");let D=E[0],F=P.parse(E[1],1,Tr);if(!F)return null;if(!qm(D,F.type))return P.concat(1).error(`\"${D}\" comparisons are not supported for type '${xt(F.type)}'.`);let V=P.parse(E[2],2,Tr);if(!V)return null;if(!qm(D,V.type))return P.concat(2).error(`\"${D}\" comparisons are not supported for type '${xt(V.type)}'.`);if(F.type.kind!==V.type.kind&&F.type.kind!==\"value\"&&V.type.kind!==\"value\")return P.error(`Cannot compare types '${xt(F.type)}' and '${xt(V.type)}'.`);A&&(F.type.kind===\"value\"&&V.type.kind!==\"value\"?F=new Jn(V.type,[F]):F.type.kind!==\"value\"&&V.type.kind===\"value\"&&(V=new Jn(F.type,[V])));let q=null;if(E.length===4){if(F.type.kind!==\"string\"&&V.type.kind!==\"string\"&&F.type.kind!==\"value\"&&V.type.kind!==\"value\")return P.error(\"Cannot use collator to compare non-string types.\");if(q=P.parse(E[3],3,sa),!q)return null}return new N8(F,V,q)}evaluate(E){let P=this.lhs.evaluate(E),D=this.rhs.evaluate(E);if(A&&this.hasUntypedArgument){let F=Yi(P),V=Yi(D);if(F.kind!==V.kind||F.kind!==\"string\"&&F.kind!==\"number\")throw new an(`Expected arguments for \"${u}\" to be (string, string) or (number, number), but found (${F.kind}, ${V.kind}) instead.`)}if(this.collator&&!A&&this.hasUntypedArgument){let F=Yi(P),V=Yi(D);if(F.kind!==\"string\"||V.kind!==\"string\")return a(E,P,D)}return this.collator?h(E,P,D,this.collator.evaluate(E)):a(E,P,D)}eachChild(E){E(this.lhs),E(this.rhs),this.collator&&E(this.collator)}outputDefined(){return!0}}}let sh=fu(\"==\",function(u,a,h){return a===h},wd),Ht=fu(\"!=\",function(u,a,h){return a!==h},function(u,a,h,A){return!wd(0,a,h,A)}),fe=fu(\"<\",function(u,a,h){return a\",function(u,a,h){return a>h},function(u,a,h,A){return A.compare(a,h)>0}),vr=fu(\"<=\",function(u,a,h){return a<=h},function(u,a,h,A){return A.compare(a,h)<=0}),g=fu(\">=\",function(u,a,h){return a>=h},function(u,a,h,A){return A.compare(a,h)>=0});class Ni{constructor(a,h,A,x,E){this.type=Dr,this.number=a,this.locale=h,this.currency=A,this.minFractionDigits=x,this.maxFractionDigits=E}static parse(a,h){if(a.length!==3)return h.error(\"Expected two arguments.\");let A=h.parse(a[1],1,Se);if(!A)return null;let x=a[2];if(typeof x!=\"object\"||Array.isArray(x))return h.error(\"NumberFormat options argument must be an object.\");let E=null;if(x.locale&&(E=h.parse(x.locale,1,Dr),!E))return null;let P=null;if(x.currency&&(P=h.parse(x.currency,1,Dr),!P))return null;let D=null;if(x[\"min-fraction-digits\"]&&(D=h.parse(x[\"min-fraction-digits\"],1,Se),!D))return null;let F=null;return x[\"max-fraction-digits\"]&&(F=h.parse(x[\"max-fraction-digits\"],1,Se),!F)?null:new Ni(A,E,P,D,F)}evaluate(a){return new Intl.NumberFormat(this.locale?this.locale.evaluate(a):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(a):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(a):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(a):void 0}).format(this.number.evaluate(a))}eachChild(a){a(this.number),this.locale&&a(this.locale),this.currency&&a(this.currency),this.minFractionDigits&&a(this.minFractionDigits),this.maxFractionDigits&&a(this.maxFractionDigits)}outputDefined(){return!1}}class Si{constructor(a){this.type=gt,this.sections=a}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A=a[1];if(!Array.isArray(A)&&typeof A==\"object\")return h.error(\"First argument must be an image or text section.\");let x=[],E=!1;for(let P=1;P<=a.length-1;++P){let D=a[P];if(E&&typeof D==\"object\"&&!Array.isArray(D)){E=!1;let F=null;if(D[\"font-scale\"]&&(F=h.parse(D[\"font-scale\"],1,Se),!F))return null;let V=null;if(D[\"text-font\"]&&(V=h.parse(D[\"text-font\"],1,vt(Dr)),!V))return null;let q=null;if(D[\"text-color\"]&&(q=h.parse(D[\"text-color\"],1,Os),!q))return null;let X=x[x.length-1];X.scale=F,X.font=V,X.textColor=q}else{let F=h.parse(a[P],1,Tr);if(!F)return null;let V=F.type.kind;if(V!==\"string\"&&V!==\"value\"&&V!==\"null\"&&V!==\"resolvedImage\")return h.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");E=!0,x.push({content:F,scale:null,font:null,textColor:null})}}return new Si(x)}evaluate(a){return new on(this.sections.map(h=>{let A=h.content.evaluate(a);return Yi(A)===nt?new Lc(\"\",A,null,null,null):new Lc(_i(A),null,h.scale?h.scale.evaluate(a):null,h.font?h.font.evaluate(a).join(\",\"):null,h.textColor?h.textColor.evaluate(a):null)}))}eachChild(a){for(let h of this.sections)a(h.content),h.scale&&a(h.scale),h.font&&a(h.font),h.textColor&&a(h.textColor)}outputDefined(){return!1}}class Tt{constructor(a){this.type=nt,this.input=a}static parse(a,h){if(a.length!==2)return h.error(\"Expected two arguments.\");let A=h.parse(a[1],1,Dr);return A?new Tt(A):h.error(\"No image name provided.\")}evaluate(a){let h=this.input.evaluate(a),A=Vn.fromString(h);return A&&a.availableImages&&(A.available=a.availableImages.indexOf(h)>-1),A}eachChild(a){a(this.input)}outputDefined(){return!1}}class Ts{constructor(a){this.type=Se,this.input=a}static parse(a,h){if(a.length!==2)return h.error(`Expected 1 argument, but found ${a.length-1} instead.`);let A=h.parse(a[1],1);return A?A.type.kind!==\"array\"&&A.type.kind!==\"string\"&&A.type.kind!==\"value\"?h.error(`Expected argument of type string or array, but found ${xt(A.type)} instead.`):new Ts(A):null}evaluate(a){let h=this.input.evaluate(a);if(typeof h==\"string\"||Array.isArray(h))return h.length;throw new an(`Expected value to be of type string or array, but found ${xt(Yi(h))} instead.`)}eachChild(a){a(this.input)}outputDefined(){return!1}}let as={\"==\":sh,\"!=\":Ht,\">\":De,\"<\":fe,\">=\":g,\"<=\":vr,array:Jn,at:jp,boolean:Jn,case:Wp,coalesce:Gm,collator:yd,format:Si,image:Tt,in:Hm,\"index-of\":Gp,interpolate:Da,\"interpolate-hcl\":Da,\"interpolate-lab\":Da,length:Ts,let:Wm,literal:Nl,match:xd,number:Jn,\"number-format\":Ni,object:Jn,slice:bd,step:nh,string:Jn,\"to-boolean\":Ul,\"to-color\":Ul,\"to-number\":Ul,\"to-string\":Ul,var:zm,within:Af};function li(u,[a,h,A,x]){a=a.evaluate(u),h=h.evaluate(u),A=A.evaluate(u);let E=x?x.evaluate(u):1,P=mo(a,h,A,E);if(P)throw new an(P);return new ai(a/255,h/255,A/255,E,!1)}function _n(u,a){return u in a}function ul(u,a){let h=a[u];return h===void 0?null:h}function Ur(u){return{type:u}}function hi(u){return{result:\"success\",value:u}}function go(u){return{result:\"error\",value:u}}function mf(u){return u[\"property-type\"]===\"data-driven\"||u[\"property-type\"]===\"cross-faded-data-driven\"}function t_(u){return!!u.expression&&u.expression.parameters.indexOf(\"zoom\")>-1}function Sd(u){return!!u.expression&&u.expression.interpolated}function qr(u){return u instanceof Number?\"number\":u instanceof String?\"string\":u instanceof Boolean?\"boolean\":Array.isArray(u)?\"array\":u===null?\"null\":typeof u}function Qi(u){return typeof u==\"object\"&&u!==null&&!Array.isArray(u)}function kc(u){return u}function ci(u,a){let h=a.type===\"color\",A=u.stops&&typeof u.stops[0][0]==\"object\",x=A||!(A||u.property!==void 0),E=u.type||(Sd(a)?\"exponential\":\"interval\");if(h||a.type===\"padding\"){let q=h?ai.parse:kn.parse;(u=Uo({},u)).stops&&(u.stops=u.stops.map(X=>[X[0],q(X[1])])),u.default=q(u.default?u.default:a.default)}if(u.colorSpace&&(P=u.colorSpace)!==\"rgb\"&&P!==\"hcl\"&&P!==\"lab\")throw new Error(`Unknown color space: \"${u.colorSpace}\"`);var P;let D,F,V;if(E===\"exponential\")D=Ti;else if(E===\"interval\")D=It;else if(E===\"categorical\"){D=$e,F=Object.create(null);for(let q of u.stops)F[q[0]]=q[1];V=typeof u.stops[0][0]}else{if(E!==\"identity\")throw new Error(`Unknown function type \"${E}\"`);D=Zm}if(A){let q={},X=[];for(let ct=0;ctct[0]),evaluate:({zoom:ct},mt)=>Ti({stops:et,base:u.base},a,ct).evaluate(ct,mt)}}if(x){let q=E===\"exponential\"?{name:\"exponential\",base:u.base!==void 0?u.base:1}:null;return{kind:\"camera\",interpolationType:q,interpolationFactor:Da.interpolationFactor.bind(void 0,q),zoomStops:u.stops.map(X=>X[0]),evaluate:({zoom:X})=>D(u,a,X,F,V)}}return{kind:\"source\",evaluate(q,X){let et=X&&X.properties?X.properties[u.property]:void 0;return et===void 0?aa(u.default,a.default):D(u,a,et,F,V)}}}function aa(u,a,h){return u!==void 0?u:a!==void 0?a:h!==void 0?h:void 0}function $e(u,a,h,A,x){return aa(typeof h===x?A[h]:void 0,u.default,a.default)}function It(u,a,h){if(qr(h)!==\"number\")return aa(u.default,a.default);let A=u.stops.length;if(A===1||h<=u.stops[0][0])return u.stops[0][1];if(h>=u.stops[A-1][0])return u.stops[A-1][1];let x=vd(u.stops.map(E=>E[0]),h);return u.stops[x][1]}function Ti(u,a,h){let A=u.base!==void 0?u.base:1;if(qr(h)!==\"number\")return aa(u.default,a.default);let x=u.stops.length;if(x===1||h<=u.stops[0][0])return u.stops[0][1];if(h>=u.stops[x-1][0])return u.stops[x-1][1];let E=vd(u.stops.map(q=>q[0]),h),P=function(q,X,et,at){let ct=at-et,mt=q-et;return ct===0?0:X===1?mt/ct:(Math.pow(X,mt)-1)/(Math.pow(X,ct)-1)}(h,A,u.stops[E][0],u.stops[E+1][0]),D=u.stops[E][1],F=u.stops[E+1][1],V=Ra[a.type]||kc;return typeof D.evaluate==\"function\"?{evaluate(...q){let X=D.evaluate.apply(void 0,q),et=F.evaluate.apply(void 0,q);if(X!==void 0&&et!==void 0)return V(X,et,P,u.colorSpace)}}:V(D,F,P,u.colorSpace)}function Zm(u,a,h){switch(a.type){case\"color\":h=ai.parse(h);break;case\"formatted\":h=on.fromString(h.toString());break;case\"resolvedImage\":h=Vn.fromString(h.toString());break;case\"padding\":h=kn.parse(h);break;default:qr(h)===a.type||a.type===\"enum\"&&a.values[h]||(h=void 0)}return aa(h,u.default,a.default)}cl.register(as,{error:[{kind:\"error\"},[Dr],(u,[a])=>{throw new an(a.evaluate(u))}],typeof:[Dr,[Tr],(u,[a])=>xt(Yi(a.evaluate(u)))],\"to-rgba\":[vt(Se,4),[Os],(u,[a])=>{let[h,A,x,E]=a.evaluate(u).rgb;return[255*h,255*A,255*x,E]}],rgb:[Os,[Se,Se,Se],li],rgba:[Os,[Se,Se,Se,Se],li],has:{type:mr,overloads:[[[Dr],(u,[a])=>_n(a.evaluate(u),u.properties())],[[Dr,Ca],(u,[a,h])=>_n(a.evaluate(u),h.evaluate(u))]]},get:{type:Tr,overloads:[[[Dr],(u,[a])=>ul(a.evaluate(u),u.properties())],[[Dr,Ca],(u,[a,h])=>ul(a.evaluate(u),h.evaluate(u))]]},\"feature-state\":[Tr,[Dr],(u,[a])=>ul(a.evaluate(u),u.featureState||{})],properties:[Ca,[],u=>u.properties()],\"geometry-type\":[Dr,[],u=>u.geometryType()],id:[Tr,[],u=>u.id()],zoom:[Se,[],u=>u.globals.zoom],\"heatmap-density\":[Se,[],u=>u.globals.heatmapDensity||0],\"line-progress\":[Se,[],u=>u.globals.lineProgress||0],accumulated:[Tr,[],u=>u.globals.accumulated===void 0?null:u.globals.accumulated],\"+\":[Se,Ur(Se),(u,a)=>{let h=0;for(let A of a)h+=A.evaluate(u);return h}],\"*\":[Se,Ur(Se),(u,a)=>{let h=1;for(let A of a)h*=A.evaluate(u);return h}],\"-\":{type:Se,overloads:[[[Se,Se],(u,[a,h])=>a.evaluate(u)-h.evaluate(u)],[[Se],(u,[a])=>-a.evaluate(u)]]},\"/\":[Se,[Se,Se],(u,[a,h])=>a.evaluate(u)/h.evaluate(u)],\"%\":[Se,[Se,Se],(u,[a,h])=>a.evaluate(u)%h.evaluate(u)],ln2:[Se,[],()=>Math.LN2],pi:[Se,[],()=>Math.PI],e:[Se,[],()=>Math.E],\"^\":[Se,[Se,Se],(u,[a,h])=>Math.pow(a.evaluate(u),h.evaluate(u))],sqrt:[Se,[Se],(u,[a])=>Math.sqrt(a.evaluate(u))],log10:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))/Math.LN10],ln:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))],log2:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))/Math.LN2],sin:[Se,[Se],(u,[a])=>Math.sin(a.evaluate(u))],cos:[Se,[Se],(u,[a])=>Math.cos(a.evaluate(u))],tan:[Se,[Se],(u,[a])=>Math.tan(a.evaluate(u))],asin:[Se,[Se],(u,[a])=>Math.asin(a.evaluate(u))],acos:[Se,[Se],(u,[a])=>Math.acos(a.evaluate(u))],atan:[Se,[Se],(u,[a])=>Math.atan(a.evaluate(u))],min:[Se,Ur(Se),(u,a)=>Math.min(...a.map(h=>h.evaluate(u)))],max:[Se,Ur(Se),(u,a)=>Math.max(...a.map(h=>h.evaluate(u)))],abs:[Se,[Se],(u,[a])=>Math.abs(a.evaluate(u))],round:[Se,[Se],(u,[a])=>{let h=a.evaluate(u);return h<0?-Math.round(-h):Math.round(h)}],floor:[Se,[Se],(u,[a])=>Math.floor(a.evaluate(u))],ceil:[Se,[Se],(u,[a])=>Math.ceil(a.evaluate(u))],\"filter-==\":[mr,[Dr,Tr],(u,[a,h])=>u.properties()[a.value]===h.value],\"filter-id-==\":[mr,[Tr],(u,[a])=>u.id()===a.value],\"filter-type-==\":[mr,[Dr],(u,[a])=>u.geometryType()===a.value],\"filter-<\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A{let h=u.id(),A=a.value;return typeof h==typeof A&&h\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A>x}],\"filter-id->\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h>A}],\"filter-<=\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A<=x}],\"filter-id-<=\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h<=A}],\"filter->=\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A>=x}],\"filter-id->=\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h>=A}],\"filter-has\":[mr,[Tr],(u,[a])=>a.value in u.properties()],\"filter-has-id\":[mr,[],u=>u.id()!==null&&u.id()!==void 0],\"filter-type-in\":[mr,[vt(Dr)],(u,[a])=>a.value.indexOf(u.geometryType())>=0],\"filter-id-in\":[mr,[vt(Tr)],(u,[a])=>a.value.indexOf(u.id())>=0],\"filter-in-small\":[mr,[Dr,vt(Tr)],(u,[a,h])=>h.value.indexOf(u.properties()[a.value])>=0],\"filter-in-large\":[mr,[Dr,vt(Tr)],(u,[a,h])=>function(A,x,E,P){for(;E<=P;){let D=E+P>>1;if(x[D]===A)return!0;x[D]>A?P=D-1:E=D+1}return!1}(u.properties()[a.value],h.value,0,h.value.length-1)],all:{type:mr,overloads:[[[mr,mr],(u,[a,h])=>a.evaluate(u)&&h.evaluate(u)],[Ur(mr),(u,a)=>{for(let h of a)if(!h.evaluate(u))return!1;return!0}]]},any:{type:mr,overloads:[[[mr,mr],(u,[a,h])=>a.evaluate(u)||h.evaluate(u)],[Ur(mr),(u,a)=>{for(let h of a)if(h.evaluate(u))return!0;return!1}]]},\"!\":[mr,[mr],(u,[a])=>!a.evaluate(u)],\"is-supported-script\":[mr,[Dr],(u,[a])=>{let h=u.globals&&u.globals.isSupportedScript;return!h||h(a.evaluate(u))}],upcase:[Dr,[Dr],(u,[a])=>a.evaluate(u).toUpperCase()],downcase:[Dr,[Dr],(u,[a])=>a.evaluate(u).toLowerCase()],concat:[Dr,Ur(Tr),(u,a)=>a.map(h=>_i(h.evaluate(u))).join(\"\")],\"resolved-locale\":[Dr,[sa],(u,[a])=>a.evaluate(u).resolvedLocale()]});class Ym{constructor(a,h){var A;this.expression=a,this._warningHistory={},this._evaluator=new gd,this._defaultValue=h?(A=h).type===\"color\"&&Qi(A.default)?new ai(0,0,0,0):A.type===\"color\"?ai.parse(A.default)||null:A.type===\"padding\"?kn.parse(A.default)||null:A.type===\"variableAnchorOffsetCollection\"?Vo.parse(A.default)||null:A.default===void 0?null:A.default:null,this._enumValues=h&&h.type===\"enum\"?h.values:null}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._evaluator.globals=a,this._evaluator.feature=h,this._evaluator.featureState=A,this._evaluator.canonical=x,this._evaluator.availableImages=E||null,this._evaluator.formattedSection=P,this.expression.evaluate(this._evaluator)}evaluate(a,h,A,x,E,P){this._evaluator.globals=a,this._evaluator.feature=h||null,this._evaluator.featureState=A||null,this._evaluator.canonical=x,this._evaluator.availableImages=E||null,this._evaluator.formattedSection=P||null;try{let D=this.expression.evaluate(this._evaluator);if(D==null||typeof D==\"number\"&&D!=D)return this._defaultValue;if(this._enumValues&&!(D in this._enumValues))throw new an(`Expected value to be one of ${Object.keys(this._enumValues).map(F=>JSON.stringify(F)).join(\", \")}, but found ${JSON.stringify(D)} instead.`);return D}catch(D){return this._warningHistory[D.message]||(this._warningHistory[D.message]=!0,typeof console<\"u\"&&console.warn(D.message)),this._defaultValue}}}function Hp(u){return Array.isArray(u)&&u.length>0&&typeof u[0]==\"string\"&&u[0]in as}function qp(u,a){let h=new _d(as,Nm,[],a?function(x){let E={color:Os,string:Dr,number:Se,enum:Dr,boolean:mr,formatted:gt,padding:J,resolvedImage:nt,variableAnchorOffsetCollection:ht};return x.type===\"array\"?vt(E[x.value]||Tr,x.length):E[x.type]}(a):void 0),A=h.parse(u,void 0,void 0,void 0,a&&a.type===\"string\"?{typeAnnotation:\"coerce\"}:void 0);return A?hi(new Ym(A,a)):go(h.errors)}class Qm{constructor(a,h){this.kind=a,this._styleExpression=h,this.isStateDependent=a!==\"constant\"&&!Vp(h.expression)}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._styleExpression.evaluateWithoutErrorHandling(a,h,A,x,E,P)}evaluate(a,h,A,x,E,P){return this._styleExpression.evaluate(a,h,A,x,E,P)}}class wt{constructor(a,h,A,x){this.kind=a,this.zoomStops=A,this._styleExpression=h,this.isStateDependent=a!==\"camera\"&&!Vp(h.expression),this.interpolationType=x}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._styleExpression.evaluateWithoutErrorHandling(a,h,A,x,E,P)}evaluate(a,h,A,x,E,P){return this._styleExpression.evaluate(a,h,A,x,E,P)}interpolationFactor(a,h,A){return this.interpolationType?Da.interpolationFactor(this.interpolationType,a,h,A):0}}function $m(u,a){let h=qp(u,a);if(h.result===\"error\")return h;let A=h.value.expression,x=Um(A);if(!x&&!mf(a))return go([new dn(\"\",\"data expressions not supported\")]);let E=Vm(A,[\"zoom\"]);if(!E&&!t_(a))return go([new dn(\"\",\"zoom expressions not supported\")]);let P=Md(A);return P||E?P instanceof dn?go([P]):P instanceof Da&&!Sd(a)?go([new dn(\"\",'\"interpolate\" expressions cannot be used with this property')]):hi(P?new wt(x?\"camera\":\"composite\",h.value,P.labels,P instanceof Da?P.interpolation:void 0):new Qm(x?\"constant\":\"source\",h.value)):go([new dn(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class Td{constructor(a,h){this._parameters=a,this._specification=h,Uo(this,ci(this._parameters,this._specification))}static deserialize(a){return new Td(a._parameters,a._specification)}static serialize(a){return{_parameters:a._parameters,_specification:a._specification}}}function Md(u){let a=null;if(u instanceof Wm)a=Md(u.result);else if(u instanceof Gm){for(let h of u.args)if(a=Md(h),a)break}else(u instanceof nh||u instanceof Da)&&u.input instanceof cl&&u.input.name===\"zoom\"&&(a=u);return a instanceof dn||u.eachChild(h=>{let A=Md(h);A instanceof dn?a=A:!a&&A?a=new dn(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):a&&A&&a!==A&&(a=new dn(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'))}),a}function Ed(u){if(u===!0||u===!1)return!0;if(!Array.isArray(u)||u.length===0)return!1;switch(u[0]){case\"has\":return u.length>=2&&u[1]!==\"$id\"&&u[1]!==\"$type\";case\"in\":return u.length>=3&&(typeof u[1]!=\"string\"||Array.isArray(u[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return u.length!==3||Array.isArray(u[1])||Array.isArray(u[2]);case\"any\":case\"all\":for(let a of u.slice(1))if(!Ed(a)&&typeof a!=\"boolean\")return!1;return!0;default:return!0}}let Px={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function Xm(u){if(u==null)return{filter:()=>!0,needGeometry:!1};Ed(u)||(u=gf(u));let a=qp(u,Px);if(a.result===\"error\")throw new Error(a.value.map(h=>`${h.key}: ${h.message}`).join(\", \"));return{filter:(h,A,x)=>a.value.evaluate(h,A,{},x),needGeometry:r_(u)}}function e_(u,a){return ua?1:0}function r_(u){if(!Array.isArray(u))return!1;if(u[0]===\"within\")return!0;for(let a=1;a\"||a===\"<=\"||a===\">=\"?Oa(u[1],u[2],a):a===\"any\"?(h=u.slice(1),[\"any\"].concat(h.map(gf))):a===\"all\"?[\"all\"].concat(u.slice(1).map(gf)):a===\"none\"?[\"all\"].concat(u.slice(1).map(gf).map(Pd)):a===\"in\"?jn(u[1],u.slice(2)):a===\"!in\"?Pd(jn(u[1],u.slice(2))):a===\"has\"?i_(u[1]):a===\"!has\"?Pd(i_(u[1])):a!==\"within\"||u;var h}function Oa(u,a,h){switch(u){case\"$type\":return[`filter-type-${h}`,a];case\"$id\":return[`filter-id-${h}`,a];default:return[`filter-${h}`,u,a]}}function jn(u,a){if(a.length===0)return!1;switch(u){case\"$type\":return[\"filter-type-in\",[\"literal\",a]];case\"$id\":return[\"filter-id-in\",[\"literal\",a]];default:return a.length>200&&!a.some(h=>typeof h!=typeof a[0])?[\"filter-in-large\",u,[\"literal\",a.sort(e_)]]:[\"filter-in-small\",u,[\"literal\",a]]}}function i_(u){switch(u){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",u]}}function Pd(u){return[\"!\",u]}function Zp(u){let a=typeof u;if(a===\"number\"||a===\"boolean\"||a===\"string\"||u==null)return JSON.stringify(u);if(Array.isArray(u)){let x=\"[\";for(let E of u)x+=`${Zp(E)},`;return`${x}]`}let h=Object.keys(u).sort(),A=\"{\";for(let x=0;xA.maximum?[new ve(a,h,`${h} is greater than the maximum value ${A.maximum}`)]:[]}function Qp(u){let a=u.valueSpec,h=Pn(u.value.type),A,x,E,P={},D=h!==\"categorical\"&&u.value.property===void 0,F=!D,V=qr(u.value.stops)===\"array\"&&qr(u.value.stops[0])===\"array\"&&qr(u.value.stops[0][0])===\"object\",q=fi({key:u.key,value:u.value,valueSpec:u.styleSpec.function,validateSpec:u.validateSpec,style:u.style,styleSpec:u.styleSpec,objectElementValidators:{stops:function(at){if(h===\"identity\")return[new ve(at.key,at.value,'identity function may not have a \"stops\" property')];let ct=[],mt=at.value;return ct=ct.concat(du({key:at.key,value:mt,valueSpec:at.valueSpec,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec,arrayElementValidator:X})),qr(mt)===\"array\"&&mt.length===0&&ct.push(new ve(at.key,mt,\"array must have at least one stop\")),ct},default:function(at){return at.validateSpec({key:at.key,value:at.value,valueSpec:a,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec})}}});return h===\"identity\"&&D&&q.push(new ve(u.key,u.value,'missing required property \"property\"')),h===\"identity\"||u.value.stops||q.push(new ve(u.key,u.value,'missing required property \"stops\"')),h===\"exponential\"&&u.valueSpec.expression&&!Sd(u.valueSpec)&&q.push(new ve(u.key,u.value,\"exponential functions not supported\")),u.styleSpec.$version>=8&&(F&&!mf(u.valueSpec)?q.push(new ve(u.key,u.value,\"property functions not supported\")):D&&!t_(u.valueSpec)&&q.push(new ve(u.key,u.value,\"zoom functions not supported\"))),h!==\"categorical\"&&!V||u.value.property!==void 0||q.push(new ve(u.key,u.value,'\"property\" property is required')),q;function X(at){let ct=[],mt=at.value,bt=at.key;if(qr(mt)!==\"array\")return[new ve(bt,mt,`array expected, ${qr(mt)} found`)];if(mt.length!==2)return[new ve(bt,mt,`array length 2 expected, length ${mt.length} found`)];if(V){if(qr(mt[0])!==\"object\")return[new ve(bt,mt,`object expected, ${qr(mt[0])} found`)];if(mt[0].zoom===void 0)return[new ve(bt,mt,\"object stop key must have zoom\")];if(mt[0].value===void 0)return[new ve(bt,mt,\"object stop key must have value\")];if(E&&E>Pn(mt[0].zoom))return[new ve(bt,mt[0].zoom,\"stop zoom values must appear in ascending order\")];Pn(mt[0].zoom)!==E&&(E=Pn(mt[0].zoom),x=void 0,P={}),ct=ct.concat(fi({key:`${bt}[0]`,value:mt[0],valueSpec:{zoom:{}},validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec,objectElementValidators:{zoom:_f,value:et}}))}else ct=ct.concat(et({key:`${bt}[0]`,value:mt[0],valueSpec:{},validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec},mt));return Hp(oh(mt[1]))?ct.concat([new ve(`${bt}[1]`,mt[1],\"expressions are not allowed in function stops.\")]):ct.concat(at.validateSpec({key:`${bt}[1]`,value:mt[1],valueSpec:a,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec}))}function et(at,ct){let mt=qr(at.value),bt=Pn(at.value),Et=at.value!==null?at.value:ct;if(A){if(mt!==A)return[new ve(at.key,Et,`${mt} stop domain type must match previous stop domain type ${A}`)]}else A=mt;if(mt!==\"number\"&&mt!==\"string\"&&mt!==\"boolean\")return[new ve(at.key,Et,\"stop domain value must be a number, string, or boolean\")];if(mt!==\"number\"&&h!==\"categorical\"){let Vt=`number expected, ${mt} found`;return mf(a)&&h===void 0&&(Vt+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ve(at.key,Et,Vt)]}return h!==\"categorical\"||mt!==\"number\"||isFinite(bt)&&Math.floor(bt)===bt?h!==\"categorical\"&&mt===\"number\"&&x!==void 0&&btnew ve(`${u.key}${A.key}`,u.value,A.message));let h=a.value.expression||a.value._styleExpression.expression;if(u.expressionContext===\"property\"&&u.propertyKey===\"text-font\"&&!h.outputDefined())return[new ve(u.key,u.value,`Invalid data expression for \"${u.propertyKey}\". Output values must be contained as literals within the expression.`)];if(u.expressionContext===\"property\"&&u.propertyType===\"layout\"&&!Vp(h))return[new ve(u.key,u.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(u.expressionContext===\"filter\"&&!Vp(h))return[new ve(u.key,u.value,'\"feature-state\" data expressions are not supported with filters.')];if(u.expressionContext&&u.expressionContext.indexOf(\"cluster\")===0){if(!Vm(h,[\"zoom\",\"feature-state\"]))return[new ve(u.key,u.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(u.expressionContext===\"cluster-initial\"&&!Um(h))return[new ve(u.key,u.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return[]}function Id(u){let a=u.key,h=u.value,A=u.valueSpec,x=[];return Array.isArray(A.values)?A.values.indexOf(Pn(h))===-1&&x.push(new ve(a,h,`expected one of [${A.values.join(\", \")}], ${JSON.stringify(h)} found`)):Object.keys(A.values).indexOf(Pn(h))===-1&&x.push(new ve(a,h,`expected one of [${Object.keys(A.values).join(\", \")}], ${JSON.stringify(h)} found`)),x}function lh(u){return Ed(oh(u.value))?ah(Uo({},u,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):$p(u)}function $p(u){let a=u.value,h=u.key;if(qr(a)!==\"array\")return[new ve(h,a,`array expected, ${qr(a)} found`)];let A=u.styleSpec,x,E=[];if(a.length<1)return[new ve(h,a,\"filter array must have at least 1 element\")];switch(E=E.concat(Id({key:`${h}[0]`,value:a[0],valueSpec:A.filter_operator,style:u.style,styleSpec:u.styleSpec})),Pn(a[0])){case\"<\":case\"<=\":case\">\":case\">=\":a.length>=2&&Pn(a[1])===\"$type\"&&E.push(new ve(h,a,`\"$type\" cannot be use with operator \"${a[0]}\"`));case\"==\":case\"!=\":a.length!==3&&E.push(new ve(h,a,`filter array for operator \"${a[0]}\" must have 3 elements`));case\"in\":case\"!in\":a.length>=2&&(x=qr(a[1]),x!==\"string\"&&E.push(new ve(`${h}[1]`,a[1],`string expected, ${x} found`)));for(let P=2;P{V in h&&a.push(new ve(A,h[V],`\"${V}\" is prohibited for ref layers`))}),x.layers.forEach(V=>{Pn(V.id)===D&&(F=V)}),F?F.ref?a.push(new ve(A,h.ref,\"ref cannot reference another ref layer\")):P=Pn(F.type):a.push(new ve(A,h.ref,`ref layer \"${D}\" not found`))}else if(P!==\"background\")if(h.source){let F=x.sources&&x.sources[h.source],V=F&&Pn(F.type);F?V===\"vector\"&&P===\"raster\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a raster source`)):V!==\"raster-dem\"&&P===\"hillshade\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a raster-dem source`)):V===\"raster\"&&P!==\"raster\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a vector source`)):V!==\"vector\"||h[\"source-layer\"]?V===\"raster-dem\"&&P!==\"hillshade\"?a.push(new ve(A,h.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):P!==\"line\"||!h.paint||!h.paint[\"line-gradient\"]||V===\"geojson\"&&F.lineMetrics||a.push(new ve(A,h,`layer \"${h.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):a.push(new ve(A,h,`layer \"${h.id}\" must specify a \"source-layer\"`)):a.push(new ve(A,h.source,`source \"${h.source}\" not found`))}else a.push(new ve(A,h,'missing required property \"source\"'));return a=a.concat(fi({key:A,value:h,valueSpec:E.layer,style:u.style,styleSpec:u.styleSpec,validateSpec:u.validateSpec,objectElementValidators:{\"*\":()=>[],type:()=>u.validateSpec({key:`${A}.type`,value:h.type,valueSpec:E.layer.type,style:u.style,styleSpec:u.styleSpec,validateSpec:u.validateSpec,object:h,objectKey:\"type\"}),filter:lh,layout:F=>fi({layer:h,key:F.key,value:F.value,style:F.style,styleSpec:F.styleSpec,validateSpec:F.validateSpec,objectElementValidators:{\"*\":V=>s_(Uo({layerType:P},V))}}),paint:F=>fi({layer:h,key:F.key,value:F.value,style:F.style,styleSpec:F.styleSpec,validateSpec:F.validateSpec,objectElementValidators:{\"*\":V=>n_(Uo({layerType:P},V))}})}})),a}function hl(u){let a=u.value,h=u.key,A=qr(a);return A!==\"string\"?[new ve(h,a,`string expected, ${A} found`)]:[]}let ch={promoteId:function({key:u,value:a}){if(qr(a)===\"string\")return hl({key:u,value:a});{let h=[];for(let A in a)h.push(...hl({key:`${u}.${A}`,value:a[A]}));return h}}};function la(u){let a=u.value,h=u.key,A=u.styleSpec,x=u.style,E=u.validateSpec;if(!a.type)return[new ve(h,a,'\"type\" is required')];let P=Pn(a.type),D;switch(P){case\"vector\":case\"raster\":return D=fi({key:h,value:a,valueSpec:A[`source_${P.replace(\"-\",\"_\")}`],style:u.style,styleSpec:A,objectElementValidators:ch,validateSpec:E}),D;case\"raster-dem\":return D=function(F){var V;let q=(V=F.sourceName)!==null&&V!==void 0?V:\"\",X=F.value,et=F.styleSpec,at=et.source_raster_dem,ct=F.style,mt=[],bt=qr(X);if(X===void 0)return mt;if(bt!==\"object\")return mt.push(new ve(\"source_raster_dem\",X,`object expected, ${bt} found`)),mt;let Et=Pn(X.encoding)===\"custom\",Vt=[\"redFactor\",\"greenFactor\",\"blueFactor\",\"baseShift\"],kt=F.value.encoding?`\"${F.value.encoding}\"`:\"Default\";for(let jt in X)!Et&&Vt.includes(jt)?mt.push(new ve(jt,X[jt],`In \"${q}\": \"${jt}\" is only valid when \"encoding\" is set to \"custom\". ${kt} encoding found`)):at[jt]?mt=mt.concat(F.validateSpec({key:jt,value:X[jt],valueSpec:at[jt],validateSpec:F.validateSpec,style:ct,styleSpec:et})):mt.push(new ve(jt,X[jt],`unknown property \"${jt}\"`));return mt}({sourceName:h,value:a,style:u.style,styleSpec:A,validateSpec:E}),D;case\"geojson\":if(D=fi({key:h,value:a,valueSpec:A.source_geojson,style:x,styleSpec:A,validateSpec:E,objectElementValidators:ch}),a.cluster)for(let F in a.clusterProperties){let[V,q]=a.clusterProperties[F],X=typeof V==\"string\"?[V,[\"accumulated\"],[\"get\",F]]:V;D.push(...ah({key:`${h}.${F}.map`,value:q,validateSpec:E,expressionContext:\"cluster-map\"})),D.push(...ah({key:`${h}.${F}.reduce`,value:X,validateSpec:E,expressionContext:\"cluster-reduce\"}))}return D;case\"video\":return fi({key:h,value:a,valueSpec:A.source_video,style:x,validateSpec:E,styleSpec:A});case\"image\":return fi({key:h,value:a,valueSpec:A.source_image,style:x,validateSpec:E,styleSpec:A});case\"canvas\":return[new ve(h,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return Id({key:`${h}.type`,value:a.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:x,validateSpec:E,styleSpec:A})}}function Cd(u){let a=u.value,h=u.styleSpec,A=h.light,x=u.style,E=[],P=qr(a);if(a===void 0)return E;if(P!==\"object\")return E=E.concat([new ve(\"light\",a,`object expected, ${P} found`)]),E;for(let D in a){let F=D.match(/^(.*)-transition$/);E=E.concat(F&&A[F[1]]&&A[F[1]].transition?u.validateSpec({key:D,value:a[D],valueSpec:h.transition,validateSpec:u.validateSpec,style:x,styleSpec:h}):A[D]?u.validateSpec({key:D,value:a[D],valueSpec:A[D],validateSpec:u.validateSpec,style:x,styleSpec:h}):[new ve(D,a[D],`unknown property \"${D}\"`)])}return E}function o_(u){let a=u.value,h=u.styleSpec,A=h.terrain,x=u.style,E=[],P=qr(a);if(a===void 0)return E;if(P!==\"object\")return E=E.concat([new ve(\"terrain\",a,`object expected, ${P} found`)]),E;for(let D in a)E=E.concat(A[D]?u.validateSpec({key:D,value:a[D],valueSpec:A[D],validateSpec:u.validateSpec,style:x,styleSpec:h}):[new ve(D,a[D],`unknown property \"${D}\"`)]);return E}function Fs(u){let a=[],h=u.value,A=u.key;if(Array.isArray(h)){let x=[],E=[];for(let P in h)h[P].id&&x.includes(h[P].id)&&a.push(new ve(A,h,`all the sprites' ids must be unique, but ${h[P].id} is duplicated`)),x.push(h[P].id),h[P].url&&E.includes(h[P].url)&&a.push(new ve(A,h,`all the sprites' URLs must be unique, but ${h[P].url} is duplicated`)),E.push(h[P].url),a=a.concat(fi({key:`${A}[${P}]`,value:h[P],valueSpec:{id:{type:\"string\",required:!0},url:{type:\"string\",required:!0}},validateSpec:u.validateSpec}));return a}return hl({key:A,value:h})}let pu={\"*\":()=>[],array:du,boolean:function(u){let a=u.value,h=u.key,A=qr(a);return A!==\"boolean\"?[new ve(h,a,`boolean expected, ${A} found`)]:[]},number:_f,color:function(u){let a=u.key,h=u.value,A=qr(h);return A!==\"string\"?[new ve(a,h,`color expected, ${A} found`)]:ai.parse(String(h))?[]:[new ve(a,h,`color expected, \"${h}\" found`)]},constants:Km,enum:Id,filter:lh,function:Qp,layer:Jm,object:fi,source:la,light:Cd,terrain:o_,string:hl,formatted:function(u){return hl(u).length===0?[]:ah(u)},resolvedImage:function(u){return hl(u).length===0?[]:ah(u)},padding:function(u){let a=u.key,h=u.value;if(qr(h)===\"array\"){if(h.length<1||h.length>4)return[new ve(a,h,`padding requires 1 to 4 values; ${h.length} values found`)];let A={type:\"number\"},x=[];for(let E=0;E[]}})),u.constants&&(h=h.concat(Km({key:\"constants\",value:u.constants,style:u,styleSpec:a,validateSpec:In}))),Ld(h)}function Ba(u){return function(a){return u({...a,validateSpec:In})}}function Ld(u){return[].concat(u).sort((a,h)=>a.line-h.line)}function fl(u){return function(...a){return Ld(u.apply(this,a))}}ca.source=fl(Ba(la)),ca.sprite=fl(Ba(Fs)),ca.glyphs=fl(Ba(Kp)),ca.light=fl(Ba(Cd)),ca.terrain=fl(Ba(o_)),ca.layer=fl(Ba(Jm)),ca.filter=fl(Ba(lh)),ca.paintProperty=fl(Ba(n_)),ca.layoutProperty=fl(Ba(s_));let Fa=ca,uh=Fa.light,Jp=Fa.paintProperty,t0=Fa.layoutProperty;function hh(u,a){let h=!1;if(a&&a.length)for(let A of a)u.fire(new to(new Error(A.message))),h=!0;return h}class za{constructor(a,h,A){let x=this.cells=[];if(a instanceof ArrayBuffer){this.arrayBuffer=a;let P=new Int32Array(this.arrayBuffer);a=P[0],this.d=(h=P[1])+2*(A=P[2]);for(let F=0;F=X[ct+0]&&x>=X[ct+1])?(D[at]=!0,P.push(q[at])):D[at]=!1}}}}_forEachCell(a,h,A,x,E,P,D,F){let V=this._convertToCellCoord(a),q=this._convertToCellCoord(h),X=this._convertToCellCoord(A),et=this._convertToCellCoord(x);for(let at=V;at<=X;at++)for(let ct=q;ct<=et;ct++){let mt=this.d*ct+at;if((!F||F(this._convertFromCellCoord(at),this._convertFromCellCoord(ct),this._convertFromCellCoord(at+1),this._convertFromCellCoord(ct+1)))&&E.call(this,a,h,A,x,mt,P,D,F))return}}_convertFromCellCoord(a){return(a-this.padding)/this.scale}_convertToCellCoord(a){return Math.max(0,Math.min(this.d-1,Math.floor(a*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let a=this.cells,h=3+this.cells.length+1+1,A=0;for(let P=0;P=0)continue;let P=u[E];x[E]=ro[A].shallow.indexOf(E)>=0?P:Vl(P,a)}u instanceof Error&&(x.message=u.message)}if(x.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return A!==\"Object\"&&(x.$name=A),x}throw new Error(\"can't serialize object of type \"+typeof u)}function yf(u){if(u==null||typeof u==\"boolean\"||typeof u==\"number\"||typeof u==\"string\"||u instanceof Boolean||u instanceof Number||u instanceof String||u instanceof Date||u instanceof RegExp||u instanceof Blob||kd(u)||Pc(u)||ArrayBuffer.isView(u)||u instanceof ImageData)return u;if(Array.isArray(u))return u.map(yf);if(typeof u==\"object\"){let a=u.$name||\"Object\";if(!ro[a])throw new Error(`can't deserialize unregistered class ${a}`);let{klass:h}=ro[a];if(!h)throw new Error(`can't deserialize unregistered class ${a}`);if(h.deserialize)return h.deserialize(u);let A=Object.create(h.prototype);for(let x of Object.keys(u)){if(x===\"$name\")continue;let E=u[x];A[x]=ro[a].shallow.indexOf(x)>=0?E:yf(E)}return A}throw new Error(\"can't deserialize object of type \"+typeof u)}class a_{constructor(){this.first=!0}update(a,h){let A=Math.floor(a);return this.first?(this.first=!1,this.lastIntegerZoom=A,this.lastIntegerZoomTime=0,this.lastZoom=a,this.lastFloorZoom=A,!0):(this.lastFloorZoom>A?(this.lastIntegerZoom=A+1,this.lastIntegerZoomTime=h):this.lastFloorZoomu>=128&&u<=255,Arabic:u=>u>=1536&&u<=1791,\"Arabic Supplement\":u=>u>=1872&&u<=1919,\"Arabic Extended-A\":u=>u>=2208&&u<=2303,\"Hangul Jamo\":u=>u>=4352&&u<=4607,\"Unified Canadian Aboriginal Syllabics\":u=>u>=5120&&u<=5759,Khmer:u=>u>=6016&&u<=6143,\"Unified Canadian Aboriginal Syllabics Extended\":u=>u>=6320&&u<=6399,\"General Punctuation\":u=>u>=8192&&u<=8303,\"Letterlike Symbols\":u=>u>=8448&&u<=8527,\"Number Forms\":u=>u>=8528&&u<=8591,\"Miscellaneous Technical\":u=>u>=8960&&u<=9215,\"Control Pictures\":u=>u>=9216&&u<=9279,\"Optical Character Recognition\":u=>u>=9280&&u<=9311,\"Enclosed Alphanumerics\":u=>u>=9312&&u<=9471,\"Geometric Shapes\":u=>u>=9632&&u<=9727,\"Miscellaneous Symbols\":u=>u>=9728&&u<=9983,\"Miscellaneous Symbols and Arrows\":u=>u>=11008&&u<=11263,\"CJK Radicals Supplement\":u=>u>=11904&&u<=12031,\"Kangxi Radicals\":u=>u>=12032&&u<=12255,\"Ideographic Description Characters\":u=>u>=12272&&u<=12287,\"CJK Symbols and Punctuation\":u=>u>=12288&&u<=12351,Hiragana:u=>u>=12352&&u<=12447,Katakana:u=>u>=12448&&u<=12543,Bopomofo:u=>u>=12544&&u<=12591,\"Hangul Compatibility Jamo\":u=>u>=12592&&u<=12687,Kanbun:u=>u>=12688&&u<=12703,\"Bopomofo Extended\":u=>u>=12704&&u<=12735,\"CJK Strokes\":u=>u>=12736&&u<=12783,\"Katakana Phonetic Extensions\":u=>u>=12784&&u<=12799,\"Enclosed CJK Letters and Months\":u=>u>=12800&&u<=13055,\"CJK Compatibility\":u=>u>=13056&&u<=13311,\"CJK Unified Ideographs Extension A\":u=>u>=13312&&u<=19903,\"Yijing Hexagram Symbols\":u=>u>=19904&&u<=19967,\"CJK Unified Ideographs\":u=>u>=19968&&u<=40959,\"Yi Syllables\":u=>u>=40960&&u<=42127,\"Yi Radicals\":u=>u>=42128&&u<=42191,\"Hangul Jamo Extended-A\":u=>u>=43360&&u<=43391,\"Hangul Syllables\":u=>u>=44032&&u<=55215,\"Hangul Jamo Extended-B\":u=>u>=55216&&u<=55295,\"Private Use Area\":u=>u>=57344&&u<=63743,\"CJK Compatibility Ideographs\":u=>u>=63744&&u<=64255,\"Arabic Presentation Forms-A\":u=>u>=64336&&u<=65023,\"Vertical Forms\":u=>u>=65040&&u<=65055,\"CJK Compatibility Forms\":u=>u>=65072&&u<=65103,\"Small Form Variants\":u=>u>=65104&&u<=65135,\"Arabic Presentation Forms-B\":u=>u>=65136&&u<=65279,\"Halfwidth and Fullwidth Forms\":u=>u>=65280&&u<=65519};function e0(u){for(let a of u)if(fh(a.charCodeAt(0)))return!0;return!1}function r0(u){for(let a of u)if(!Ix(a.charCodeAt(0)))return!1;return!0}function Ix(u){return!(Re.Arabic(u)||Re[\"Arabic Supplement\"](u)||Re[\"Arabic Extended-A\"](u)||Re[\"Arabic Presentation Forms-A\"](u)||Re[\"Arabic Presentation Forms-B\"](u))}function fh(u){return!(u!==746&&u!==747&&(u<4352||!(Re[\"Bopomofo Extended\"](u)||Re.Bopomofo(u)||Re[\"CJK Compatibility Forms\"](u)&&!(u>=65097&&u<=65103)||Re[\"CJK Compatibility Ideographs\"](u)||Re[\"CJK Compatibility\"](u)||Re[\"CJK Radicals Supplement\"](u)||Re[\"CJK Strokes\"](u)||!(!Re[\"CJK Symbols and Punctuation\"](u)||u>=12296&&u<=12305||u>=12308&&u<=12319||u===12336)||Re[\"CJK Unified Ideographs Extension A\"](u)||Re[\"CJK Unified Ideographs\"](u)||Re[\"Enclosed CJK Letters and Months\"](u)||Re[\"Hangul Compatibility Jamo\"](u)||Re[\"Hangul Jamo Extended-A\"](u)||Re[\"Hangul Jamo Extended-B\"](u)||Re[\"Hangul Jamo\"](u)||Re[\"Hangul Syllables\"](u)||Re.Hiragana(u)||Re[\"Ideographic Description Characters\"](u)||Re.Kanbun(u)||Re[\"Kangxi Radicals\"](u)||Re[\"Katakana Phonetic Extensions\"](u)||Re.Katakana(u)&&u!==12540||!(!Re[\"Halfwidth and Fullwidth Forms\"](u)||u===65288||u===65289||u===65293||u>=65306&&u<=65310||u===65339||u===65341||u===65343||u>=65371&&u<=65503||u===65507||u>=65512&&u<=65519)||!(!Re[\"Small Form Variants\"](u)||u>=65112&&u<=65118||u>=65123&&u<=65126)||Re[\"Unified Canadian Aboriginal Syllabics\"](u)||Re[\"Unified Canadian Aboriginal Syllabics Extended\"](u)||Re[\"Vertical Forms\"](u)||Re[\"Yijing Hexagram Symbols\"](u)||Re[\"Yi Syllables\"](u)||Re[\"Yi Radicals\"](u))))}function l_(u){return!(fh(u)||function(a){return!!(Re[\"Latin-1 Supplement\"](a)&&(a===167||a===169||a===174||a===177||a===188||a===189||a===190||a===215||a===247)||Re[\"General Punctuation\"](a)&&(a===8214||a===8224||a===8225||a===8240||a===8241||a===8251||a===8252||a===8258||a===8263||a===8264||a===8265||a===8273)||Re[\"Letterlike Symbols\"](a)||Re[\"Number Forms\"](a)||Re[\"Miscellaneous Technical\"](a)&&(a>=8960&&a<=8967||a>=8972&&a<=8991||a>=8996&&a<=9e3||a===9003||a>=9085&&a<=9114||a>=9150&&a<=9165||a===9167||a>=9169&&a<=9179||a>=9186&&a<=9215)||Re[\"Control Pictures\"](a)&&a!==9251||Re[\"Optical Character Recognition\"](a)||Re[\"Enclosed Alphanumerics\"](a)||Re[\"Geometric Shapes\"](a)||Re[\"Miscellaneous Symbols\"](a)&&!(a>=9754&&a<=9759)||Re[\"Miscellaneous Symbols and Arrows\"](a)&&(a>=11026&&a<=11055||a>=11088&&a<=11097||a>=11192&&a<=11243)||Re[\"CJK Symbols and Punctuation\"](a)||Re.Katakana(a)||Re[\"Private Use Area\"](a)||Re[\"CJK Compatibility Forms\"](a)||Re[\"Small Form Variants\"](a)||Re[\"Halfwidth and Fullwidth Forms\"](a)||a===8734||a===8756||a===8757||a>=9984&&a<=10087||a>=10102&&a<=10131||a===65532||a===65533)}(u))}function i0(u){return u>=1424&&u<=2303||Re[\"Arabic Presentation Forms-A\"](u)||Re[\"Arabic Presentation Forms-B\"](u)}function n0(u,a){return!(!a&&i0(u)||u>=2304&&u<=3583||u>=3840&&u<=4255||Re.Khmer(u))}function vf(u){for(let a of u)if(i0(a.charCodeAt(0)))return!0;return!1}let s0=\"deferred\",tA=\"loading\",eA=\"loaded\",dh=null,ls=\"unavailable\",Au=null,Rc=function(u){u&&typeof u==\"string\"&&u.indexOf(\"NetworkError\")>-1&&(ls=\"error\"),dh&&dh(u)};function o0(){Rd.fire(new ss(\"pluginStateChange\",{pluginStatus:ls,pluginURL:Au}))}let Rd=new Ol,a0=function(){return ls},c_=function(){if(ls!==s0||!Au)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ls=tA,o0(),Au&&ol({url:Au},u=>{u?Rc(u):(ls=eA,o0())})},ua={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>ls===eA||ua.applyArabicShaping!=null,isLoading:()=>ls===tA,setState(u){if(!zi())throw new Error(\"Cannot set the state of the rtl-text-plugin when not in the web-worker context\");ls=u.pluginStatus,Au=u.pluginURL},isParsed(){if(!zi())throw new Error(\"rtl-text-plugin is only parsed on the worker-threads\");return ua.applyArabicShaping!=null&&ua.processBidirectionalText!=null&&ua.processStyledBidirectionalText!=null},getPluginURL(){if(!zi())throw new Error(\"rtl-text-plugin url can only be queried from the worker threads\");return Au}};class ln{constructor(a,h){this.zoom=a,h?(this.now=h.now,this.fadeDuration=h.fadeDuration,this.zoomHistory=h.zoomHistory,this.transition=h.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new a_,this.transition={})}isSupportedScript(a){return function(h,A){for(let x of h)if(!n0(x.charCodeAt(0),A))return!1;return!0}(a,ua.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let a=this.zoom,h=a-Math.floor(a),A=this.crossFadingFactor();return a>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:h+(1-h)*A}:{fromScale:.5,toScale:1,t:1-(1-A)*h}}}class rA{constructor(a,h){this.property=a,this.value=h,this.expression=function(A,x){if(Qi(A))return new Td(A,x);if(Hp(A)){let E=$m(A,x);if(E.result===\"error\")throw new Error(E.value.map(P=>`${P.key}: ${P.message}`).join(\", \"));return E.value}{let E=A;return x.type===\"color\"&&typeof A==\"string\"?E=ai.parse(A):x.type!==\"padding\"||typeof A!=\"number\"&&!Array.isArray(A)?x.type===\"variableAnchorOffsetCollection\"&&Array.isArray(A)&&(E=Vo.parse(A)):E=kn.parse(A),{kind:\"constant\",evaluate:()=>E}}}(h===void 0?a.specification.default:h,a.specification)}isDataDriven(){return this.expression.kind===\"source\"||this.expression.kind===\"composite\"}possiblyEvaluate(a,h,A){return this.property.possiblyEvaluate(this,a,h,A)}}class l0{constructor(a){this.property=a,this.value=new rA(a,void 0)}transitioned(a,h){return new u_(this.property,this.value,h,Ot({},a.transition,this.transition),a.now)}untransitioned(){return new u_(this.property,this.value,null,{},0)}}class ph{constructor(a){this._properties=a,this._values=Object.create(a.defaultTransitionablePropertyValues)}getValue(a){return ue(this._values[a].value.value)}setValue(a,h){Object.prototype.hasOwnProperty.call(this._values,a)||(this._values[a]=new l0(this._values[a].property)),this._values[a].value=new rA(this._values[a].property,h===null?void 0:ue(h))}getTransition(a){return ue(this._values[a].transition)}setTransition(a,h){Object.prototype.hasOwnProperty.call(this._values,a)||(this._values[a]=new l0(this._values[a].property)),this._values[a].transition=ue(h)||void 0}serialize(){let a={};for(let h of Object.keys(this._values)){let A=this.getValue(h);A!==void 0&&(a[h]=A);let x=this.getTransition(h);x!==void 0&&(a[`${h}-transition`]=x)}return a}transitioned(a,h){let A=new h_(this._properties);for(let x of Object.keys(this._values))A._values[x]=this._values[x].transitioned(a,h._values[x]);return A}untransitioned(){let a=new h_(this._properties);for(let h of Object.keys(this._values))a._values[h]=this._values[h].untransitioned();return a}}class u_{constructor(a,h,A,x,E){this.property=a,this.value=h,this.begin=E+x.delay||0,this.end=this.begin+x.duration||0,a.specification.transition&&(x.delay||x.duration)&&(this.prior=A)}possiblyEvaluate(a,h,A){let x=a.now||0,E=this.value.possiblyEvaluate(a,h,A),P=this.prior;if(P){if(x>this.end)return this.prior=null,E;if(this.value.isDataDriven())return this.prior=null,E;if(x=1)return 1;let V=F*F,q=V*F;return 4*(F<.5?q:3*(F-V)+q-.75)}(D))}}return E}}class h_{constructor(a){this._properties=a,this._values=Object.create(a.defaultTransitioningPropertyValues)}possiblyEvaluate(a,h,A){let x=new iA(this._properties);for(let E of Object.keys(this._values))x._values[E]=this._values[E].possiblyEvaluate(a,h,A);return x}hasTransition(){for(let a of Object.keys(this._values))if(this._values[a].prior)return!0;return!1}}class Cx{constructor(a){this._properties=a,this._values=Object.create(a.defaultPropertyValues)}hasValue(a){return this._values[a].value!==void 0}getValue(a){return ue(this._values[a].value)}setValue(a,h){this._values[a]=new rA(this._values[a].property,h===null?void 0:ue(h))}serialize(){let a={};for(let h of Object.keys(this._values)){let A=this.getValue(h);A!==void 0&&(a[h]=A)}return a}possiblyEvaluate(a,h,A){let x=new iA(this._properties);for(let E of Object.keys(this._values))x._values[E]=this._values[E].possiblyEvaluate(a,h,A);return x}}class _o{constructor(a,h,A){this.property=a,this.value=h,this.parameters=A}isConstant(){return this.value.kind===\"constant\"}constantOr(a){return this.value.kind===\"constant\"?this.value.value:a}evaluate(a,h,A,x){return this.property.evaluate(this.value,this.parameters,a,h,A,x)}}class iA{constructor(a){this._properties=a,this._values=Object.create(a.defaultPossiblyEvaluatedValues)}get(a){return this._values[a]}}class rr{constructor(a){this.specification=a}possiblyEvaluate(a,h){if(a.isDataDriven())throw new Error(\"Value should not be data driven\");return a.expression.evaluate(h)}interpolate(a,h,A){let x=Ra[this.specification.type];return x?x(a,h,A):a}}class fr{constructor(a,h){this.specification=a,this.overrides=h}possiblyEvaluate(a,h,A,x){return new _o(this,a.expression.kind===\"constant\"||a.expression.kind===\"camera\"?{kind:\"constant\",value:a.expression.evaluate(h,null,{},A,x)}:a.expression,h)}interpolate(a,h,A){if(a.value.kind!==\"constant\"||h.value.kind!==\"constant\")return a;if(a.value.value===void 0||h.value.value===void 0)return new _o(this,{kind:\"constant\",value:void 0},a.parameters);let x=Ra[this.specification.type];if(x){let E=x(a.value.value,h.value.value,A);return new _o(this,{kind:\"constant\",value:E},a.parameters)}return a}evaluate(a,h,A,x,E,P){return a.kind===\"constant\"?a.value:a.evaluate(h,A,x,E,P)}}class xf extends fr{possiblyEvaluate(a,h,A,x){if(a.value===void 0)return new _o(this,{kind:\"constant\",value:void 0},h);if(a.expression.kind===\"constant\"){let E=a.expression.evaluate(h,null,{},A,x),P=a.property.specification.type===\"resolvedImage\"&&typeof E!=\"string\"?E.name:E,D=this._calculate(P,P,P,h);return new _o(this,{kind:\"constant\",value:D},h)}if(a.expression.kind===\"camera\"){let E=this._calculate(a.expression.evaluate({zoom:h.zoom-1}),a.expression.evaluate({zoom:h.zoom}),a.expression.evaluate({zoom:h.zoom+1}),h);return new _o(this,{kind:\"constant\",value:E},h)}return new _o(this,a.expression,h)}evaluate(a,h,A,x,E,P){if(a.kind===\"source\"){let D=a.evaluate(h,A,x,E,P);return this._calculate(D,D,D,h)}return a.kind===\"composite\"?this._calculate(a.evaluate({zoom:Math.floor(h.zoom)-1},A,x),a.evaluate({zoom:Math.floor(h.zoom)},A,x),a.evaluate({zoom:Math.floor(h.zoom)+1},A,x),h):a.value}_calculate(a,h,A,x){return x.zoom>x.zoomHistory.lastIntegerZoom?{from:a,to:h}:{from:A,to:h}}interpolate(a){return a}}class nA{constructor(a){this.specification=a}possiblyEvaluate(a,h,A,x){if(a.value!==void 0){if(a.expression.kind===\"constant\"){let E=a.expression.evaluate(h,null,{},A,x);return this._calculate(E,E,E,h)}return this._calculate(a.expression.evaluate(new ln(Math.floor(h.zoom-1),h)),a.expression.evaluate(new ln(Math.floor(h.zoom),h)),a.expression.evaluate(new ln(Math.floor(h.zoom+1),h)),h)}}_calculate(a,h,A,x){return x.zoom>x.zoomHistory.lastIntegerZoom?{from:a,to:h}:{from:A,to:h}}interpolate(a){return a}}class Dd{constructor(a){this.specification=a}possiblyEvaluate(a,h,A,x){return!!a.expression.evaluate(h,null,{},A,x)}interpolate(){return!1}}class Gn{constructor(a){this.properties=a,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let h in a){let A=a[h];A.specification.overridable&&this.overridableProperties.push(h);let x=this.defaultPropertyValues[h]=new rA(A,void 0),E=this.defaultTransitionablePropertyValues[h]=new l0(A);this.defaultTransitioningPropertyValues[h]=E.untransitioned(),this.defaultPossiblyEvaluatedValues[h]=x.possiblyEvaluate({})}}}Ue(\"DataDrivenProperty\",fr),Ue(\"DataConstantProperty\",rr),Ue(\"CrossFadedDataDrivenProperty\",xf),Ue(\"CrossFadedProperty\",nA),Ue(\"ColorRampProperty\",Dd);let io=\"-transition\";class Ui extends Ol{constructor(a,h){if(super(),this.id=a.id,this.type=a.type,this._featureFilter={filter:()=>!0,needGeometry:!1},a.type!==\"custom\"&&(this.metadata=a.metadata,this.minzoom=a.minzoom,this.maxzoom=a.maxzoom,a.type!==\"background\"&&(this.source=a.source,this.sourceLayer=a[\"source-layer\"],this.filter=a.filter),h.layout&&(this._unevaluatedLayout=new Cx(h.layout)),h.paint)){this._transitionablePaint=new ph(h.paint);for(let A in a.paint)this.setPaintProperty(A,a.paint[A],{validate:!1});for(let A in a.layout)this.setLayoutProperty(A,a.layout[A],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new iA(h.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(a){return a===\"visibility\"?this.visibility:this._unevaluatedLayout.getValue(a)}setLayoutProperty(a,h,A={}){h!=null&&this._validate(t0,`layers.${this.id}.layout.${a}`,a,h,A)||(a!==\"visibility\"?this._unevaluatedLayout.setValue(a,h):this.visibility=h)}getPaintProperty(a){return a.endsWith(io)?this._transitionablePaint.getTransition(a.slice(0,-11)):this._transitionablePaint.getValue(a)}setPaintProperty(a,h,A={}){if(h!=null&&this._validate(Jp,`layers.${this.id}.paint.${a}`,a,h,A))return!1;if(a.endsWith(io))return this._transitionablePaint.setTransition(a.slice(0,-11),h||void 0),!1;{let x=this._transitionablePaint._values[a],E=x.property.specification[\"property-type\"]===\"cross-faded-data-driven\",P=x.value.isDataDriven(),D=x.value;this._transitionablePaint.setValue(a,h),this._handleSpecialPaintPropertyUpdate(a);let F=this._transitionablePaint._values[a].value;return F.isDataDriven()||P||E||this._handleOverridablePaintPropertyUpdate(a,D,F)}}_handleSpecialPaintPropertyUpdate(a){}_handleOverridablePaintPropertyUpdate(a,h,A){return!1}isHidden(a){return!!(this.minzoom&&a=this.maxzoom)||this.visibility===\"none\"}updateTransitions(a){this._transitioningPaint=this._transitionablePaint.transitioned(a,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(a,h){a.getCrossfadeParameters&&(this._crossfadeParameters=a.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(a,void 0,h)),this.paint=this._transitioningPaint.possiblyEvaluate(a,void 0,h)}serialize(){let a={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(a.layout=a.layout||{},a.layout.visibility=this.visibility),le(a,(h,A)=>!(h===void 0||A===\"layout\"&&!Object.keys(h).length||A===\"paint\"&&!Object.keys(h).length))}_validate(a,h,A,x,E={}){return(!E||E.validate!==!1)&&hh(this,a.call(Fa,{key:h,layerType:this.type,objectKey:A,value:x,styleSpec:te,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let a in this.paint._values){let h=this.paint.get(a);if(h instanceof _o&&mf(h.property.specification)&&(h.value.kind===\"source\"||h.value.kind===\"composite\")&&h.value.isStateDependent)return!0}return!1}}let f_={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ah{constructor(a,h){this._structArray=a,this._pos1=h*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Cn{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(a,h){return a._trim(),h&&(a.isTransferred=!0,h.push(a.arrayBuffer)),{length:a.length,arrayBuffer:a.arrayBuffer}}static deserialize(a){let h=Object.create(this.prototype);return h.arrayBuffer=a.arrayBuffer,h.length=a.length,h.capacity=a.arrayBuffer.byteLength/h.bytesPerElement,h._refreshViews(),h}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(a){this.reserve(a),this.length=a}reserve(a){if(a>this.capacity){this.capacity=Math.max(a,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let h=this.uint8;this._refreshViews(),h&&this.uint8.set(h)}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function yn(u,a=1){let h=0,A=0;return{members:u.map(x=>{let E=f_[x.type].BYTES_PER_ELEMENT,P=h=bf(h,Math.max(a,E)),D=x.components||1;return A=Math.max(A,E),h+=E*D,{name:x.name,type:x.type,components:D,offset:P}}),size:bf(h,Math.max(A,a)),alignment:a}}function bf(u,a){return Math.ceil(u/a)*a}class Ms extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.int16[x+0]=h,this.int16[x+1]=A,a}}Ms.prototype.bytesPerElement=4,Ue(\"StructArrayLayout2i4\",Ms);class mh extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.int16[E+0]=h,this.int16[E+1]=A,this.int16[E+2]=x,a}}mh.prototype.bytesPerElement=6,Ue(\"StructArrayLayout3i6\",mh);class jo extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=4*a;return this.int16[P+0]=h,this.int16[P+1]=A,this.int16[P+2]=x,this.int16[P+3]=E,a}}jo.prototype.bytesPerElement=8,Ue(\"StructArrayLayout4i8\",jo);class c0 extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=6*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.int16[F+2]=x,this.int16[F+3]=E,this.int16[F+4]=P,this.int16[F+5]=D,a}}c0.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2i4i12\",c0);class Od extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=4*a,V=8*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.uint8[V+4]=x,this.uint8[V+5]=E,this.uint8[V+6]=P,this.uint8[V+7]=D,a}}Od.prototype.bytesPerElement=8,Ue(\"StructArrayLayout2i4ub8\",Od);class wf extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.float32[x+0]=h,this.float32[x+1]=A,a}}wf.prototype.bytesPerElement=8,Ue(\"StructArrayLayout2f8\",wf);class Go extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q){let X=this.length;return this.resize(X+1),this.emplace(X,a,h,A,x,E,P,D,F,V,q)}emplace(a,h,A,x,E,P,D,F,V,q,X){let et=10*a;return this.uint16[et+0]=h,this.uint16[et+1]=A,this.uint16[et+2]=x,this.uint16[et+3]=E,this.uint16[et+4]=P,this.uint16[et+5]=D,this.uint16[et+6]=F,this.uint16[et+7]=V,this.uint16[et+8]=q,this.uint16[et+9]=X,a}}Go.prototype.bytesPerElement=20,Ue(\"StructArrayLayout10ui20\",Go);class sA extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,et){let at=this.length;return this.resize(at+1),this.emplace(at,a,h,A,x,E,P,D,F,V,q,X,et)}emplace(a,h,A,x,E,P,D,F,V,q,X,et,at){let ct=12*a;return this.int16[ct+0]=h,this.int16[ct+1]=A,this.int16[ct+2]=x,this.int16[ct+3]=E,this.uint16[ct+4]=P,this.uint16[ct+5]=D,this.uint16[ct+6]=F,this.uint16[ct+7]=V,this.int16[ct+8]=q,this.int16[ct+9]=X,this.int16[ct+10]=et,this.int16[ct+11]=at,a}}sA.prototype.bytesPerElement=24,Ue(\"StructArrayLayout4i4ui4i24\",sA);class xi extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.float32[E+0]=h,this.float32[E+1]=A,this.float32[E+2]=x,a}}xi.prototype.bytesPerElement=12,Ue(\"StructArrayLayout3f12\",xi);class T extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.uint32[1*a+0]=h,a}}T.prototype.bytesPerElement=4,Ue(\"StructArrayLayout1ul4\",T);class l extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V){let q=this.length;return this.resize(q+1),this.emplace(q,a,h,A,x,E,P,D,F,V)}emplace(a,h,A,x,E,P,D,F,V,q){let X=10*a,et=5*a;return this.int16[X+0]=h,this.int16[X+1]=A,this.int16[X+2]=x,this.int16[X+3]=E,this.int16[X+4]=P,this.int16[X+5]=D,this.uint32[et+3]=F,this.uint16[X+8]=V,this.uint16[X+9]=q,a}}l.prototype.bytesPerElement=20,Ue(\"StructArrayLayout6i1ul2ui20\",l);class d extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=6*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.int16[F+2]=x,this.int16[F+3]=E,this.int16[F+4]=P,this.int16[F+5]=D,a}}d.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2i2i2i12\",d);class v extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E){let P=this.length;return this.resize(P+1),this.emplace(P,a,h,A,x,E)}emplace(a,h,A,x,E,P){let D=4*a,F=8*a;return this.float32[D+0]=h,this.float32[D+1]=A,this.float32[D+2]=x,this.int16[F+6]=E,this.int16[F+7]=P,a}}v.prototype.bytesPerElement=16,Ue(\"StructArrayLayout2f1f2i16\",v);class b extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=12*a,D=3*a;return this.uint8[P+0]=h,this.uint8[P+1]=A,this.float32[D+1]=x,this.float32[D+2]=E,a}}b.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2ub2f12\",b);class M extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.uint16[E+0]=h,this.uint16[E+1]=A,this.uint16[E+2]=x,a}}M.prototype.bytesPerElement=6,Ue(\"StructArrayLayout3ui6\",M);class O extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et){let Vt=this.length;return this.resize(Vt+1),this.emplace(Vt,a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et)}emplace(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt){let kt=24*a,jt=12*a,qt=48*a;return this.int16[kt+0]=h,this.int16[kt+1]=A,this.uint16[kt+2]=x,this.uint16[kt+3]=E,this.uint32[jt+2]=P,this.uint32[jt+3]=D,this.uint32[jt+4]=F,this.uint16[kt+10]=V,this.uint16[kt+11]=q,this.uint16[kt+12]=X,this.float32[jt+7]=et,this.float32[jt+8]=at,this.uint8[qt+36]=ct,this.uint8[qt+37]=mt,this.uint8[qt+38]=bt,this.uint32[jt+10]=Et,this.int16[kt+22]=Vt,a}}O.prototype.bytesPerElement=48,Ue(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",O);class B extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt,kt,jt,qt,ae,Be,Je,Oe,ke,Te,He){let Pe=this.length;return this.resize(Pe+1),this.emplace(Pe,a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt,kt,jt,qt,ae,Be,Je,Oe,ke,Te,He)}emplace(a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt,bt,Et,Vt,kt,jt,qt,ae,Be,Je,Oe,ke,Te,He,Pe){let Ae=32*a,ur=16*a;return this.int16[Ae+0]=h,this.int16[Ae+1]=A,this.int16[Ae+2]=x,this.int16[Ae+3]=E,this.int16[Ae+4]=P,this.int16[Ae+5]=D,this.int16[Ae+6]=F,this.int16[Ae+7]=V,this.uint16[Ae+8]=q,this.uint16[Ae+9]=X,this.uint16[Ae+10]=et,this.uint16[Ae+11]=at,this.uint16[Ae+12]=ct,this.uint16[Ae+13]=mt,this.uint16[Ae+14]=bt,this.uint16[Ae+15]=Et,this.uint16[Ae+16]=Vt,this.uint16[Ae+17]=kt,this.uint16[Ae+18]=jt,this.uint16[Ae+19]=qt,this.uint16[Ae+20]=ae,this.uint16[Ae+21]=Be,this.uint16[Ae+22]=Je,this.uint32[ur+12]=Oe,this.float32[ur+13]=ke,this.float32[ur+14]=Te,this.uint16[Ae+30]=He,this.uint16[Ae+31]=Pe,a}}B.prototype.bytesPerElement=64,Ue(\"StructArrayLayout8i15ui1ul2f2ui64\",B);class U extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.float32[1*a+0]=h,a}}U.prototype.bytesPerElement=4,Ue(\"StructArrayLayout1f4\",U);class W extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.uint16[6*a+0]=h,this.float32[E+1]=A,this.float32[E+2]=x,a}}W.prototype.bytesPerElement=12,Ue(\"StructArrayLayout1ui2f12\",W);class Z extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=4*a;return this.uint32[2*a+0]=h,this.uint16[E+2]=A,this.uint16[E+3]=x,a}}Z.prototype.bytesPerElement=8,Ue(\"StructArrayLayout1ul2ui8\",Z);class Q extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.uint16[x+0]=h,this.uint16[x+1]=A,a}}Q.prototype.bytesPerElement=4,Ue(\"StructArrayLayout2ui4\",Q);class st extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.uint16[1*a+0]=h,a}}st.prototype.bytesPerElement=2,Ue(\"StructArrayLayout1ui2\",st);class At extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=4*a;return this.float32[P+0]=h,this.float32[P+1]=A,this.float32[P+2]=x,this.float32[P+3]=E,a}}At.prototype.bytesPerElement=16,Ue(\"StructArrayLayout4f16\",At);class pt extends Ah{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new w(this.anchorPointX,this.anchorPointY)}}pt.prototype.size=20;class yt extends l{get(a){return new pt(this,a)}}Ue(\"CollisionBoxArray\",yt);class dt extends Ah{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(a){this._structArray.uint8[this._pos1+37]=a}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(a){this._structArray.uint8[this._pos1+38]=a}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(a){this._structArray.uint32[this._pos4+10]=a}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}dt.prototype.size=48;class Ft extends O{get(a){return new dt(this,a)}}Ue(\"PlacedSymbolArray\",Ft);class Wt extends Ah{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(a){this._structArray.uint32[this._pos4+12]=a}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Wt.prototype.size=64;class St extends B{get(a){return new Wt(this,a)}}Ue(\"SymbolInstanceArray\",St);class Bt extends U{getoffsetX(a){return this.float32[1*a+0]}}Ue(\"GlyphOffsetArray\",Bt);class Yt extends mh{getx(a){return this.int16[3*a+0]}gety(a){return this.int16[3*a+1]}gettileUnitDistanceFromAnchor(a){return this.int16[3*a+2]}}Ue(\"SymbolLineVertexArray\",Yt);class Qt extends Ah{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Qt.prototype.size=12;class se extends W{get(a){return new Qt(this,a)}}Ue(\"TextAnchorOffsetArray\",se);class pe extends Ah{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}pe.prototype.size=8;class he extends Z{get(a){return new pe(this,a)}}Ue(\"FeatureIndexArray\",he);class xe extends Ms{}class We extends Ms{}class Kr extends Ms{}class Me extends c0{}class dr extends Od{}class Xe extends wf{}class Vi extends Go{}class Jr extends sA{}class Vr extends xi{}class ei extends T{}class Rn extends d{}class $i extends b{}class zs extends M{}class cs extends Q{}let Dn=yn([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Wo}=Dn;class jr{constructor(a=[]){this.segments=a}prepareSegment(a,h,A,x){let E=this.segments[this.segments.length-1];return a>jr.MAX_VERTEX_ARRAY_LENGTH&&tr(`Max vertices per segment is ${jr.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${a}`),(!E||E.vertexLength+a>jr.MAX_VERTEX_ARRAY_LENGTH||E.sortKey!==x)&&(E={vertexOffset:h.length,primitiveOffset:A.length,vertexLength:0,primitiveLength:0},x!==void 0&&(E.sortKey=x),this.segments.push(E)),E}get(){return this.segments}destroy(){for(let a of this.segments)for(let h in a.vaos)a.vaos[h].destroy()}static simpleSegment(a,h,A,x){return new jr([{vertexOffset:a,primitiveOffset:h,vertexLength:A,primitiveLength:x,vaos:{},sortKey:0}])}}function jl(u,a){return 256*(u=ut(Math.floor(u),0,255))+ut(Math.floor(a),0,255)}jr.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ue(\"SegmentVector\",jr);let Gl=yn([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]);var mu={exports:{}},gu={exports:{}};gu.exports=function(u,a){var h,A,x,E,P,D,F,V;for(A=u.length-(h=3&u.length),x=a,P=3432918353,D=461845907,V=0;V>>16)*P&65535)<<16)&4294967295)<<15|F>>>17))*D+(((F>>>16)*D&65535)<<16)&4294967295)<<13|x>>>19))+((5*(x>>>16)&65535)<<16)&4294967295))+((58964+(E>>>16)&65535)<<16);switch(F=0,h){case 3:F^=(255&u.charCodeAt(V+2))<<16;case 2:F^=(255&u.charCodeAt(V+1))<<8;case 1:x^=F=(65535&(F=(F=(65535&(F^=255&u.charCodeAt(V)))*P+(((F>>>16)*P&65535)<<16)&4294967295)<<15|F>>>17))*D+(((F>>>16)*D&65535)<<16)&4294967295}return x^=u.length,x=2246822507*(65535&(x^=x>>>16))+((2246822507*(x>>>16)&65535)<<16)&4294967295,x=3266489909*(65535&(x^=x>>>13))+((3266489909*(x>>>16)&65535)<<16)&4294967295,(x^=x>>>16)>>>0};var gh=gu.exports,Ns={exports:{}};Ns.exports=function(u,a){for(var h,A=u.length,x=a^A,E=0;A>=4;)h=1540483477*(65535&(h=255&u.charCodeAt(E)|(255&u.charCodeAt(++E))<<8|(255&u.charCodeAt(++E))<<16|(255&u.charCodeAt(++E))<<24))+((1540483477*(h>>>16)&65535)<<16),x=1540483477*(65535&x)+((1540483477*(x>>>16)&65535)<<16)^(h=1540483477*(65535&(h^=h>>>24))+((1540483477*(h>>>16)&65535)<<16)),A-=4,++E;switch(A){case 3:x^=(255&u.charCodeAt(E+2))<<16;case 2:x^=(255&u.charCodeAt(E+1))<<8;case 1:x=1540483477*(65535&(x^=255&u.charCodeAt(E)))+((1540483477*(x>>>16)&65535)<<16)}return x=1540483477*(65535&(x^=x>>>13))+((1540483477*(x>>>16)&65535)<<16),(x^=x>>>15)>>>0};var Es=gh,yo=Ns.exports;mu.exports=Es,mu.exports.murmur3=Es,mu.exports.murmur2=yo;var _h=c(mu.exports);class On{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(a,h,A,x){this.ids.push(us(a)),this.positions.push(h,A,x)}getPositions(a){if(!this.indexed)throw new Error(\"Trying to get index, but feature positions are not indexed\");let h=us(a),A=0,x=this.ids.length-1;for(;A>1;this.ids[P]>=h?x=P:A=P+1}let E=[];for(;this.ids[A]===h;)E.push({index:this.positions[3*A],start:this.positions[3*A+1],end:this.positions[3*A+2]}),A++;return E}static serialize(a,h){let A=new Float64Array(a.ids),x=new Uint32Array(a.positions);return Ho(A,x,0,A.length-1),h&&h.push(A.buffer,x.buffer),{ids:A,positions:x}}static deserialize(a){let h=new On;return h.ids=a.ids,h.positions=a.positions,h.indexed=!0,h}}function us(u){let a=+u;return!isNaN(a)&&a<=Number.MAX_SAFE_INTEGER?a:_h(String(u))}function Ho(u,a,h,A){for(;h>1],E=h-1,P=A+1;for(;;){do E++;while(u[E]x);if(E>=P)break;pn(u,E,P),pn(a,3*E,3*P),pn(a,3*E+1,3*P+1),pn(a,3*E+2,3*P+2)}P-h`u_${x}`),this.type=A}setUniform(a,h,A){a.set(A.constantOr(this.value))}getBinding(a,h,A){return this.type===\"color\"?new d_(a,h):new Gr(a,h)}}class qo{constructor(a,h){this.uniformNames=h.map(A=>`u_${A}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(a,h){this.pixelRatioFrom=h.pixelRatio,this.pixelRatioTo=a.pixelRatio,this.patternFrom=h.tlbr,this.patternTo=a.tlbr}setUniform(a,h,A,x){let E=x===\"u_pattern_to\"?this.patternTo:x===\"u_pattern_from\"?this.patternFrom:x===\"u_pixel_ratio_to\"?this.pixelRatioTo:x===\"u_pixel_ratio_from\"?this.pixelRatioFrom:null;E&&a.set(E)}getBinding(a,h,A){return A.substr(0,9)===\"u_pattern\"?new Na(a,h):new Gr(a,h)}}class me{constructor(a,h,A,x){this.expression=a,this.type=A,this.maxValue=0,this.paintVertexAttributes=h.map(E=>({name:`a_${E}`,type:\"Float32\",components:A===\"color\"?2:1,offset:0})),this.paintVertexArray=new x}populatePaintArray(a,h,A,x,E){let P=this.paintVertexArray.length,D=this.expression.evaluate(new ln(0),h,{},x,[],E);this.paintVertexArray.resize(a),this._setPaintValue(P,a,D)}updatePaintArray(a,h,A,x){let E=this.expression.evaluate({zoom:0},A,x);this._setPaintValue(a,h,E)}_setPaintValue(a,h,A){if(this.type===\"color\"){let x=oA(A);for(let E=a;E`u_${D}_t`),this.type=A,this.useIntegerZoom=x,this.zoom=E,this.maxValue=0,this.paintVertexAttributes=h.map(D=>({name:`a_${D}`,type:\"Float32\",components:A===\"color\"?4:2,offset:0})),this.paintVertexArray=new P}populatePaintArray(a,h,A,x,E){let P=this.expression.evaluate(new ln(this.zoom),h,{},x,[],E),D=this.expression.evaluate(new ln(this.zoom+1),h,{},x,[],E),F=this.paintVertexArray.length;this.paintVertexArray.resize(a),this._setPaintValue(F,a,P,D)}updatePaintArray(a,h,A,x){let E=this.expression.evaluate({zoom:this.zoom},A,x),P=this.expression.evaluate({zoom:this.zoom+1},A,x);this._setPaintValue(a,h,E,P)}_setPaintValue(a,h,A,x){if(this.type===\"color\"){let E=oA(A),P=oA(x);for(let D=a;D`#define HAS_UNIFORM_${x}`))}return a}getBinderAttributes(){let a=[];for(let h in this.binders){let A=this.binders[h];if(A instanceof me||A instanceof Le)for(let x=0;x!0){this.programConfigurations={};for(let x of a)this.programConfigurations[x.id]=new Sf(x,h,A);this.needsUpload=!1,this._featureMap=new On,this._bufferOffset=0}populatePaintArrays(a,h,A,x,E,P){for(let D in this.programConfigurations)this.programConfigurations[D].populatePaintArrays(a,h,x,E,P);h.id!==void 0&&this._featureMap.add(h.id,A,this._bufferOffset,a),this._bufferOffset=a,this.needsUpload=!0}updatePaintArrays(a,h,A,x){for(let E of A)this.needsUpload=this.programConfigurations[E.id].updatePaintArrays(a,this._featureMap,h,E,x)||this.needsUpload}get(a){return this.programConfigurations[a]}upload(a){if(this.needsUpload){for(let h in this.programConfigurations)this.programConfigurations[h].upload(a);this.needsUpload=!1}}destroy(){for(let a in this.programConfigurations)this.programConfigurations[a].destroy()}}function Dc(u,a){return{\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[u]||[u.replace(`${a}-`,\"\").replace(/-/g,\"_\")]}function Lx(u,a,h){let A={color:{source:wf,composite:At},number:{source:U,composite:wf}},x=function(E){return{\"line-pattern\":{source:Vi,composite:Vi},\"fill-pattern\":{source:Vi,composite:Vi},\"fill-extrusion-pattern\":{source:Vi,composite:Vi}}[E]}(u);return x&&x[h]||A[a][h]}Ue(\"ConstantBinder\",Wl),Ue(\"CrossFadedConstantBinder\",qo),Ue(\"SourceExpressionBinder\",me),Ue(\"CrossFadedCompositeBinder\",dl),Ue(\"CompositeExpressionBinder\",Le),Ue(\"ProgramConfiguration\",Sf,{omit:[\"_buffers\"]}),Ue(\"ProgramConfigurationSet\",Ua);let Xi=8192,p=Math.pow(2,14)-1,m=-p-1;function y(u){let a=Xi/u.extent,h=u.loadGeometry();for(let A=0;AP.x+1||FP.y+1)&&tr(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}}return h}function S(u,a){return{type:u.type,id:u.id,properties:u.properties,geometry:a?y(u):[]}}function I(u,a,h,A,x){u.emplaceBack(2*a+(A+1)/2,2*h+(x+1)/2)}class k{constructor(a){this.zoom=a.zoom,this.overscaling=a.overscaling,this.layers=a.layers,this.layerIds=this.layers.map(h=>h.id),this.index=a.index,this.hasPattern=!1,this.layoutVertexArray=new We,this.indexArray=new zs,this.segments=new jr,this.programConfigurations=new Ua(a.layers,a.zoom),this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){let x=this.layers[0],E=[],P=null,D=!1;x.type===\"circle\"&&(P=x.layout.get(\"circle-sort-key\"),D=!P.isConstant());for(let{feature:F,id:V,index:q,sourceLayerIndex:X}of a){let et=this.layers[0]._featureFilter.needGeometry,at=S(F,et);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),at,A))continue;let ct=D?P.evaluate(at,{},A):void 0,mt={id:V,properties:F.properties,type:F.type,sourceLayerIndex:X,index:q,geometry:et?at.geometry:y(F),patterns:{},sortKey:ct};E.push(mt)}D&&E.sort((F,V)=>F.sortKey-V.sortKey);for(let F of E){let{geometry:V,index:q,sourceLayerIndex:X}=F,et=a[q].feature;this.addFeature(F,V,q,A),h.featureIndex.insert(et,V,q,X,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,Wo),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(a,h,A,x){for(let E of h)for(let P of E){let D=P.x,F=P.y;if(D<0||D>=Xi||F<0||F>=Xi)continue;let V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,a.sortKey),q=V.vertexLength;I(this.layoutVertexArray,D,F,-1,-1),I(this.layoutVertexArray,D,F,1,-1),I(this.layoutVertexArray,D,F,1,1),I(this.layoutVertexArray,D,F,-1,1),this.indexArray.emplaceBack(q,q+1,q+2),this.indexArray.emplaceBack(q,q+3,q+2),V.vertexLength+=4,V.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,a,A,{},x)}}function L(u,a){for(let h=0;h1){if(ot(u,a))return!0;for(let A=0;A1?h:h.sub(a)._mult(x)._add(a))}function ee(u,a){let h,A,x,E=!1;for(let P=0;Pa.y!=x.y>a.y&&a.x<(x.x-A.x)*(a.y-A.y)/(x.y-A.y)+A.x&&(E=!E)}return E}function ie(u,a){let h=!1;for(let A=0,x=u.length-1;Aa.y!=P.y>a.y&&a.x<(P.x-E.x)*(a.y-E.y)/(P.y-E.y)+E.x&&(h=!h)}return h}function Ce(u,a,h){let A=h[0],x=h[2];if(u.xx.x&&a.x>x.x||u.yx.y&&a.y>x.y)return!1;let E=er(u,a,h[0]);return E!==er(u,a,h[1])||E!==er(u,a,h[2])||E!==er(u,a,h[3])}function Ve(u,a,h){let A=a.paint.get(u).value;return A.kind===\"constant\"?A.value:h.programConfigurations.get(a.id).getMaxValue(u)}function Jt(u){return Math.sqrt(u[0]*u[0]+u[1]*u[1])}function _e(u,a,h,A,x){if(!a[0]&&!a[1])return u;let E=w.convert(a)._mult(x);h===\"viewport\"&&E._rotate(-A);let P=[];for(let D=0;DAn(bt,mt))}(V,F),at=X?q*D:q;for(let ct of x)for(let mt of ct){let bt=X?mt:An(mt,F),Et=at,Vt=Ei([],[mt.x,mt.y,0,1],F);if(this.paint.get(\"circle-pitch-scale\")===\"viewport\"&&this.paint.get(\"circle-pitch-alignment\")===\"map\"?Et*=Vt[3]/P.cameraToCenterDistance:this.paint.get(\"circle-pitch-scale\")===\"map\"&&this.paint.get(\"circle-pitch-alignment\")===\"viewport\"&&(Et*=P.cameraToCenterDistance/Vt[3]),z(et,bt,Et))return!0}return!1}}function An(u,a){let h=Ei([],[u.x,u.y,0,1],a);return new w(h[0]/h[3],h[1]/h[3])}class Or extends k{}let b6;Ue(\"HeatmapBucket\",Or,{omit:[\"layers\"]});var Y$={get paint(){return b6=b6||new Gn({\"heatmap-radius\":new fr(te.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new fr(te.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new rr(te.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new Dd(te.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new rr(te.paint_heatmap[\"heatmap-opacity\"])})}};function HI(u,{width:a,height:h},A,x){if(x){if(x instanceof Uint8ClampedArray)x=new Uint8Array(x.buffer);else if(x.length!==a*h*A)throw new RangeError(`mismatched image size. expected: ${x.length} but got: ${a*h*A}`)}else x=new Uint8Array(a*h*A);return u.width=a,u.height=h,u.data=x,u}function w6(u,{width:a,height:h},A){if(a===u.width&&h===u.height)return;let x=HI({},{width:a,height:h},A);qI(u,x,{x:0,y:0},{x:0,y:0},{width:Math.min(u.width,a),height:Math.min(u.height,h)},A),u.width=a,u.height=h,u.data=x.data}function qI(u,a,h,A,x,E){if(x.width===0||x.height===0)return a;if(x.width>u.width||x.height>u.height||h.x>u.width-x.width||h.y>u.height-x.height)throw new RangeError(\"out of range source coordinates for image copy\");if(x.width>a.width||x.height>a.height||A.x>a.width-x.width||A.y>a.height-x.height)throw new RangeError(\"out of range destination coordinates for image copy\");let P=u.data,D=a.data;if(P===D)throw new Error(\"srcData equals dstData, so image is already copied\");for(let F=0;F{a[u.evaluationKey]=F;let V=u.expression.evaluate(a);x.data[P+D+0]=Math.floor(255*V.r/V.a),x.data[P+D+1]=Math.floor(255*V.g/V.a),x.data[P+D+2]=Math.floor(255*V.b/V.a),x.data[P+D+3]=Math.floor(255*V.a)};if(u.clips)for(let P=0,D=0;P80*h){A=E=u[0],x=P=u[1];for(var ct=h;ctE&&(E=D),F>P&&(P=F);V=(V=Math.max(E-A,P-x))!==0?32767/V:0}return Rx(et,at,h,A,x,V,0),at}function M6(u,a,h,A,x){var E,P;if(x===$I(u,a,h,A)>0)for(E=a;E=a;E-=A)P=I6(E,u[E],u[E+1],P);return P&&zS(P,P.next)&&(Ox(P),P=P.next),P}function u0(u,a){if(!u)return u;a||(a=u);var h,A=u;do if(h=!1,A.steiner||!zS(A,A.next)&&hs(A.prev,A,A.next)!==0)A=A.next;else{if(Ox(A),(A=a=A.prev)===A.next)break;h=!0}while(h||A!==a);return a}function Rx(u,a,h,A,x,E,P){if(u){!P&&E&&function(q,X,et,at){var ct=q;do ct.z===0&&(ct.z=YI(ct.x,ct.y,X,et,at)),ct.prevZ=ct.prev,ct.nextZ=ct.next,ct=ct.next;while(ct!==q);ct.prevZ.nextZ=null,ct.prevZ=null,function(mt){var bt,Et,Vt,kt,jt,qt,ae,Be,Je=1;do{for(Et=mt,mt=null,jt=null,qt=0;Et;){for(qt++,Vt=Et,ae=0,bt=0;bt0||Be>0&&Vt;)ae!==0&&(Be===0||!Vt||Et.z<=Vt.z)?(kt=Et,Et=Et.nextZ,ae--):(kt=Vt,Vt=Vt.nextZ,Be--),jt?jt.nextZ=kt:mt=kt,kt.prevZ=jt,jt=kt;Et=Vt}jt.nextZ=null,Je*=2}while(qt>1)}(ct)}(u,A,x,E);for(var D,F,V=u;u.prev!==u.next;)if(D=u.prev,F=u.next,E?eX(u,A,x,E):tX(u))a.push(D.i/h|0),a.push(u.i/h|0),a.push(F.i/h|0),Ox(u),u=F.next,V=F.next;else if((u=F)===V){P?P===1?Rx(u=rX(u0(u),a,h),a,h,A,x,E,2):P===2&&iX(u,a,h,A,x,E):Rx(u0(u),a,h,A,x,E,1);break}}}function tX(u){var a=u.prev,h=u,A=u.next;if(hs(a,h,A)>=0)return!1;for(var x=a.x,E=h.x,P=A.x,D=a.y,F=h.y,V=A.y,q=xE?x>P?x:P:E>P?E:P,at=D>F?D>V?D:V:F>V?F:V,ct=A.next;ct!==a;){if(ct.x>=q&&ct.x<=et&&ct.y>=X&&ct.y<=at&&p_(x,D,E,F,P,V,ct.x,ct.y)&&hs(ct.prev,ct,ct.next)>=0)return!1;ct=ct.next}return!0}function eX(u,a,h,A){var x=u.prev,E=u,P=u.next;if(hs(x,E,P)>=0)return!1;for(var D=x.x,F=E.x,V=P.x,q=x.y,X=E.y,et=P.y,at=DF?D>V?D:V:F>V?F:V,bt=q>X?q>et?q:et:X>et?X:et,Et=YI(at,ct,a,h,A),Vt=YI(mt,bt,a,h,A),kt=u.prevZ,jt=u.nextZ;kt&&kt.z>=Et&&jt&&jt.z<=Vt;){if(kt.x>=at&&kt.x<=mt&&kt.y>=ct&&kt.y<=bt&&kt!==x&&kt!==P&&p_(D,q,F,X,V,et,kt.x,kt.y)&&hs(kt.prev,kt,kt.next)>=0||(kt=kt.prevZ,jt.x>=at&&jt.x<=mt&&jt.y>=ct&&jt.y<=bt&&jt!==x&&jt!==P&&p_(D,q,F,X,V,et,jt.x,jt.y)&&hs(jt.prev,jt,jt.next)>=0))return!1;jt=jt.nextZ}for(;kt&&kt.z>=Et;){if(kt.x>=at&&kt.x<=mt&&kt.y>=ct&&kt.y<=bt&&kt!==x&&kt!==P&&p_(D,q,F,X,V,et,kt.x,kt.y)&&hs(kt.prev,kt,kt.next)>=0)return!1;kt=kt.prevZ}for(;jt&&jt.z<=Vt;){if(jt.x>=at&&jt.x<=mt&&jt.y>=ct&&jt.y<=bt&&jt!==x&&jt!==P&&p_(D,q,F,X,V,et,jt.x,jt.y)&&hs(jt.prev,jt,jt.next)>=0)return!1;jt=jt.nextZ}return!0}function rX(u,a,h){var A=u;do{var x=A.prev,E=A.next.next;!zS(x,E)&&E6(x,A,A.next,E)&&Dx(x,E)&&Dx(E,x)&&(a.push(x.i/h|0),a.push(A.i/h|0),a.push(E.i/h|0),Ox(A),Ox(A.next),A=u=E),A=A.next}while(A!==u);return u0(A)}function iX(u,a,h,A,x,E){var P=u;do{for(var D=P.next.next;D!==P.prev;){if(P.i!==D.i&&lX(P,D)){var F=P6(P,D);return P=u0(P,P.next),F=u0(F,F.next),Rx(P,a,h,A,x,E,0),void Rx(F,a,h,A,x,E,0)}D=D.next}P=P.next}while(P!==u)}function nX(u,a){return u.x-a.x}function sX(u,a){var h=function(x,E){var P,D=E,F=x.x,V=x.y,q=-1/0;do{if(V<=D.y&&V>=D.next.y&&D.next.y!==D.y){var X=D.x+(V-D.y)*(D.next.x-D.x)/(D.next.y-D.y);if(X<=F&&X>q&&(q=X,P=D.x=D.x&&D.x>=ct&&F!==D.x&&p_(VP.x||D.x===P.x&&oX(P,D)))&&(P=D,bt=et)),D=D.next;while(D!==at);return P}(u,a);if(!h)return a;var A=P6(h,u);return u0(A,A.next),u0(h,h.next)}function oX(u,a){return hs(u.prev,u,a.prev)<0&&hs(a.next,u,u.next)<0}function YI(u,a,h,A,x){return(u=1431655765&((u=858993459&((u=252645135&((u=16711935&((u=(u-h)*x|0)|u<<8))|u<<4))|u<<2))|u<<1))|(a=1431655765&((a=858993459&((a=252645135&((a=16711935&((a=(a-A)*x|0)|a<<8))|a<<4))|a<<2))|a<<1))<<1}function aX(u){var a=u,h=u;do(a.x=(u-P)*(E-D)&&(u-P)*(A-D)>=(h-P)*(a-D)&&(h-P)*(E-D)>=(x-P)*(A-D)}function lX(u,a){return u.next.i!==a.i&&u.prev.i!==a.i&&!function(h,A){var x=h;do{if(x.i!==h.i&&x.next.i!==h.i&&x.i!==A.i&&x.next.i!==A.i&&E6(x,x.next,h,A))return!0;x=x.next}while(x!==h);return!1}(u,a)&&(Dx(u,a)&&Dx(a,u)&&function(h,A){var x=h,E=!1,P=(h.x+A.x)/2,D=(h.y+A.y)/2;do x.y>D!=x.next.y>D&&x.next.y!==x.y&&P<(x.next.x-x.x)*(D-x.y)/(x.next.y-x.y)+x.x&&(E=!E),x=x.next;while(x!==h);return E}(u,a)&&(hs(u.prev,u,a.prev)||hs(u,a.prev,a))||zS(u,a)&&hs(u.prev,u,u.next)>0&&hs(a.prev,a,a.next)>0)}function hs(u,a,h){return(a.y-u.y)*(h.x-a.x)-(a.x-u.x)*(h.y-a.y)}function zS(u,a){return u.x===a.x&&u.y===a.y}function E6(u,a,h,A){var x=US(hs(u,a,h)),E=US(hs(u,a,A)),P=US(hs(h,A,u)),D=US(hs(h,A,a));return x!==E&&P!==D||!(x!==0||!NS(u,h,a))||!(E!==0||!NS(u,A,a))||!(P!==0||!NS(h,u,A))||!(D!==0||!NS(h,a,A))}function NS(u,a,h){return a.x<=Math.max(u.x,h.x)&&a.x>=Math.min(u.x,h.x)&&a.y<=Math.max(u.y,h.y)&&a.y>=Math.min(u.y,h.y)}function US(u){return u>0?1:u<0?-1:0}function Dx(u,a){return hs(u.prev,u,u.next)<0?hs(u,a,u.next)>=0&&hs(u,u.prev,a)>=0:hs(u,a,u.prev)<0||hs(u,u.next,a)<0}function P6(u,a){var h=new QI(u.i,u.x,u.y),A=new QI(a.i,a.x,a.y),x=u.next,E=a.prev;return u.next=a,a.prev=u,h.next=x,x.prev=h,A.next=h,h.prev=A,E.next=A,A.prev=E,A}function I6(u,a,h,A){var x=new QI(u,a,h);return A?(x.next=A.next,x.prev=A,A.next.prev=x,A.next=x):(x.prev=x,x.next=x),x}function Ox(u){u.next.prev=u.prev,u.prev.next=u.next,u.prevZ&&(u.prevZ.nextZ=u.nextZ),u.nextZ&&(u.nextZ.prevZ=u.prevZ)}function QI(u,a,h){this.i=u,this.x=a,this.y=h,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function $I(u,a,h,A){for(var x=0,E=a,P=h-A;E0&&h.holes.push(A+=u[x-1].length)}return h};var C6=c(ZI.exports);function cX(u,a,h,A,x){L6(u,a,h||0,A||u.length-1,x||uX)}function L6(u,a,h,A,x){for(;A>h;){if(A-h>600){var E=A-h+1,P=a-h+1,D=Math.log(E),F=.5*Math.exp(2*D/3),V=.5*Math.sqrt(D*F*(E-F)/E)*(P-E/2<0?-1:1);L6(u,a,Math.max(h,Math.floor(a-P*F/E+V)),Math.min(A,Math.floor(a+(E-P)*F/E+V)),x)}var q=u[a],X=h,et=A;for(Bx(u,h,a),x(u[A],q)>0&&Bx(u,h,A);X0;)et--}x(u[h],q)===0?Bx(u,h,et):Bx(u,++et,A),et<=a&&(h=et+1),a<=et&&(A=et-1)}}function Bx(u,a,h){var A=u[a];u[a]=u[h],u[h]=A}function uX(u,a){return ua?1:0}function XI(u,a){let h=u.length;if(h<=1)return[u];let A=[],x,E;for(let P=0;P1)for(let P=0;Ph.id),this.index=a.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Kr,this.indexArray=new zs,this.indexArray2=new cs,this.programConfigurations=new Ua(a.layers,a.zoom),this.segments=new jr,this.segments2=new jr,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.hasPattern=KI(\"fill\",this.layers,h);let x=this.layers[0].layout.get(\"fill-sort-key\"),E=!x.isConstant(),P=[];for(let{feature:D,id:F,index:V,sourceLayerIndex:q}of a){let X=this.layers[0]._featureFilter.needGeometry,et=S(D,X);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),et,A))continue;let at=E?x.evaluate(et,{},A,h.availableImages):void 0,ct={id:F,properties:D.properties,type:D.type,sourceLayerIndex:q,index:V,geometry:X?et.geometry:y(D),patterns:{},sortKey:at};P.push(ct)}E&&P.sort((D,F)=>D.sortKey-F.sortKey);for(let D of P){let{geometry:F,index:V,sourceLayerIndex:q}=D;if(this.hasPattern){let X=JI(\"fill\",this.layers,D,this.zoom,h);this.patternFeatures.push(X)}else this.addFeature(D,F,V,A,{});h.featureIndex.insert(a[V].feature,F,V,q,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}addFeatures(a,h,A){for(let x of this.patternFeatures)this.addFeature(x,x.geometry,x.index,h,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,J$),this.indexBuffer=a.createIndexBuffer(this.indexArray),this.indexBuffer2=a.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(a,h,A,x,E){for(let P of XI(h,500)){let D=0;for(let at of P)D+=at.length;let F=this.segments.prepareSegment(D,this.layoutVertexArray,this.indexArray),V=F.vertexLength,q=[],X=[];for(let at of P){if(at.length===0)continue;at!==P[0]&&X.push(q.length/2);let ct=this.segments2.prepareSegment(at.length,this.layoutVertexArray,this.indexArray2),mt=ct.vertexLength;this.layoutVertexArray.emplaceBack(at[0].x,at[0].y),this.indexArray2.emplaceBack(mt+at.length-1,mt),q.push(at[0].x),q.push(at[0].y);for(let bt=1;bt>3}if(x--,A===1||A===2)E+=u.readSVarint(),P+=u.readSVarint(),A===1&&(a&&D.push(a),a=[]),a.push(new gX(E,P));else{if(A!==7)throw new Error(\"unknown command \"+A);a&&a.push(a[0].clone())}}return a&&D.push(a),D},A_.prototype.bbox=function(){var u=this._pbf;u.pos=this._geometry;for(var a=u.readVarint()+u.pos,h=1,A=0,x=0,E=0,P=1/0,D=-1/0,F=1/0,V=-1/0;u.pos>3}if(A--,h===1||h===2)(x+=u.readSVarint())D&&(D=x),(E+=u.readSVarint())V&&(V=E);else if(h!==7)throw new Error(\"unknown command \"+h)}return[P,F,D,V]},A_.prototype.toGeoJSON=function(u,a,h){var A,x,E=this.extent*Math.pow(2,h),P=this.extent*u,D=this.extent*a,F=this.loadGeometry(),V=A_.types[this.type];function q(at){for(var ct=0;ct>3;x=P===1?A.readString():P===2?A.readFloat():P===3?A.readDouble():P===4?A.readVarint64():P===5?A.readVarint():P===6?A.readSVarint():P===7?A.readBoolean():null}return x}(h))}B6.prototype.feature=function(u){if(u<0||u>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[u];var a=this._pbf.readVarint()+this._pbf.pos;return new vX(this._pbf,a,this.extent,this._keys,this._values)};var bX=O6;function wX(u,a,h){if(u===3){var A=new bX(h,h.readVarint()+h.pos);A.length&&(a[A.name]=A)}}aA.VectorTile=function(u,a){this.layers=u.readFields(wX,{},a)},aA.VectorTileFeature=D6,aA.VectorTileLayer=O6;let SX=aA.VectorTileFeature.types,eC=Math.pow(2,13);function Fx(u,a,h,A,x,E,P,D){u.emplaceBack(a,h,2*Math.floor(A*eC)+P,x*eC*2,E*eC*2,Math.round(D))}class rC{constructor(a){this.zoom=a.zoom,this.overscaling=a.overscaling,this.layers=a.layers,this.layerIds=this.layers.map(h=>h.id),this.index=a.index,this.hasPattern=!1,this.layoutVertexArray=new Me,this.centroidVertexArray=new xe,this.indexArray=new zs,this.programConfigurations=new Ua(a.layers,a.zoom),this.segments=new jr,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.features=[],this.hasPattern=KI(\"fill-extrusion\",this.layers,h);for(let{feature:x,id:E,index:P,sourceLayerIndex:D}of a){let F=this.layers[0]._featureFilter.needGeometry,V=S(x,F);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),V,A))continue;let q={id:E,sourceLayerIndex:D,index:P,geometry:F?V.geometry:y(x),properties:x.properties,type:x.type,patterns:{}};this.hasPattern?this.features.push(JI(\"fill-extrusion\",this.layers,q,this.zoom,h)):this.addFeature(q,q.geometry,P,A,{}),h.featureIndex.insert(x,q.geometry,P,D,this.index,!0)}}addFeatures(a,h,A){for(let x of this.features){let{geometry:E}=x;this.addFeature(x,E,x.index,h,A)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,mX),this.centroidVertexBuffer=a.createVertexBuffer(this.centroidVertexArray,AX.members,!0),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(a,h,A,x,E){let P={x:0,y:0,vertexCount:0};for(let D of XI(h,500)){let F=0;for(let ct of D)F+=ct.length;let V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let ct of D){if(ct.length===0||MX(ct))continue;let mt=0;for(let bt=0;bt=1){let Vt=ct[bt-1];if(!TX(Et,Vt)){V.vertexLength+4>jr.MAX_VERTEX_ARRAY_LENGTH&&(V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let kt=Et.sub(Vt)._perp()._unit(),jt=Vt.dist(Et);mt+jt>32768&&(mt=0),Fx(this.layoutVertexArray,Et.x,Et.y,kt.x,kt.y,0,0,mt),Fx(this.layoutVertexArray,Et.x,Et.y,kt.x,kt.y,0,1,mt),P.x+=2*Et.x,P.y+=2*Et.y,P.vertexCount+=2,mt+=jt,Fx(this.layoutVertexArray,Vt.x,Vt.y,kt.x,kt.y,0,0,mt),Fx(this.layoutVertexArray,Vt.x,Vt.y,kt.x,kt.y,0,1,mt),P.x+=2*Vt.x,P.y+=2*Vt.y,P.vertexCount+=2;let qt=V.vertexLength;this.indexArray.emplaceBack(qt,qt+2,qt+1),this.indexArray.emplaceBack(qt+1,qt+2,qt+3),V.vertexLength+=4,V.primitiveLength+=2}}}}if(V.vertexLength+F>jr.MAX_VERTEX_ARRAY_LENGTH&&(V=this.segments.prepareSegment(F,this.layoutVertexArray,this.indexArray)),SX[a.type]!==\"Polygon\")continue;let q=[],X=[],et=V.vertexLength;for(let ct of D)if(ct.length!==0){ct!==D[0]&&X.push(q.length/2);for(let mt=0;mtXi)||u.y===a.y&&(u.y<0||u.y>Xi)}function MX(u){return u.every(a=>a.x<0)||u.every(a=>a.x>Xi)||u.every(a=>a.y<0)||u.every(a=>a.y>Xi)}let F6;Ue(\"FillExtrusionBucket\",rC,{omit:[\"layers\",\"features\"]});var EX={get paint(){return F6=F6||new Gn({\"fill-extrusion-opacity\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new xf(te[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})}};class PX extends Ui{constructor(a){super(a,EX)}createBucket(a){return new rC(a)}queryRadius(){return Jt(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return!0}queryIntersectsFeature(a,h,A,x,E,P,D,F){let V=_e(a,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),P.angle,D),q=this.paint.get(\"fill-extrusion-height\").evaluate(h,A),X=this.paint.get(\"fill-extrusion-base\").evaluate(h,A),et=function(ct,mt,bt,Et){let Vt=[];for(let kt of ct){let jt=[kt.x,kt.y,0,1];Ei(jt,jt,mt),Vt.push(new w(jt[0]/jt[3],jt[1]/jt[3]))}return Vt}(V,F),at=function(ct,mt,bt,Et){let Vt=[],kt=[],jt=Et[8]*mt,qt=Et[9]*mt,ae=Et[10]*mt,Be=Et[11]*mt,Je=Et[8]*bt,Oe=Et[9]*bt,ke=Et[10]*bt,Te=Et[11]*bt;for(let He of ct){let Pe=[],Ae=[];for(let ur of He){let ir=ur.x,ri=ur.y,xn=Et[0]*ir+Et[4]*ri+Et[12],Ln=Et[1]*ir+Et[5]*ri+Et[13],Vs=Et[2]*ir+Et[6]*ri+Et[14],Hl=Et[3]*ir+Et[7]*ri+Et[15],Va=Vs+ae,Ps=Hl+Be,vo=xn+Je,Yo=Ln+Oe,ja=Vs+ke,Ga=Hl+Te,js=new w((xn+jt)/Ps,(Ln+qt)/Ps);js.z=Va/Ps,Pe.push(js);let Gs=new w(vo/Ga,Yo/Ga);Gs.z=ja/Ga,Ae.push(Gs)}Vt.push(Pe),kt.push(Ae)}return[Vt,kt]}(x,X,q,F);return function(ct,mt,bt){let Et=1/0;H(bt,mt)&&(Et=z6(bt,mt[0]));for(let Vt=0;Vth.id),this.index=a.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(h=>{this.gradients[h.id]={}}),this.layoutVertexArray=new dr,this.layoutVertexArray2=new Xe,this.indexArray=new zs,this.programConfigurations=new Ua(a.layers,a.zoom),this.segments=new jr,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.hasPattern=KI(\"line\",this.layers,h);let x=this.layers[0].layout.get(\"line-sort-key\"),E=!x.isConstant(),P=[];for(let{feature:D,id:F,index:V,sourceLayerIndex:q}of a){let X=this.layers[0]._featureFilter.needGeometry,et=S(D,X);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),et,A))continue;let at=E?x.evaluate(et,{},A):void 0,ct={id:F,properties:D.properties,type:D.type,sourceLayerIndex:q,index:V,geometry:X?et.geometry:y(D),patterns:{},sortKey:at};P.push(ct)}E&&P.sort((D,F)=>D.sortKey-F.sortKey);for(let D of P){let{geometry:F,index:V,sourceLayerIndex:q}=D;if(this.hasPattern){let X=JI(\"line\",this.layers,D,this.zoom,h);this.patternFeatures.push(X)}else this.addFeature(D,F,V,A,{});h.featureIndex.insert(a[V].feature,F,V,q,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}addFeatures(a,h,A){for(let x of this.patternFeatures)this.addFeature(x,x.geometry,x.index,h,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=a.createVertexBuffer(this.layoutVertexArray2,kX)),this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,CX),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(a){if(a.properties&&Object.prototype.hasOwnProperty.call(a.properties,\"mapbox_clip_start\")&&Object.prototype.hasOwnProperty.call(a.properties,\"mapbox_clip_end\"))return{start:+a.properties.mapbox_clip_start,end:+a.properties.mapbox_clip_end}}addFeature(a,h,A,x,E){let P=this.layers[0].layout,D=P.get(\"line-join\").evaluate(a,{}),F=P.get(\"line-cap\"),V=P.get(\"line-miter-limit\"),q=P.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(a);for(let X of h)this.addLine(X,a,D,F,V,q);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,a,A,E,x)}addLine(a,h,A,x,E,P){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let Et=0;Et=2&&a[F-1].equals(a[F-2]);)F--;let V=0;for(;V0;if(Be&&Et>V){let Te=et.dist(at);if(Te>2*q){let He=et.sub(et.sub(at)._mult(q/Te)._round());this.updateDistance(at,He),this.addCurrentVertex(He,mt,0,0,X),at=He}}let Oe=at&&ct,ke=Oe?A:D?\"butt\":x;if(Oe&&ke===\"round\"&&(qtE&&(ke=\"bevel\"),ke===\"bevel\"&&(qt>2&&(ke=\"flipbevel\"),qt100)Vt=bt.mult(-1);else{let Te=qt*mt.add(bt).mag()/mt.sub(bt).mag();Vt._perp()._mult(Te*(Je?-1:1))}this.addCurrentVertex(et,Vt,0,0,X),this.addCurrentVertex(et,Vt.mult(-1),0,0,X)}else if(ke===\"bevel\"||ke===\"fakeround\"){let Te=-Math.sqrt(qt*qt-1),He=Je?Te:0,Pe=Je?0:Te;if(at&&this.addCurrentVertex(et,mt,He,Pe,X),ke===\"fakeround\"){let Ae=Math.round(180*ae/Math.PI/20);for(let ur=1;ur2*q){let He=et.add(ct.sub(et)._mult(q/Te)._round());this.updateDistance(et,He),this.addCurrentVertex(He,bt,0,0,X),et=He}}}}addCurrentVertex(a,h,A,x,E,P=!1){let D=h.y*x-h.x,F=-h.y-h.x*x;this.addHalfVertex(a,h.x+h.y*A,h.y-h.x*A,P,!1,A,E),this.addHalfVertex(a,D,F,P,!0,-x,E),this.distance>N6/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(a,h,A,x,E,P))}addHalfVertex({x:a,y:h},A,x,E,P,D,F){let V=.5*(this.lineClips?this.scaledDistance*(N6-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((a<<1)+(E?1:0),(h<<1)+(P?1:0),Math.round(63*A)+128,Math.round(63*x)+128,1+(D===0?0:D<0?-1:1)|(63&V)<<2,V>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let q=F.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,q),F.primitiveLength++),P?this.e2=q:this.e1=q}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(a,h){this.distance+=a.dist(h),this.updateScaledDistance()}}let U6,V6;Ue(\"LineBucket\",iC,{omit:[\"layers\",\"patternFeatures\"]});var j6={get paint(){return V6=V6||new Gn({\"line-opacity\":new fr(te.paint_line[\"line-opacity\"]),\"line-color\":new fr(te.paint_line[\"line-color\"]),\"line-translate\":new rr(te.paint_line[\"line-translate\"]),\"line-translate-anchor\":new rr(te.paint_line[\"line-translate-anchor\"]),\"line-width\":new fr(te.paint_line[\"line-width\"]),\"line-gap-width\":new fr(te.paint_line[\"line-gap-width\"]),\"line-offset\":new fr(te.paint_line[\"line-offset\"]),\"line-blur\":new fr(te.paint_line[\"line-blur\"]),\"line-dasharray\":new nA(te.paint_line[\"line-dasharray\"]),\"line-pattern\":new xf(te.paint_line[\"line-pattern\"]),\"line-gradient\":new Dd(te.paint_line[\"line-gradient\"])})},get layout(){return U6=U6||new Gn({\"line-cap\":new rr(te.layout_line[\"line-cap\"]),\"line-join\":new fr(te.layout_line[\"line-join\"]),\"line-miter-limit\":new rr(te.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new rr(te.layout_line[\"line-round-limit\"]),\"line-sort-key\":new fr(te.layout_line[\"line-sort-key\"])})}};class OX extends fr{possiblyEvaluate(a,h){return h=new ln(Math.floor(h.zoom),{now:h.now,fadeDuration:h.fadeDuration,zoomHistory:h.zoomHistory,transition:h.transition}),super.possiblyEvaluate(a,h)}evaluate(a,h,A,x){return h=Ot({},h,{zoom:Math.floor(h.zoom)}),super.evaluate(a,h,A,x)}}let VS;class BX extends Ui{constructor(a){super(a,j6),this.gradientVersion=0,VS||(VS=new OX(j6.paint.properties[\"line-width\"].specification),VS.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(a){if(a===\"line-gradient\"){let h=this.gradientExpression();this.stepInterpolant=!!function(A){return A._styleExpression!==void 0}(h)&&h._styleExpression.expression instanceof nh,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(a,h){super.recalculate(a,h),this.paint._values[\"line-floorwidth\"]=VS.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,a)}createBucket(a){return new iC(a)}queryRadius(a){let h=a,A=G6(Ve(\"line-width\",this,h),Ve(\"line-gap-width\",this,h)),x=Ve(\"line-offset\",this,h);return A/2+Math.abs(x)+Jt(this.paint.get(\"line-translate\"))}queryIntersectsFeature(a,h,A,x,E,P,D){let F=_e(a,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),P.angle,D),V=D/2*G6(this.paint.get(\"line-width\").evaluate(h,A),this.paint.get(\"line-gap-width\").evaluate(h,A)),q=this.paint.get(\"line-offset\").evaluate(h,A);return q&&(x=function(X,et){let at=[];for(let ct=0;ct=3){for(let bt=0;bt0?a+2*u:u}let FX=yn([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),zX=yn([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);yn([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);let NX=yn([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]);yn([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);let W6=yn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),UX=yn([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function VX(u,a,h){return u.sections.forEach(A=>{A.text=function(x,E,P){let D=E.layout.get(\"text-transform\").evaluate(P,{});return D===\"uppercase\"?x=x.toLocaleUpperCase():D===\"lowercase\"&&(x=x.toLocaleLowerCase()),ua.applyArabicShaping&&(x=ua.applyArabicShaping(x)),x}(A.text,a,h)}),u}yn([{name:\"triangle\",components:3,type:\"Uint16\"}]),yn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),yn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",name:\"collisionCircleDiameter\"},{type:\"Uint16\",name:\"textAnchorOffsetStartIndex\"},{type:\"Uint16\",name:\"textAnchorOffsetEndIndex\"}]),yn([{type:\"Float32\",name:\"offsetX\"}]),yn([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]),yn([{type:\"Uint16\",name:\"textAnchor\"},{type:\"Float32\",components:2,name:\"textOffset\"}]);let Nx={\"!\":\"\\uFE15\",\"#\":\"\\uFF03\",$:\"\\uFF04\",\"%\":\"\\uFF05\",\"&\":\"\\uFF06\",\"(\":\"\\uFE35\",\")\":\"\\uFE36\",\"*\":\"\\uFF0A\",\"+\":\"\\uFF0B\",\",\":\"\\uFE10\",\"-\":\"\\uFE32\",\".\":\"\\u30FB\",\"/\":\"\\uFF0F\",\":\":\"\\uFE13\",\";\":\"\\uFE14\",\"<\":\"\\uFE3F\",\"=\":\"\\uFF1D\",\">\":\"\\uFE40\",\"?\":\"\\uFE16\",\"@\":\"\\uFF20\",\"[\":\"\\uFE47\",\"\\\\\":\"\\uFF3C\",\"]\":\"\\uFE48\",\"^\":\"\\uFF3E\",_:\"\\uFE33\",\"`\":\"\\uFF40\",\"{\":\"\\uFE37\",\"|\":\"\\u2015\",\"}\":\"\\uFE38\",\"~\":\"\\uFF5E\",\"\\xA2\":\"\\uFFE0\",\"\\xA3\":\"\\uFFE1\",\"\\xA5\":\"\\uFFE5\",\"\\xA6\":\"\\uFFE4\",\"\\xAC\":\"\\uFFE2\",\"\\xAF\":\"\\uFFE3\",\"\\u2013\":\"\\uFE32\",\"\\u2014\":\"\\uFE31\",\"\\u2018\":\"\\uFE43\",\"\\u2019\":\"\\uFE44\",\"\\u201C\":\"\\uFE41\",\"\\u201D\":\"\\uFE42\",\"\\u2026\":\"\\uFE19\",\"\\u2027\":\"\\u30FB\",\"\\u20A9\":\"\\uFFE6\",\"\\u3001\":\"\\uFE11\",\"\\u3002\":\"\\uFE12\",\"\\u3008\":\"\\uFE3F\",\"\\u3009\":\"\\uFE40\",\"\\u300A\":\"\\uFE3D\",\"\\u300B\":\"\\uFE3E\",\"\\u300C\":\"\\uFE41\",\"\\u300D\":\"\\uFE42\",\"\\u300E\":\"\\uFE43\",\"\\u300F\":\"\\uFE44\",\"\\u3010\":\"\\uFE3B\",\"\\u3011\":\"\\uFE3C\",\"\\u3014\":\"\\uFE39\",\"\\u3015\":\"\\uFE3A\",\"\\u3016\":\"\\uFE17\",\"\\u3017\":\"\\uFE18\",\"\\uFF01\":\"\\uFE15\",\"\\uFF08\":\"\\uFE35\",\"\\uFF09\":\"\\uFE36\",\"\\uFF0C\":\"\\uFE10\",\"\\uFF0D\":\"\\uFE32\",\"\\uFF0E\":\"\\u30FB\",\"\\uFF1A\":\"\\uFE13\",\"\\uFF1B\":\"\\uFE14\",\"\\uFF1C\":\"\\uFE3F\",\"\\uFF1E\":\"\\uFE40\",\"\\uFF1F\":\"\\uFE16\",\"\\uFF3B\":\"\\uFE47\",\"\\uFF3D\":\"\\uFE48\",\"\\uFF3F\":\"\\uFE33\",\"\\uFF5B\":\"\\uFE37\",\"\\uFF5C\":\"\\u2015\",\"\\uFF5D\":\"\\uFE38\",\"\\uFF5F\":\"\\uFE35\",\"\\uFF60\":\"\\uFE36\",\"\\uFF61\":\"\\uFE12\",\"\\uFF62\":\"\\uFE41\",\"\\uFF63\":\"\\uFE42\"};var Us=24,H6=Ki,q6=function(u,a,h,A,x){var E,P,D=8*x-A-1,F=(1<>1,q=-7,X=h?x-1:0,et=h?-1:1,at=u[a+X];for(X+=et,E=at&(1<<-q)-1,at>>=-q,q+=D;q>0;E=256*E+u[a+X],X+=et,q-=8);for(P=E&(1<<-q)-1,E>>=-q,q+=A;q>0;P=256*P+u[a+X],X+=et,q-=8);if(E===0)E=1-V;else{if(E===F)return P?NaN:1/0*(at?-1:1);P+=Math.pow(2,A),E-=V}return(at?-1:1)*P*Math.pow(2,E-A)},Z6=function(u,a,h,A,x,E){var P,D,F,V=8*E-x-1,q=(1<>1,et=x===23?Math.pow(2,-24)-Math.pow(2,-77):0,at=A?0:E-1,ct=A?1:-1,mt=a<0||a===0&&1/a<0?1:0;for(a=Math.abs(a),isNaN(a)||a===1/0?(D=isNaN(a)?1:0,P=q):(P=Math.floor(Math.log(a)/Math.LN2),a*(F=Math.pow(2,-P))<1&&(P--,F*=2),(a+=P+X>=1?et/F:et*Math.pow(2,1-X))*F>=2&&(P++,F/=2),P+X>=q?(D=0,P=q):P+X>=1?(D=(a*F-1)*Math.pow(2,x),P+=X):(D=a*Math.pow(2,X-1)*Math.pow(2,x),P=0));x>=8;u[h+at]=255&D,at+=ct,D/=256,x-=8);for(P=P<0;u[h+at]=255&P,at+=ct,P/=256,V-=8);u[h+at-ct]|=128*mt};function Ki(u){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(u)?u:new Uint8Array(u||0),this.pos=0,this.type=0,this.length=this.buf.length}Ki.Varint=0,Ki.Fixed64=1,Ki.Bytes=2,Ki.Fixed32=5;var nC=4294967296,Y6=1/nC,Q6=typeof TextDecoder>\"u\"?null:new TextDecoder(\"utf8\");function Fd(u){return u.type===Ki.Bytes?u.readVarint()+u.pos:u.pos+1}function m_(u,a,h){return h?4294967296*a+(u>>>0):4294967296*(a>>>0)+(u>>>0)}function $6(u,a,h){var A=a<=16383?1:a<=2097151?2:a<=268435455?3:Math.floor(Math.log(a)/(7*Math.LN2));h.realloc(A);for(var x=h.pos-1;x>=u;x--)h.buf[x+A]=h.buf[x]}function jX(u,a){for(var h=0;h>>8,u[h+2]=a>>>16,u[h+3]=a>>>24}function X6(u,a){return(u[a]|u[a+1]<<8|u[a+2]<<16)+(u[a+3]<<24)}Ki.prototype={destroy:function(){this.buf=null},readFields:function(u,a,h){for(h=h||this.length;this.pos>3,E=this.pos;this.type=7&A,u(x,a,this),this.pos===E&&this.skip(A)}return a},readMessage:function(u,a){return this.readFields(u,a,this.readVarint()+this.pos)},readFixed32:function(){var u=jS(this.buf,this.pos);return this.pos+=4,u},readSFixed32:function(){var u=X6(this.buf,this.pos);return this.pos+=4,u},readFixed64:function(){var u=jS(this.buf,this.pos)+jS(this.buf,this.pos+4)*nC;return this.pos+=8,u},readSFixed64:function(){var u=jS(this.buf,this.pos)+X6(this.buf,this.pos+4)*nC;return this.pos+=8,u},readFloat:function(){var u=q6(this.buf,this.pos,!0,23,4);return this.pos+=4,u},readDouble:function(){var u=q6(this.buf,this.pos,!0,52,8);return this.pos+=8,u},readVarint:function(u){var a,h,A=this.buf;return a=127&(h=A[this.pos++]),h<128?a:(a|=(127&(h=A[this.pos++]))<<7,h<128?a:(a|=(127&(h=A[this.pos++]))<<14,h<128?a:(a|=(127&(h=A[this.pos++]))<<21,h<128?a:function(x,E,P){var D,F,V=P.buf;if(D=(112&(F=V[P.pos++]))>>4,F<128||(D|=(127&(F=V[P.pos++]))<<3,F<128)||(D|=(127&(F=V[P.pos++]))<<10,F<128)||(D|=(127&(F=V[P.pos++]))<<17,F<128)||(D|=(127&(F=V[P.pos++]))<<24,F<128)||(D|=(1&(F=V[P.pos++]))<<31,F<128))return m_(x,D,E);throw new Error(\"Expected varint not more than 10 bytes\")}(a|=(15&(h=A[this.pos]))<<28,u,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var u=this.readVarint();return u%2==1?(u+1)/-2:u/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var u=this.readVarint()+this.pos,a=this.pos;return this.pos=u,u-a>=12&&Q6?function(h,A,x){return Q6.decode(h.subarray(A,x))}(this.buf,a,u):function(h,A,x){for(var E=\"\",P=A;P239?4:q>223?3:q>191?2:1;if(P+et>x)break;et===1?q<128&&(X=q):et===2?(192&(D=h[P+1]))==128&&(X=(31&q)<<6|63&D)<=127&&(X=null):et===3?(F=h[P+2],(192&(D=h[P+1]))==128&&(192&F)==128&&((X=(15&q)<<12|(63&D)<<6|63&F)<=2047||X>=55296&&X<=57343)&&(X=null)):et===4&&(F=h[P+2],V=h[P+3],(192&(D=h[P+1]))==128&&(192&F)==128&&(192&V)==128&&((X=(15&q)<<18|(63&D)<<12|(63&F)<<6|63&V)<=65535||X>=1114112)&&(X=null)),X===null?(X=65533,et=1):X>65535&&(X-=65536,E+=String.fromCharCode(X>>>10&1023|55296),X=56320|1023&X),E+=String.fromCharCode(X),P+=et}return E}(this.buf,a,u)},readBytes:function(){var u=this.readVarint()+this.pos,a=this.buf.subarray(this.pos,u);return this.pos=u,a},readPackedVarint:function(u,a){if(this.type!==Ki.Bytes)return u.push(this.readVarint(a));var h=Fd(this);for(u=u||[];this.pos127;);else if(a===Ki.Bytes)this.pos=this.readVarint()+this.pos;else if(a===Ki.Fixed32)this.pos+=4;else{if(a!==Ki.Fixed64)throw new Error(\"Unimplemented type: \"+a);this.pos+=8}},writeTag:function(u,a){this.writeVarint(u<<3|a)},realloc:function(u){for(var a=this.length||16;a268435455||u<0?function(a,h){var A,x;if(a>=0?(A=a%4294967296|0,x=a/4294967296|0):(x=~(-a/4294967296),4294967295^(A=~(-a%4294967296))?A=A+1|0:(A=0,x=x+1|0)),a>=18446744073709552e3||a<-18446744073709552e3)throw new Error(\"Given varint doesn't fit into 10 bytes\");h.realloc(10),function(E,P,D){D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,D.buf[D.pos]=127&(E>>>=7)}(A,0,h),function(E,P){var D=(7&E)<<4;P.buf[P.pos++]|=D|((E>>>=3)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E)))))}(x,h)}(u,this):(this.realloc(4),this.buf[this.pos++]=127&u|(u>127?128:0),u<=127||(this.buf[this.pos++]=127&(u>>>=7)|(u>127?128:0),u<=127||(this.buf[this.pos++]=127&(u>>>=7)|(u>127?128:0),u<=127||(this.buf[this.pos++]=u>>>7&127))))},writeSVarint:function(u){this.writeVarint(u<0?2*-u-1:2*u)},writeBoolean:function(u){this.writeVarint(!!u)},writeString:function(u){u=String(u),this.realloc(4*u.length),this.pos++;var a=this.pos;this.pos=function(A,x,E){for(var P,D,F=0;F55295&&P<57344){if(!D){P>56319||F+1===x.length?(A[E++]=239,A[E++]=191,A[E++]=189):D=P;continue}if(P<56320){A[E++]=239,A[E++]=191,A[E++]=189,D=P;continue}P=D-55296<<10|P-56320|65536,D=null}else D&&(A[E++]=239,A[E++]=191,A[E++]=189,D=null);P<128?A[E++]=P:(P<2048?A[E++]=P>>6|192:(P<65536?A[E++]=P>>12|224:(A[E++]=P>>18|240,A[E++]=P>>12&63|128),A[E++]=P>>6&63|128),A[E++]=63&P|128)}return E}(this.buf,u,this.pos);var h=this.pos-a;h>=128&&$6(a,h,this),this.pos=a-1,this.writeVarint(h),this.pos+=h},writeFloat:function(u){this.realloc(4),Z6(this.buf,u,this.pos,!0,23,4),this.pos+=4},writeDouble:function(u){this.realloc(8),Z6(this.buf,u,this.pos,!0,52,8),this.pos+=8},writeBytes:function(u){var a=u.length;this.writeVarint(a),this.realloc(a);for(var h=0;h=128&&$6(h,A,this),this.pos=h-1,this.writeVarint(A),this.pos+=A},writeMessage:function(u,a,h){this.writeTag(u,Ki.Bytes),this.writeRawMessage(a,h)},writePackedVarint:function(u,a){a.length&&this.writeMessage(u,jX,a)},writePackedSVarint:function(u,a){a.length&&this.writeMessage(u,GX,a)},writePackedBoolean:function(u,a){a.length&&this.writeMessage(u,qX,a)},writePackedFloat:function(u,a){a.length&&this.writeMessage(u,WX,a)},writePackedDouble:function(u,a){a.length&&this.writeMessage(u,HX,a)},writePackedFixed32:function(u,a){a.length&&this.writeMessage(u,ZX,a)},writePackedSFixed32:function(u,a){a.length&&this.writeMessage(u,YX,a)},writePackedFixed64:function(u,a){a.length&&this.writeMessage(u,QX,a)},writePackedSFixed64:function(u,a){a.length&&this.writeMessage(u,$X,a)},writeBytesField:function(u,a){this.writeTag(u,Ki.Bytes),this.writeBytes(a)},writeFixed32Field:function(u,a){this.writeTag(u,Ki.Fixed32),this.writeFixed32(a)},writeSFixed32Field:function(u,a){this.writeTag(u,Ki.Fixed32),this.writeSFixed32(a)},writeFixed64Field:function(u,a){this.writeTag(u,Ki.Fixed64),this.writeFixed64(a)},writeSFixed64Field:function(u,a){this.writeTag(u,Ki.Fixed64),this.writeSFixed64(a)},writeVarintField:function(u,a){this.writeTag(u,Ki.Varint),this.writeVarint(a)},writeSVarintField:function(u,a){this.writeTag(u,Ki.Varint),this.writeSVarint(a)},writeStringField:function(u,a){this.writeTag(u,Ki.Bytes),this.writeString(a)},writeFloatField:function(u,a){this.writeTag(u,Ki.Fixed32),this.writeFloat(a)},writeDoubleField:function(u,a){this.writeTag(u,Ki.Fixed64),this.writeDouble(a)},writeBooleanField:function(u,a){this.writeVarintField(u,!!a)}};var sC=c(H6);let oC=3;function XX(u,a,h){u===1&&h.readMessage(KX,a)}function KX(u,a,h){if(u===3){let{id:A,bitmap:x,width:E,height:P,left:D,top:F,advance:V}=h.readMessage(JX,{});a.push({id:A,bitmap:new kx({width:E+2*oC,height:P+2*oC},x),metrics:{width:E,height:P,left:D,top:F,advance:V}})}}function JX(u,a,h){u===1?a.id=h.readVarint():u===2?a.bitmap=h.readBytes():u===3?a.width=h.readVarint():u===4?a.height=h.readVarint():u===5?a.left=h.readSVarint():u===6?a.top=h.readSVarint():u===7&&(a.advance=h.readVarint())}let K6=oC;function J6(u){let a=0,h=0;for(let P of u)a+=P.w*P.h,h=Math.max(h,P.w);u.sort((P,D)=>D.h-P.h);let A=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(a/.95)),h),h:1/0}],x=0,E=0;for(let P of u)for(let D=A.length-1;D>=0;D--){let F=A[D];if(!(P.w>F.w||P.h>F.h)){if(P.x=F.x,P.y=F.y,E=Math.max(E,P.y+P.h),x=Math.max(x,P.x+P.w),P.w===F.w&&P.h===F.h){let V=A.pop();D=0&&A>=a&&WS[this.text.charCodeAt(A)];A--)h--;this.text=this.text.substring(a,h),this.sectionIndex=this.sectionIndex.slice(a,h)}substring(a,h){let A=new __;return A.text=this.text.substring(a,h),A.sectionIndex=this.sectionIndex.slice(a,h),A.sections=this.sections,A}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((a,h)=>Math.max(a,this.sections[h].scale),0)}addTextSection(a,h){this.text+=a.text,this.sections.push(Vx.forText(a.scale,a.fontStack||h));let A=this.sections.length-1;for(let x=0;x=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function GS(u,a,h,A,x,E,P,D,F,V,q,X,et,at,ct,mt){let bt=__.fromFeature(u,x),Et;X===n.ai.vertical&&bt.verticalizePunctuation();let{processBidirectionalText:Vt,processStyledBidirectionalText:kt}=ua;if(Vt&&bt.sections.length===1){Et=[];let ae=Vt(bt.toString(),lC(bt,V,E,a,A,at,ct));for(let Be of ae){let Je=new __;Je.text=Be,Je.sections=bt.sections;for(let Oe=0;Oe0&&Nd>Al&&(Al=Nd)}else{let Fc=Je[di.fontStack],gl=Fc&&Fc[Qo];if(gl&&gl.rect)yh=gl.rect,_u=gl.metrics;else{let Nd=Be[di.fontStack],qx=Nd&&Nd[Qo];if(!qx)continue;_u=qx.metrics}Hs=(Gs-di.scale)*Us}yu?(ae.verticalizable=!0,fa.push({glyph:Qo,imageName:vh,x:xn,y:Ln+Hs,vertical:yu,scale:di.scale,fontStack:di.fontStack,sectionIndex:da,metrics:_u,rect:yh}),xn+=zd*di.scale+ur):(fa.push({glyph:Qo,imageName:vh,x:xn,y:Ln+Hs,vertical:yu,scale:di.scale,fontStack:di.fontStack,sectionIndex:da,metrics:_u,rect:yh}),xn+=_u.advance*di.scale+ur)}fa.length!==0&&(Vs=Math.max(xn-ur,Vs),rK(fa,0,fa.length-1,Va,Al)),xn=0;let ml=Te*Gs+Al;Wa.lineOffset=Math.max(Al,ha),Ln+=ml,Hl=Math.max(ml,Hl),++Ps}var vo;let Yo=Ln-Ux,{horizontalAlign:ja,verticalAlign:Ga}=cC(He);(function(js,Gs,ha,Wa,fa,Al,ml,Ws,di){let da=(Gs-ha)*fa,Qo=0;Qo=Al!==ml?-Ws*Wa-Ux:(-Wa*di+.5)*ml;for(let Hs of js)for(let _u of Hs.positionedGlyphs)_u.x+=da,_u.y+=Qo})(ae.positionedLines,Va,ja,Ga,Vs,Hl,Te,Yo,ke.length),ae.top+=-Ga*Yo,ae.bottom=ae.top+Yo,ae.left+=-ja*Vs,ae.right=ae.left+Vs}(qt,a,h,A,Et,P,D,F,X,V,et,mt),!function(ae){for(let Be of ae)if(Be.positionedGlyphs.length!==0)return!1;return!0}(jt)&&qt}let WS={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},tK={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function eF(u,a,h,A,x,E){if(a.imageName){let P=A[a.imageName];return P?P.displaySize[0]*a.scale*Us/E+x:0}{let P=h[a.fontStack],D=P&&P[u];return D?D.metrics.advance*a.scale+x:0}}function rF(u,a,h,A){let x=Math.pow(u-a,2);return A?u=0,q=0;for(let et=0;etP.id),this.index=a.index,this.pixelRatio=a.pixelRatio,this.sourceLayerIndex=a.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Zr([]),this.placementViewportMatrix=Zr([]);let h=this.layers[0]._unevaluatedLayout._values;this.textSizeData=oF(this.zoom,h[\"text-size\"]),this.iconSizeData=oF(this.zoom,h[\"icon-size\"]);let A=this.layers[0].layout,x=A.get(\"symbol-sort-key\"),E=A.get(\"symbol-z-order\");this.canOverlap=uC(A,\"text-overlap\",\"text-allow-overlap\")!==\"never\"||uC(A,\"icon-overlap\",\"icon-allow-overlap\")!==\"never\"||A.get(\"text-ignore-placement\")||A.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=E!==\"viewport-y\"&&!x.isConstant(),this.sortFeaturesByY=(E===\"viewport-y\"||E===\"auto\"&&!this.sortFeaturesByKey)&&this.canOverlap,A.get(\"symbol-placement\")===\"point\"&&(this.writingModes=A.get(\"text-writing-mode\").map(P=>n.ai[P])),this.stateDependentLayerIds=this.layers.filter(P=>P.isStateDependent()).map(P=>P.id),this.sourceID=a.sourceID}createArrays(){this.text=new fC(new Ua(this.layers,this.zoom,a=>/^text/.test(a))),this.icon=new fC(new Ua(this.layers,this.zoom,a=>/^icon/.test(a))),this.glyphOffsetArray=new Bt,this.lineVertexArray=new Yt,this.symbolInstances=new St,this.textAnchorOffsets=new se}calculateGlyphDependencies(a,h,A,x,E){for(let P=0;P0)&&(P.value.kind!==\"constant\"||P.value.value.length>0),q=F.value.kind!==\"constant\"||!!F.value.value||Object.keys(F.parameters).length>0,X=E.get(\"symbol-sort-key\");if(this.features=[],!V&&!q)return;let et=h.iconDependencies,at=h.glyphDependencies,ct=h.availableImages,mt=new ln(this.zoom);for(let{feature:bt,id:Et,index:Vt,sourceLayerIndex:kt}of a){let jt=x._featureFilter.needGeometry,qt=S(bt,jt);if(!x._featureFilter.filter(mt,qt,A))continue;let ae,Be;if(jt||(qt.geometry=y(bt)),V){let Oe=x.getValueAndResolveTokens(\"text-field\",qt,A,ct),ke=on.factory(Oe);oK(ke)&&(this.hasRTLText=!0),(!this.hasRTLText||a0()===\"unavailable\"||this.hasRTLText&&ua.isParsed())&&(ae=VX(ke,x,qt))}if(q){let Oe=x.getValueAndResolveTokens(\"icon-image\",qt,A,ct);Be=Oe instanceof Vn?Oe:Vn.fromString(Oe)}if(!ae&&!Be)continue;let Je=this.sortFeaturesByKey?X.evaluate(qt,{},A):void 0;if(this.features.push({id:Et,text:ae,icon:Be,index:Vt,sourceLayerIndex:kt,geometry:qt.geometry,properties:bt.properties,type:nK[bt.type],sortKey:Je}),Be&&(et[Be.name]=!0),ae){let Oe=P.evaluate(qt,{},A).join(\",\"),ke=E.get(\"text-rotation-alignment\")!==\"viewport\"&&E.get(\"symbol-placement\")!==\"point\";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(n.ai.vertical)>=0;for(let Te of ae.sections)if(Te.image)et[Te.image.name]=!0;else{let He=e0(ae.toString()),Pe=Te.fontStack||Oe,Ae=at[Pe]=at[Pe]||{};this.calculateGlyphDependencies(Te.text,Ae,ke,this.allowVerticalPlacement,He)}}}E.get(\"symbol-placement\")===\"line\"&&(this.features=function(bt){let Et={},Vt={},kt=[],jt=0;function qt(Oe){kt.push(bt[Oe]),jt++}function ae(Oe,ke,Te){let He=Vt[Oe];return delete Vt[Oe],Vt[ke]=He,kt[He].geometry[0].pop(),kt[He].geometry[0]=kt[He].geometry[0].concat(Te[0]),He}function Be(Oe,ke,Te){let He=Et[ke];return delete Et[ke],Et[Oe]=He,kt[He].geometry[0].shift(),kt[He].geometry[0]=Te[0].concat(kt[He].geometry[0]),He}function Je(Oe,ke,Te){let He=Te?ke[0][ke[0].length-1]:ke[0][0];return`${Oe}:${He.x}:${He.y}`}for(let Oe=0;OeOe.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((bt,Et)=>bt.sortKey-Et.sortKey)}update(a,h,A){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(a,h,this.layers,A),this.icon.programConfigurations.updatePaintArrays(a,h,this.layers,A))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(a){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(a),this.iconCollisionBox.upload(a)),this.text.upload(a,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(a,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(a,h){let A=this.lineVertexArray.length;if(a.segment!==void 0){let x=a.dist(h[a.segment+1]),E=a.dist(h[a.segment]),P={};for(let D=a.segment+1;D=0;D--)P[D]={x:h[D].x,y:h[D].y,tileUnitDistanceFromAnchor:E},D>0&&(E+=h[D-1].dist(h[D]));for(let D=0;D0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(a,h){let A=a.placedSymbolArray.get(h),x=A.vertexStartIndex+4*A.numGlyphs;for(let E=A.vertexStartIndex;Ex[D]-x[F]||E[F]-E[D]),P}addToSortKeyRanges(a,h){let A=this.sortKeyRanges[this.sortKeyRanges.length-1];A&&A.sortKey===h?A.symbolInstanceEnd=a+1:this.sortKeyRanges.push({sortKey:h,symbolInstanceStart:a,symbolInstanceEnd:a+1})}sortFeatures(a){if(this.sortFeaturesByY&&this.sortedAngle!==a&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(a),this.sortedAngle=a,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let h of this.symbolInstanceIndexes){let A=this.symbolInstances.get(h);this.featureSortOrder.push(A.featureIndex),[A.rightJustifiedTextSymbolIndex,A.centerJustifiedTextSymbolIndex,A.leftJustifiedTextSymbolIndex].forEach((x,E,P)=>{x>=0&&P.indexOf(x)===E&&this.addIndicesForPlacedSymbol(this.text,x)}),A.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,A.verticalPlacedTextSymbolIndex),A.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,A.placedIconSymbolIndex),A.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,A.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let aF,lF;Ue(\"SymbolBucket\",y_,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),y_.MAX_GLYPHS=65535,y_.addDynamicAttributes=hC;var pC={get paint(){return lF=lF||new Gn({\"icon-opacity\":new fr(te.paint_symbol[\"icon-opacity\"]),\"icon-color\":new fr(te.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new fr(te.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new fr(te.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new fr(te.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new rr(te.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new rr(te.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new fr(te.paint_symbol[\"text-opacity\"]),\"text-color\":new fr(te.paint_symbol[\"text-color\"],{runtimeType:Os,getOverride:u=>u.textColor,hasOverride:u=>!!u.textColor}),\"text-halo-color\":new fr(te.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new fr(te.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new fr(te.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new rr(te.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new rr(te.paint_symbol[\"text-translate-anchor\"])})},get layout(){return aF=aF||new Gn({\"symbol-placement\":new rr(te.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new rr(te.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new rr(te.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new fr(te.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new rr(te.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new rr(te.layout_symbol[\"icon-allow-overlap\"]),\"icon-overlap\":new rr(te.layout_symbol[\"icon-overlap\"]),\"icon-ignore-placement\":new rr(te.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new rr(te.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new rr(te.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new fr(te.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new rr(te.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new rr(te.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new fr(te.layout_symbol[\"icon-image\"]),\"icon-rotate\":new fr(te.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new fr(te.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new rr(te.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new fr(te.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new fr(te.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new rr(te.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new rr(te.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new rr(te.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new fr(te.layout_symbol[\"text-field\"]),\"text-font\":new fr(te.layout_symbol[\"text-font\"]),\"text-size\":new fr(te.layout_symbol[\"text-size\"]),\"text-max-width\":new fr(te.layout_symbol[\"text-max-width\"]),\"text-line-height\":new rr(te.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new fr(te.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new fr(te.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new fr(te.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new rr(te.layout_symbol[\"text-variable-anchor\"]),\"text-variable-anchor-offset\":new fr(te.layout_symbol[\"text-variable-anchor-offset\"]),\"text-anchor\":new fr(te.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new rr(te.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new rr(te.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new fr(te.layout_symbol[\"text-rotate\"]),\"text-padding\":new rr(te.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new rr(te.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new fr(te.layout_symbol[\"text-transform\"]),\"text-offset\":new fr(te.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new rr(te.layout_symbol[\"text-allow-overlap\"]),\"text-overlap\":new rr(te.layout_symbol[\"text-overlap\"]),\"text-ignore-placement\":new rr(te.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new rr(te.layout_symbol[\"text-optional\"])})}};class cF{constructor(a){if(a.property.overrides===void 0)throw new Error(\"overrides must be provided to instantiate FormatSectionOverride class\");this.type=a.property.overrides?a.property.overrides.runtimeType:Ia,this.defaultValue=a}evaluate(a){if(a.formattedSection){let h=this.defaultValue.property.overrides;if(h&&h.hasOverride(a.formattedSection))return h.getOverride(a.formattedSection)}return a.feature&&a.featureState?this.defaultValue.evaluate(a.feature,a.featureState):this.defaultValue.property.specification.default}eachChild(a){this.defaultValue.isConstant()||a(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ue(\"FormatSectionOverride\",cF,{omit:[\"defaultValue\"]});class qS extends Ui{constructor(a){super(a,pC)}recalculate(a,h){if(super.recalculate(a,h),this.layout.get(\"icon-rotation-alignment\")===\"auto\"&&(this.layout._values[\"icon-rotation-alignment\"]=this.layout.get(\"symbol-placement\")!==\"point\"?\"map\":\"viewport\"),this.layout.get(\"text-rotation-alignment\")===\"auto\"&&(this.layout._values[\"text-rotation-alignment\"]=this.layout.get(\"symbol-placement\")!==\"point\"?\"map\":\"viewport\"),this.layout.get(\"text-pitch-alignment\")===\"auto\"&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")===\"map\"?\"map\":\"viewport\"),this.layout.get(\"icon-pitch-alignment\")===\"auto\"&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),this.layout.get(\"symbol-placement\")===\"point\"){let A=this.layout.get(\"text-writing-mode\");if(A){let x=[];for(let E of A)x.indexOf(E)<0&&x.push(E);this.layout._values[\"text-writing-mode\"]=x}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"]}this._setPaintOverrides()}getValueAndResolveTokens(a,h,A,x){let E=this.layout.get(a).evaluate(h,{},A,x),P=this._unevaluatedLayout._values[a];return P.isDataDriven()||Hp(P.value)||!E?E:function(D,F){return F.replace(/{([^{}]+)}/g,(V,q)=>D&&q in D?String(D[q]):\"\")}(h.properties,E)}createBucket(a){return new y_(a)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error(\"Should take a different path in FeatureIndex\")}_setPaintOverrides(){for(let a of pC.paint.overridableProperties){if(!qS.hasPaintOverride(this.layout,a))continue;let h=this.paint.get(a),A=new cF(h),x=new Ym(A,h.property.specification),E=null;E=h.value.kind===\"constant\"||h.value.kind===\"source\"?new Qm(\"source\",x):new wt(\"composite\",x,h.value.zoomStops),this.paint._values[a]=new _o(h.property,E,h.parameters)}}_handleOverridablePaintPropertyUpdate(a,h,A){return!(!this.layout||h.isDataDriven()||A.isDataDriven())&&qS.hasPaintOverride(this.layout,a)}static hasPaintOverride(a,h){let A=a.get(\"text-field\"),x=pC.paint.properties[h],E=!1,P=D=>{for(let F of D)if(x.overrides&&x.overrides.hasOverride(F))return void(E=!0)};if(A.value.kind===\"constant\"&&A.value.value instanceof on)P(A.value.value.sections);else if(A.value.kind===\"source\"){let D=V=>{E||(V instanceof Nl&&Yi(V.value)===gt?P(V.value.sections):V instanceof Si?P(V.sections):V.eachChild(D))},F=A.value;F._styleExpression&&D(F._styleExpression.expression)}return E}}let uF;var aK={get paint(){return uF=uF||new Gn({\"background-color\":new rr(te.paint_background[\"background-color\"]),\"background-pattern\":new nA(te.paint_background[\"background-pattern\"]),\"background-opacity\":new rr(te.paint_background[\"background-opacity\"])})}};class lK extends Ui{constructor(a){super(a,aK)}}let hF;var cK={get paint(){return hF=hF||new Gn({\"raster-opacity\":new rr(te.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new rr(te.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new rr(te.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new rr(te.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new rr(te.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new rr(te.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new rr(te.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new rr(te.paint_raster[\"raster-fade-duration\"])})}};class uK extends Ui{constructor(a){super(a,cK)}}class hK extends Ui{constructor(a){super(a,{}),this.onAdd=h=>{this.implementation.onAdd&&this.implementation.onAdd(h,h.painter.context.gl)},this.onRemove=h=>{this.implementation.onRemove&&this.implementation.onRemove(h,h.painter.context.gl)},this.implementation=a}is3D(){return this.implementation.renderingMode===\"3d\"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error(\"Custom layers cannot be serialized\")}}class fK{constructor(a){this._callback=a,this._triggered=!1,typeof MessageChannel<\"u\"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._callback()},0))}remove(){delete this._channel,this._callback=()=>{}}}let AC=63710088e-1;class uA{constructor(a,h){if(isNaN(a)||isNaN(h))throw new Error(`Invalid LngLat object: (${a}, ${h})`);if(this.lng=+a,this.lat=+h,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new uA(Pt(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(a){let h=Math.PI/180,A=this.lat*h,x=a.lat*h,E=Math.sin(A)*Math.sin(x)+Math.cos(A)*Math.cos(x)*Math.cos((a.lng-this.lng)*h);return AC*Math.acos(Math.min(E,1))}static convert(a){if(a instanceof uA)return a;if(Array.isArray(a)&&(a.length===2||a.length===3))return new uA(Number(a[0]),Number(a[1]));if(!Array.isArray(a)&&typeof a==\"object\"&&a!==null)return new uA(Number(\"lng\"in a?a.lng:a.lon),Number(a.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")}}let fF=2*Math.PI*AC;function dF(u){return fF*Math.cos(u*Math.PI/180)}function pF(u){return(180+u)/360}function AF(u){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+u*Math.PI/360)))/360}function mF(u,a){return u/dF(a)}function gF(u){return 360*u-180}function mC(u){return 360/Math.PI*Math.atan(Math.exp((180-360*u)*Math.PI/180))-90}class ZS{constructor(a,h,A=0){this.x=+a,this.y=+h,this.z=+A}static fromLngLat(a,h=0){let A=uA.convert(a);return new ZS(pF(A.lng),AF(A.lat),mF(h,A.lat))}toLngLat(){return new uA(gF(this.x),mC(this.y))}toAltitude(){return this.z*dF(mC(this.y))}meterInMercatorCoordinateUnits(){return 1/fF*(a=mC(this.y),1/Math.cos(a*Math.PI/180));var a}}function _F(u,a,h){var A=2*Math.PI*6378137/256/Math.pow(2,h);return[u*A-2*Math.PI*6378137/2,a*A-2*Math.PI*6378137/2]}class gC{constructor(a,h,A){if(a<0||a>25||A<0||A>=Math.pow(2,a)||h<0||h>=Math.pow(2,a))throw new Error(`x=${h}, y=${A}, z=${a} outside of bounds. 0<=x<${Math.pow(2,a)}, 0<=y<${Math.pow(2,a)} 0<=z<=25 `);this.z=a,this.x=h,this.y=A,this.key=Gx(0,a,a,h,A)}equals(a){return this.z===a.z&&this.x===a.x&&this.y===a.y}url(a,h,A){let x=(P=this.y,D=this.z,F=_F(256*(E=this.x),256*(P=Math.pow(2,D)-P-1),D),V=_F(256*(E+1),256*(P+1),D),F[0]+\",\"+F[1]+\",\"+V[0]+\",\"+V[1]);var E,P,D,F,V;let q=function(X,et,at){let ct,mt=\"\";for(let bt=X;bt>0;bt--)ct=1<1?\"@2x\":\"\").replace(/{quadkey}/g,q).replace(/{bbox-epsg-3857}/g,x)}isChildOf(a){let h=this.z-a.z;return h>0&&a.x===this.x>>h&&a.y===this.y>>h}getTilePoint(a){let h=Math.pow(2,this.z);return new w((a.x*h-this.x)*Xi,(a.y*h-this.y)*Xi)}toString(){return`${this.z}/${this.x}/${this.y}`}}class yF{constructor(a,h){this.wrap=a,this.canonical=h,this.key=Gx(a,h.z,h.z,h.x,h.y)}}class Bc{constructor(a,h,A,x,E){if(a= z; overscaledZ = ${a}; z = ${A}`);this.overscaledZ=a,this.wrap=h,this.canonical=new gC(A,+x,+E),this.key=Gx(h,a,A,x,E)}clone(){return new Bc(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(a){return this.overscaledZ===a.overscaledZ&&this.wrap===a.wrap&&this.canonical.equals(a.canonical)}scaledTo(a){if(a>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${a}; overscaledZ = ${this.overscaledZ}`);let h=this.canonical.z-a;return a>this.canonical.z?new Bc(a,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Bc(a,this.wrap,a,this.canonical.x>>h,this.canonical.y>>h)}calculateScaledKey(a,h){if(a>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${a}; overscaledZ = ${this.overscaledZ}`);let A=this.canonical.z-a;return a>this.canonical.z?Gx(this.wrap*+h,a,this.canonical.z,this.canonical.x,this.canonical.y):Gx(this.wrap*+h,a,a,this.canonical.x>>A,this.canonical.y>>A)}isChildOf(a){if(a.wrap!==this.wrap)return!1;let h=this.canonical.z-a.canonical.z;return a.overscaledZ===0||a.overscaledZ>h&&a.canonical.y===this.canonical.y>>h}children(a){if(this.overscaledZ>=a)return[new Bc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let h=this.canonical.z+1,A=2*this.canonical.x,x=2*this.canonical.y;return[new Bc(h,this.wrap,h,A,x),new Bc(h,this.wrap,h,A+1,x),new Bc(h,this.wrap,h,A,x+1),new Bc(h,this.wrap,h,A+1,x+1)]}isLessThan(a){return this.wrapa.wrap)&&(this.overscaledZa.overscaledZ)&&(this.canonical.xa.canonical.x)&&this.canonical.ythis.max&&(this.max=X),X=this.dim+1||h<-1||h>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(h+1)*this.stride+(a+1)}unpack(a,h,A){return a*this.redFactor+h*this.greenFactor+A*this.blueFactor-this.baseShift}getPixels(){return new Oc({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(a,h,A){if(this.dim!==a.dim)throw new Error(\"dem dimension mismatch\");let x=h*this.dim,E=h*this.dim+this.dim,P=A*this.dim,D=A*this.dim+this.dim;switch(h){case-1:x=E-1;break;case 1:E=x+1}switch(A){case-1:P=D-1;break;case 1:D=P+1}let F=-h*this.dim,V=-A*this.dim;for(let q=P;q=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${a} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[a]}}class bF{constructor(a,h,A,x,E){this.type=\"Feature\",this._vectorTileFeature=a,a._z=h,a._x=A,a._y=x,this.properties=a.properties,this.id=E}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(a){this._geometry=a}toJSON(){let a={geometry:this.geometry};for(let h in this)h!==\"_geometry\"&&h!==\"_vectorTileFeature\"&&(a[h]=this[h]);return a}}class wF{constructor(a,h){this.tileID=a,this.x=a.canonical.x,this.y=a.canonical.y,this.z=a.canonical.z,this.grid=new za(Xi,16,0),this.grid3D=new za(Xi,16,0),this.featureIndexArray=new he,this.promoteId=h}insert(a,h,A,x,E,P){let D=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(A,x,E);let F=P?this.grid3D:this.grid;for(let V=0;V=0&&X[3]>=0&&F.insert(D,X[0],X[1],X[2],X[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new aA.VectorTile(new sC(this.rawTileData)).layers,this.sourceLayerCoder=new xF(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers}query(a,h,A,x){this.loadVTLayers();let E=a.params||{},P=Xi/a.tileSize/a.scale,D=Xm(E.filter),F=a.queryGeometry,V=a.queryPadding*P,q=TF(F),X=this.grid.query(q.minX-V,q.minY-V,q.maxX+V,q.maxY+V),et=TF(a.cameraQueryGeometry),at=this.grid3D.query(et.minX-V,et.minY-V,et.maxX+V,et.maxY+V,(bt,Et,Vt,kt)=>function(jt,qt,ae,Be,Je){for(let ke of jt)if(qt<=ke.x&&ae<=ke.y&&Be>=ke.x&&Je>=ke.y)return!0;let Oe=[new w(qt,ae),new w(qt,Je),new w(Be,Je),new w(Be,ae)];if(jt.length>2){for(let ke of Oe)if(ie(jt,ke))return!0}for(let ke=0;ke(kt||(kt=y(jt)),qt.queryIntersectsFeature(F,jt,ae,kt,this.z,a.transform,P,a.pixelPosMatrix)))}return ct}loadMatchingFeature(a,h,A,x,E,P,D,F,V,q,X){let et=this.bucketLayerIDs[h];if(P&&!function(bt,Et){for(let Vt=0;Vt=0)return!0;return!1}(P,et))return;let at=this.sourceLayerCoder.decode(A),ct=this.vtLayers[at].feature(x);if(E.needGeometry){let bt=S(ct,!0);if(!E.filter(new ln(this.tileID.overscaledZ),bt,this.tileID.canonical))return}else if(!E.filter(new ln(this.tileID.overscaledZ),ct))return;let mt=this.getId(ct,at);for(let bt=0;bt{let D=a instanceof iA?a.get(P):null;return D&&D.evaluate?D.evaluate(h,A,x):D})}function TF(u){let a=1/0,h=1/0,A=-1/0,x=-1/0;for(let E of u)a=Math.min(a,E.x),h=Math.min(h,E.y),A=Math.max(A,E.x),x=Math.max(x,E.y);return{minX:a,minY:h,maxX:A,maxY:x}}function dK(u,a){return a-u}function MF(u,a,h,A,x){let E=[];for(let P=0;P=A&&X.x>=A||(q.x>=A?q=new w(A,q.y+(A-q.x)/(X.x-q.x)*(X.y-q.y))._round():X.x>=A&&(X=new w(A,q.y+(A-q.x)/(X.x-q.x)*(X.y-q.y))._round()),q.y>=x&&X.y>=x||(q.y>=x?q=new w(q.x+(x-q.y)/(X.y-q.y)*(X.x-q.x),x)._round():X.y>=x&&(X=new w(q.x+(x-q.y)/(X.y-q.y)*(X.x-q.x),x)._round()),F&&q.equals(F[F.length-1])||(F=[q],E.push(F)),F.push(X)))))}}return E}Ue(\"FeatureIndex\",wF,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class hA extends w{constructor(a,h,A,x){super(a,h),this.angle=A,x!==void 0&&(this.segment=x)}clone(){return new hA(this.x,this.y,this.angle,this.segment)}}function EF(u,a,h,A,x){if(a.segment===void 0||h===0)return!0;let E=a,P=a.segment+1,D=0;for(;D>-h/2;){if(P--,P<0)return!1;D-=u[P].dist(E),E=u[P]}D+=u[P].dist(u[P+1]),P++;let F=[],V=0;for(;DA;)V-=F.shift().angleDelta;if(V>x)return!1;P++,D+=q.dist(X)}return!0}function PF(u){let a=0;for(let h=0;hV){let ct=(V-F)/at,mt=Ra.number(X.x,et.x,ct),bt=Ra.number(X.y,et.y,ct),Et=new hA(mt,bt,et.angleTo(X),q);return Et._round(),!P||EF(u,Et,D,P,a)?Et:void 0}F+=at}}function AK(u,a,h,A,x,E,P,D,F){let V=IF(A,E,P),q=CF(A,x),X=q*P,et=u[0].x===0||u[0].x===F||u[0].y===0||u[0].y===F;return a-X
=0&&jt=0&&qt=0&&et+V<=q){let ae=new hA(jt,qt,Vt,ct);ae._round(),A&&!EF(u,ae,E,A,x)||at.push(ae)}}X+=Et}return D||at.length||P||(at=LF(u,X/2,h,A,x,E,P,!0,F)),at}Ue(\"Anchor\",hA);let v_=pl;function kF(u,a,h,A){let x=[],E=u.image,P=E.pixelRatio,D=E.paddedRect.w-2*v_,F=E.paddedRect.h-2*v_,V=u.right-u.left,q=u.bottom-u.top,X=E.stretchX||[[0,D]],et=E.stretchY||[[0,F]],at=(Te,He)=>Te+He[1]-He[0],ct=X.reduce(at,0),mt=et.reduce(at,0),bt=D-ct,Et=F-mt,Vt=0,kt=ct,jt=0,qt=mt,ae=0,Be=bt,Je=0,Oe=Et;if(E.content&&A){let Te=E.content;Vt=YS(X,0,Te[0]),jt=YS(et,0,Te[1]),kt=YS(X,Te[0],Te[2]),qt=YS(et,Te[1],Te[3]),ae=Te[0]-Vt,Je=Te[1]-jt,Be=Te[2]-Te[0]-kt,Oe=Te[3]-Te[1]-qt}let ke=(Te,He,Pe,Ae)=>{let ur=QS(Te.stretch-Vt,kt,V,u.left),ir=$S(Te.fixed-ae,Be,Te.stretch,ct),ri=QS(He.stretch-jt,qt,q,u.top),xn=$S(He.fixed-Je,Oe,He.stretch,mt),Ln=QS(Pe.stretch-Vt,kt,V,u.left),Vs=$S(Pe.fixed-ae,Be,Pe.stretch,ct),Hl=QS(Ae.stretch-jt,qt,q,u.top),Va=$S(Ae.fixed-Je,Oe,Ae.stretch,mt),Ps=new w(ur,ri),vo=new w(Ln,ri),Yo=new w(Ln,Hl),ja=new w(ur,Hl),Ga=new w(ir/P,xn/P),js=new w(Vs/P,Va/P),Gs=a*Math.PI/180;if(Gs){let fa=Math.sin(Gs),Al=Math.cos(Gs),ml=[Al,-fa,fa,Al];Ps._matMult(ml),vo._matMult(ml),ja._matMult(ml),Yo._matMult(ml)}let ha=Te.stretch+Te.fixed,Wa=He.stretch+He.fixed;return{tl:Ps,tr:vo,bl:ja,br:Yo,tex:{x:E.paddedRect.x+v_+ha,y:E.paddedRect.y+v_+Wa,w:Pe.stretch+Pe.fixed-ha,h:Ae.stretch+Ae.fixed-Wa},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Ga,pixelOffsetBR:js,minFontScaleX:Be/P/V,minFontScaleY:Oe/P/q,isSDF:h}};if(A&&(E.stretchX||E.stretchY)){let Te=RF(X,bt,ct),He=RF(et,Et,mt);for(let Pe=0;Pe0&&(ct=Math.max(10,ct),this.circleDiameter=ct)}else{let X=P.top*D-F[0],et=P.bottom*D+F[2],at=P.left*D-F[3],ct=P.right*D+F[1],mt=P.collisionPadding;if(mt&&(at-=mt[0]*D,X-=mt[1]*D,ct+=mt[2]*D,et+=mt[3]*D),q){let bt=new w(at,X),Et=new w(ct,X),Vt=new w(at,et),kt=new w(ct,et),jt=q*Math.PI/180;bt._rotate(jt),Et._rotate(jt),Vt._rotate(jt),kt._rotate(jt),at=Math.min(bt.x,Et.x,Vt.x,kt.x),ct=Math.max(bt.x,Et.x,Vt.x,kt.x),X=Math.min(bt.y,Et.y,Vt.y,kt.y),et=Math.max(bt.y,Et.y,Vt.y,kt.y)}a.emplaceBack(h.x,h.y,at,X,ct,et,A,x,E)}this.boxEndIndex=a.length}}class mK{constructor(a=[],h=gK){if(this.data=a,this.length=this.data.length,this.compare=h,this.length>0)for(let A=(this.length>>1)-1;A>=0;A--)this._down(A)}push(a){this.data.push(a),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;let a=this.data[0],h=this.data.pop();return this.length--,this.length>0&&(this.data[0]=h,this._down(0)),a}peek(){return this.data[0]}_up(a){let{data:h,compare:A}=this,x=h[a];for(;a>0;){let E=a-1>>1,P=h[E];if(A(x,P)>=0)break;h[a]=P,a=E}h[a]=x}_down(a){let{data:h,compare:A}=this,x=this.length>>1,E=h[a];for(;a=0)break;h[a]=D,a=P}h[a]=E}}function gK(u,a){return ua?1:0}function _K(u,a=1,h=!1){let A=1/0,x=1/0,E=-1/0,P=-1/0,D=u[0];for(let at=0;atE)&&(E=ct.x),(!at||ct.y>P)&&(P=ct.y)}let F=Math.min(E-A,P-x),V=F/2,q=new mK([],yK);if(F===0)return new w(A,x);for(let at=A;atX.d||!X.d)&&(X=at,h&&console.log(\"found best %d after %d probes\",Math.round(1e4*at.d)/1e4,et)),at.max-X.d<=a||(V=at.h/2,q.push(new x_(at.p.x-V,at.p.y-V,V,u)),q.push(new x_(at.p.x+V,at.p.y-V,V,u)),q.push(new x_(at.p.x-V,at.p.y+V,V,u)),q.push(new x_(at.p.x+V,at.p.y+V,V,u)),et+=4)}return h&&(console.log(`num probes: ${et}`),console.log(`best distance: ${X.d}`)),X.p}function yK(u,a){return a.max-u.max}function x_(u,a,h,A){this.p=new w(u,a),this.h=h,this.d=function(x,E){let P=!1,D=1/0;for(let F=0;Fx.y!=ct.y>x.y&&x.x<(ct.x-at.x)*(x.y-at.y)/(ct.y-at.y)+at.x&&(P=!P),D=Math.min(D,Gt(x,at,ct))}}return(P?1:-1)*Math.sqrt(D)}(this.p,A),this.max=this.d+this.h*Math.SQRT2}var Zo;n.aq=void 0,(Zo=n.aq||(n.aq={}))[Zo.center=1]=\"center\",Zo[Zo.left=2]=\"left\",Zo[Zo.right=3]=\"right\",Zo[Zo.top=4]=\"top\",Zo[Zo.bottom=5]=\"bottom\",Zo[Zo[\"top-left\"]=6]=\"top-left\",Zo[Zo[\"top-right\"]=7]=\"top-right\",Zo[Zo[\"bottom-left\"]=8]=\"bottom-left\",Zo[Zo[\"bottom-right\"]=9]=\"bottom-right\";let fA=7,_C=Number.POSITIVE_INFINITY;function DF(u,a){return a[1]!==_C?function(h,A,x){let E=0,P=0;switch(A=Math.abs(A),x=Math.abs(x),h){case\"top-right\":case\"top-left\":case\"top\":P=x-fA;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":P=-x+fA}switch(h){case\"top-right\":case\"bottom-right\":case\"right\":E=-A;break;case\"top-left\":case\"bottom-left\":case\"left\":E=A}return[E,P]}(u,a[0],a[1]):function(h,A){let x=0,E=0;A<0&&(A=0);let P=A/Math.SQRT2;switch(h){case\"top-right\":case\"top-left\":E=P-fA;break;case\"bottom-right\":case\"bottom-left\":E=-P+fA;break;case\"bottom\":E=-A+fA;break;case\"top\":E=A-fA}switch(h){case\"top-right\":case\"bottom-right\":x=-P;break;case\"top-left\":case\"bottom-left\":x=P;break;case\"left\":x=A;break;case\"right\":x=-A}return[x,E]}(u,a[0])}function OF(u,a,h){var A;let x=u.layout,E=(A=x.get(\"text-variable-anchor-offset\"))===null||A===void 0?void 0:A.evaluate(a,{},h);if(E){let D=E.values,F=[];for(let V=0;Vet*Us);q.startsWith(\"top\")?X[1]-=fA:q.startsWith(\"bottom\")&&(X[1]+=fA),F[V+1]=X}return new Vo(F)}let P=x.get(\"text-variable-anchor\");if(P){let D;D=u._unevaluatedLayout.getValue(\"text-radial-offset\")!==void 0?[x.get(\"text-radial-offset\").evaluate(a,{},h)*Us,_C]:x.get(\"text-offset\").evaluate(a,{},h).map(V=>V*Us);let F=[];for(let V of P)F.push(V,DF(V,D));return new Vo(F)}return null}function yC(u){switch(u){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function vK(u,a,h,A,x,E,P,D,F,V,q){let X=E.textMaxSize.evaluate(a,{});X===void 0&&(X=P);let et=u.layers[0].layout,at=et.get(\"icon-offset\").evaluate(a,{},q),ct=FF(h.horizontal),mt=P/24,bt=u.tilePixelRatio*mt,Et=u.tilePixelRatio*X/24,Vt=u.tilePixelRatio*D,kt=u.tilePixelRatio*et.get(\"symbol-spacing\"),jt=et.get(\"text-padding\")*u.tilePixelRatio,qt=function(Ae,ur,ir,ri=1){let xn=Ae.get(\"icon-padding\").evaluate(ur,{},ir),Ln=xn&&xn.values;return[Ln[0]*ri,Ln[1]*ri,Ln[2]*ri,Ln[3]*ri]}(et,a,q,u.tilePixelRatio),ae=et.get(\"text-max-angle\")/180*Math.PI,Be=et.get(\"text-rotation-alignment\")!==\"viewport\"&&et.get(\"symbol-placement\")!==\"point\",Je=et.get(\"icon-rotation-alignment\")===\"map\"&&et.get(\"symbol-placement\")!==\"point\",Oe=et.get(\"symbol-placement\"),ke=kt/2,Te=et.get(\"icon-text-fit\"),He;A&&Te!==\"none\"&&(u.allowVerticalPlacement&&h.vertical&&(He=sF(A,h.vertical,Te,et.get(\"icon-text-fit-padding\"),at,mt)),ct&&(A=sF(A,ct,Te,et.get(\"icon-text-fit-padding\"),at,mt)));let Pe=(Ae,ur)=>{ur.x<0||ur.x>=Xi||ur.y<0||ur.y>=Xi||function(ir,ri,xn,Ln,Vs,Hl,Va,Ps,vo,Yo,ja,Ga,js,Gs,ha,Wa,fa,Al,ml,Ws,di,da,Qo,Hs,_u){let yh=ir.addToLineVertexArray(ri,xn),vh,zd,yu,Fc,gl=0,Nd=0,qx=0,VF=0,EC=-1,PC=-1,Ud={},jF=_h(\"\");if(ir.allowVerticalPlacement&&Ln.vertical){let pa=Ps.layout.get(\"text-rotate\").evaluate(di,{},Hs)+90;yu=new XS(vo,ri,Yo,ja,Ga,Ln.vertical,js,Gs,ha,pa),Va&&(Fc=new XS(vo,ri,Yo,ja,Ga,Va,fa,Al,ha,pa))}if(Vs){let pa=Ps.layout.get(\"icon-rotate\").evaluate(di,{}),zc=Ps.layout.get(\"icon-text-fit\")!==\"none\",h0=kF(Vs,pa,Qo,zc),bh=Va?kF(Va,pa,Qo,zc):void 0;zd=new XS(vo,ri,Yo,ja,Ga,Vs,fa,Al,!1,pa),gl=4*h0.length;let f0=ir.iconSizeData,Mf=null;f0.kind===\"source\"?(Mf=[Tf*Ps.layout.get(\"icon-size\").evaluate(di,{})],Mf[0]>cA&&tr(`${ir.layerIds[0]}: Value for \"icon-size\" is >= ${jx}. Reduce your \"icon-size\".`)):f0.kind===\"composite\"&&(Mf=[Tf*da.compositeIconSizes[0].evaluate(di,{},Hs),Tf*da.compositeIconSizes[1].evaluate(di,{},Hs)],(Mf[0]>cA||Mf[1]>cA)&&tr(`${ir.layerIds[0]}: Value for \"icon-size\" is >= ${jx}. Reduce your \"icon-size\".`)),ir.addSymbols(ir.icon,h0,Mf,Ws,ml,di,n.ai.none,ri,yh.lineStartIndex,yh.lineLength,-1,Hs),EC=ir.icon.placedSymbolArray.length-1,bh&&(Nd=4*bh.length,ir.addSymbols(ir.icon,bh,Mf,Ws,ml,di,n.ai.vertical,ri,yh.lineStartIndex,yh.lineLength,-1,Hs),PC=ir.icon.placedSymbolArray.length-1)}let GF=Object.keys(Ln.horizontal);for(let pa of GF){let zc=Ln.horizontal[pa];if(!vh){jF=_h(zc.text);let bh=Ps.layout.get(\"text-rotate\").evaluate(di,{},Hs);vh=new XS(vo,ri,Yo,ja,Ga,zc,js,Gs,ha,bh)}let h0=zc.positionedLines.length===1;if(qx+=BF(ir,ri,zc,Hl,Ps,ha,di,Wa,yh,Ln.vertical?n.ai.horizontal:n.ai.horizontalOnly,h0?GF:[pa],Ud,EC,da,Hs),h0)break}Ln.vertical&&(VF+=BF(ir,ri,Ln.vertical,Hl,Ps,ha,di,Wa,yh,n.ai.vertical,[\"vertical\"],Ud,PC,da,Hs));let wK=vh?vh.boxStartIndex:ir.collisionBoxArray.length,SK=vh?vh.boxEndIndex:ir.collisionBoxArray.length,TK=yu?yu.boxStartIndex:ir.collisionBoxArray.length,MK=yu?yu.boxEndIndex:ir.collisionBoxArray.length,EK=zd?zd.boxStartIndex:ir.collisionBoxArray.length,PK=zd?zd.boxEndIndex:ir.collisionBoxArray.length,IK=Fc?Fc.boxStartIndex:ir.collisionBoxArray.length,CK=Fc?Fc.boxEndIndex:ir.collisionBoxArray.length,xh=-1,JS=(pa,zc)=>pa&&pa.circleDiameter?Math.max(pa.circleDiameter,zc):zc;xh=JS(vh,xh),xh=JS(yu,xh),xh=JS(zd,xh),xh=JS(Fc,xh);let WF=xh>-1?1:0;WF&&(xh*=_u/Us),ir.glyphOffsetArray.length>=y_.MAX_GLYPHS&&tr(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),di.sortKey!==void 0&&ir.addToSortKeyRanges(ir.symbolInstances.length,di.sortKey);let LK=OF(Ps,di,Hs),[kK,RK]=function(pa,zc){let h0=pa.length,bh=zc?.values;if(bh?.length>0)for(let f0=0;f0=0?Ud.right:-1,Ud.center>=0?Ud.center:-1,Ud.left>=0?Ud.left:-1,Ud.vertical||-1,EC,PC,jF,wK,SK,TK,MK,EK,PK,IK,CK,Yo,qx,VF,gl,Nd,WF,0,js,xh,kK,RK)}(u,ur,Ae,h,A,x,He,u.layers[0],u.collisionBoxArray,a.index,a.sourceLayerIndex,u.index,bt,[jt,jt,jt,jt],Be,F,Vt,qt,Je,at,a,E,V,q,P)};if(Oe===\"line\")for(let Ae of MF(a.geometry,0,0,Xi,Xi)){let ur=AK(Ae,kt,ae,h.vertical||ct,A,24,Et,u.overscaling,Xi);for(let ir of ur)ct&&xK(u,ct.text,ke,ir)||Pe(Ae,ir)}else if(Oe===\"line-center\"){for(let Ae of a.geometry)if(Ae.length>1){let ur=pK(Ae,ae,h.vertical||ct,A,24,Et);ur&&Pe(Ae,ur)}}else if(a.type===\"Polygon\")for(let Ae of XI(a.geometry,0)){let ur=_K(Ae,16);Pe(Ae[0],new hA(ur.x,ur.y,0))}else if(a.type===\"LineString\")for(let Ae of a.geometry)Pe(Ae,new hA(Ae[0].x,Ae[0].y,0));else if(a.type===\"Point\")for(let Ae of a.geometry)for(let ur of Ae)Pe([ur],new hA(ur.x,ur.y,0))}function BF(u,a,h,A,x,E,P,D,F,V,q,X,et,at,ct){let mt=function(Vt,kt,jt,qt,ae,Be,Je,Oe){let ke=qt.layout.get(\"text-rotate\").evaluate(Be,{})*Math.PI/180,Te=[];for(let He of kt.positionedLines)for(let Pe of He.positionedGlyphs){if(!Pe.rect)continue;let Ae=Pe.rect||{},ur=K6+1,ir=!0,ri=1,xn=0,Ln=(ae||Oe)&&Pe.vertical,Vs=Pe.metrics.advance*Pe.scale/2;if(Oe&&kt.verticalizable&&(xn=He.lineOffset/2-(Pe.imageName?-(Us-Pe.metrics.width*Pe.scale)/2:(Pe.scale-1)*Us)),Pe.imageName){let Ws=Je[Pe.imageName];ir=Ws.sdf,ri=Ws.pixelRatio,ur=pl/ri}let Hl=ae?[Pe.x+Vs,Pe.y]:[0,0],Va=ae?[0,0]:[Pe.x+Vs+jt[0],Pe.y+jt[1]-xn],Ps=[0,0];Ln&&(Ps=Va,Va=[0,0]);let vo=Pe.metrics.isDoubleResolution?2:1,Yo=(Pe.metrics.left-ur)*Pe.scale-Vs+Va[0],ja=(-Pe.metrics.top-ur)*Pe.scale+Va[1],Ga=Yo+Ae.w/vo*Pe.scale/ri,js=ja+Ae.h/vo*Pe.scale/ri,Gs=new w(Yo,ja),ha=new w(Ga,ja),Wa=new w(Yo,js),fa=new w(Ga,js);if(Ln){let Ws=new w(-Vs,Vs-Ux),di=-Math.PI/2,da=Us/2-Vs,Qo=new w(5-Ux-da,-(Pe.imageName?da:0)),Hs=new w(...Ps);Gs._rotateAround(di,Ws)._add(Qo)._add(Hs),ha._rotateAround(di,Ws)._add(Qo)._add(Hs),Wa._rotateAround(di,Ws)._add(Qo)._add(Hs),fa._rotateAround(di,Ws)._add(Qo)._add(Hs)}if(ke){let Ws=Math.sin(ke),di=Math.cos(ke),da=[di,-Ws,Ws,di];Gs._matMult(da),ha._matMult(da),Wa._matMult(da),fa._matMult(da)}let Al=new w(0,0),ml=new w(0,0);Te.push({tl:Gs,tr:ha,bl:Wa,br:fa,tex:Ae,writingMode:kt.writingMode,glyphOffset:Hl,sectionIndex:Pe.sectionIndex,isSDF:ir,pixelOffsetTL:Al,pixelOffsetBR:ml,minFontScaleX:0,minFontScaleY:0})}return Te}(0,h,D,x,E,P,A,u.allowVerticalPlacement),bt=u.textSizeData,Et=null;bt.kind===\"source\"?(Et=[Tf*x.layout.get(\"text-size\").evaluate(P,{})],Et[0]>cA&&tr(`${u.layerIds[0]}: Value for \"text-size\" is >= ${jx}. Reduce your \"text-size\".`)):bt.kind===\"composite\"&&(Et=[Tf*at.compositeTextSizes[0].evaluate(P,{},ct),Tf*at.compositeTextSizes[1].evaluate(P,{},ct)],(Et[0]>cA||Et[1]>cA)&&tr(`${u.layerIds[0]}: Value for \"text-size\" is >= ${jx}. Reduce your \"text-size\".`)),u.addSymbols(u.text,mt,Et,D,E,P,V,a,F.lineStartIndex,F.lineLength,et,ct);for(let Vt of q)X[Vt]=u.text.placedSymbolArray.length-1;return 4*mt.length}function FF(u){for(let a in u)return u[a];return null}function xK(u,a,h,A){let x=u.compareText;if(a in x){let E=x[a];for(let P=E.length-1;P>=0;P--)if(A.dist(E[P])>4;if(x!==1)throw new Error(`Got v${x} data when expected v1.`);let E=zF[15&A];if(!E)throw new Error(\"Unrecognized array type.\");let[P]=new Uint16Array(a,2,1),[D]=new Uint32Array(a,4,1);return new vC(D,P,E,a)}constructor(a,h=64,A=Float64Array,x){if(isNaN(a)||a<0)throw new Error(`Unpexpected numItems value: ${a}.`);this.numItems=+a,this.nodeSize=Math.min(Math.max(+h,2),65535),this.ArrayType=A,this.IndexArrayType=a<65536?Uint16Array:Uint32Array;let E=zF.indexOf(this.ArrayType),P=2*a*this.ArrayType.BYTES_PER_ELEMENT,D=a*this.IndexArrayType.BYTES_PER_ELEMENT,F=(8-D%8)%8;if(E<0)throw new Error(`Unexpected typed array class: ${A}.`);x&&x instanceof ArrayBuffer?(this.data=x,this.ids=new this.IndexArrayType(this.data,8,a),this.coords=new this.ArrayType(this.data,8+D+F,2*a),this._pos=2*a,this._finished=!0):(this.data=new ArrayBuffer(8+P+D+F),this.ids=new this.IndexArrayType(this.data,8,a),this.coords=new this.ArrayType(this.data,8+D+F,2*a),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+E]),new Uint16Array(this.data,2,1)[0]=h,new Uint32Array(this.data,4,1)[0]=a)}add(a,h){let A=this._pos>>1;return this.ids[A]=A,this.coords[this._pos++]=a,this.coords[this._pos++]=h,A}finish(){let a=this._pos>>1;if(a!==this.numItems)throw new Error(`Added ${a} items when expected ${this.numItems}.`);return xC(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(a,h,A,x){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");let{ids:E,coords:P,nodeSize:D}=this,F=[0,E.length-1,0],V=[];for(;F.length;){let q=F.pop()||0,X=F.pop()||0,et=F.pop()||0;if(X-et<=D){for(let bt=et;bt<=X;bt++){let Et=P[2*bt],Vt=P[2*bt+1];Et>=a&&Et<=A&&Vt>=h&&Vt<=x&&V.push(E[bt])}continue}let at=et+X>>1,ct=P[2*at],mt=P[2*at+1];ct>=a&&ct<=A&&mt>=h&&mt<=x&&V.push(E[at]),(q===0?a<=ct:h<=mt)&&(F.push(et),F.push(at-1),F.push(1-q)),(q===0?A>=ct:x>=mt)&&(F.push(at+1),F.push(X),F.push(1-q))}return V}within(a,h,A){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");let{ids:x,coords:E,nodeSize:P}=this,D=[0,x.length-1,0],F=[],V=A*A;for(;D.length;){let q=D.pop()||0,X=D.pop()||0,et=D.pop()||0;if(X-et<=P){for(let bt=et;bt<=X;bt++)UF(E[2*bt],E[2*bt+1],a,h)<=V&&F.push(x[bt]);continue}let at=et+X>>1,ct=E[2*at],mt=E[2*at+1];UF(ct,mt,a,h)<=V&&F.push(x[at]),(q===0?a-A<=ct:h-A<=mt)&&(D.push(et),D.push(at-1),D.push(1-q)),(q===0?a+A>=ct:h+A>=mt)&&(D.push(at+1),D.push(X),D.push(1-q))}return F}}function xC(u,a,h,A,x,E){if(x-A<=h)return;let P=A+x>>1;NF(u,a,P,A,x,E),xC(u,a,h,A,P-1,1-E),xC(u,a,h,P+1,x,1-E)}function NF(u,a,h,A,x,E){for(;x>A;){if(x-A>600){let V=x-A+1,q=h-A+1,X=Math.log(V),et=.5*Math.exp(2*X/3),at=.5*Math.sqrt(X*et*(V-et)/V)*(q-V/2<0?-1:1);NF(u,a,h,Math.max(A,Math.floor(h-q*et/V+at)),Math.min(x,Math.floor(h+(V-q)*et/V+at)),E)}let P=a[2*h+E],D=A,F=x;for(Wx(u,a,A,h),a[2*x+E]>P&&Wx(u,a,A,x);DP;)F--}a[2*A+E]===P?Wx(u,a,A,F):(F++,Wx(u,a,F,x)),F<=h&&(A=F+1),h<=F&&(x=F-1)}}function Wx(u,a,h,A){bC(u,h,A),bC(a,2*h,2*A),bC(a,2*h+1,2*A+1)}function bC(u,a,h){let A=u[a];u[a]=u[h],u[h]=A}function UF(u,a,h,A){let x=u-h,E=a-A;return x*x+E*E}var wC;n.bh=void 0,(wC=n.bh||(n.bh={})).create=\"create\",wC.load=\"load\",wC.fullLoad=\"fullLoad\";let KS=null,Hx=[],SC=1e3/60,TC=\"loadTime\",MC=\"fullLoadTime\",bK={mark(u){performance.mark(u)},frame(u){let a=u;KS!=null&&Hx.push(a-KS),KS=a},clearMetrics(){KS=null,Hx=[],performance.clearMeasures(TC),performance.clearMeasures(MC);for(let u in n.bh)performance.clearMarks(n.bh[u])},getPerformanceMetrics(){performance.measure(TC,n.bh.create,n.bh.load),performance.measure(MC,n.bh.create,n.bh.fullLoad);let u=performance.getEntriesByName(TC)[0].duration,a=performance.getEntriesByName(MC)[0].duration,h=Hx.length,A=1/(Hx.reduce((E,P)=>E+P,0)/h/1e3),x=Hx.filter(E=>E>SC).reduce((E,P)=>E+(P-SC)/SC,0);return{loadTime:u,fullLoadTime:a,fps:A,percentDroppedFrames:x/(h+x)*100,totalFrames:h}}};n.$=function(u,a,h){var A,x,E,P,D,F,V,q,X,et,at,ct,mt=h[0],bt=h[1],Et=h[2];return a===u?(u[12]=a[0]*mt+a[4]*bt+a[8]*Et+a[12],u[13]=a[1]*mt+a[5]*bt+a[9]*Et+a[13],u[14]=a[2]*mt+a[6]*bt+a[10]*Et+a[14],u[15]=a[3]*mt+a[7]*bt+a[11]*Et+a[15]):(x=a[1],E=a[2],P=a[3],D=a[4],F=a[5],V=a[6],q=a[7],X=a[8],et=a[9],at=a[10],ct=a[11],u[0]=A=a[0],u[1]=x,u[2]=E,u[3]=P,u[4]=D,u[5]=F,u[6]=V,u[7]=q,u[8]=X,u[9]=et,u[10]=at,u[11]=ct,u[12]=A*mt+D*bt+X*Et+a[12],u[13]=x*mt+F*bt+et*Et+a[13],u[14]=E*mt+V*bt+at*Et+a[14],u[15]=P*mt+q*bt+ct*Et+a[15]),u},n.A=ze,n.B=Ra,n.C=class{constructor(u,a,h){this.receive=A=>{let x=A.data,E=x.id;if(E&&(!x.targetMapId||this.mapId===x.targetMapId))if(x.type===\"\"){delete this.tasks[E];let P=this.cancelCallbacks[E];delete this.cancelCallbacks[E],P&&P()}else zi()||x.mustQueue?(this.tasks[E]=x,this.taskQueue.push(E),this.invoker.trigger()):this.processTask(E,x)},this.process=()=>{if(!this.taskQueue.length)return;let A=this.taskQueue.shift(),x=this.tasks[A];delete this.tasks[A],this.taskQueue.length&&this.invoker.trigger(),x&&this.processTask(A,x)},this.target=u,this.parent=a,this.mapId=h,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new fK(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=zi()?u:window}send(u,a,h,A,x=!1){let E=Math.round(1e18*Math.random()).toString(36).substring(0,10);h&&(this.callbacks[E]=h);let P=[],D={id:E,type:u,hasCallback:!!h,targetMapId:A,mustQueue:x,sourceMapId:this.mapId,data:Vl(a,P)};return this.target.postMessage(D,{transfer:P}),{cancel:()=>{h&&delete this.callbacks[E],this.target.postMessage({id:E,type:\"\",targetMapId:A,sourceMapId:this.mapId})}}}processTask(u,a){if(a.type===\"\"){let h=this.callbacks[u];delete this.callbacks[u],h&&(a.error?h(yf(a.error)):h(null,yf(a.data)))}else{let h=!1,A=[],x=a.hasCallback?(D,F)=>{h=!0,delete this.cancelCallbacks[u];let V={id:u,type:\"\",sourceMapId:this.mapId,error:D?Vl(D):null,data:Vl(F,A)};this.target.postMessage(V,{transfer:A})}:D=>{h=!0},E=null,P=yf(a.data);if(this.parent[a.type])E=this.parent[a.type](a.sourceMapId,P,x);else if(\"getWorkerSource\"in this.parent){let D=a.type.split(\".\");E=this.parent.getWorkerSource(a.sourceMapId,D[0],P.source)[D[1]](P,x)}else x(new Error(`Could not find function ${a.type}`));!h&&E&&E.cancel&&(this.cancelCallbacks[u]=E.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)}},n.D=rr,n.E=Ol,n.F=function(u,a){let h={};for(let A=0;A{}}},n.Y=ve,n.Z=function(){var u=new ze(16);return ze!=Float32Array&&(u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=0,u[12]=0,u[13]=0,u[14]=0),u[0]=1,u[5]=1,u[10]=1,u[15]=1,u},n._=o,n.a=Pc,n.a$=class extends st{},n.a0=function(u,a,h){var A=h[0],x=h[1],E=h[2];return u[0]=a[0]*A,u[1]=a[1]*A,u[2]=a[2]*A,u[3]=a[3]*A,u[4]=a[4]*x,u[5]=a[5]*x,u[6]=a[6]*x,u[7]=a[7]*x,u[8]=a[8]*E,u[9]=a[9]*E,u[10]=a[10]*E,u[11]=a[11]*E,u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15],u},n.a1=Gi,n.a2=function(){return Kt++},n.a3=yt,n.a4=y_,n.a5=function(){ua.isLoading()||ua.isLoaded()||a0()!==\"deferred\"||c_()},n.a6=Xm,n.a7=S,n.a8=ln,n.a9=bF,n.aA=Rc,n.aB=function(u){u=u.slice();let a=Object.create(null);for(let h=0;h{A[P.source]?h.push({command:oi.removeLayer,args:[P.id]}):E.push(P)}),h=h.concat(x),function(P,D,F){D=D||[];let V=(P=P||[]).map(Pa),q=D.map(Pa),X=P.reduce(Ao,{}),et=D.reduce(Ao,{}),at=V.slice(),ct=Object.create(null),mt,bt,Et,Vt,kt,jt,qt;for(mt=0,bt=0;mt@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(h,A,x,E)=>{let P=x||E;return a[A]=!P||P.toLowerCase(),\"\"}),a[\"max-age\"]){let h=parseInt(a[\"max-age\"],10);isNaN(h)?delete a[\"max-age\"]:a[\"max-age\"]=h}return a},n.ab=function(u,a){let h=[];for(let A in u)A in a||h.push(A);return h},n.ac=function(u){if(Bo==null){let a=u.navigator?u.navigator.userAgent:null;Bo=!!u.safari||!(!a||!(/\\b(iPad|iPhone|iPod)\\b/.test(a)||a.match(\"Safari\")&&!a.match(\"Chrome\")))}return Bo},n.ad=ut,n.ae=function(u,a,h){var A=Math.sin(h),x=Math.cos(h),E=a[0],P=a[1],D=a[2],F=a[3],V=a[4],q=a[5],X=a[6],et=a[7];return a!==u&&(u[8]=a[8],u[9]=a[9],u[10]=a[10],u[11]=a[11],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15]),u[0]=E*x+V*A,u[1]=P*x+q*A,u[2]=D*x+X*A,u[3]=F*x+et*A,u[4]=V*x-E*A,u[5]=q*x-P*A,u[6]=X*x-D*A,u[7]=et*x-F*A,u},n.af=function(u){var a=new ze(16);return a[0]=u[0],a[1]=u[1],a[2]=u[2],a[3]=u[3],a[4]=u[4],a[5]=u[5],a[6]=u[6],a[7]=u[7],a[8]=u[8],a[9]=u[9],a[10]=u[10],a[11]=u[11],a[12]=u[12],a[13]=u[13],a[14]=u[14],a[15]=u[15],a},n.ag=Ei,n.ah=function(u,a){let h=0,A=0;if(u.kind===\"constant\")A=u.layoutSize;else if(u.kind!==\"source\"){let{interpolationType:x,minZoom:E,maxZoom:P}=u,D=x?ut(Da.interpolationFactor(x,a,E,P),0,1):0;u.kind===\"camera\"?A=Ra.number(u.minSize,u.maxSize,D):h=D}return{uSizeT:h,uSize:A}},n.aj=function(u,{uSize:a,uSizeT:h},{lowerSize:A,upperSize:x}){return u.kind===\"source\"?A/Tf:u.kind===\"composite\"?Ra.number(A/Tf,x/Tf,h):a},n.ak=hC,n.al=function(u,a,h,A){let x=a.y-u.y,E=a.x-u.x,P=A.y-h.y,D=A.x-h.x,F=P*E-D*x;if(F===0)return null;let V=(D*(u.y-h.y)-P*(u.x-h.x))/F;return new w(u.x+V*E,u.y+V*x)},n.am=MF,n.an=L,n.ao=Zr,n.ap=Us,n.ar=uC,n.as=function(u,a){var h=a[0],A=a[1],x=a[2],E=a[3],P=a[4],D=a[5],F=a[6],V=a[7],q=a[8],X=a[9],et=a[10],at=a[11],ct=a[12],mt=a[13],bt=a[14],Et=a[15],Vt=h*D-A*P,kt=h*F-x*P,jt=h*V-E*P,qt=A*F-x*D,ae=A*V-E*D,Be=x*V-E*F,Je=q*mt-X*ct,Oe=q*bt-et*ct,ke=q*Et-at*ct,Te=X*bt-et*mt,He=X*Et-at*mt,Pe=et*Et-at*bt,Ae=Vt*Pe-kt*He+jt*Te+qt*ke-ae*Oe+Be*Je;return Ae?(u[0]=(D*Pe-F*He+V*Te)*(Ae=1/Ae),u[1]=(x*He-A*Pe-E*Te)*Ae,u[2]=(mt*Be-bt*ae+Et*qt)*Ae,u[3]=(et*ae-X*Be-at*qt)*Ae,u[4]=(F*ke-P*Pe-V*Oe)*Ae,u[5]=(h*Pe-x*ke+E*Oe)*Ae,u[6]=(bt*jt-ct*Be-Et*kt)*Ae,u[7]=(q*Be-et*jt+at*kt)*Ae,u[8]=(P*He-D*ke+V*Je)*Ae,u[9]=(A*ke-h*He-E*Je)*Ae,u[10]=(ct*ae-mt*jt+Et*Vt)*Ae,u[11]=(X*jt-q*ae-at*Vt)*Ae,u[12]=(D*Oe-P*Te-F*Je)*Ae,u[13]=(h*Te-A*Oe+x*Je)*Ae,u[14]=(mt*kt-ct*qt-bt*Vt)*Ae,u[15]=(q*qt-X*kt+et*Vt)*Ae,u):null},n.at=yC,n.au=cC,n.av=vC,n.aw=function(){let u={},a=te.$version;for(let h in te.$root){let A=te.$root[h];if(A.required){let x=null;x=h===\"version\"?a:A.type===\"array\"?[]:{},x!=null&&(u[h]=x)}}return u},n.ax=oi,n.ay=a_,n.az=$n,n.b=function(u,a){let h=new Blob([new Uint8Array(u)],{type:\"image/png\"});createImageBitmap(h).then(A=>{a(null,A)}).catch(A=>{a(new Error(`Could not load image because of ${A.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})},n.b0=zs,n.b1=function(u,a){var h=u[0],A=u[1],x=u[2],E=u[3],P=u[4],D=u[5],F=u[6],V=u[7],q=u[8],X=u[9],et=u[10],at=u[11],ct=u[12],mt=u[13],bt=u[14],Et=u[15],Vt=a[0],kt=a[1],jt=a[2],qt=a[3],ae=a[4],Be=a[5],Je=a[6],Oe=a[7],ke=a[8],Te=a[9],He=a[10],Pe=a[11],Ae=a[12],ur=a[13],ir=a[14],ri=a[15];return Math.abs(h-Vt)<=be*Math.max(1,Math.abs(h),Math.abs(Vt))&&Math.abs(A-kt)<=be*Math.max(1,Math.abs(A),Math.abs(kt))&&Math.abs(x-jt)<=be*Math.max(1,Math.abs(x),Math.abs(jt))&&Math.abs(E-qt)<=be*Math.max(1,Math.abs(E),Math.abs(qt))&&Math.abs(P-ae)<=be*Math.max(1,Math.abs(P),Math.abs(ae))&&Math.abs(D-Be)<=be*Math.max(1,Math.abs(D),Math.abs(Be))&&Math.abs(F-Je)<=be*Math.max(1,Math.abs(F),Math.abs(Je))&&Math.abs(V-Oe)<=be*Math.max(1,Math.abs(V),Math.abs(Oe))&&Math.abs(q-ke)<=be*Math.max(1,Math.abs(q),Math.abs(ke))&&Math.abs(X-Te)<=be*Math.max(1,Math.abs(X),Math.abs(Te))&&Math.abs(et-He)<=be*Math.max(1,Math.abs(et),Math.abs(He))&&Math.abs(at-Pe)<=be*Math.max(1,Math.abs(at),Math.abs(Pe))&&Math.abs(ct-Ae)<=be*Math.max(1,Math.abs(ct),Math.abs(Ae))&&Math.abs(mt-ur)<=be*Math.max(1,Math.abs(mt),Math.abs(ur))&&Math.abs(bt-ir)<=be*Math.max(1,Math.abs(bt),Math.abs(ir))&&Math.abs(Et-ri)<=be*Math.max(1,Math.abs(Et),Math.abs(ri))},n.b2=function(u,a){return u[0]=a[0],u[1]=a[1],u[2]=a[2],u[3]=a[3],u[4]=a[4],u[5]=a[5],u[6]=a[6],u[7]=a[7],u[8]=a[8],u[9]=a[9],u[10]=a[10],u[11]=a[11],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15],u},n.b3=function(u,a,h){return u[0]=a[0]*h[0],u[1]=a[1]*h[1],u[2]=a[2]*h[2],u[3]=a[3]*h[3],u},n.b4=function(u,a){return u[0]*a[0]+u[1]*a[1]+u[2]*a[2]+u[3]*a[3]},n.b5=Pt,n.b6=yF,n.b7=mF,n.b8=function(u,a,h,A,x){var E,P=1/Math.tan(a/2);return u[0]=P/h,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=P,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,x!=null&&x!==1/0?(u[10]=(x+A)*(E=1/(A-x)),u[14]=2*x*A*E):(u[10]=-1,u[14]=-2*A),u},n.b9=function(u,a,h){var A=Math.sin(h),x=Math.cos(h),E=a[4],P=a[5],D=a[6],F=a[7],V=a[8],q=a[9],X=a[10],et=a[11];return a!==u&&(u[0]=a[0],u[1]=a[1],u[2]=a[2],u[3]=a[3],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15]),u[4]=E*x+V*A,u[5]=P*x+q*A,u[6]=D*x+X*A,u[7]=F*x+et*A,u[8]=V*x-E*A,u[9]=q*x-P*A,u[10]=X*x-D*A,u[11]=et*x-F*A,u},n.bA=f,n.bB=H6,n.bC=qp,n.bD=ua,n.ba=K,n.bb=tt,n.bc=function(u,a){return u[0]=a[0],u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a[1],u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[10]=a[2],u[11]=0,u[12]=0,u[13]=0,u[14]=0,u[15]=1,u},n.bd=class extends mh{},n.be=AC,n.bf=gF,n.bg=bK,n.bi=Zi,n.bj=function(u,a,h=!1){if(ls===s0||ls===tA||ls===eA)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");Au=Ic.resolveURL(u),ls=s0,dh=a,o0(),h||c_()},n.bk=a0,n.bl=function(u,a){let h={};for(let x=0;xAe*Us)}let Oe=P?\"center\":h.get(\"text-justify\").evaluate(V,{},u.canonical),ke=h.get(\"symbol-placement\"),Te=ke===\"point\"?h.get(\"text-max-width\").evaluate(V,{},u.canonical)*Us:0,He=()=>{u.bucket.allowVerticalPlacement&&e0(jt)&&(ct.vertical=GS(mt,u.glyphMap,u.glyphPositions,u.imagePositions,q,Te,E,Be,\"left\",ae,Et,n.ai.vertical,!0,ke,et,X))};if(!P&&Je){let Pe=new Set;if(Oe===\"auto\")for(let ur=0;ur{a(null,h),URL.revokeObjectURL(h.src),h.onload=null,window.requestAnimationFrame(()=>{h.src=Fo})},h.onerror=()=>a(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));let A=new Blob([new Uint8Array(u)],{type:\"image/png\"});h.src=u.byteLength?URL.createObjectURL(A):Fo},n.e=Ot,n.f=function(u,a){return No(Ot(u,{type:\"json\"}),a)},n.g=Ii,n.h=Ic,n.i=zi,n.j=to,n.k=ss,n.l=ol,n.m=No,n.n=function(u){return new sC(u).readFields(XX,[])},n.o=function(u,a,h){if(!u.length)return h(null,[]);let A=u.length,x=new Array(u.length),E=null;u.forEach((P,D)=>{a(P,(F,V)=>{F&&(E=F),x[D]=V,--A==0&&h(E,x)})})},n.p=J6,n.q=kx,n.r=Gn,n.s=fo,n.t=uh,n.u=Re,n.v=te,n.w=tr,n.x=hh,n.y=Fa,n.z=function([u,a,h]){return a+=90,a*=Math.PI/180,h*=Math.PI/180,{x:u*Math.cos(a)*Math.sin(h),y:u*Math.sin(a)*Math.sin(h),z:u*Math.cos(h)}}}),i([\"./shared\"],function(n){\"use strict\";class o{constructor(J){this.keyCache={},J&&this.replace(J)}replace(J){this._layerConfigs={},this._layers={},this.update(J,[])}update(J,nt){for(let vt of J){this._layerConfigs[vt.id]=vt;let xt=this._layers[vt.id]=n.aC(vt);xt._featureFilter=n.a6(xt.filter),this.keyCache[vt.id]&&delete this.keyCache[vt.id]}for(let vt of nt)delete this.keyCache[vt],delete this._layerConfigs[vt],delete this._layers[vt];this.familiesBySource={};let ht=n.bl(Object.values(this._layerConfigs),this.keyCache);for(let vt of ht){let xt=vt.map(ne=>this._layers[ne.id]),_t=xt[0];if(_t.visibility===\"none\")continue;let Dt=_t.source||\"\",Mt=this.familiesBySource[Dt];Mt||(Mt=this.familiesBySource[Dt]={});let Ut=_t.sourceLayer||\"_geojsonTileLayer\",re=Mt[Ut];re||(re=Mt[Ut]=[]),re.push(xt)}}}class c{constructor(J){let nt={},ht=[];for(let Dt in J){let Mt=J[Dt],Ut=nt[Dt]={};for(let re in Mt){let ne=Mt[+re];if(!ne||ne.bitmap.width===0||ne.bitmap.height===0)continue;let oe={x:0,y:0,w:ne.bitmap.width+2,h:ne.bitmap.height+2};ht.push(oe),Ut[re]={rect:oe,metrics:ne.metrics}}}let{w:vt,h:xt}=n.p(ht),_t=new n.q({width:vt||1,height:xt||1});for(let Dt in J){let Mt=J[Dt];for(let Ut in Mt){let re=Mt[+Ut];if(!re||re.bitmap.width===0||re.bitmap.height===0)continue;let ne=nt[Dt][Ut].rect;n.q.copy(re.bitmap,_t,{x:0,y:0},{x:ne.x+1,y:ne.y+1},re.bitmap)}}this.image=_t,this.positions=nt}}n.bm(\"GlyphAtlas\",c);class f{constructor(J){this.tileID=new n.O(J.tileID.overscaledZ,J.tileID.wrap,J.tileID.canonical.z,J.tileID.canonical.x,J.tileID.canonical.y),this.uid=J.uid,this.zoom=J.zoom,this.pixelRatio=J.pixelRatio,this.tileSize=J.tileSize,this.source=J.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=J.showCollisionBoxes,this.collectResourceTiming=!!J.collectResourceTiming,this.returnDependencies=!!J.returnDependencies,this.promoteId=J.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1}parse(J,nt,ht,vt,xt){this.status=\"parsing\",this.data=J,this.collisionBoxArray=new n.a3;let _t=new n.bn(Object.keys(J.layers).sort()),Dt=new n.bo(this.tileID,this.promoteId);Dt.bucketLayerIDs=[];let Mt={},Ut={featureIndex:Dt,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:ht},re=nt.familiesBySource[this.source];for(let ni in re){let Hr=J.layers[ni];if(!Hr)continue;Hr.version===1&&n.w(`Vector tile source \"${this.source}\" layer \"${ni}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);let Un=_t.encode(ni),Li=[];for(let gn=0;gn=Kn.maxzoom||Kn.visibility!==\"none\"&&(_(gn,this.zoom,ht),(Mt[Kn.id]=Kn.createBucket({index:Dt.bucketLayerIDs.length,layers:gn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Un,sourceID:this.source})).populate(Li,Ut,this.tileID.canonical),Dt.bucketLayerIDs.push(gn.map(oa=>oa.id)))}}let ne,oe,ar,_r,Ye=n.aH(Ut.glyphDependencies,ni=>Object.keys(ni).map(Number));this.inFlightDependencies.forEach(ni=>ni?.cancel()),this.inFlightDependencies=[];let lr=++this.dependencySentinel;Object.keys(Ye).length?this.inFlightDependencies.push(vt.send(\"getGlyphs\",{uid:this.uid,stacks:Ye,source:this.source,tileID:this.tileID,type:\"glyphs\"},(ni,Hr)=>{lr===this.dependencySentinel&&(ne||(ne=ni,oe=Hr,Bi.call(this)))})):oe={};let xr=Object.keys(Ut.iconDependencies);xr.length?this.inFlightDependencies.push(vt.send(\"getImages\",{icons:xr,source:this.source,tileID:this.tileID,type:\"icons\"},(ni,Hr)=>{lr===this.dependencySentinel&&(ne||(ne=ni,ar=Hr,Bi.call(this)))})):ar={};let vi=Object.keys(Ut.patternDependencies);function Bi(){if(ne)return xt(ne);if(oe&&ar&&_r){let ni=new c(oe),Hr=new n.bp(ar,_r);for(let Un in Mt){let Li=Mt[Un];Li instanceof n.a4?(_(Li.layers,this.zoom,ht),n.bq({bucket:Li,glyphMap:oe,glyphPositions:ni.positions,imageMap:ar,imagePositions:Hr.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Li.hasPattern&&(Li instanceof n.br||Li instanceof n.bs||Li instanceof n.bt)&&(_(Li.layers,this.zoom,ht),Li.addFeatures(Ut,this.tileID.canonical,Hr.patternPositions))}this.status=\"done\",xt(null,{buckets:Object.values(Mt).filter(Un=>!Un.isEmpty()),featureIndex:Dt,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:ni.image,imageAtlas:Hr,glyphMap:this.returnDependencies?oe:null,iconMap:this.returnDependencies?ar:null,glyphPositions:this.returnDependencies?ni.positions:null})}}vi.length?this.inFlightDependencies.push(vt.send(\"getImages\",{icons:vi,source:this.source,tileID:this.tileID,type:\"patterns\"},(ni,Hr)=>{lr===this.dependencySentinel&&(ne||(ne=ni,_r=Hr,Bi.call(this)))})):_r={},Bi.call(this)}}function _(gt,J,nt){let ht=new n.a8(J);for(let vt of gt)vt.recalculate(ht,nt)}function w(gt,J){let nt=n.l(gt.request,(ht,vt,xt,_t)=>{if(ht)J(ht);else if(vt)try{let Dt=new n.bw.VectorTile(new n.bv(vt));J(null,{vectorTile:Dt,rawData:vt,cacheControl:xt,expires:_t})}catch(Dt){let Mt=new Uint8Array(vt),Ut=`Unable to parse the tile at ${gt.request.url}, `;Ut+=Mt[0]===31&&Mt[1]===139?\"please make sure the data is not gzipped and that you have configured the relevant header in the server\":`got error: ${Dt.messge}`,J(new Error(Ut))}});return()=>{nt.cancel(),J()}}class C{constructor(J,nt,ht,vt){this.actor=J,this.layerIndex=nt,this.availableImages=ht,this.loadVectorData=vt||w,this.fetching={},this.loading={},this.loaded={}}loadTile(J,nt){let ht=J.uid;this.loading||(this.loading={});let vt=!!(J&&J.request&&J.request.collectResourceTiming)&&new n.bu(J.request),xt=this.loading[ht]=new f(J);xt.abort=this.loadVectorData(J,(_t,Dt)=>{if(delete this.loading[ht],_t||!Dt)return xt.status=\"done\",this.loaded[ht]=xt,nt(_t);let Mt=Dt.rawData,Ut={};Dt.expires&&(Ut.expires=Dt.expires),Dt.cacheControl&&(Ut.cacheControl=Dt.cacheControl);let re={};if(vt){let ne=vt.finish();ne&&(re.resourceTiming=JSON.parse(JSON.stringify(ne)))}xt.vectorTile=Dt.vectorTile,xt.parse(Dt.vectorTile,this.layerIndex,this.availableImages,this.actor,(ne,oe)=>{if(delete this.fetching[ht],ne||!oe)return nt(ne);nt(null,n.e({rawTileData:Mt.slice(0)},oe,Ut,re))}),this.loaded=this.loaded||{},this.loaded[ht]=xt,this.fetching[ht]={rawTileData:Mt,cacheControl:Ut,resourceTiming:re}})}reloadTile(J,nt){let ht=this.loaded,vt=J.uid;if(ht&&ht[vt]){let xt=ht[vt];xt.showCollisionBoxes=J.showCollisionBoxes,xt.status===\"parsing\"?xt.parse(xt.vectorTile,this.layerIndex,this.availableImages,this.actor,(_t,Dt)=>{if(_t||!Dt)return nt(_t,Dt);let Mt;if(this.fetching[vt]){let{rawTileData:Ut,cacheControl:re,resourceTiming:ne}=this.fetching[vt];delete this.fetching[vt],Mt=n.e({rawTileData:Ut.slice(0)},Dt,re,ne)}else Mt=Dt;nt(null,Mt)}):xt.status===\"done\"&&(xt.vectorTile?xt.parse(xt.vectorTile,this.layerIndex,this.availableImages,this.actor,nt):nt())}}abortTile(J,nt){let ht=this.loading,vt=J.uid;ht&&ht[vt]&&ht[vt].abort&&(ht[vt].abort(),delete ht[vt]),nt()}removeTile(J,nt){let ht=this.loaded,vt=J.uid;ht&&ht[vt]&&delete ht[vt],nt()}}class R{constructor(){this.loaded={}}loadTile(J,nt){return n._(this,void 0,void 0,function*(){let{uid:ht,encoding:vt,rawImageData:xt,redFactor:_t,greenFactor:Dt,blueFactor:Mt,baseShift:Ut}=J,re=xt.width+2,ne=xt.height+2,oe=n.a(xt)?new n.R({width:re,height:ne},yield n.bx(xt,-1,-1,re,ne)):xt,ar=new n.by(ht,oe,vt,_t,Dt,Mt,Ut);this.loaded=this.loaded||{},this.loaded[ht]=ar,nt(null,ar)})}removeTile(J){let nt=this.loaded,ht=J.uid;nt&&nt[ht]&&delete nt[ht]}}function N(gt,J){if(gt.length!==0){j(gt[0],J);for(var nt=1;nt=Math.abs(Dt)?nt-Mt+Dt:Dt-Mt+nt,nt=Mt}nt+ht>=0!=!!J&>.reverse()}var Y=n.bz(function gt(J,nt){var ht,vt=J&&J.type;if(vt===\"FeatureCollection\")for(ht=0;ht>31}function zi(gt,J){for(var nt=gt.loadGeometry(),ht=gt.type,vt=0,xt=0,_t=nt.length,Dt=0;Dt<_t;Dt++){var Mt=nt[Dt],Ut=1;ht===1&&(Ut=Mt.length),J.writeVarint(er(1,Ut));for(var re=ht===3?Mt.length-1:Mt.length,ne=0;negt},rh=Math.fround||(zo=new Float32Array(1),gt=>(zo[0]=+gt,zo[0]));var zo;let wi=3,Ds=5,sl=6;class Ic{constructor(J){this.options=Object.assign(Object.create(Fo),J),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(J){let{log:nt,minZoom:ht,maxZoom:vt}=this.options;nt&&console.time(\"total time\");let xt=`prepare ${J.length} points`;nt&&console.time(xt),this.points=J;let _t=[];for(let Mt=0;Mt=ht;Mt--){let Ut=+Date.now();Dt=this.trees[Mt]=this._createTree(this._cluster(Dt,Mt)),nt&&console.log(\"z%d: %d clusters in %dms\",Mt,Dt.numItems,+Date.now()-Ut)}return nt&&console.timeEnd(\"total time\"),this}getClusters(J,nt){let ht=((J[0]+180)%360+360)%360-180,vt=Math.max(-90,Math.min(90,J[1])),xt=J[2]===180?180:((J[2]+180)%360+360)%360-180,_t=Math.max(-90,Math.min(90,J[3]));if(J[2]-J[0]>=360)ht=-180,xt=180;else if(ht>xt){let ne=this.getClusters([ht,vt,180,_t],nt),oe=this.getClusters([-180,vt,xt,_t],nt);return ne.concat(oe)}let Dt=this.trees[this._limitZoom(nt)],Mt=Dt.range($n(ht),Ii(_t),$n(xt),Ii(vt)),Ut=Dt.data,re=[];for(let ne of Mt){let oe=this.stride*ne;re.push(Ut[oe+Ds]>1?Cc(Ut,oe,this.clusterProps):this.points[Ut[oe+wi]])}return re}getChildren(J){let nt=this._getOriginId(J),ht=this._getOriginZoom(J),vt=\"No cluster with the specified id.\",xt=this.trees[ht];if(!xt)throw new Error(vt);let _t=xt.data;if(nt*this.stride>=_t.length)throw new Error(vt);let Dt=this.options.radius/(this.options.extent*Math.pow(2,ht-1)),Mt=xt.within(_t[nt*this.stride],_t[nt*this.stride+1],Dt),Ut=[];for(let re of Mt){let ne=re*this.stride;_t[ne+4]===J&&Ut.push(_t[ne+Ds]>1?Cc(_t,ne,this.clusterProps):this.points[_t[ne+wi]])}if(Ut.length===0)throw new Error(vt);return Ut}getLeaves(J,nt,ht){let vt=[];return this._appendLeaves(vt,J,nt=nt||10,ht=ht||0,0),vt}getTile(J,nt,ht){let vt=this.trees[this._limitZoom(J)],xt=Math.pow(2,J),{extent:_t,radius:Dt}=this.options,Mt=Dt/_t,Ut=(ht-Mt)/xt,re=(ht+1+Mt)/xt,ne={features:[]};return this._addTileFeatures(vt.range((nt-Mt)/xt,Ut,(nt+1+Mt)/xt,re),vt.data,nt,ht,xt,ne),nt===0&&this._addTileFeatures(vt.range(1-Mt/xt,Ut,1,re),vt.data,xt,ht,xt,ne),nt===xt-1&&this._addTileFeatures(vt.range(0,Ut,Mt/xt,re),vt.data,-1,ht,xt,ne),ne.features.length?ne:null}getClusterExpansionZoom(J){let nt=this._getOriginZoom(J)-1;for(;nt<=this.options.maxZoom;){let ht=this.getChildren(J);if(nt++,ht.length!==1)break;J=ht[0].properties.cluster_id}return nt}_appendLeaves(J,nt,ht,vt,xt){let _t=this.getChildren(nt);for(let Dt of _t){let Mt=Dt.properties;if(Mt&&Mt.cluster?xt+Mt.point_count<=vt?xt+=Mt.point_count:xt=this._appendLeaves(J,Mt.cluster_id,ht,vt,xt):xt1,re,ne,oe;if(Ut)re=Zi(nt,Mt,this.clusterProps),ne=nt[Mt],oe=nt[Mt+1];else{let Ye=this.points[nt[Mt+wi]];re=Ye.properties;let[lr,xr]=Ye.geometry.coordinates;ne=$n(lr),oe=Ii(xr)}let ar={type:1,geometry:[[Math.round(this.options.extent*(ne*xt-ht)),Math.round(this.options.extent*(oe*xt-vt))]],tags:re},_r;_r=Ut||this.options.generateId?nt[Mt+wi]:this.points[nt[Mt+wi]].id,_r!==void 0&&(ar.id=_r),_t.features.push(ar)}}_limitZoom(J){return Math.max(this.options.minZoom,Math.min(Math.floor(+J),this.options.maxZoom+1))}_cluster(J,nt){let{radius:ht,extent:vt,reduce:xt,minPoints:_t}=this.options,Dt=ht/(vt*Math.pow(2,nt)),Mt=J.data,Ut=[],re=this.stride;for(let ne=0;nent&&(lr+=Mt[vi+Ds])}if(lr>Ye&&lr>=_t){let xr,vi=oe*Ye,Bi=ar*Ye,ni=-1,Hr=((ne/re|0)<<5)+(nt+1)+this.points.length;for(let Un of _r){let Li=Un*re;if(Mt[Li+2]<=nt)continue;Mt[Li+2]=nt;let gn=Mt[Li+Ds];vi+=Mt[Li]*gn,Bi+=Mt[Li+1]*gn,Mt[Li+4]=Hr,xt&&(xr||(xr=this._map(Mt,ne,!0),ni=this.clusterProps.length,this.clusterProps.push(xr)),xt(xr,this._map(Mt,Li)))}Mt[ne+4]=Hr,Ut.push(vi/lr,Bi/lr,1/0,Hr,-1,lr),xt&&Ut.push(ni)}else{for(let xr=0;xr1)for(let xr of _r){let vi=xr*re;if(!(Mt[vi+2]<=nt)){Mt[vi+2]=nt;for(let Bi=0;Bi>5}_getOriginZoom(J){return(J-this.points.length)%32}_map(J,nt,ht){if(J[nt+Ds]>1){let _t=this.clusterProps[J[nt+sl]];return ht?Object.assign({},_t):_t}let vt=this.points[J[nt+wi]].properties,xt=this.options.map(vt);return ht&&xt===vt?Object.assign({},xt):xt}}function Cc(gt,J,nt){return{type:\"Feature\",id:gt[J+wi],properties:Zi(gt,J,nt),geometry:{type:\"Point\",coordinates:[(ht=gt[J],360*(ht-.5)),Xn(gt[J+1])]}};var ht}function Zi(gt,J,nt){let ht=gt[J+Ds],vt=ht>=1e4?`${Math.round(ht/1e3)}k`:ht>=1e3?Math.round(ht/100)/10+\"k\":ht,xt=gt[J+sl],_t=xt===-1?{}:Object.assign({},nt[xt]);return Object.assign(_t,{cluster:!0,cluster_id:gt[J+wi],point_count:ht,point_count_abbreviated:vt})}function $n(gt){return gt/360+.5}function Ii(gt){let J=Math.sin(gt*Math.PI/180),nt=.5-.25*Math.log((1+J)/(1-J))/Math.PI;return nt<0?0:nt>1?1:nt}function Xn(gt){let J=(180-360*gt)*Math.PI/180;return 360*Math.atan(Math.exp(J))/Math.PI-90}function No(gt,J,nt,ht){for(var vt,xt=ht,_t=nt-J>>1,Dt=nt-J,Mt=gt[J],Ut=gt[J+1],re=gt[nt],ne=gt[nt+1],oe=J+3;oext)vt=oe,xt=ar;else if(ar===xt){var _r=Math.abs(oe-_t);_rht&&(vt-J>3&&No(gt,J,vt,ht),gt[vt+2]=xt,nt-vt>3&&No(gt,vt,nt,ht))}function ol(gt,J,nt,ht,vt,xt){var _t=vt-nt,Dt=xt-ht;if(_t!==0||Dt!==0){var Mt=((gt-nt)*_t+(J-ht)*Dt)/(_t*_t+Dt*Dt);Mt>1?(nt=vt,ht=xt):Mt>0&&(nt+=_t*Mt,ht+=Dt*Mt)}return(_t=gt-nt)*_t+(Dt=J-ht)*Dt}function fo(gt,J,nt,ht){var vt={id:gt===void 0?null:gt,type:J,geometry:nt,tags:ht,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(xt){var _t=xt.geometry,Dt=xt.type;if(Dt===\"Point\"||Dt===\"MultiPoint\"||Dt===\"LineString\")Ea(xt,_t);else if(Dt===\"Polygon\"||Dt===\"MultiLineString\")for(var Mt=0;Mt<_t.length;Mt++)Ea(xt,_t[Mt]);else if(Dt===\"MultiPolygon\")for(Mt=0;Mt<_t.length;Mt++)for(var Ut=0;Ut<_t[Mt].length;Ut++)Ea(xt,_t[Mt][Ut])}(vt),vt}function Ea(gt,J){for(var nt=0;nt0&&(_t+=ht?(vt*Ut-Mt*xt)/2:Math.sqrt(Math.pow(Mt-vt,2)+Math.pow(Ut-xt,2))),vt=Mt,xt=Ut}var re=J.length-3;J[2]=1,No(J,0,re,nt),J[re+2]=1,J.size=Math.abs(_t),J.start=0,J.end=J.size}function Ol(gt,J,nt,ht){for(var vt=0;vt1?1:nt}function fn(gt,J,nt,ht,vt,xt,_t,Dt){if(ht/=J,xt>=(nt/=J)&&_t=ht)return null;for(var Mt=[],Ut=0;Ut=nt&&_r=ht)){var Ye=[];if(oe===\"Point\"||oe===\"MultiPoint\")gi(ne,Ye,nt,ht,vt);else if(oe===\"LineString\")oi(ne,Ye,nt,ht,vt,!1,Dt.lineMetrics);else if(oe===\"MultiLineString\")uu(ne,Ye,nt,ht,vt,!1);else if(oe===\"Polygon\")uu(ne,Ye,nt,ht,vt,!0);else if(oe===\"MultiPolygon\")for(var lr=0;lr=nt&&_t<=ht&&(J.push(gt[xt]),J.push(gt[xt+1]),J.push(gt[xt+2]))}}function oi(gt,J,nt,ht,vt,xt,_t){for(var Dt,Mt,Ut=eo(gt),re=vt===0?po:ll,ne=gt.start,oe=0;oent&&(Mt=re(Ut,ar,_r,lr,xr,nt),_t&&(Ut.start=ne+Dt*Mt)):vi>ht?Bi=nt&&(Mt=re(Ut,ar,_r,lr,xr,nt),ni=!0),Bi>ht&&vi<=ht&&(Mt=re(Ut,ar,_r,lr,xr,ht),ni=!0),!xt&&ni&&(_t&&(Ut.end=ne+Dt*Mt),J.push(Ut),Ut=eo(gt)),_t&&(ne+=Dt)}var Hr=gt.length-3;ar=gt[Hr],_r=gt[Hr+1],Ye=gt[Hr+2],(vi=vt===0?ar:_r)>=nt&&vi<=ht&&al(Ut,ar,_r,Ye),Hr=Ut.length-3,xt&&Hr>=3&&(Ut[Hr]!==Ut[0]||Ut[Hr+1]!==Ut[1])&&al(Ut,Ut[0],Ut[1],Ut[2]),Ut.length&&J.push(Ut)}function eo(gt){var J=[];return J.size=gt.size,J.start=gt.start,J.end=gt.end,J}function uu(gt,J,nt,ht,vt,xt){for(var _t=0;_t_t.maxX&&(_t.maxX=re),ne>_t.maxY&&(_t.maxY=ne)}return _t}function Bl(gt,J,nt,ht){var vt=J.geometry,xt=J.type,_t=[];if(xt===\"Point\"||xt===\"MultiPoint\")for(var Dt=0;Dt0&&J.size<(vt?_t:ht))nt.numPoints+=J.length/3;else{for(var Dt=[],Mt=0;Mt_t)&&(nt.numSimplified++,Dt.push(J[Mt]),Dt.push(J[Mt+1])),nt.numPoints++;vt&&function(Ut,re){for(var ne=0,oe=0,ar=Ut.length,_r=ar-2;oe0===re)for(oe=0,ar=Ut.length;oe24)throw new Error(\"maxZoom should be in the 0-24 range\");if(J.promoteId&&J.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var ht=function(vt,xt){var _t=[];if(vt.type===\"FeatureCollection\")for(var Dt=0;Dt1&&console.time(\"creation\"),oe=this.tiles[ne]=dn(gt,J,nt,ht,Mt),this.tileCoords.push({z:J,x:nt,y:ht}),Ut)){Ut>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",J,nt,ht,oe.numFeatures,oe.numPoints,oe.numSimplified),console.timeEnd(\"creation\"));var ar=\"z\"+J;this.stats[ar]=(this.stats[ar]||0)+1,this.total++}if(oe.source=gt,vt){if(J===Mt.maxZoom||J===vt)continue;var _r=1<1&&console.time(\"clipping\");var Ye,lr,xr,vi,Bi,ni,Hr=.5*Mt.buffer/Mt.extent,Un=.5-Hr,Li=.5+Hr,gn=1+Hr;Ye=lr=xr=vi=null,Bi=fn(gt,re,nt-Hr,nt+Li,0,oe.minX,oe.maxX,Mt),ni=fn(gt,re,nt+Un,nt+gn,0,oe.minX,oe.maxX,Mt),gt=null,Bi&&(Ye=fn(Bi,re,ht-Hr,ht+Li,1,oe.minY,oe.maxY,Mt),lr=fn(Bi,re,ht+Un,ht+gn,1,oe.minY,oe.maxY,Mt),Bi=null),ni&&(xr=fn(ni,re,ht-Hr,ht+Li,1,oe.minY,oe.maxY,Mt),vi=fn(ni,re,ht+Un,ht+gn,1,oe.minY,oe.maxY,Mt),ni=null),Ut>1&&console.timeEnd(\"clipping\"),Dt.push(Ye||[],J+1,2*nt,2*ht),Dt.push(lr||[],J+1,2*nt,2*ht+1),Dt.push(xr||[],J+1,2*nt+1,2*ht),Dt.push(vi||[],J+1,2*nt+1,2*ht+1)}}},Se.prototype.getTile=function(gt,J,nt){var ht=this.options,vt=ht.extent,xt=ht.debug;if(gt<0||gt>24)return null;var _t=1<1&&console.log(\"drilling down to z%d-%d-%d\",gt,J,nt);for(var Mt,Ut=gt,re=J,ne=nt;!Mt&&Ut>0;)Ut--,re=Math.floor(re/2),ne=Math.floor(ne/2),Mt=this.tiles[Dr(Ut,re,ne)];return Mt&&Mt.source?(xt>1&&console.log(\"found parent tile z%d-%d-%d\",Ut,re,ne),xt>1&&console.time(\"drilling down\"),this.splitTile(Mt.source,Ut,re,ne,gt,J,nt),xt>1&&console.timeEnd(\"drilling down\"),this.tiles[Dt]?ve(this.tiles[Dt],vt):null):null};class Tr extends C{constructor(J,nt,ht,vt){super(J,nt,ht),this._dataUpdateable=new Map,this.loadGeoJSON=(xt,_t)=>{let{promoteId:Dt}=xt;if(xt.request)return n.f(xt.request,(Mt,Ut,re,ne)=>{this._dataUpdateable=Os(Ut,Dt)?Ca(Ut,Dt):void 0,_t(Mt,Ut,re,ne)});if(typeof xt.data==\"string\")try{let Mt=JSON.parse(xt.data);this._dataUpdateable=Os(Mt,Dt)?Ca(Mt,Dt):void 0,_t(null,Mt)}catch{_t(new Error(`Input data given to '${xt.source}' is not a valid GeoJSON object.`))}else xt.dataDiff?this._dataUpdateable?(function(Mt,Ut,re){var ne,oe,ar,_r;if(Ut.removeAll&&Mt.clear(),Ut.remove)for(let Ye of Ut.remove)Mt.delete(Ye);if(Ut.add)for(let Ye of Ut.add){let lr=mr(Ye,re);lr!=null&&Mt.set(lr,Ye)}if(Ut.update)for(let Ye of Ut.update){let lr=Mt.get(Ye.id);if(lr==null)continue;let xr=!Ye.removeAllProperties&&(((ne=Ye.removeProperties)===null||ne===void 0?void 0:ne.length)>0||((oe=Ye.addOrUpdateProperties)===null||oe===void 0?void 0:oe.length)>0);if((Ye.newGeometry||Ye.removeAllProperties||xr)&&(lr=Object.assign({},lr),Mt.set(Ye.id,lr),xr&&(lr.properties=Object.assign({},lr.properties))),Ye.newGeometry&&(lr.geometry=Ye.newGeometry),Ye.removeAllProperties)lr.properties={};else if(((ar=Ye.removeProperties)===null||ar===void 0?void 0:ar.length)>0)for(let vi of Ye.removeProperties)Object.prototype.hasOwnProperty.call(lr.properties,vi)&&delete lr.properties[vi];if(((_r=Ye.addOrUpdateProperties)===null||_r===void 0?void 0:_r.length)>0)for(let{key:vi,value:Bi}of Ye.addOrUpdateProperties)lr.properties[vi]=Bi}}(this._dataUpdateable,xt.dataDiff,Dt),_t(null,{type:\"FeatureCollection\",features:Array.from(this._dataUpdateable.values())})):_t(new Error(`Cannot update existing geojson data in ${xt.source}`)):_t(new Error(`Input data given to '${xt.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,vt&&(this.loadGeoJSON=vt)}loadGeoJSONTile(J,nt){let ht=J.tileID.canonical;if(!this._geoJSONIndex)return nt(null,null);let vt=this._geoJSONIndex.getTile(ht.z,ht.x,ht.y);if(!vt)return nt(null,null);let xt=new class{constructor(Dt){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=n.N,this.length=Dt.length,this._features=Dt}feature(Dt){return new class{constructor(Mt){this._feature=Mt,this.extent=n.N,this.type=Mt.type,this.properties=Mt.tags,\"id\"in Mt&&!isNaN(Mt.id)&&(this.id=parseInt(Mt.id,10))}loadGeometry(){if(this._feature.type===1){let Mt=[];for(let Ut of this._feature.geometry)Mt.push([new n.P(Ut[0],Ut[1])]);return Mt}{let Mt=[];for(let Ut of this._feature.geometry){let re=[];for(let ne of Ut)re.push(new n.P(ne[0],ne[1]));Mt.push(re)}return Mt}}toGeoJSON(Mt,Ut,re){return rt.call(this,Mt,Ut,re)}}(this._features[Dt])}}(vt.features),_t=Pc(xt);_t.byteOffset===0&&_t.byteLength===_t.buffer.byteLength||(_t=new Uint8Array(_t)),nt(null,{vectorTile:xt,rawData:_t.buffer})}loadData(J,nt){var ht;(ht=this._pendingRequest)===null||ht===void 0||ht.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});let vt=!!(J&&J.request&&J.request.collectResourceTiming)&&new n.bu(J.request);this._pendingCallback=nt,this._pendingRequest=this.loadGeoJSON(J,(xt,_t)=>{if(delete this._pendingCallback,delete this._pendingRequest,xt||!_t)return nt(xt);if(typeof _t!=\"object\")return nt(new Error(`Input data given to '${J.source}' is not a valid GeoJSON object.`));{Y(_t,!0);try{if(J.filter){let Mt=n.bC(J.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(Mt.result===\"error\")throw new Error(Mt.value.map(re=>`${re.key}: ${re.message}`).join(\", \"));_t={type:\"FeatureCollection\",features:_t.features.filter(re=>Mt.value.evaluate({zoom:0},re))}}this._geoJSONIndex=J.cluster?new Ic(function({superclusterOptions:Mt,clusterProperties:Ut}){if(!Ut||!Mt)return Mt;let re={},ne={},oe={accumulated:null,zoom:0},ar={properties:null},_r=Object.keys(Ut);for(let Ye of _r){let[lr,xr]=Ut[Ye],vi=n.bC(xr),Bi=n.bC(typeof lr==\"string\"?[lr,[\"accumulated\"],[\"get\",Ye]]:lr);re[Ye]=vi.value,ne[Ye]=Bi.value}return Mt.map=Ye=>{ar.properties=Ye;let lr={};for(let xr of _r)lr[xr]=re[xr].evaluate(oe,ar);return lr},Mt.reduce=(Ye,lr)=>{ar.properties=lr;for(let xr of _r)oe.accumulated=Ye[xr],Ye[xr]=ne[xr].evaluate(oe,ar)},Mt}(J)).load(_t.features):function(Mt,Ut){return new Se(Mt,Ut)}(_t,J.geojsonVtOptions)}catch(Mt){return nt(Mt)}this.loaded={};let Dt={};if(vt){let Mt=vt.finish();Mt&&(Dt.resourceTiming={},Dt.resourceTiming[J.source]=JSON.parse(JSON.stringify(Mt)))}nt(null,Dt)}})}reloadTile(J,nt){let ht=this.loaded;return ht&&ht[J.uid]?super.reloadTile(J,nt):this.loadTile(J,nt)}removeSource(J,nt){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),nt()}getClusterExpansionZoom(J,nt){try{nt(null,this._geoJSONIndex.getClusterExpansionZoom(J.clusterId))}catch(ht){nt(ht)}}getClusterChildren(J,nt){try{nt(null,this._geoJSONIndex.getChildren(J.clusterId))}catch(ht){nt(ht)}}getClusterLeaves(J,nt){try{nt(null,this._geoJSONIndex.getLeaves(J.clusterId,J.limit,J.offset))}catch(ht){nt(ht)}}}class sa{constructor(J){this.self=J,this.actor=new n.C(J,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:C,geojson:Tr},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(nt,ht)=>{if(this.workerSourceTypes[nt])throw new Error(`Worker source with name \"${nt}\" already registered.`);this.workerSourceTypes[nt]=ht},this.self.registerRTLTextPlugin=nt=>{if(n.bD.isParsed())throw new Error(\"RTL text plugin already registered.\");n.bD.applyArabicShaping=nt.applyArabicShaping,n.bD.processBidirectionalText=nt.processBidirectionalText,n.bD.processStyledBidirectionalText=nt.processStyledBidirectionalText}}setReferrer(J,nt){this.referrer=nt}setImages(J,nt,ht){this.availableImages[J]=nt;for(let vt in this.workerSources[J]){let xt=this.workerSources[J][vt];for(let _t in xt)xt[_t].availableImages=nt}ht()}setLayers(J,nt,ht){this.getLayerIndex(J).replace(nt),ht()}updateLayers(J,nt,ht){this.getLayerIndex(J).update(nt.layers,nt.removedIds),ht()}loadTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).loadTile(nt,ht)}loadDEMTile(J,nt,ht){this.getDEMWorkerSource(J,nt.source).loadTile(nt,ht)}reloadTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).reloadTile(nt,ht)}abortTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).abortTile(nt,ht)}removeTile(J,nt,ht){this.getWorkerSource(J,nt.type,nt.source).removeTile(nt,ht)}removeDEMTile(J,nt){this.getDEMWorkerSource(J,nt.source).removeTile(nt)}removeSource(J,nt,ht){if(!this.workerSources[J]||!this.workerSources[J][nt.type]||!this.workerSources[J][nt.type][nt.source])return;let vt=this.workerSources[J][nt.type][nt.source];delete this.workerSources[J][nt.type][nt.source],vt.removeSource!==void 0?vt.removeSource(nt,ht):ht()}loadWorkerSource(J,nt,ht){try{this.self.importScripts(nt.url),ht()}catch(vt){ht(vt.toString())}}syncRTLPluginState(J,nt,ht){try{n.bD.setState(nt);let vt=n.bD.getPluginURL();if(n.bD.isLoaded()&&!n.bD.isParsed()&&vt!=null){this.self.importScripts(vt);let xt=n.bD.isParsed();ht(xt?void 0:new Error(`RTL Text Plugin failed to import scripts from ${vt}`),xt)}}catch(vt){ht(vt.toString())}}getAvailableImages(J){let nt=this.availableImages[J];return nt||(nt=[]),nt}getLayerIndex(J){let nt=this.layerIndexes[J];return nt||(nt=this.layerIndexes[J]=new o),nt}getWorkerSource(J,nt,ht){return this.workerSources[J]||(this.workerSources[J]={}),this.workerSources[J][nt]||(this.workerSources[J][nt]={}),this.workerSources[J][nt][ht]||(this.workerSources[J][nt][ht]=new this.workerSourceTypes[nt]({send:(vt,xt,_t)=>{this.actor.send(vt,xt,_t,J)}},this.getLayerIndex(J),this.getAvailableImages(J))),this.workerSources[J][nt][ht]}getDEMWorkerSource(J,nt){return this.demWorkerSources[J]||(this.demWorkerSources[J]={}),this.demWorkerSources[J][nt]||(this.demWorkerSources[J][nt]=new R),this.demWorkerSources[J][nt]}}return n.i()&&(self.worker=new sa(self)),sa}),i([\"./shared\"],function(n){\"use strict\";var o=\"3.6.2\";class c{static testProp(l){if(!c.docStyle)return l[0];for(let d=0;d{window.removeEventListener(\"click\",c.suppressClickInternal,!0)},0)}static mousePos(l,d){let v=l.getBoundingClientRect();return new n.P(d.clientX-v.left-l.clientLeft,d.clientY-v.top-l.clientTop)}static touchPos(l,d){let v=l.getBoundingClientRect(),b=[];for(let M=0;M{l=[],d=0,v=0,b={}},T.addThrottleControl=W=>{let Z=v++;return b[Z]=W,Z},T.removeThrottleControl=W=>{delete b[W],B()},T.getImage=(W,Z,Q=!0)=>{f.supported&&(W.headers||(W.headers={}),W.headers.accept=\"image/webp,*/*\");let st={requestParameters:W,supportImageRefresh:Q,callback:Z,cancelled:!1,completed:!1,cancel:()=>{st.completed||st.cancelled||(st.cancelled=!0,st.innerRequest&&(st.innerRequest.cancel(),d--),B())}};return l.push(st),B(),st};let M=W=>{let{requestParameters:Z,supportImageRefresh:Q,callback:st}=W;return n.e(Z,{type:\"image\"}),(Q!==!1||n.i()||n.g(Z.url)||Z.headers&&!Object.keys(Z.headers).reduce((At,pt)=>At&&pt===\"accept\",!0)?n.m:U)(Z,(At,pt,yt,dt)=>{O(W,st,At,pt,yt,dt)})},O=(W,Z,Q,st,At,pt)=>{Q?Z(Q):st instanceof HTMLImageElement||n.a(st)?Z(null,st):st&&((yt,dt)=>{typeof createImageBitmap==\"function\"?n.b(yt,dt):n.d(yt,dt)})(st,(yt,dt)=>{yt!=null?Z(yt):dt!=null&&Z(null,dt,{cacheControl:At,expires:pt})}),W.cancelled||(W.completed=!0,d--,B())},B=()=>{let W=(()=>{let Z=Object.keys(b),Q=!1;if(Z.length>0){for(let st of Z)if(Q=b[st](),Q)break}return Q})()?n.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:n.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let Z=d;Z0;Z++){let Q=l.shift();if(Q.cancelled){Z--;continue}let st=M(Q);d++,Q.innerRequest=st}},U=(W,Z)=>{let Q=new Image,st=W.url,At=!1,pt=W.credentials;return pt&&pt===\"include\"?Q.crossOrigin=\"use-credentials\":(pt&&pt===\"same-origin\"||!n.s(st))&&(Q.crossOrigin=\"anonymous\"),Q.fetchPriority=\"high\",Q.onload=()=>{Z(null,Q),Q.onerror=Q.onload=null},Q.onerror=()=>{At||Z(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\")),Q.onerror=Q.onload=null},Q.src=st,{cancel:()=>{At=!0,Q.src=\"\"}}}}(j||(j={})),j.resetRequestQueue(),function(T){T.Glyphs=\"Glyphs\",T.Image=\"Image\",T.Source=\"Source\",T.SpriteImage=\"SpriteImage\",T.SpriteJSON=\"SpriteJSON\",T.Style=\"Style\",T.Tile=\"Tile\",T.Unknown=\"Unknown\"}(Y||(Y={}));class rt{constructor(l){this._transformRequestFn=l}transformRequest(l,d){return this._transformRequestFn&&this._transformRequestFn(l,d)||{url:l}}normalizeSpriteURL(l,d,v){let b=function(M){let O=M.match($);if(!O)throw new Error(`Unable to parse URL \"${M}\"`);return{protocol:O[1],authority:O[2],path:O[3]||\"/\",params:O[4]?O[4].split(\"&\"):[]}}(l);return b.path+=`${d}${v}`,function(M){let O=M.params.length?`?${M.params.join(\"&\")}`:\"\";return`${M.protocol}://${M.authority}${M.path}${O}`}(b)}setTransformRequest(l){this._transformRequestFn=l}}let $=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function K(T){var l=new n.A(3);return l[0]=T[0],l[1]=T[1],l[2]=T[2],l}var tt,ut=function(T,l,d){return T[0]=l[0]-d[0],T[1]=l[1]-d[1],T[2]=l[2]-d[2],T};tt=new n.A(3),n.A!=Float32Array&&(tt[0]=0,tt[1]=0,tt[2]=0);var Pt=function(T){var l=T[0],d=T[1];return l*l+d*d};function Ot(T){let l=[];if(typeof T==\"string\")l.push({id:\"default\",url:T});else if(T&&T.length>0){let d=[];for(let{id:v,url:b}of T){let M=`${v}${b}`;d.indexOf(M)===-1&&(d.push(M),l.push({id:v,url:b}))}}return l}function Kt(T,l,d,v,b){if(v)return void T(v);if(b!==Object.values(l).length||b!==Object.values(d).length)return;let M={};for(let O in l){M[O]={};let B=n.h.getImageCanvasContext(d[O]),U=l[O];for(let W in U){let{width:Z,height:Q,x:st,y:At,sdf:pt,pixelRatio:yt,stretchX:dt,stretchY:Ft,content:Wt}=U[W];M[O][W]={data:null,pixelRatio:yt,sdf:pt,stretchX:dt,stretchY:Ft,content:Wt,spriteData:{width:Z,height:Q,x:st,y:At,context:B}}}}T(null,M)}(function(){var T=new n.A(2);n.A!=Float32Array&&(T[0]=0,T[1]=0)})();class Zt{constructor(l,d,v,b){this.context=l,this.format=v,this.texture=l.gl.createTexture(),this.update(d,b)}update(l,d,v){let{width:b,height:M}=l,O=!(this.size&&this.size[0]===b&&this.size[1]===M||v),{context:B}=this,{gl:U}=B;if(this.useMipmap=!!(d&&d.useMipmap),U.bindTexture(U.TEXTURE_2D,this.texture),B.pixelStoreUnpackFlipY.set(!1),B.pixelStoreUnpack.set(1),B.pixelStoreUnpackPremultiplyAlpha.set(this.format===U.RGBA&&(!d||d.premultiply!==!1)),O)this.size=[b,M],l instanceof HTMLImageElement||l instanceof HTMLCanvasElement||l instanceof HTMLVideoElement||l instanceof ImageData||n.a(l)?U.texImage2D(U.TEXTURE_2D,0,this.format,this.format,U.UNSIGNED_BYTE,l):U.texImage2D(U.TEXTURE_2D,0,this.format,b,M,0,this.format,U.UNSIGNED_BYTE,l.data);else{let{x:W,y:Z}=v||{x:0,y:0};l instanceof HTMLImageElement||l instanceof HTMLCanvasElement||l instanceof HTMLVideoElement||l instanceof ImageData||n.a(l)?U.texSubImage2D(U.TEXTURE_2D,0,W,Z,U.RGBA,U.UNSIGNED_BYTE,l):U.texSubImage2D(U.TEXTURE_2D,0,W,Z,b,M,U.RGBA,U.UNSIGNED_BYTE,l.data)}this.useMipmap&&this.isSizePowerOfTwo()&&U.generateMipmap(U.TEXTURE_2D)}bind(l,d,v){let{context:b}=this,{gl:M}=b;M.bindTexture(M.TEXTURE_2D,this.texture),v!==M.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(v=M.LINEAR),l!==this.filter&&(M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MAG_FILTER,l),M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MIN_FILTER,v||l),this.filter=l),d!==this.wrap&&(M.texParameteri(M.TEXTURE_2D,M.TEXTURE_WRAP_S,d),M.texParameteri(M.TEXTURE_2D,M.TEXTURE_WRAP_T,d),this.wrap=d)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:l}=this.context;l.deleteTexture(this.texture),this.texture=null}}function le(T){let{userImage:l}=T;return!!(l&&l.render&&l.render())&&(T.data.replace(new Uint8Array(l.data.buffer)),!0)}class ue extends n.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new n.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(l){if(this.loaded!==l&&(this.loaded=l,l)){for(let{ids:d,callback:v}of this.requestors)this._notify(d,v);this.requestors=[]}}getImage(l){let d=this.images[l];if(d&&!d.data&&d.spriteData){let v=d.spriteData;d.data=new n.R({width:v.width,height:v.height},v.context.getImageData(v.x,v.y,v.width,v.height).data),d.spriteData=null}return d}addImage(l,d){if(this.images[l])throw new Error(`Image id ${l} already exist, use updateImage instead`);this._validate(l,d)&&(this.images[l]=d)}_validate(l,d){let v=!0,b=d.data||d.spriteData;return this._validateStretch(d.stretchX,b&&b.width)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"stretchX\" value`))),v=!1),this._validateStretch(d.stretchY,b&&b.height)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"stretchY\" value`))),v=!1),this._validateContent(d.content,d)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"content\" value`))),v=!1),v}_validateStretch(l,d){if(!l)return!0;let v=0;for(let b of l){if(b[0]-1);U++,M[U]=B,O[U]=W,O[U+1]=Ge}for(let B=0,U=0;B{let B=this.entries[b];B||(B=this.entries[b]={glyphs:{},requests:{},ranges:{}});let U=B.glyphs[M];if(U!==void 0)return void O(null,{stack:b,id:M,glyph:U});if(U=this._tinySDF(B,b,M),U)return B.glyphs[M]=U,void O(null,{stack:b,id:M,glyph:U});let W=Math.floor(M/256);if(256*W>65535)return void O(new Error(\"glyphs > 65535 not supported\"));if(B.ranges[W])return void O(null,{stack:b,id:M,glyph:U});if(!this.url)return void O(new Error(\"glyphsUrl is not set\"));let Z=B.requests[W];Z||(Z=B.requests[W]=[],Lr.loadGlyphRange(b,W,this.url,this.requestManager,(Q,st)=>{if(st){for(let At in st)this._doesCharSupportLocalGlyph(+At)||(B.glyphs[+At]=st[+At]);B.ranges[W]=!0}for(let At of Z)At(Q,st);delete B.requests[W]})),Z.push((Q,st)=>{Q?O(Q):st&&O(null,{stack:b,id:M,glyph:st[M]||null})})},(b,M)=>{if(b)d(b);else if(M){let O={};for(let{stack:B,id:U,glyph:W}of M)(O[B]||(O[B]={}))[U]=W&&{id:W.id,bitmap:W.bitmap.clone(),metrics:W.metrics};d(null,O)}})}_doesCharSupportLocalGlyph(l){return!!this.localIdeographFontFamily&&(n.u[\"CJK Unified Ideographs\"](l)||n.u[\"Hangul Syllables\"](l)||n.u.Hiragana(l)||n.u.Katakana(l))}_tinySDF(l,d,v){let b=this.localIdeographFontFamily;if(!b||!this._doesCharSupportLocalGlyph(v))return;let M=l.tinySDF;if(!M){let B=\"400\";/bold/i.test(d)?B=\"900\":/medium/i.test(d)?B=\"500\":/light/i.test(d)&&(B=\"200\"),M=l.tinySDF=new Lr.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:b,fontWeight:B})}let O=M.draw(String.fromCharCode(v));return{id:v,bitmap:new n.q({width:O.width||60,height:O.height||60},O.data),metrics:{width:O.glyphWidth/2||24,height:O.glyphHeight/2||24,left:O.glyphLeft/2+.5||0,top:O.glyphTop/2-27.5||-8,advance:O.glyphAdvance/2||24,isDoubleResolution:!0}}}}Lr.loadGlyphRange=function(T,l,d,v,b){let M=256*l,O=M+255,B=v.transformRequest(d.replace(\"{fontstack}\",T).replace(\"{range}\",`${M}-${O}`),Y.Glyphs);n.l(B,(U,W)=>{if(U)b(U);else if(W){let Z={};for(let Q of n.n(W))Z[Q.id]=Q;b(null,Z)}})},Lr.TinySDF=class{constructor({fontSize:T=24,buffer:l=3,radius:d=8,cutoff:v=.25,fontFamily:b=\"sans-serif\",fontWeight:M=\"normal\",fontStyle:O=\"normal\"}={}){this.buffer=l,this.cutoff=v,this.radius=d;let B=this.size=T+4*l,U=this._createCanvas(B),W=this.ctx=U.getContext(\"2d\",{willReadFrequently:!0});W.font=`${O} ${M} ${T}px ${b}`,W.textBaseline=\"alphabetic\",W.textAlign=\"left\",W.fillStyle=\"black\",this.gridOuter=new Float64Array(B*B),this.gridInner=new Float64Array(B*B),this.f=new Float64Array(B),this.z=new Float64Array(B+1),this.v=new Uint16Array(B)}_createCanvas(T){let l=document.createElement(\"canvas\");return l.width=l.height=T,l}draw(T){let{width:l,actualBoundingBoxAscent:d,actualBoundingBoxDescent:v,actualBoundingBoxLeft:b,actualBoundingBoxRight:M}=this.ctx.measureText(T),O=Math.ceil(d),B=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(M-b))),U=Math.min(this.size-this.buffer,O+Math.ceil(v)),W=B+2*this.buffer,Z=U+2*this.buffer,Q=Math.max(W*Z,0),st=new Uint8ClampedArray(Q),At={data:st,width:W,height:Z,glyphWidth:B,glyphHeight:U,glyphTop:O,glyphLeft:0,glyphAdvance:l};if(B===0||U===0)return At;let{ctx:pt,buffer:yt,gridInner:dt,gridOuter:Ft}=this;pt.clearRect(yt,yt,B,U),pt.fillText(T,yt,yt+O);let Wt=pt.getImageData(yt,yt,B,U);Ft.fill(Ge,0,Q),dt.fill(0,0,Q);for(let St=0;St0?se*se:0,dt[Qt]=se<0?se*se:0}}tr(Ft,0,0,W,Z,W,this.f,this.v,this.z),tr(dt,yt,yt,B,U,W,this.f,this.v,this.z);for(let St=0;St1&&(U=l[++B]);let Z=Math.abs(W-U.left),Q=Math.abs(W-U.right),st=Math.min(Z,Q),At,pt=M/v*(b+1);if(U.isDash){let yt=b-Math.abs(pt);At=Math.sqrt(st*st+yt*yt)}else At=b-Math.sqrt(st*st+pt*pt);this.data[O+W]=Math.max(0,Math.min(255,At+128))}}}addRegularDash(l){for(let B=l.length-1;B>=0;--B){let U=l[B],W=l[B+1];U.zeroLength?l.splice(B,1):W&&W.isDash===U.isDash&&(W.left=U.left,l.splice(B,1))}let d=l[0],v=l[l.length-1];d.isDash===v.isDash&&(d.left=v.left-this.width,v.right=d.right+this.width);let b=this.width*this.nextRow,M=0,O=l[M];for(let B=0;B1&&(O=l[++M]);let U=Math.abs(B-O.left),W=Math.abs(B-O.right),Z=Math.min(U,W);this.data[b+B]=Math.max(0,Math.min(255,(O.isDash?Z:-Z)+128))}}addDash(l,d){let v=d?7:0,b=2*v+1;if(this.nextRow+b>this.height)return n.w(\"LineAtlas out of space\"),null;let M=0;for(let B=0;B{b.send(l,d,M)},v=v||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(l=!0){this.actors.forEach(d=>{d.remove()}),this.actors=[],l&&this.workerPool.release(this.id)}}function zo(T,l,d){let v=function(b,M){if(b)return d(b);if(M){let O=n.F(n.e(M,T),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);M.vector_layers&&(O.vectorLayers=M.vector_layers,O.vectorLayerIds=O.vectorLayers.map(B=>B.id)),d(null,O)}};return T.url?n.f(l.transformRequest(T.url,Y.Source),v):n.h.frame(()=>v(null,T))}class wi{constructor(l,d){l&&(d?this.setSouthWest(l).setNorthEast(d):Array.isArray(l)&&(l.length===4?this.setSouthWest([l[0],l[1]]).setNorthEast([l[2],l[3]]):this.setSouthWest(l[0]).setNorthEast(l[1])))}setNorthEast(l){return this._ne=l instanceof n.L?new n.L(l.lng,l.lat):n.L.convert(l),this}setSouthWest(l){return this._sw=l instanceof n.L?new n.L(l.lng,l.lat):n.L.convert(l),this}extend(l){let d=this._sw,v=this._ne,b,M;if(l instanceof n.L)b=l,M=l;else{if(!(l instanceof wi))return Array.isArray(l)?l.length===4||l.every(Array.isArray)?this.extend(wi.convert(l)):this.extend(n.L.convert(l)):l&&(\"lng\"in l||\"lon\"in l)&&\"lat\"in l?this.extend(n.L.convert(l)):this;if(b=l._sw,M=l._ne,!b||!M)return this}return d||v?(d.lng=Math.min(b.lng,d.lng),d.lat=Math.min(b.lat,d.lat),v.lng=Math.max(M.lng,v.lng),v.lat=Math.max(M.lat,v.lat)):(this._sw=new n.L(b.lng,b.lat),this._ne=new n.L(M.lng,M.lat)),this}getCenter(){return new n.L((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new n.L(this.getWest(),this.getNorth())}getSouthEast(){return new n.L(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(l){let{lng:d,lat:v}=n.L.convert(l),b=this._sw.lng<=d&&d<=this._ne.lng;return this._sw.lng>this._ne.lng&&(b=this._sw.lng>=d&&d>=this._ne.lng),this._sw.lat<=v&&v<=this._ne.lat&&b}static convert(l){return l instanceof wi?l:l&&new wi(l)}static fromLngLat(l,d=0){let v=360*d/40075017,b=v/Math.cos(Math.PI/180*l.lat);return new wi(new n.L(l.lng-b,l.lat-v),new n.L(l.lng+b,l.lat+v))}}class Ds{constructor(l,d,v){this.bounds=wi.convert(this.validateBounds(l)),this.minzoom=d||0,this.maxzoom=v||24}validateBounds(l){return Array.isArray(l)&&l.length===4?[Math.max(-180,l[0]),Math.max(-90,l[1]),Math.min(180,l[2]),Math.min(90,l[3])]:[-180,-90,180,90]}contains(l){let d=Math.pow(2,l.z),v=Math.floor(n.G(this.bounds.getWest())*d),b=Math.floor(n.H(this.bounds.getNorth())*d),M=Math.ceil(n.G(this.bounds.getEast())*d),O=Math.ceil(n.H(this.bounds.getSouth())*d);return l.x>=v&&l.x=b&&l.y{this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=zo(this._options,this.map._requestManager,(M,O)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),M?this.fire(new n.j(M)):O&&(n.e(this,O),O.bounds&&(this.tileBounds=new Ds(O.bounds,this.minzoom,this.maxzoom)),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})},this.serialize=()=>n.e({},this._options),this.id=l,this.dispatcher=v,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,n.e(this,n.F(d,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=n.e({type:\"vector\"},d),this._collectResourceTiming=d.collectResourceTiming,this.tileSize!==512)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(b)}loaded(){return this._loaded}hasTile(l){return!this.tileBounds||this.tileBounds.contains(l.canonical)}onAdd(l){this.map=l,this.load()}setSourceProperty(l){this._tileJSONRequest&&this._tileJSONRequest.cancel(),l(),this.load()}setTiles(l){return this.setSourceProperty(()=>{this._options.tiles=l}),this}setUrl(l){return this.setSourceProperty(()=>{this.url=l,this._options.url=l}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),b={request:this.map._requestManager.transformRequest(v,Y.Tile),uid:l.uid,tileID:l.tileID,zoom:l.tileID.overscaledZ,tileSize:this.tileSize*l.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function M(O,B){return delete l.request,l.aborted?d(null):O&&O.status!==404?d(O):(B&&B.resourceTiming&&(l.resourceTiming=B.resourceTiming),this.map._refreshExpiredTiles&&B&&l.setExpiryData(B),l.loadVectorData(B,this.map.painter),d(null),void(l.reloadCallback&&(this.loadTile(l,l.reloadCallback),l.reloadCallback=null)))}b.request.collectResourceTiming=this._collectResourceTiming,l.actor&&l.state!==\"expired\"?l.state===\"loading\"?l.reloadCallback=d:l.request=l.actor.send(\"reloadTile\",b,M.bind(this)):(l.actor=this.dispatcher.getActor(),l.request=l.actor.send(\"loadTile\",b,M.bind(this)))}abortTile(l){l.request&&(l.request.cancel(),delete l.request),l.actor&&l.actor.send(\"abortTile\",{uid:l.uid,type:this.type,source:this.id},void 0)}unloadTile(l){l.unloadVectorData(),l.actor&&l.actor.send(\"removeTile\",{uid:l.uid,type:this.type,source:this.id},void 0)}hasTransition(){return!1}}class Ic extends n.E{constructor(l,d,v,b){super(),this.id=l,this.dispatcher=v,this.setEventedParent(b),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=n.e({type:\"raster\"},d),n.e(this,n.F(d,[\"url\",\"scheme\",\"tileSize\"]))}load(){this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=zo(this._options,this.map._requestManager,(l,d)=>{this._tileJSONRequest=null,this._loaded=!0,l?this.fire(new n.j(l)):d&&(n.e(this,d),d.bounds&&(this.tileBounds=new Ds(d.bounds,this.minzoom,this.maxzoom)),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})}loaded(){return this._loaded}onAdd(l){this.map=l,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}setSourceProperty(l){this._tileJSONRequest&&this._tileJSONRequest.cancel(),l(),this.load()}setTiles(l){return this.setSourceProperty(()=>{this._options.tiles=l}),this}serialize(){return n.e({},this._options)}hasTile(l){return!this.tileBounds||this.tileBounds.contains(l.canonical)}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);l.request=j.getImage(this.map._requestManager.transformRequest(v,Y.Tile),(b,M,O)=>{if(delete l.request,l.aborted)l.state=\"unloaded\",d(null);else if(b)l.state=\"errored\",d(b);else if(M){this.map._refreshExpiredTiles&&O&&l.setExpiryData(O);let B=this.map.painter.context,U=B.gl;l.texture=this.map.painter.getTileTexture(M.width),l.texture?l.texture.update(M,{useMipmap:!0}):(l.texture=new Zt(B,M,U.RGBA,{useMipmap:!0}),l.texture.bind(U.LINEAR,U.CLAMP_TO_EDGE,U.LINEAR_MIPMAP_NEAREST),B.extTextureFilterAnisotropic&&U.texParameterf(U.TEXTURE_2D,B.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,B.extTextureFilterAnisotropicMax)),l.state=\"loaded\",d(null)}},this.map._refreshExpiredTiles)}abortTile(l,d){l.request&&(l.request.cancel(),delete l.request),d()}unloadTile(l,d){l.texture&&this.map.painter.saveTileTexture(l.texture),d()}hasTransition(){return!1}}class Cc extends Ic{constructor(l,d,v,b){super(l,d,v,b),this.type=\"raster-dem\",this.maxzoom=22,this._options=n.e({type:\"raster-dem\"},d),this.encoding=d.encoding||\"mapbox\",this.redFactor=d.redFactor,this.greenFactor=d.greenFactor,this.blueFactor=d.blueFactor,this.baseShift=d.baseShift}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),b=this.map._requestManager.transformRequest(v,Y.Tile);function M(O,B){O&&(l.state=\"errored\",d(O)),B&&(l.dem=B,l.needsHillshadePrepare=!0,l.needsTerrainPrepare=!0,l.state=\"loaded\",d(null))}l.neighboringTiles=this._getNeighboringTiles(l.tileID),l.request=j.getImage(b,(O,B,U)=>n._(this,void 0,void 0,function*(){if(delete l.request,l.aborted)l.state=\"unloaded\",d(null);else if(O)l.state=\"errored\",d(O);else if(B){this.map._refreshExpiredTiles&&l.setExpiryData(U);let W=n.a(B)&&n.J()?B:yield function(Q){return n._(this,void 0,void 0,function*(){if(typeof VideoFrame<\"u\"&&n.K()){let st=Q.width+2,At=Q.height+2;try{return new n.R({width:st,height:At},yield n.M(Q,-1,-1,st,At))}catch{}}return n.h.getImageData(Q,1)})}(B),Z={uid:l.uid,coord:l.tileID,source:this.id,rawImageData:W,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};l.actor&&l.state!==\"expired\"||(l.actor=this.dispatcher.getActor(),l.actor.send(\"loadDEMTile\",Z,M))}}),this.map._refreshExpiredTiles)}_getNeighboringTiles(l){let d=l.canonical,v=Math.pow(2,d.z),b=(d.x-1+v)%v,M=d.x===0?l.wrap-1:l.wrap,O=(d.x+1+v)%v,B=d.x+1===v?l.wrap+1:l.wrap,U={};return U[new n.O(l.overscaledZ,M,d.z,b,d.y).key]={backfilled:!1},U[new n.O(l.overscaledZ,B,d.z,O,d.y).key]={backfilled:!1},d.y>0&&(U[new n.O(l.overscaledZ,M,d.z,b,d.y-1).key]={backfilled:!1},U[new n.O(l.overscaledZ,l.wrap,d.z,d.x,d.y-1).key]={backfilled:!1},U[new n.O(l.overscaledZ,B,d.z,O,d.y-1).key]={backfilled:!1}),d.y+1{this._updateWorkerData()},this.serialize=()=>n.e({},this._options,{type:this.type,data:this._data}),this.id=l,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=v.getActor(),this.setEventedParent(b),this._data=d.data,this._options=n.e({},d),this._collectResourceTiming=d.collectResourceTiming,d.maxzoom!==void 0&&(this.maxzoom=d.maxzoom),d.type&&(this.type=d.type),d.attribution&&(this.attribution=d.attribution),this.promoteId=d.promoteId;let M=n.N/this.tileSize;this.workerOptions=n.e({source:this.id,cluster:d.cluster||!1,geojsonVtOptions:{buffer:(d.buffer!==void 0?d.buffer:128)*M,tolerance:(d.tolerance!==void 0?d.tolerance:.375)*M,extent:n.N,maxZoom:this.maxzoom,lineMetrics:d.lineMetrics||!1,generateId:d.generateId||!1},superclusterOptions:{maxZoom:d.clusterMaxZoom!==void 0?d.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,d.clusterMinPoints||2),extent:n.N,radius:(d.clusterRadius||50)*M,log:!1,generateId:d.generateId||!1},clusterProperties:d.clusterProperties,filter:d.filter},d.workerOptions),typeof this.promoteId==\"string\"&&(this.workerOptions.promoteId=this.promoteId)}onAdd(l){this.map=l,this.load()}setData(l){return this._data=l,this._updateWorkerData(),this}updateData(l){return this._updateWorkerData(l),this}setClusterOptions(l){return this.workerOptions.cluster=l.cluster,l&&(l.clusterRadius!==void 0&&(this.workerOptions.superclusterOptions.radius=l.clusterRadius),l.clusterMaxZoom!==void 0&&(this.workerOptions.superclusterOptions.maxZoom=l.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(l,d){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:l,source:this.id},d),this}getClusterChildren(l,d){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:l,source:this.id},d),this}getClusterLeaves(l,d,v,b){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:l,limit:d,offset:v},b),this}_updateWorkerData(l){let d=n.e({},this.workerOptions);l?d.dataDiff=l:typeof this._data==\"string\"?(d.request=this.map._requestManager.transformRequest(n.h.resolveURL(this._data),Y.Source),d.request.collectResourceTiming=this._collectResourceTiming):d.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this.actor.send(`${this.type}.loadData`,d,(v,b)=>{if(this._pendingLoads--,this._removed||b&&b.abandoned)return void this.fire(new n.k(\"dataabort\",{dataType:\"source\"}));let M=null;if(b&&b.resourceTiming&&b.resourceTiming[this.id]&&(M=b.resourceTiming[this.id].slice(0)),v)return void this.fire(new n.j(v));let O={dataType:\"source\"};this._collectResourceTiming&&M&&M.length>0&&n.e(O,{resourceTiming:M}),this.fire(new n.k(\"data\",Object.assign(Object.assign({},O),{sourceDataType:\"metadata\"}))),this.fire(new n.k(\"data\",Object.assign(Object.assign({},O),{sourceDataType:\"content\"})))})}loaded(){return this._pendingLoads===0}loadTile(l,d){let v=l.actor?\"reloadTile\":\"loadTile\";l.actor=this.actor;let b={type:this.type,uid:l.uid,tileID:l.tileID,zoom:l.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};l.request=this.actor.send(v,b,(M,O)=>(delete l.request,l.unloadVectorData(),l.aborted?d(null):M?d(M):(l.loadVectorData(O,this.map.painter,v===\"reloadTile\"),d(null))))}abortTile(l){l.request&&(l.request.cancel(),delete l.request),l.aborted=!0}unloadTile(l){l.unloadVectorData(),this.actor.send(\"removeTile\",{uid:l.uid,type:this.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})}hasTransition(){return!1}}var $n=n.Q([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);class Ii extends n.E{constructor(l,d,v,b){super(),this.load=(M,O)=>{this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,this._request=j.getImage(this.map._requestManager.transformRequest(this.url,Y.Image),(B,U)=>{this._request=null,this._loaded=!0,B?this.fire(new n.j(B)):U&&(this.image=U,M&&(this.coordinates=M),O&&O(),this._finishLoading())})},this.prepare=()=>{if(Object.keys(this.tiles).length===0||!this.image)return;let M=this.map.painter.context,O=M.gl;this.boundsBuffer||(this.boundsBuffer=M.createVertexBuffer(this._boundsArray,$n.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new Zt(M,this.image,O.RGBA),this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE));let B=!1;for(let U in this.tiles){let W=this.tiles[U];W.state!==\"loaded\"&&(W.state=\"loaded\",W.texture=this.texture,B=!0)}B&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"image\",url:this.options.url,coordinates:this.coordinates}),this.id=l,this.dispatcher=v,this.coordinates=d.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(b),this.options=d}loaded(){return this._loaded}updateImage(l){return l.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=l.url,this.load(l.coordinates,()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))}onAdd(l){this.map=l,this.load()}onRemove(){this._request&&(this._request.cancel(),this._request=null)}setCoordinates(l){this.coordinates=l;let d=l.map(n.U.fromLngLat);this.tileID=function(b){let M=1/0,O=1/0,B=-1/0,U=-1/0;for(let st of b)M=Math.min(M,st.x),O=Math.min(O,st.y),B=Math.max(B,st.x),U=Math.max(U,st.y);let W=Math.max(B-M,U-O),Z=Math.max(0,Math.floor(-Math.log(W)/Math.LN2)),Q=Math.pow(2,Z);return new n.W(Z,Math.floor((M+B)/2*Q),Math.floor((O+U)/2*Q))}(d),this.minzoom=this.maxzoom=this.tileID.z;let v=d.map(b=>this.tileID.getTilePoint(b)._round());return this._boundsArray=new n.V,this._boundsArray.emplaceBack(v[0].x,v[0].y,0,0),this._boundsArray.emplaceBack(v[1].x,v[1].y,n.N,0),this._boundsArray.emplaceBack(v[3].x,v[3].y,0,n.N),this._boundsArray.emplaceBack(v[2].x,v[2].y,n.N,n.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}loadTile(l,d){this.tileID&&this.tileID.equals(l.tileID.canonical)?(this.tiles[String(l.tileID.wrap)]=l,l.buckets={},d(null)):(l.state=\"errored\",d(null))}hasTransition(){return!1}}class Xn extends Ii{constructor(l,d,v,b){super(l,d,v,b),this.load=()=>{this._loaded=!1;let M=this.options;this.urls=[];for(let O of M.urls)this.urls.push(this.map._requestManager.transformRequest(O,Y.Source).url);n.X(this.urls,(O,B)=>{this._loaded=!0,O?this.fire(new n.j(O)):B&&(this.video=B,this.video.loop=!0,this.video.addEventListener(\"playing\",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})},this.prepare=()=>{if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let M=this.map.painter.context,O=M.gl;this.boundsBuffer||(this.boundsBuffer=M.createVertexBuffer(this._boundsArray,$n.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE),O.texSubImage2D(O.TEXTURE_2D,0,0,0,O.RGBA,O.UNSIGNED_BYTE,this.video)):(this.texture=new Zt(M,this.video,O.RGBA),this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE));let B=!1;for(let U in this.tiles){let W=this.tiles[U];W.state!==\"loaded\"&&(W.state=\"loaded\",W.texture=this.texture,B=!0)}B&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"video\",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type=\"video\",this.options=d}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(l){if(this.video){let d=this.video.seekable;ld.end(0)?this.fire(new n.j(new n.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${d.start(0)} and ${d.end(0)}-second mark.`))):this.video.currentTime=l}}getVideo(){return this.video}onAdd(l){this.map||(this.map=l,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}hasTransition(){return this.video&&!this.video.paused}}class No extends Ii{constructor(l,d,v,b){super(l,d,v,b),this.load=()=>{this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new n.j(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},this.prepare=()=>{let M=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,M=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,M=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let O=this.map.painter.context,B=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,$n.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture?(M||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new Zt(O,this.canvas,B.RGBA,{premultiply:!0});let U=!1;for(let W in this.tiles){let Z=this.tiles[W];Z.state!==\"loaded\"&&(Z.state=\"loaded\",Z.texture=this.texture,U=!0)}U&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"canvas\",coordinates:this.coordinates}),d.coordinates?Array.isArray(d.coordinates)&&d.coordinates.length===4&&!d.coordinates.some(M=>!Array.isArray(M)||M.length!==2||M.some(O=>typeof O!=\"number\"))||this.fire(new n.j(new n.Y(`sources.${l}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new n.j(new n.Y(`sources.${l}`,null,'missing required property \"coordinates\"'))),d.animate&&typeof d.animate!=\"boolean\"&&this.fire(new n.j(new n.Y(`sources.${l}`,null,'optional \"animate\" property must be a boolean value'))),d.canvas?typeof d.canvas==\"string\"||d.canvas instanceof HTMLCanvasElement||this.fire(new n.j(new n.Y(`sources.${l}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new n.j(new n.Y(`sources.${l}`,null,'missing required property \"canvas\"'))),this.options=d,this.animate=d.animate===void 0||d.animate}getCanvas(){return this.canvas}onAdd(l){this.map=l,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let l of[this.canvas.width,this.canvas.height])if(isNaN(l)||l<=0)return!0;return!1}}let ol={},fo=T=>{switch(T){case\"geojson\":return Zi;case\"image\":return Ii;case\"raster\":return Ic;case\"raster-dem\":return Cc;case\"vector\":return sl;case\"video\":return Xn;case\"canvas\":return No}return ol[T]};function Ea(T,l){let d=n.Z();return n.$(d,d,[1,1,0]),n.a0(d,d,[.5*T.width,.5*T.height,1]),n.a1(d,d,T.calculatePosMatrix(l.toUnwrapped()))}function na(T,l,d,v,b,M){let O=function(Q,st,At){if(Q)for(let pt of Q){let yt=st[pt];if(yt&&yt.source===At&&yt.type===\"fill-extrusion\")return!0}else for(let pt in st){let yt=st[pt];if(yt.source===At&&yt.type===\"fill-extrusion\")return!0}return!1}(b&&b.layers,l,T.id),B=M.maxPitchScaleFactor(),U=T.tilesIn(v,B,O);U.sort(ss);let W=[];for(let Q of U)W.push({wrappedTileID:Q.tileID.wrapped().key,queryResults:Q.tile.queryRenderedFeatures(l,d,T._state,Q.queryGeometry,Q.cameraQueryGeometry,Q.scale,b,M,B,Ea(T.transform,Q.tileID))});let Z=function(Q){let st={},At={};for(let pt of Q){let yt=pt.queryResults,dt=pt.wrappedTileID,Ft=At[dt]=At[dt]||{};for(let Wt in yt){let St=yt[Wt],Bt=Ft[Wt]=Ft[Wt]||{},Yt=st[Wt]=st[Wt]||[];for(let Qt of St)Bt[Qt.featureIndex]||(Bt[Qt.featureIndex]=!0,Yt.push(Qt))}}return st}(W);for(let Q in Z)Z[Q].forEach(st=>{let At=st.feature,pt=T.getFeatureState(At.layer[\"source-layer\"],At.id);At.source=At.layer.source,At.layer[\"source-layer\"]&&(At.sourceLayer=At.layer[\"source-layer\"]),At.state=pt});return Z}function ss(T,l){let d=T.tileID,v=l.tileID;return d.overscaledZ-v.overscaledZ||d.canonical.y-v.canonical.y||d.wrap-v.wrap||d.canonical.x-v.canonical.x}class to{constructor(l,d){this.timeAdded=0,this.fadeEndTime=0,this.tileID=l,this.uid=n.a2(),this.uses=0,this.tileSize=d,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state=\"loading\"}registerFadeDuration(l){let d=l+this.timeAdded;dM.getLayer(W)).filter(Boolean);if(U.length!==0){B.layers=U,B.stateDependentLayerIds&&(B.stateDependentLayers=B.stateDependentLayerIds.map(W=>U.filter(Z=>Z.id===W)[0]));for(let W of U)O[W.id]=B}}return O}(l.buckets,d.style),this.hasSymbolBuckets=!1;for(let b in this.buckets){let M=this.buckets[b];if(M instanceof n.a4){if(this.hasSymbolBuckets=!0,!v)break;M.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let b in this.buckets){let M=this.buckets[b];if(M instanceof n.a4&&M.hasRTLText){this.hasRTLText=!0,n.a5();break}}this.queryPadding=0;for(let b in this.buckets){let M=this.buckets[b];this.queryPadding=Math.max(this.queryPadding,d.style.getLayer(b).queryRadius(M))}l.imageAtlas&&(this.imageAtlas=l.imageAtlas),l.glyphAtlasImage&&(this.glyphAtlasImage=l.glyphAtlasImage)}else this.collisionBoxArray=new n.a3}unloadVectorData(){for(let l in this.buckets)this.buckets[l].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\"}getBucket(l){return this.buckets[l.id]}upload(l){for(let v in this.buckets){let b=this.buckets[v];b.uploadPending()&&b.upload(l)}let d=l.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Zt(l,this.imageAtlas.image,d.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Zt(l,this.glyphAtlasImage,d.ALPHA),this.glyphAtlasImage=null)}prepare(l){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(l,this.imageAtlasTexture)}queryRenderedFeatures(l,d,v,b,M,O,B,U,W,Z){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:b,cameraQueryGeometry:M,scale:O,tileSize:this.tileSize,pixelPosMatrix:Z,transform:U,params:B,queryPadding:this.queryPadding*W},l,d,v):{}}querySourceFeatures(l,d){let v=this.latestFeatureIndex;if(!v||!v.rawTileData)return;let b=v.loadVTLayers(),M=d&&d.sourceLayer?d.sourceLayer:\"\",O=b._geojsonTileLayer||b[M];if(!O)return;let B=n.a6(d&&d.filter),{z:U,x:W,y:Z}=this.tileID.canonical,Q={z:U,x:W,y:Z};for(let st=0;stv)b=!1;else if(d)if(this.expirationTime{this.remove(l,M)},v)),this.data[b].push(M),this.order.push(b),this.order.length>this.max){let O=this._getAndRemoveByKey(this.order[0]);O&&this.onRemove(O)}return this}has(l){return l.wrapped().key in this.data}getAndRemove(l){return this.has(l)?this._getAndRemoveByKey(l.wrapped().key):null}_getAndRemoveByKey(l){let d=this.data[l].shift();return d.timeout&&clearTimeout(d.timeout),this.data[l].length===0&&delete this.data[l],this.order.splice(this.order.indexOf(l),1),d.value}getByKey(l){let d=this.data[l];return d?d[0].value:null}get(l){return this.has(l)?this.data[l.wrapped().key][0].value:null}remove(l,d){if(!this.has(l))return this;let v=l.wrapped().key,b=d===void 0?0:this.data[v].indexOf(d),M=this.data[v][b];return this.data[v].splice(b,1),M.timeout&&clearTimeout(M.timeout),this.data[v].length===0&&delete this.data[v],this.onRemove(M.value),this.order.splice(this.order.indexOf(v),1),this}setMaxSize(l){for(this.max=l;this.order.length>this.max;){let d=this._getAndRemoveByKey(this.order[0]);d&&this.onRemove(d)}return this}filter(l){let d=[];for(let v in this.data)for(let b of this.data[v])l(b.value)||d.push(b);for(let v of d)this.remove(v.value.tileID,v)}}class te{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(l,d,v){let b=String(d);if(this.stateChanges[l]=this.stateChanges[l]||{},this.stateChanges[l][b]=this.stateChanges[l][b]||{},n.e(this.stateChanges[l][b],v),this.deletedStates[l]===null){this.deletedStates[l]={};for(let M in this.state[l])M!==b&&(this.deletedStates[l][M]=null)}else if(this.deletedStates[l]&&this.deletedStates[l][b]===null){this.deletedStates[l][b]={};for(let M in this.state[l][b])v[M]||(this.deletedStates[l][b][M]=null)}else for(let M in v)this.deletedStates[l]&&this.deletedStates[l][b]&&this.deletedStates[l][b][M]===null&&delete this.deletedStates[l][b][M]}removeFeatureState(l,d,v){if(this.deletedStates[l]===null)return;let b=String(d);if(this.deletedStates[l]=this.deletedStates[l]||{},v&&d!==void 0)this.deletedStates[l][b]!==null&&(this.deletedStates[l][b]=this.deletedStates[l][b]||{},this.deletedStates[l][b][v]=null);else if(d!==void 0)if(this.stateChanges[l]&&this.stateChanges[l][b])for(v in this.deletedStates[l][b]={},this.stateChanges[l][b])this.deletedStates[l][b][v]=null;else this.deletedStates[l][b]=null;else this.deletedStates[l]=null}getState(l,d){let v=String(d),b=n.e({},(this.state[l]||{})[v],(this.stateChanges[l]||{})[v]);if(this.deletedStates[l]===null)return{};if(this.deletedStates[l]){let M=this.deletedStates[l][d];if(M===null)return{};for(let O in M)delete b[O]}return b}initializeTileState(l,d){l.setFeatureState(this.state,d)}coalesceChanges(l,d){let v={};for(let b in this.stateChanges){this.state[b]=this.state[b]||{};let M={};for(let O in this.stateChanges[b])this.state[b][O]||(this.state[b][O]={}),n.e(this.state[b][O],this.stateChanges[b][O]),M[O]=this.state[b][O];v[b]=M}for(let b in this.deletedStates){this.state[b]=this.state[b]||{};let M={};if(this.deletedStates[b]===null)for(let O in this.state[b])M[O]={},this.state[b][O]={};else for(let O in this.deletedStates[b]){if(this.deletedStates[b][O]===null)this.state[b][O]={};else for(let B of Object.keys(this.deletedStates[b][O]))delete this.state[b][O][B];M[O]=this.state[b][O]}v[b]=v[b]||{},n.e(v[b],M)}if(this.stateChanges={},this.deletedStates={},Object.keys(v).length!==0)for(let b in l)l[b].setFeatureState(v,d)}}class os extends n.E{constructor(l,d,v){super(),this.id=l,this.dispatcher=v,this.on(\"data\",b=>{b.dataType===\"source\"&&b.sourceDataType===\"metadata\"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&b.dataType===\"source\"&&b.sourceDataType===\"content\"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}),this.on(\"dataloading\",()=>{this._sourceErrored=!1}),this.on(\"error\",()=>{this._sourceErrored=this._source.loaded()}),this._source=((b,M,O,B)=>{let U=new(fo(M.type))(b,M,O,B);if(U.id!==b)throw new Error(`Expected Source id to be ${b} instead of ${U.id}`);return U})(l,d,v,this),this._tiles={},this._cache=new Ol(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new te,this._didEmitContent=!1,this._updated=!1}onAdd(l){this.map=l,this._maxTileCacheSize=l?l._maxTileCacheSize:null,this._maxTileCacheZoomLevels=l?l._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(l)}onRemove(l){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(l)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let l in this._tiles){let d=this._tiles[l];if(d.state!==\"loaded\"&&d.state!==\"errored\")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let l=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,l&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(l,d){return this._source.loadTile(l,d)}_unloadTile(l){if(this._source.unloadTile)return this._source.unloadTile(l,()=>{})}_abortTile(l){this._source.abortTile&&this._source.abortTile(l,()=>{}),this._source.fire(new n.k(\"dataabort\",{tile:l,coord:l.tileID,dataType:\"source\"}))}serialize(){return this._source.serialize()}prepare(l){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let d in this._tiles){let v=this._tiles[d];v.upload(l),v.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(l=>l.tileID).sort(fn).map(l=>l.key)}getRenderableIds(l){let d=[];for(let v in this._tiles)this._isIdRenderable(v,l)&&d.push(this._tiles[v]);return l?d.sort((v,b)=>{let M=v.tileID,O=b.tileID,B=new n.P(M.canonical.x,M.canonical.y)._rotate(this.transform.angle),U=new n.P(O.canonical.x,O.canonical.y)._rotate(this.transform.angle);return M.overscaledZ-O.overscaledZ||U.y-B.y||U.x-B.x}).map(v=>v.tileID.key):d.map(v=>v.tileID).sort(fn).map(v=>v.key)}hasRenderableParent(l){let d=this.findLoadedParent(l,0);return!!d&&this._isIdRenderable(d.tileID.key)}_isIdRenderable(l,d){return this._tiles[l]&&this._tiles[l].hasData()&&!this._coveredTiles[l]&&(d||!this._tiles[l].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let l in this._tiles)this._tiles[l].state!==\"errored\"&&this._reloadTile(l,\"reloading\")}}_reloadTile(l,d){let v=this._tiles[l];v&&(v.state!==\"loading\"&&(v.state=d),this._loadTile(v,this._tileLoaded.bind(this,v,l,d)))}_tileLoaded(l,d,v,b){if(b)return l.state=\"errored\",void(b.status!==404?this._source.fire(new n.j(b,{tile:l})):this.update(this.transform,this.terrain));l.timeAdded=n.h.now(),v===\"expired\"&&(l.refreshedUponExpiration=!0),this._setTileReloadTimer(d,l),this.getSource().type===\"raster-dem\"&&l.dem&&this._backfillDEM(l),this._state.initializeTileState(l,this.map?this.map.painter:null),l.aborted||this._source.fire(new n.k(\"data\",{dataType:\"source\",tile:l,coord:l.tileID}))}_backfillDEM(l){let d=this.getRenderableIds();for(let b=0;b1||(Math.abs(O)>1&&(Math.abs(O+U)===1?O+=U:Math.abs(O-U)===1&&(O-=U)),M.dem&&b.dem&&(b.dem.backfillBorder(M.dem,O,B),b.neighboringTiles&&b.neighboringTiles[W]&&(b.neighboringTiles[W].backfilled=!0)))}}getTile(l){return this.getTileByID(l.key)}getTileByID(l){return this._tiles[l]}_retainLoadedChildren(l,d,v,b){for(let M in this._tiles){let O=this._tiles[M];if(b[M]||!O.hasData()||O.tileID.overscaledZ<=d||O.tileID.overscaledZ>v)continue;let B=O.tileID;for(;O&&O.tileID.overscaledZ>d+1;){let W=O.tileID.scaledTo(O.tileID.overscaledZ-1);O=this._tiles[W.key],O&&O.hasData()&&(B=W)}let U=B;for(;U.overscaledZ>d;)if(U=U.scaledTo(U.overscaledZ-1),l[U.key]){b[B.key]=B;break}}}findLoadedParent(l,d){if(l.key in this._loadedParentTiles){let v=this._loadedParentTiles[l.key];return v&&v.tileID.overscaledZ>=d?v:null}for(let v=l.overscaledZ-1;v>=d;v--){let b=l.scaledTo(v),M=this._getLoadedTile(b);if(M)return M}}_getLoadedTile(l){let d=this._tiles[l.key];return d&&d.hasData()?d:this._cache.getByKey(l.wrapped().key)}updateCacheSize(l){let d=Math.ceil(l.width/this._source.tileSize)+1,v=Math.ceil(l.height/this._source.tileSize)+1,b=Math.floor(d*v*(this._maxTileCacheZoomLevels===null?n.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),M=typeof this._maxTileCacheSize==\"number\"?Math.min(this._maxTileCacheSize,b):b;this._cache.setMaxSize(M)}handleWrapJump(l){let d=Math.round((l-(this._prevLng===void 0?l:this._prevLng))/360);if(this._prevLng=l,d){let v={};for(let b in this._tiles){let M=this._tiles[b];M.tileID=M.tileID.unwrapTo(M.tileID.wrap+d),v[M.tileID.key]=M}this._tiles=v;for(let b in this._timers)clearTimeout(this._timers[b]),delete this._timers[b];for(let b in this._tiles)this._setTileReloadTimer(b,this._tiles[b])}}update(l,d){if(this.transform=l,this.terrain=d,!this._sourceLoaded||this._paused)return;let v;this.updateCacheSize(l),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?v=l.getVisibleUnwrappedCoordinates(this._source.tileID).map(Z=>new n.O(Z.canonical.z,Z.wrap,Z.canonical.z,Z.canonical.x,Z.canonical.y)):(v=l.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:d}),this._source.hasTile&&(v=v.filter(Z=>this._source.hasTile(Z)))):v=[];let b=l.coveringZoomLevel(this._source),M=Math.max(b-os.maxOverzooming,this._source.minzoom),O=Math.max(b+os.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Z={};for(let Q of v)if(Q.canonical.z>this._source.minzoom){let st=Q.scaledTo(Q.canonical.z-1);Z[st.key]=st;let At=Q.scaledTo(Math.max(this._source.minzoom,Math.min(Q.canonical.z,5)));Z[At.key]=At}v=v.concat(Object.values(Z))}let B=v.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,B&&this.fire(new n.k(\"data\",{sourceDataType:\"idle\",dataType:\"source\",sourceId:this.id}));let U=this._updateRetainedTiles(v,b);if(gi(this._source.type)){let Z={},Q={},st=Object.keys(U),At=n.h.now();for(let pt of st){let yt=U[pt],dt=this._tiles[pt];if(!dt||dt.fadeEndTime!==0&&dt.fadeEndTime<=At)continue;let Ft=this.findLoadedParent(yt,M);Ft&&(this._addTile(Ft.tileID),Z[Ft.tileID.key]=Ft.tileID),Q[pt]=yt}this._retainLoadedChildren(Q,b,O,U);for(let pt in Z)U[pt]||(this._coveredTiles[pt]=!0,U[pt]=Z[pt]);if(d){let pt={},yt={};for(let dt of v)this._tiles[dt.key].hasData()?pt[dt.key]=dt:yt[dt.key]=dt;for(let dt in yt){let Ft=yt[dt].children(this._source.maxzoom);this._tiles[Ft[0].key]&&this._tiles[Ft[1].key]&&this._tiles[Ft[2].key]&&this._tiles[Ft[3].key]&&(pt[Ft[0].key]=U[Ft[0].key]=Ft[0],pt[Ft[1].key]=U[Ft[1].key]=Ft[1],pt[Ft[2].key]=U[Ft[2].key]=Ft[2],pt[Ft[3].key]=U[Ft[3].key]=Ft[3],delete yt[dt])}for(let dt in yt){let Ft=this.findLoadedParent(yt[dt],this._source.minzoom);if(Ft){pt[Ft.tileID.key]=U[Ft.tileID.key]=Ft.tileID;for(let Wt in pt)pt[Wt].isChildOf(Ft.tileID)&&delete pt[Wt]}}for(let dt in this._tiles)pt[dt]||(this._coveredTiles[dt]=!0)}}for(let Z in U)this._tiles[Z].clearFadeHold();let W=n.ab(this._tiles,U);for(let Z of W){let Q=this._tiles[Z];Q.hasSymbolBuckets&&!Q.holdingForFade()?Q.setHoldDuration(this.map._fadeDuration):Q.hasSymbolBuckets&&!Q.symbolFadeFinished()||this._removeTile(Z)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(let l in this._tiles)this._tiles[l].holdingForFade()&&this._removeTile(l)}_updateRetainedTiles(l,d){let v={},b={},M=Math.max(d-os.maxOverzooming,this._source.minzoom),O=Math.max(d+os.maxUnderzooming,this._source.minzoom),B={};for(let U of l){let W=this._addTile(U);v[U.key]=U,W.hasData()||dthis._source.maxzoom){let Q=U.children(this._source.maxzoom)[0],st=this.getTile(Q);if(st&&st.hasData()){v[Q.key]=Q;continue}}else{let Q=U.children(this._source.maxzoom);if(v[Q[0].key]&&v[Q[1].key]&&v[Q[2].key]&&v[Q[3].key])continue}let Z=W.wasRequested();for(let Q=U.overscaledZ-1;Q>=M;--Q){let st=U.scaledTo(Q);if(b[st.key])break;if(b[st.key]=!0,W=this.getTile(st),!W&&Z&&(W=this._addTile(st)),W){let At=W.hasData();if((Z||At)&&(v[st.key]=st),Z=W.wasRequested(),At)break}}}return v}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let l in this._tiles){let d=[],v,b=this._tiles[l].tileID;for(;b.overscaledZ>0;){if(b.key in this._loadedParentTiles){v=this._loadedParentTiles[b.key];break}d.push(b.key);let M=b.scaledTo(b.overscaledZ-1);if(v=this._getLoadedTile(M),v)break;b=M}for(let M of d)this._loadedParentTiles[M]=v}}_addTile(l){let d=this._tiles[l.key];if(d)return d;d=this._cache.getAndRemove(l),d&&(this._setTileReloadTimer(l.key,d),d.tileID=l,this._state.initializeTileState(d,this.map?this.map.painter:null),this._cacheTimers[l.key]&&(clearTimeout(this._cacheTimers[l.key]),delete this._cacheTimers[l.key],this._setTileReloadTimer(l.key,d)));let v=d;return d||(d=new to(l,this._source.tileSize*l.overscaleFactor()),this._loadTile(d,this._tileLoaded.bind(this,d,l.key,d.state))),d.uses++,this._tiles[l.key]=d,v||this._source.fire(new n.k(\"dataloading\",{tile:d,coord:d.tileID,dataType:\"source\"})),d}_setTileReloadTimer(l,d){l in this._timers&&(clearTimeout(this._timers[l]),delete this._timers[l]);let v=d.getExpiryTimeout();v&&(this._timers[l]=setTimeout(()=>{this._reloadTile(l,\"expired\"),delete this._timers[l]},v))}_removeTile(l){let d=this._tiles[l];d&&(d.uses--,delete this._tiles[l],this._timers[l]&&(clearTimeout(this._timers[l]),delete this._timers[l]),d.uses>0||(d.hasData()&&d.state!==\"reloading\"?this._cache.add(d.tileID,d,d.getExpiryTimeout()):(d.aborted=!0,this._abortTile(d),this._unloadTile(d))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let l in this._tiles)this._removeTile(l);this._cache.reset()}tilesIn(l,d,v){let b=[],M=this.transform;if(!M)return b;let O=v?M.getCameraQueryGeometry(l):l,B=l.map(pt=>M.pointCoordinate(pt,this.terrain)),U=O.map(pt=>M.pointCoordinate(pt,this.terrain)),W=this.getIds(),Z=1/0,Q=1/0,st=-1/0,At=-1/0;for(let pt of U)Z=Math.min(Z,pt.x),Q=Math.min(Q,pt.y),st=Math.max(st,pt.x),At=Math.max(At,pt.y);for(let pt=0;pt=0&&St[1].y+Wt>=0){let Bt=B.map(Qt=>dt.getTilePoint(Qt)),Yt=U.map(Qt=>dt.getTilePoint(Qt));b.push({tile:yt,tileID:dt,queryGeometry:Bt,cameraQueryGeometry:Yt,scale:Ft})}}return b}getVisibleCoordinates(l){let d=this.getRenderableIds(l).map(v=>this._tiles[v].tileID);for(let v of d)v.posMatrix=this.transform.calculatePosMatrix(v.toUnwrapped());return d}hasTransition(){if(this._source.hasTransition())return!0;if(gi(this._source.type)){let l=n.h.now();for(let d in this._tiles)if(this._tiles[d].fadeEndTime>=l)return!0}return!1}setFeatureState(l,d,v){this._state.updateState(l=l||\"_geojsonTileLayer\",d,v)}removeFeatureState(l,d,v){this._state.removeFeatureState(l=l||\"_geojsonTileLayer\",d,v)}getFeatureState(l,d){return this._state.getState(l=l||\"_geojsonTileLayer\",d)}setDependencies(l,d,v){let b=this._tiles[l];b&&b.setDependencies(d,v)}reloadTilesForDependencies(l,d){for(let v in this._tiles)this._tiles[v].hasDependency(l,d)&&this._reloadTile(v,\"reloading\");this._cache.filter(v=>!v.hasDependency(l,d))}}function fn(T,l){let d=Math.abs(2*T.wrap)-+(T.wrap<0),v=Math.abs(2*l.wrap)-+(l.wrap<0);return T.overscaledZ-l.overscaledZ||v-d||l.canonical.y-T.canonical.y||l.canonical.x-T.canonical.x}function gi(T){return T===\"raster\"||T===\"image\"||T===\"video\"}os.maxOverzooming=10,os.maxUnderzooming=3;let oi=\"mapboxgl_preloaded_worker_pool\";class eo{constructor(){this.active={}}acquire(l){if(!this.workers)for(this.workers=[];this.workers.length{d.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[oi]}numActive(){return Object.keys(this.active).length}}let uu=Math.floor(n.h.hardwareConcurrency/2),al;function po(){return al||(al=new eo),al}eo.workerCount=n.ac(globalThis)?Math.max(Math.min(uu,3),1):1;class ll{constructor(l,d){this.reset(l,d)}reset(l,d){this.points=l||[],this._distances=[0];for(let v=1;v0?(b-O)/B:0;return this.points[M].mult(1-U).add(this.points[d].mult(U))}}function Pa(T,l){let d=!0;return T===\"always\"||T!==\"never\"&&l!==\"never\"||(d=!1),d}class Ao{constructor(l,d,v){let b=this.boxCells=[],M=this.circleCells=[];this.xCellCount=Math.ceil(l/v),this.yCellCount=Math.ceil(d/v);for(let O=0;Othis.width||b<0||d>this.height)return[];let U=[];if(l<=0&&d<=0&&this.width<=v&&this.height<=b){if(M)return[{key:null,x1:l,y1:d,x2:v,y2:b}];for(let W=0;W0}hitTestCircle(l,d,v,b,M){let O=l-v,B=l+v,U=d-v,W=d+v;if(B<0||O>this.width||W<0||U>this.height)return!1;let Z=[];return this._forEachCell(O,U,B,W,this._queryCellCircle,Z,{hitTest:!0,overlapMode:b,circle:{x:l,y:d,radius:v},seenUids:{box:{},circle:{}}},M),Z.length>0}_queryCell(l,d,v,b,M,O,B,U){let{seenUids:W,hitTest:Z,overlapMode:Q}=B,st=this.boxCells[M];if(st!==null){let pt=this.bboxes;for(let yt of st)if(!W.box[yt]){W.box[yt]=!0;let dt=4*yt,Ft=this.boxKeys[yt];if(l<=pt[dt+2]&&d<=pt[dt+3]&&v>=pt[dt+0]&&b>=pt[dt+1]&&(!U||U(Ft))&&(!Z||!Pa(Q,Ft.overlapMode))&&(O.push({key:Ft,x1:pt[dt],y1:pt[dt+1],x2:pt[dt+2],y2:pt[dt+3]}),Z))return!0}}let At=this.circleCells[M];if(At!==null){let pt=this.circles;for(let yt of At)if(!W.circle[yt]){W.circle[yt]=!0;let dt=3*yt,Ft=this.circleKeys[yt];if(this._circleAndRectCollide(pt[dt],pt[dt+1],pt[dt+2],l,d,v,b)&&(!U||U(Ft))&&(!Z||!Pa(Q,Ft.overlapMode))){let Wt=pt[dt],St=pt[dt+1],Bt=pt[dt+2];if(O.push({key:Ft,x1:Wt-Bt,y1:St-Bt,x2:Wt+Bt,y2:St+Bt}),Z)return!0}}}return!1}_queryCellCircle(l,d,v,b,M,O,B,U){let{circle:W,seenUids:Z,overlapMode:Q}=B,st=this.boxCells[M];if(st!==null){let pt=this.bboxes;for(let yt of st)if(!Z.box[yt]){Z.box[yt]=!0;let dt=4*yt,Ft=this.boxKeys[yt];if(this._circleAndRectCollide(W.x,W.y,W.radius,pt[dt+0],pt[dt+1],pt[dt+2],pt[dt+3])&&(!U||U(Ft))&&!Pa(Q,Ft.overlapMode))return O.push(!0),!0}}let At=this.circleCells[M];if(At!==null){let pt=this.circles;for(let yt of At)if(!Z.circle[yt]){Z.circle[yt]=!0;let dt=3*yt,Ft=this.circleKeys[yt];if(this._circlesCollide(pt[dt],pt[dt+1],pt[dt+2],W.x,W.y,W.radius)&&(!U||U(Ft))&&!Pa(Q,Ft.overlapMode))return O.push(!0),!0}}}_forEachCell(l,d,v,b,M,O,B,U){let W=this._convertToXCellCoord(l),Z=this._convertToYCellCoord(d),Q=this._convertToXCellCoord(v),st=this._convertToYCellCoord(b);for(let At=W;At<=Q;At++)for(let pt=Z;pt<=st;pt++)if(M.call(this,l,d,v,b,this.xCellCount*pt+At,O,B,U))return}_convertToXCellCoord(l){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(l*this.xScale)))}_convertToYCellCoord(l){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(l*this.yScale)))}_circlesCollide(l,d,v,b,M,O){let B=b-l,U=M-d,W=v+O;return W*W>B*B+U*U}_circleAndRectCollide(l,d,v,b,M,O,B){let U=(O-b)/2,W=Math.abs(l-(b+U));if(W>U+v)return!1;let Z=(B-M)/2,Q=Math.abs(d-(M+Z));if(Q>Z+v)return!1;if(W<=U||Q<=Z)return!0;let st=W-U,At=Q-Z;return st*st+At*At<=v*v}}function ve(T,l,d,v,b){let M=n.Z();return l?(n.a0(M,M,[1/b,1/b,1]),d||n.ae(M,M,v.angle)):n.a1(M,v.labelPlaneMatrix,T),M}function Uo(T,l,d,v,b){if(l){let M=n.af(T);return n.a0(M,M,[b,b,1]),d||n.ae(M,M,-v.angle),M}return v.glCoordMatrix}function dn(T,l,d){let v;d?(v=[T.x,T.y,d(T.x,T.y),1],n.ag(v,v,l)):(v=[T.x,T.y,0,1],vt(v,v,l));let b=v[3];return{point:new n.P(v[0]/b,v[1]/b),signedDistanceFromCamera:b}}function Bl(T,l){return .5+T/l*.5}function Ia(T,l){let d=T[0]/T[3],v=T[1]/T[3];return d>=-l[0]&&d<=l[0]&&v>=-l[1]&&v<=l[1]}function Se(T,l,d,v,b,M,O,B,U,W){let Z=v?T.textSizeData:T.iconSizeData,Q=n.ah(Z,d.transform.zoom),st=[256/d.width*2+1,256/d.height*2+1],At=v?T.text.dynamicLayoutVertexArray:T.icon.dynamicLayoutVertexArray;At.clear();let pt=T.lineVertexArray,yt=v?T.text.placedSymbolArray:T.icon.placedSymbolArray,dt=d.transform.width/d.transform.height,Ft=!1;for(let Wt=0;WtMath.abs(d.x-l.x)*v?{useVertical:!0}:(T===n.ai.vertical?l.yd.x)?{needsFlipping:!0}:null}function Os(T,l,d,v,b,M,O,B,U,W,Z,Q,st,At,pt,yt){let dt=l/24,Ft=T.lineOffsetX*dt,Wt=T.lineOffsetY*dt,St;if(T.numGlyphs>1){let Bt=T.glyphStartIndex+T.numGlyphs,Yt=T.lineStartIndex,Qt=T.lineStartIndex+T.lineLength,se=Dr(dt,B,Ft,Wt,d,Z,Q,T,U,M,st,pt,yt);if(!se)return{notEnoughRoom:!0};let pe=dn(se.first.point,O,yt).point,he=dn(se.last.point,O,yt).point;if(v&&!d){let xe=mr(T.writingMode,pe,he,At);if(xe)return xe}St=[se.first];for(let xe=T.glyphStartIndex+1;xe0?pe.point:Ca(Q,se,Yt,1,b,yt),xe=mr(T.writingMode,Yt,he,At);if(xe)return xe}let Bt=J(dt*B.getoffsetX(T.glyphStartIndex),Ft,Wt,d,Z,Q,T.segment,T.lineStartIndex,T.lineStartIndex+T.lineLength,U,M,st,pt,yt);if(!Bt)return{notEnoughRoom:!0};St=[Bt]}for(let Bt of St)n.ak(W,Bt.point,Bt.angle);return{}}function Ca(T,l,d,v,b,M){let O=dn(T.add(T.sub(l)._unit()),b,M).point,B=d.sub(O);return d.add(B._mult(v/B.mag()))}function Tr(T,l){let{projectionCache:d,lineVertexArray:v,labelPlaneMatrix:b,tileAnchorPoint:M,distanceFromAnchor:O,getElevation:B,previousVertex:U,direction:W,absOffsetX:Z}=l;if(d.projections[T])return d.projections[T];let Q=new n.P(v.getx(T),v.gety(T)),st=dn(Q,b,B);if(st.signedDistanceFromCamera>0)return d.projections[T]=st.point,st.point;let At=T-W;return Ca(O===0?M:new n.P(v.getx(At),v.gety(At)),Q,U,Z-O+1,b,B)}function sa(T,l,d){return T._unit()._perp()._mult(l*d)}function gt(T,l,d,v,b,M,O,B){let{projectionCache:U,direction:W}=B;if(U.offsets[T])return U.offsets[T];let Z=d.add(l);if(T+W=b)return U.offsets[T]=Z,Z;let Q=Tr(T+W,B),st=sa(Q.sub(d),O,W),At=d.add(st),pt=Q.add(st);return U.offsets[T]=n.al(M,Z,At,pt)||Z,U.offsets[T]}function J(T,l,d,v,b,M,O,B,U,W,Z,Q,st,At){let pt=v?T-l:T+l,yt=pt>0?1:-1,dt=0;v&&(yt*=-1,dt=Math.PI),yt<0&&(dt+=Math.PI);let Ft,Wt,St=yt>0?B+O:B+O+1,Bt=b,Yt=b,Qt=0,se=0,pe=Math.abs(pt),he=[],xe;for(;Qt+se<=pe;){if(St+=yt,St=U)return null;Qt+=se,Yt=Bt,Wt=Ft;let Me={projectionCache:Q,lineVertexArray:W,labelPlaneMatrix:Z,tileAnchorPoint:M,distanceFromAnchor:Qt,getElevation:At,previousVertex:Yt,direction:yt,absOffsetX:pe};if(Bt=Tr(St,Me),d===0)he.push(Yt),xe=Bt.sub(Yt);else{let dr,Xe=Bt.sub(Yt);dr=Xe.mag()===0?sa(Tr(St+yt,Me).sub(Bt),d,yt):sa(Xe,d,yt),Wt||(Wt=Yt.add(dr)),Ft=gt(St,dr,Bt,B,U,Wt,d,Me),he.push(Wt),xe=Ft.sub(Wt)}se=xe.mag()}let We=xe._mult((pe-Qt)/se)._add(Wt||Yt),Kr=dt+Math.atan2(Bt.y-Yt.y,Bt.x-Yt.x);return he.push(We),{point:We,angle:st?Kr:0,path:he}}let nt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ht(T,l){for(let d=0;d=1;Vr--)Xe.push(Me.path[Vr]);for(let Vr=1;Vrdn(ei,U,pt));Xe=Vr.some(ei=>ei.signedDistanceFromCamera<=0)?[]:Vr.map(ei=>ei.point)}let Jr=[];if(Xe.length>0){let Vr=Xe[0].clone(),ei=Xe[0].clone();for(let Rn=1;Rn=xe.x&&ei.x<=We.x&&Vr.y>=xe.y&&ei.y<=We.y?[Xe]:ei.xWe.x||ei.yWe.y?[]:n.am([Xe],xe.x,xe.y,We.x,We.y)}for(let Vr of Jr){Kr.reset(Vr,.25*he);let ei=0;ei=Kr.length<=.5*he?1:Math.ceil(Kr.paddedLength/Vi)+1;for(let Rn=0;Rn=this.screenRightBoundary||bthis.screenBottomBoundary}isInsideGrid(l,d,v,b){return v>=0&&l=0&&dv.collisionGroupID===d}}return this.collisionGroups[l]}}function _r(T,l,d,v,b){let{horizontalAlign:M,verticalAlign:O}=n.au(T);return new n.P(-(M-.5)*l+v[0]*b,-(O-.5)*d+v[1]*b)}function Ye(T,l,d,v,b,M){let{x1:O,x2:B,y1:U,y2:W,anchorPointX:Z,anchorPointY:Q}=T,st=new n.P(l,d);return v&&st._rotate(b?M:-M),{x1:O+st.x,y1:U+st.y,x2:B+st.x,y2:W+st.y,anchorPointX:Z,anchorPointY:Q}}class lr{constructor(l,d,v,b,M){this.transform=l.clone(),this.terrain=d,this.collisionIndex=new _t(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=v,this.retainedQueryData={},this.collisionGroups=new ar(b),this.collisionCircleArrays={},this.prevPlacement=M,M&&(M.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(l,d,v,b){let M=v.getBucket(d),O=v.latestFeatureIndex;if(!M||!O||d.id!==M.layerIds[0])return;let B=v.collisionBoxArray,U=M.layers[0].layout,W=Math.pow(2,this.transform.zoom-v.tileID.overscaledZ),Z=v.tileSize/n.N,Q=this.transform.calculatePosMatrix(v.tileID.toUnwrapped()),st=U.get(\"text-pitch-alignment\")===\"map\",At=U.get(\"text-rotation-alignment\")===\"map\",pt=Dt(v,1,this.transform.zoom),yt=ve(Q,st,At,this.transform,pt),dt=null;if(st){let Wt=Uo(Q,st,At,this.transform,pt);dt=n.a1([],this.transform.labelPlaneMatrix,Wt)}this.retainedQueryData[M.bucketInstanceId]=new oe(M.bucketInstanceId,O,M.sourceLayerIndex,M.index,v.tileID);let Ft={bucket:M,layout:U,posMatrix:Q,textLabelPlaneMatrix:yt,labelToScreenMatrix:dt,scale:W,textPixelRatio:Z,holdingForFade:v.holdingForFade(),collisionBoxArray:B,partiallyEvaluatedTextSize:n.ah(M.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(M.sourceID)};if(b)for(let Wt of M.sortKeyRanges){let{sortKey:St,symbolInstanceStart:Bt,symbolInstanceEnd:Yt}=Wt;l.push({sortKey:St,symbolInstanceStart:Bt,symbolInstanceEnd:Yt,parameters:Ft})}else l.push({symbolInstanceStart:0,symbolInstanceEnd:M.symbolInstances.length,parameters:Ft})}attemptAnchorPlacement(l,d,v,b,M,O,B,U,W,Z,Q,st,At,pt,yt,dt){let Ft=n.aq[l.textAnchor],Wt=[l.textOffset0,l.textOffset1],St=_r(Ft,v,b,Wt,M),Bt=this.collisionIndex.placeCollisionBox(Ye(d,St.x,St.y,O,B,this.transform.angle),Q,U,W,Z.predicate,dt);if((!yt||this.collisionIndex.placeCollisionBox(Ye(yt,St.x,St.y,O,B,this.transform.angle),Q,U,W,Z.predicate,dt).box.length!==0)&&Bt.box.length>0){let Yt;if(this.prevPlacement&&this.prevPlacement.variableOffsets[st.crossTileID]&&this.prevPlacement.placements[st.crossTileID]&&this.prevPlacement.placements[st.crossTileID].text&&(Yt=this.prevPlacement.variableOffsets[st.crossTileID].anchor),st.crossTileID===0)throw new Error(\"symbolInstance.crossTileID can't be 0\");return this.variableOffsets[st.crossTileID]={textOffset:Wt,width:v,height:b,anchor:Ft,textBoxScale:M,prevAnchor:Yt},this.markUsedJustification(At,Ft,st,pt),At.allowVerticalPlacement&&(this.markUsedOrientation(At,pt,st),this.placedOrientations[st.crossTileID]=pt),{shift:St,placedGlyphBoxes:Bt}}}placeLayerBucketPart(l,d,v){let{bucket:b,layout:M,posMatrix:O,textLabelPlaneMatrix:B,labelToScreenMatrix:U,textPixelRatio:W,holdingForFade:Z,collisionBoxArray:Q,partiallyEvaluatedTextSize:st,collisionGroup:At}=l.parameters,pt=M.get(\"text-optional\"),yt=M.get(\"icon-optional\"),dt=n.ar(M,\"text-overlap\",\"text-allow-overlap\"),Ft=dt===\"always\",Wt=n.ar(M,\"icon-overlap\",\"icon-allow-overlap\"),St=Wt===\"always\",Bt=M.get(\"text-rotation-alignment\")===\"map\",Yt=M.get(\"text-pitch-alignment\")===\"map\",Qt=M.get(\"icon-text-fit\")!==\"none\",se=M.get(\"symbol-z-order\")===\"viewport-y\",pe=Ft&&(St||!b.hasIconData()||yt),he=St&&(Ft||!b.hasTextData()||pt);!b.collisionArrays&&Q&&b.deserializeCollisionBoxes(Q);let xe=this.retainedQueryData[b.bucketInstanceId].tileID,We=this.terrain?(Me,dr)=>this.terrain.getElevation(xe,Me,dr):null,Kr=(Me,dr)=>{var Xe,Vi;if(d[Me.crossTileID])return;if(Z)return void(this.placements[Me.crossTileID]=new re(!1,!1,!1));let Jr=!1,Vr=!1,ei=!0,Rn=null,$i={box:null,offscreen:null},zs={box:null,offscreen:null},cs=null,Dn=null,Wo=null,jr=0,jl=0,Gl=0;dr.textFeatureIndex?jr=dr.textFeatureIndex:Me.useRuntimeCollisionCircles&&(jr=Me.featureIndex),dr.verticalTextFeatureIndex&&(jl=dr.verticalTextFeatureIndex);let mu=dr.textBox;if(mu){let Ns=On=>{let us=n.ai.horizontal;if(b.allowVerticalPlacement&&!On&&this.prevPlacement){let Ho=this.prevPlacement.placedOrientations[Me.crossTileID];Ho&&(this.placedOrientations[Me.crossTileID]=Ho,us=Ho,this.markUsedOrientation(b,us,Me))}return us},Es=(On,us)=>{if(b.allowVerticalPlacement&&Me.numVerticalGlyphVertices>0&&dr.verticalTextBox){for(let Ho of b.writingModes)if(Ho===n.ai.vertical?($i=us(),zs=$i):$i=On(),$i&&$i.box&&$i.box.length)break}else $i=On()},yo=Me.textAnchorOffsetStartIndex,_h=Me.textAnchorOffsetEndIndex;if(_h===yo){let On=(us,Ho)=>{let pn=this.collisionIndex.placeCollisionBox(us,dt,W,O,At.predicate,We);return pn&&pn.box&&pn.box.length&&(this.markUsedOrientation(b,Ho,Me),this.placedOrientations[Me.crossTileID]=Ho),pn};Es(()=>On(mu,n.ai.horizontal),()=>{let us=dr.verticalTextBox;return b.allowVerticalPlacement&&Me.numVerticalGlyphVertices>0&&us?On(us,n.ai.vertical):{box:null,offscreen:null}}),Ns($i&&$i.box&&$i.box.length)}else{let On=n.aq[(Vi=(Xe=this.prevPlacement)===null||Xe===void 0?void 0:Xe.variableOffsets[Me.crossTileID])===null||Vi===void 0?void 0:Vi.anchor],us=(pn,no,Gr)=>{let Na=pn.x2-pn.x1,d_=pn.y2-pn.y1,Bd=Me.textBoxScale,oA=Qt&&Wt===\"never\"?no:null,Wl={box:[],offscreen:!1},qo=dt===\"never\"?1:2,me=\"never\";On&&qo++;for(let Le=0;Leus(mu,dr.iconBox,n.ai.horizontal),()=>{let pn=dr.verticalTextBox;return b.allowVerticalPlacement&&!($i&&$i.box&&$i.box.length)&&Me.numVerticalGlyphVertices>0&&pn?us(pn,dr.verticalIconBox,n.ai.vertical):{box:null,offscreen:null}}),$i&&(Jr=$i.box,ei=$i.offscreen);let Ho=Ns($i&&$i.box);if(!Jr&&this.prevPlacement){let pn=this.prevPlacement.variableOffsets[Me.crossTileID];pn&&(this.variableOffsets[Me.crossTileID]=pn,this.markUsedJustification(b,pn.anchor,Me,Ho))}}}if(cs=$i,Jr=cs&&cs.box&&cs.box.length>0,ei=cs&&cs.offscreen,Me.useRuntimeCollisionCircles){let Ns=b.text.placedSymbolArray.get(Me.centerJustifiedTextSymbolIndex),Es=n.aj(b.textSizeData,st,Ns),yo=M.get(\"text-padding\");Dn=this.collisionIndex.placeCollisionCircles(dt,Ns,b.lineVertexArray,b.glyphOffsetArray,Es,O,B,U,v,Yt,At.predicate,Me.collisionCircleDiameter,yo,We),Dn.circles.length&&Dn.collisionDetected&&!v&&n.w(\"Collisions detected, but collision boxes are not shown\"),Jr=Ft||Dn.circles.length>0&&!Dn.collisionDetected,ei=ei&&Dn.offscreen}if(dr.iconFeatureIndex&&(Gl=dr.iconFeatureIndex),dr.iconBox){let Ns=Es=>{let yo=Qt&&Rn?Ye(Es,Rn.x,Rn.y,Bt,Yt,this.transform.angle):Es;return this.collisionIndex.placeCollisionBox(yo,Wt,W,O,At.predicate,We)};zs&&zs.box&&zs.box.length&&dr.verticalIconBox?(Wo=Ns(dr.verticalIconBox),Vr=Wo.box.length>0):(Wo=Ns(dr.iconBox),Vr=Wo.box.length>0),ei=ei&&Wo.offscreen}let gu=pt||Me.numHorizontalGlyphVertices===0&&Me.numVerticalGlyphVertices===0,gh=yt||Me.numIconVertices===0;if(gu||gh?gh?gu||(Vr=Vr&&Jr):Jr=Vr&&Jr:Vr=Jr=Vr&&Jr,Jr&&cs&&cs.box&&this.collisionIndex.insertCollisionBox(cs.box,dt,M.get(\"text-ignore-placement\"),b.bucketInstanceId,zs&&zs.box&&jl?jl:jr,At.ID),Vr&&Wo&&this.collisionIndex.insertCollisionBox(Wo.box,Wt,M.get(\"icon-ignore-placement\"),b.bucketInstanceId,Gl,At.ID),Dn&&(Jr&&this.collisionIndex.insertCollisionCircles(Dn.circles,dt,M.get(\"text-ignore-placement\"),b.bucketInstanceId,jr,At.ID),v)){let Ns=b.bucketInstanceId,Es=this.collisionCircleArrays[Ns];Es===void 0&&(Es=this.collisionCircleArrays[Ns]=new ne);for(let yo=0;yo=0;--dr){let Xe=Me[dr];Kr(b.symbolInstances.get(Xe),b.collisionArrays[Xe])}}else for(let Me=l.symbolInstanceStart;Me=0&&(l.text.placedSymbolArray.get(B).crossTileID=M>=0&&B!==M?0:v.crossTileID)}markUsedOrientation(l,d,v){let b=d===n.ai.horizontal||d===n.ai.horizontalOnly?d:0,M=d===n.ai.vertical?d:0,O=[v.leftJustifiedTextSymbolIndex,v.centerJustifiedTextSymbolIndex,v.rightJustifiedTextSymbolIndex];for(let B of O)l.text.placedSymbolArray.get(B).placedOrientation=b;v.verticalPlacedTextSymbolIndex&&(l.text.placedSymbolArray.get(v.verticalPlacedTextSymbolIndex).placedOrientation=M)}commit(l){this.commitTime=l,this.zoomAtLastRecencyCheck=this.transform.zoom;let d=this.prevPlacement,v=!1;this.prevZoomAdjustment=d?d.zoomAdjustment(this.transform.zoom):0;let b=d?d.symbolFadeChange(l):1,M=d?d.opacities:{},O=d?d.variableOffsets:{},B=d?d.placedOrientations:{};for(let U in this.placements){let W=this.placements[U],Z=M[U];Z?(this.opacities[U]=new Ut(Z,b,W.text,W.icon),v=v||W.text!==Z.text.placed||W.icon!==Z.icon.placed):(this.opacities[U]=new Ut(null,b,W.text,W.icon,W.skipFade),v=v||W.text||W.icon)}for(let U in M){let W=M[U];if(!this.opacities[U]){let Z=new Ut(W,b,!1,!1);Z.isHidden()||(this.opacities[U]=Z,v=v||W.text.placed||W.icon.placed)}}for(let U in O)this.variableOffsets[U]||!this.opacities[U]||this.opacities[U].isHidden()||(this.variableOffsets[U]=O[U]);for(let U in B)this.placedOrientations[U]||!this.opacities[U]||this.opacities[U].isHidden()||(this.placedOrientations[U]=B[U]);if(d&&d.lastPlacementChangeTime===void 0)throw new Error(\"Last placement time for previous placement is not defined\");v?this.lastPlacementChangeTime=l:typeof this.lastPlacementChangeTime!=\"number\"&&(this.lastPlacementChangeTime=d?d.lastPlacementChangeTime:l)}updateLayerOpacities(l,d){let v={};for(let b of d){let M=b.getBucket(l);M&&b.latestFeatureIndex&&l.id===M.layerIds[0]&&this.updateBucketOpacities(M,v,b.collisionBoxArray)}}updateBucketOpacities(l,d,v){l.hasTextData()&&(l.text.opacityVertexArray.clear(),l.text.hasVisibleVertices=!1),l.hasIconData()&&(l.icon.opacityVertexArray.clear(),l.icon.hasVisibleVertices=!1),l.hasIconCollisionBoxData()&&l.iconCollisionBox.collisionVertexArray.clear(),l.hasTextCollisionBoxData()&&l.textCollisionBox.collisionVertexArray.clear();let b=l.layers[0],M=b.layout,O=new Ut(null,0,!1,!1,!0),B=M.get(\"text-allow-overlap\"),U=M.get(\"icon-allow-overlap\"),W=b._unevaluatedLayout.hasValue(\"text-variable-anchor\")||b._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),Z=M.get(\"text-rotation-alignment\")===\"map\",Q=M.get(\"text-pitch-alignment\")===\"map\",st=M.get(\"icon-text-fit\")!==\"none\",At=new Ut(null,0,B&&(U||!l.hasIconData()||M.get(\"icon-optional\")),U&&(B||!l.hasTextData()||M.get(\"text-optional\")),!0);!l.collisionArrays&&v&&(l.hasIconCollisionBoxData()||l.hasTextCollisionBoxData())&&l.deserializeCollisionBoxes(v);let pt=(yt,dt,Ft)=>{for(let Wt=0;Wt

0,Qt=this.placedOrientations[dt.crossTileID],se=Qt===n.ai.vertical,pe=Qt===n.ai.horizontal||Qt===n.ai.horizontalOnly;if(Ft>0||Wt>0){let he=Kn(Bt.text);pt(l.text,Ft,se?oa:he),pt(l.text,Wt,pe?oa:he);let xe=Bt.text.isHidden();[dt.rightJustifiedTextSymbolIndex,dt.centerJustifiedTextSymbolIndex,dt.leftJustifiedTextSymbolIndex].forEach(Me=>{Me>=0&&(l.text.placedSymbolArray.get(Me).hidden=xe||se?1:0)}),dt.verticalPlacedTextSymbolIndex>=0&&(l.text.placedSymbolArray.get(dt.verticalPlacedTextSymbolIndex).hidden=xe||pe?1:0);let We=this.variableOffsets[dt.crossTileID];We&&this.markUsedJustification(l,We.anchor,dt,Qt);let Kr=this.placedOrientations[dt.crossTileID];Kr&&(this.markUsedJustification(l,\"left\",dt,Kr),this.markUsedOrientation(l,Kr,dt))}if(Yt){let he=Kn(Bt.icon),xe=!(st&&dt.verticalPlacedIconSymbolIndex&&se);dt.placedIconSymbolIndex>=0&&(pt(l.icon,dt.numIconVertices,xe?he:oa),l.icon.placedSymbolArray.get(dt.placedIconSymbolIndex).hidden=Bt.icon.isHidden()),dt.verticalPlacedIconSymbolIndex>=0&&(pt(l.icon,dt.numVerticalIconVertices,xe?oa:he),l.icon.placedSymbolArray.get(dt.verticalPlacedIconSymbolIndex).hidden=Bt.icon.isHidden())}if(l.hasIconCollisionBoxData()||l.hasTextCollisionBoxData()){let he=l.collisionArrays[yt];if(he){let xe=new n.P(0,0);if(he.textBox||he.verticalTextBox){let Kr=!0;if(W){let Me=this.variableOffsets[St];Me?(xe=_r(Me.anchor,Me.width,Me.height,Me.textOffset,Me.textBoxScale),Z&&xe._rotate(Q?this.transform.angle:-this.transform.angle)):Kr=!1}he.textBox&&xr(l.textCollisionBox.collisionVertexArray,Bt.text.placed,!Kr||se,xe.x,xe.y),he.verticalTextBox&&xr(l.textCollisionBox.collisionVertexArray,Bt.text.placed,!Kr||pe,xe.x,xe.y)}let We=!!(!pe&&he.verticalIconBox);he.iconBox&&xr(l.iconCollisionBox.collisionVertexArray,Bt.icon.placed,We,st?xe.x:0,st?xe.y:0),he.verticalIconBox&&xr(l.iconCollisionBox.collisionVertexArray,Bt.icon.placed,!We,st?xe.x:0,st?xe.y:0)}}}if(l.sortFeatures(this.transform.angle),this.retainedQueryData[l.bucketInstanceId]&&(this.retainedQueryData[l.bucketInstanceId].featureSortOrder=l.featureSortOrder),l.hasTextData()&&l.text.opacityVertexBuffer&&l.text.opacityVertexBuffer.updateData(l.text.opacityVertexArray),l.hasIconData()&&l.icon.opacityVertexBuffer&&l.icon.opacityVertexBuffer.updateData(l.icon.opacityVertexArray),l.hasIconCollisionBoxData()&&l.iconCollisionBox.collisionVertexBuffer&&l.iconCollisionBox.collisionVertexBuffer.updateData(l.iconCollisionBox.collisionVertexArray),l.hasTextCollisionBoxData()&&l.textCollisionBox.collisionVertexBuffer&&l.textCollisionBox.collisionVertexBuffer.updateData(l.textCollisionBox.collisionVertexArray),l.text.opacityVertexArray.length!==l.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${l.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${l.text.layoutVertexArray.length}) / 4`);if(l.icon.opacityVertexArray.length!==l.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${l.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${l.icon.layoutVertexArray.length}) / 4`);if(l.bucketInstanceId in this.collisionCircleArrays){let yt=this.collisionCircleArrays[l.bucketInstanceId];l.placementInvProjMatrix=yt.invProjMatrix,l.placementViewportMatrix=yt.viewportMatrix,l.collisionCircleArray=yt.circles,delete this.collisionCircleArrays[l.bucketInstanceId]}}symbolFadeChange(l){return this.fadeDuration===0?1:(l-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(l){return Math.max(0,(this.transform.zoom-l)/1.5)}hasTransitions(l){return this.stale||l-this.lastPlacementChangeTimel}setStale(){this.stale=!0}}function xr(T,l,d,v,b){T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0)}let vi=Math.pow(2,25),Bi=Math.pow(2,24),ni=Math.pow(2,17),Hr=Math.pow(2,16),Un=Math.pow(2,9),Li=Math.pow(2,8),gn=Math.pow(2,1);function Kn(T){if(T.opacity===0&&!T.placed)return 0;if(T.opacity===1&&T.placed)return 4294967295;let l=T.placed?1:0,d=Math.floor(127*T.opacity);return d*vi+l*Bi+d*ni+l*Hr+d*Un+l*Li+d*gn+l}let oa=0;class Om{constructor(l){this._sortAcrossTiles=l.layout.get(\"symbol-z-order\")!==\"viewport-y\"&&!l.layout.get(\"symbol-sort-key\").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(l,d,v,b,M){let O=this._bucketParts;for(;this._currentTileIndexB.sortKey-U.sortKey));this._currentPartIndex!this._forceFullPlacement&&n.h.now()-b>2;for(;this._currentPlacementIndex>=0;){let O=d[l[this._currentPlacementIndex]],B=this.placement.collisionIndex.transform.zoom;if(O.type===\"symbol\"&&(!O.minzoom||O.minzoom<=B)&&(!O.maxzoom||O.maxzoom>B)){if(this._inProgressLayer||(this._inProgressLayer=new Om(O)),this._inProgressLayer.continuePlacement(v[O.source],this.placement,this._showCollisionBoxes,O,M))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(l){return this.placement.commit(l),this.placement}}let ws=512/n.N/2;class ih{constructor(l,d,v){this.tileID=l,this.bucketInstanceId=v,this._symbolsByKey={};let b=new Map;for(let M=0;M({x:Math.floor(U.anchorX*ws),y:Math.floor(U.anchorY*ws)})),crossTileIDs:O.map(U=>U.crossTileID)};if(B.positions.length>128){let U=new n.av(B.positions.length,16,Uint16Array);for(let{x:W,y:Z}of B.positions)U.add(W,Z);U.finish(),delete B.positions,B.index=U}this._symbolsByKey[M]=B}}getScaledCoordinates(l,d){let{x:v,y:b,z:M}=this.tileID.canonical,{x:O,y:B,z:U}=d.canonical,W=ws/Math.pow(2,U-M),Z=(B*n.N+l.anchorY)*W,Q=b*n.N*ws;return{x:Math.floor((O*n.N+l.anchorX)*W-v*n.N*ws),y:Math.floor(Z-Q)}}findMatches(l,d,v){let b=this.tileID.canonical.zl)}}class ai{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class La{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(l){let d=Math.round((l-this.lng)/360);if(d!==0)for(let v in this.indexes){let b=this.indexes[v],M={};for(let O in b){let B=b[O];B.tileID=B.tileID.unwrapTo(B.tileID.wrap+d),M[B.tileID.key]=B}this.indexes[v]=M}this.lng=l}addBucket(l,d,v){if(this.indexes[l.overscaledZ]&&this.indexes[l.overscaledZ][l.key]){if(this.indexes[l.overscaledZ][l.key].bucketInstanceId===d.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(l.overscaledZ,this.indexes[l.overscaledZ][l.key])}for(let M=0;Ml.overscaledZ)for(let B in O){let U=O[B];U.tileID.isChildOf(l)&&U.findMatches(d.symbolInstances,l,b)}else{let B=O[l.scaledTo(Number(M)).key];B&&B.findMatches(d.symbolInstances,l,b)}}for(let M=0;M{d[v]=!0});for(let v in this.layerIndexes)d[v]||delete this.layerIndexes[v]}}let on=(T,l)=>n.x(T,l&&l.filter(d=>d.identifier!==\"source.canvas\")),kn=n.F(n.ax,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setGlyphs\",\"setSprite\"]),Bm=n.F(n.ax,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Vo=n.aw();class Vn extends n.E{constructor(l,d={}){super(),this.map=l,this.dispatcher=new rh(po(),this,l._getMapId()),this.imageManager=new ue,this.imageManager.setEventedParent(this),this.glyphManager=new Lr(l._requestManager,d.localIdeographFontFamily),this.lineAtlas=new Fo(256,512),this.crossTileSymbolIndex=new Lc,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new n.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",n.az());let v=this;this._rtlTextPluginCallback=Vn.registerForPluginStateChange(b=>{v.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:b.pluginStatus,pluginURL:b.pluginURL},(M,O)=>{if(n.aA(M),O&&O.every(B=>B))for(let B in v.sourceCaches){let U=v.sourceCaches[B].getSource().type;U!==\"vector\"&&U!==\"geojson\"||v.sourceCaches[B].reload()}})}),this.on(\"data\",b=>{if(b.dataType!==\"source\"||b.sourceDataType!==\"metadata\")return;let M=this.sourceCaches[b.sourceId];if(!M)return;let O=M.getSource();if(O&&O.vectorLayerIds)for(let B in this._layers){let U=this._layers[B];U.source===O.id&&this._validateLayer(U)}})}loadURL(l,d={},v){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),d.validate=typeof d.validate!=\"boolean\"||d.validate;let b=this.map._requestManager.transformRequest(l,Y.Style);this._request=n.f(b,(M,O)=>{this._request=null,M?this.fire(new n.j(M)):O&&this._load(O,d,v)})}loadJSON(l,d={},v){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),this._request=n.h.frame(()=>{this._request=null,d.validate=d.validate!==!1,this._load(l,d,v)})}loadEmpty(){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),this._load(Vo,{validate:!1})}_load(l,d,v){var b;let M=d.transformStyle?d.transformStyle(v,l):l;if(!d.validate||!on(this,n.y(M))){this._loaded=!0,this.stylesheet=M;for(let O in M.sources)this.addSource(O,M.sources[O],{validate:!1});M.sprite?this._loadSprite(M.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(M.glyphs),this._createLayers(),this.light=new Pc(this.stylesheet.light),this.map.setTerrain((b=this.stylesheet.terrain)!==null&&b!==void 0?b:null),this.fire(new n.k(\"data\",{dataType:\"style\"})),this.fire(new n.k(\"style.load\"))}}_createLayers(){let l=n.aB(this.stylesheet.layers);this.dispatcher.broadcast(\"setLayers\",l),this._order=l.map(d=>d.id),this._layers={},this._serializedLayers=null;for(let d of l){let v=n.aC(d);v.setEventedParent(this,{layer:{id:d.id}}),this._layers[d.id]=v}}_loadSprite(l,d=!1,v=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(b,M,O,B){let U=Ot(b),W=U.length,Z=O>1?\"@2x\":\"\",Q={},st={},At={};for(let{id:pt,url:yt}of U){let dt=M.transformRequest(M.normalizeSpriteURL(yt,Z,\".json\"),Y.SpriteJSON),Ft=`${pt}_${dt.url}`;Q[Ft]=n.f(dt,(Bt,Yt)=>{delete Q[Ft],st[pt]=Yt,Kt(B,st,At,Bt,W)});let Wt=M.transformRequest(M.normalizeSpriteURL(yt,Z,\".png\"),Y.SpriteImage),St=`${pt}_${Wt.url}`;Q[St]=j.getImage(Wt,(Bt,Yt)=>{delete Q[St],At[pt]=Yt,Kt(B,st,At,Bt,W)})}return{cancel(){for(let pt of Object.values(Q))pt.cancel()}}}(l,this.map._requestManager,this.map.getPixelRatio(),(b,M)=>{if(this._spriteRequest=null,b)this.fire(new n.j(b));else if(M)for(let O in M){this._spritesImagesIds[O]=[];let B=this._spritesImagesIds[O]?this._spritesImagesIds[O].filter(U=>!(U in M)):[];for(let U of B)this.imageManager.removeImage(U),this._changedImages[U]=!0;for(let U in M[O]){let W=O===\"default\"?U:`${O}:${U}`;this._spritesImagesIds[O].push(W),W in this.imageManager.images?this.imageManager.updateImage(W,M[O][U],!1):this.imageManager.addImage(W,M[O][U]),d&&(this._changedImages[W]=!0)}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),d&&(this._changed=!0),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"})),v&&v(b)})}_unloadSprite(){for(let l of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(l),this._changedImages[l]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}_validateLayer(l){let d=this.sourceCaches[l.source];if(!d)return;let v=l.sourceLayer;if(!v)return;let b=d.getSource();(b.type===\"geojson\"||b.vectorLayerIds&&b.vectorLayerIds.indexOf(v)===-1)&&this.fire(new n.j(new Error(`Source layer \"${v}\" does not exist on source \"${b.id}\" as specified by style layer \"${l.id}\".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let l in this.sourceCaches)if(!this.sourceCaches[l].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(l){let d=this._serializedAllLayers();if(!l||l.length===0)return Object.values(d);let v=[];for(let b of l)d[b]&&v.push(d[b]);return v}_serializedAllLayers(){let l=this._serializedLayers;if(l)return l;l=this._serializedLayers={};let d=Object.keys(this._layers);for(let v of d){let b=this._layers[v];b.type!==\"custom\"&&(l[v]=b.serialize())}return l}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;for(let l in this.sourceCaches)if(this.sourceCaches[l].hasTransition())return!0;for(let l in this._layers)if(this._layers[l].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading.\")}update(l){if(!this._loaded)return;let d=this._changed;if(this._changed){let b=Object.keys(this._updatedLayers),M=Object.keys(this._removedLayers);(b.length||M.length)&&this._updateWorkerLayers(b,M);for(let O in this._updatedSources){let B=this._updatedSources[O];if(B===\"reload\")this._reloadSource(O);else{if(B!==\"clear\")throw new Error(`Invalid action ${B}`);this._clearSource(O)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let O in this._updatedPaintProps)this._layers[O].updateTransitions(l);this.light.updateTransitions(l),this._resetUpdates()}let v={};for(let b in this.sourceCaches){let M=this.sourceCaches[b];v[b]=M.used,M.used=!1}for(let b of this._order){let M=this._layers[b];M.recalculate(l,this._availableImages),!M.isHidden(l.zoom)&&M.source&&(this.sourceCaches[M.source].used=!0)}for(let b in v){let M=this.sourceCaches[b];v[b]!==M.used&&M.fire(new n.k(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:b}))}this.light.recalculate(l),this.z=l.zoom,d&&this.fire(new n.k(\"data\",{dataType:\"style\"}))}_updateTilesForChangedImages(){let l=Object.keys(this._changedImages);if(l.length){for(let d in this.sourceCaches)this.sourceCaches[d].reloadTilesForDependencies([\"icons\",\"patterns\"],l);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let l in this.sourceCaches)this.sourceCaches[l].reloadTilesForDependencies([\"glyphs\"],[\"\"]);this._glyphsDidChange=!1}}_updateWorkerLayers(l,d){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeByIds(l),removedIds:d})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(l,d={}){this._checkLoaded();let v=this.serialize();if(l=d.transformStyle?d.transformStyle(v,l):l,on(this,n.y(l)))return!1;(l=n.aD(l)).layers=n.aB(l.layers);let b=n.aE(v,l).filter(O=>!(O.command in Bm));if(b.length===0)return!1;let M=b.filter(O=>!(O.command in kn));if(M.length>0)throw new Error(`Unimplemented: ${M.map(O=>O.command).join(\", \")}.`);for(let O of b)O.command!==\"setTransition\"&&this[O.command].apply(this,O.args);return this.stylesheet=l,this._serializedLayers=null,!0}addImage(l,d){if(this.getImage(l))return this.fire(new n.j(new Error(`An image named \"${l}\" already exists.`)));this.imageManager.addImage(l,d),this._afterImageUpdated(l)}updateImage(l,d){this.imageManager.updateImage(l,d)}getImage(l){return this.imageManager.getImage(l)}removeImage(l){if(!this.getImage(l))return this.fire(new n.j(new Error(`An image named \"${l}\" does not exist.`)));this.imageManager.removeImage(l),this._afterImageUpdated(l)}_afterImageUpdated(l){this._availableImages=this.imageManager.listImages(),this._changedImages[l]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(l,d,v={}){if(this._checkLoaded(),this.sourceCaches[l]!==void 0)throw new Error(`Source \"${l}\" already exists.`);if(!d.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(d).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(d.type)>=0&&this._validate(n.y.source,`sources.${l}`,d,null,v))return;this.map&&this.map._collectResourceTiming&&(d.collectResourceTiming=!0);let b=this.sourceCaches[l]=new os(l,d,this.dispatcher);b.style=this,b.setEventedParent(this,()=>({isSourceLoaded:b.loaded(),source:b.serialize(),sourceId:l})),b.onAdd(this.map),this._changed=!0}removeSource(l){if(this._checkLoaded(),this.sourceCaches[l]===void 0)throw new Error(\"There is no source with this ID\");for(let v in this._layers)if(this._layers[v].source===l)return this.fire(new n.j(new Error(`Source \"${l}\" cannot be removed while layer \"${v}\" is using it.`)));let d=this.sourceCaches[l];delete this.sourceCaches[l],delete this._updatedSources[l],d.fire(new n.k(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:l})),d.setEventedParent(null),d.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(l,d){if(this._checkLoaded(),this.sourceCaches[l]===void 0)throw new Error(`There is no source with this ID=${l}`);let v=this.sourceCaches[l].getSource();if(v.type!==\"geojson\")throw new Error(`geojsonSource.type is ${v.type}, which is !== 'geojson`);v.setData(d),this._changed=!0}getSource(l){return this.sourceCaches[l]&&this.sourceCaches[l].getSource()}addLayer(l,d,v={}){this._checkLoaded();let b=l.id;if(this.getLayer(b))return void this.fire(new n.j(new Error(`Layer \"${b}\" already exists on this map.`)));let M;if(l.type===\"custom\"){if(on(this,n.aF(l)))return;M=n.aC(l)}else{if(\"source\"in l&&typeof l.source==\"object\"&&(this.addSource(b,l.source),l=n.aD(l),l=n.e(l,{source:b})),this._validate(n.y.layer,`layers.${b}`,l,{arrayIndex:-1},v))return;M=n.aC(l),this._validateLayer(M),M.setEventedParent(this,{layer:{id:b}})}let O=d?this._order.indexOf(d):this._order.length;if(d&&O===-1)this.fire(new n.j(new Error(`Cannot add layer \"${b}\" before non-existing layer \"${d}\".`)));else{if(this._order.splice(O,0,b),this._layerOrderChanged=!0,this._layers[b]=M,this._removedLayers[b]&&M.source&&M.type!==\"custom\"){let B=this._removedLayers[b];delete this._removedLayers[b],B.type!==M.type?this._updatedSources[M.source]=\"clear\":(this._updatedSources[M.source]=\"reload\",this.sourceCaches[M.source].pause())}this._updateLayer(M),M.onAdd&&M.onAdd(this.map)}}moveLayer(l,d){if(this._checkLoaded(),this._changed=!0,!this._layers[l])return void this.fire(new n.j(new Error(`The layer '${l}' does not exist in the map's style and cannot be moved.`)));if(l===d)return;let v=this._order.indexOf(l);this._order.splice(v,1);let b=d?this._order.indexOf(d):this._order.length;d&&b===-1?this.fire(new n.j(new Error(`Cannot move layer \"${l}\" before non-existing layer \"${d}\".`))):(this._order.splice(b,0,l),this._layerOrderChanged=!0)}removeLayer(l){this._checkLoaded();let d=this._layers[l];if(!d)return void this.fire(new n.j(new Error(`Cannot remove non-existing layer \"${l}\".`)));d.setEventedParent(null);let v=this._order.indexOf(l);this._order.splice(v,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[l]=d,delete this._layers[l],this._serializedLayers&&delete this._serializedLayers[l],delete this._updatedLayers[l],delete this._updatedPaintProps[l],d.onRemove&&d.onRemove(this.map)}getLayer(l){return this._layers[l]}getLayersOrder(){return[...this._order]}hasLayer(l){return l in this._layers}setLayerZoomRange(l,d,v){this._checkLoaded();let b=this.getLayer(l);b?b.minzoom===d&&b.maxzoom===v||(d!=null&&(b.minzoom=d),v!=null&&(b.maxzoom=v),this._updateLayer(b)):this.fire(new n.j(new Error(`Cannot set the zoom range of non-existing layer \"${l}\".`)))}setFilter(l,d,v={}){this._checkLoaded();let b=this.getLayer(l);if(b){if(!n.aG(b.filter,d))return d==null?(b.filter=void 0,void this._updateLayer(b)):void(this._validate(n.y.filter,`layers.${b.id}.filter`,d,null,v)||(b.filter=n.aD(d),this._updateLayer(b)))}else this.fire(new n.j(new Error(`Cannot filter non-existing layer \"${l}\".`)))}getFilter(l){return n.aD(this.getLayer(l).filter)}setLayoutProperty(l,d,v,b={}){this._checkLoaded();let M=this.getLayer(l);M?n.aG(M.getLayoutProperty(d),v)||(M.setLayoutProperty(d,v,b),this._updateLayer(M)):this.fire(new n.j(new Error(`Cannot style non-existing layer \"${l}\".`)))}getLayoutProperty(l,d){let v=this.getLayer(l);if(v)return v.getLayoutProperty(d);this.fire(new n.j(new Error(`Cannot get style of non-existing layer \"${l}\".`)))}setPaintProperty(l,d,v,b={}){this._checkLoaded();let M=this.getLayer(l);M?n.aG(M.getPaintProperty(d),v)||(M.setPaintProperty(d,v,b)&&this._updateLayer(M),this._changed=!0,this._updatedPaintProps[l]=!0):this.fire(new n.j(new Error(`Cannot style non-existing layer \"${l}\".`)))}getPaintProperty(l,d){return this.getLayer(l).getPaintProperty(d)}setFeatureState(l,d){this._checkLoaded();let v=l.source,b=l.sourceLayer,M=this.sourceCaches[v];if(M===void 0)return void this.fire(new n.j(new Error(`The source '${v}' does not exist in the map's style.`)));let O=M.getSource().type;O===\"geojson\"&&b?this.fire(new n.j(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):O!==\"vector\"||b?(l.id===void 0&&this.fire(new n.j(new Error(\"The feature id parameter must be provided.\"))),M.setFeatureState(b,l.id,d)):this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}removeFeatureState(l,d){this._checkLoaded();let v=l.source,b=this.sourceCaches[v];if(b===void 0)return void this.fire(new n.j(new Error(`The source '${v}' does not exist in the map's style.`)));let M=b.getSource().type,O=M===\"vector\"?l.sourceLayer:void 0;M!==\"vector\"||O?d&&typeof l.id!=\"string\"&&typeof l.id!=\"number\"?this.fire(new n.j(new Error(\"A feature id is required to remove its specific state property.\"))):b.removeFeatureState(O,l.id,d):this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}getFeatureState(l){this._checkLoaded();let d=l.source,v=l.sourceLayer,b=this.sourceCaches[d];if(b!==void 0)return b.getSource().type!==\"vector\"||v?(l.id===void 0&&this.fire(new n.j(new Error(\"The feature id parameter must be provided.\"))),b.getFeatureState(v,l.id)):void this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));this.fire(new n.j(new Error(`The source '${d}' does not exist in the map's style.`)))}getTransition(){return n.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let l=n.aH(this.sourceCaches,M=>M.serialize()),d=this._serializeByIds(this._order),v=this.map.getTerrain()||void 0,b=this.stylesheet;return n.aI({version:b.version,name:b.name,metadata:b.metadata,light:b.light,center:b.center,zoom:b.zoom,bearing:b.bearing,pitch:b.pitch,sprite:b.sprite,glyphs:b.glyphs,transition:b.transition,sources:l,layers:d,terrain:v},M=>M!==void 0)}_updateLayer(l){this._updatedLayers[l.id]=!0,l.source&&!this._updatedSources[l.source]&&this.sourceCaches[l.source].getSource().type!==\"raster\"&&(this._updatedSources[l.source]=\"reload\",this.sourceCaches[l.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(l){let d=O=>this._layers[O].type===\"fill-extrusion\",v={},b=[];for(let O=this._order.length-1;O>=0;O--){let B=this._order[O];if(d(B)){v[B]=O;for(let U of l){let W=U[B];if(W)for(let Z of W)b.push(Z)}}}b.sort((O,B)=>B.intersectionZ-O.intersectionZ);let M=[];for(let O=this._order.length-1;O>=0;O--){let B=this._order[O];if(d(B))for(let U=b.length-1;U>=0;U--){let W=b[U].feature;if(v[W.layer.id]{let pe=Ft.featureSortOrder;if(pe){let he=pe.indexOf(Qt.featureIndex);return pe.indexOf(se.featureIndex)-he}return se.featureIndex-Qt.featureIndex});for(let Qt of Yt)Bt.push(Qt)}}for(let Ft in pt)pt[Ft].forEach(Wt=>{let St=Wt.feature,Bt=W[B[Ft].source].getFeatureState(St.layer[\"source-layer\"],St.id);St.source=St.layer.source,St.layer[\"source-layer\"]&&(St.sourceLayer=St.layer[\"source-layer\"]),St.state=Bt});return pt}(this._layers,O,this.sourceCaches,l,d,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(M)}querySourceFeatures(l,d){d&&d.filter&&this._validate(n.y.filter,\"querySourceFeatures.filter\",d.filter,null,d);let v=this.sourceCaches[l];return v?function(b,M){let O=b.getRenderableIds().map(W=>b.getTileByID(W)),B=[],U={};for(let W=0;W{ol[b]=M})(l,d),d.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:l,url:d.workerSourceURL},v):v(null,null))}getLight(){return this.light.getLight()}setLight(l,d={}){this._checkLoaded();let v=this.light.getLight(),b=!1;for(let O in l)if(!n.aG(l[O],v[O])){b=!0;break}if(!b)return;let M={now:n.h.now(),transition:n.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(l,d),this.light.updateTransitions(M)}_validate(l,d,v,b,M={}){return(!M||M.validate!==!1)&&on(this,l.call(n.y,n.e({key:d,style:this.serialize(),value:v,styleSpec:n.v},b)))}_remove(l=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),n.aJ.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(let d in this._layers)this._layers[d].setEventedParent(null);for(let d in this.sourceCaches){let v=this.sourceCaches[d];v.setEventedParent(null),v.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(l)}_clearSource(l){this.sourceCaches[l].clearTiles()}_reloadSource(l){this.sourceCaches[l].resume(),this.sourceCaches[l].reload()}_updateSources(l){for(let d in this.sourceCaches)this.sourceCaches[d].update(l,this.map.terrain)}_generateCollisionBoxes(){for(let l in this.sourceCaches)this._reloadSource(l)}_updatePlacement(l,d,v,b,M=!1){let O=!1,B=!1,U={};for(let W of this._order){let Z=this._layers[W];if(Z.type!==\"symbol\")continue;if(!U[Z.source]){let st=this.sourceCaches[Z.source];U[Z.source]=st.getRenderableIds(!0).map(At=>st.getTileByID(At)).sort((At,pt)=>pt.tileID.overscaledZ-At.tileID.overscaledZ||(At.tileID.isLessThan(pt.tileID)?-1:1))}let Q=this.crossTileSymbolIndex.addLayer(Z,U[Z.source],l.center.lng);O=O||Q}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((M=M||this._layerOrderChanged||v===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(n.h.now(),l.zoom))&&(this.pauseablePlacement=new Fl(l,this.map.terrain,this._order,M,d,v,b,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,U),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(n.h.now()),B=!0),O&&this.pauseablePlacement.placement.setStale()),B||O)for(let W of this._order){let Z=this._layers[W];Z.type===\"symbol\"&&this.placement.updateLayerOpacities(Z,U[Z.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(n.h.now())}_releaseSymbolFadeTiles(){for(let l in this.sourceCaches)this.sourceCaches[l].releaseSymbolFadeTiles()}getImages(l,d,v){this.imageManager.getImages(d.icons,v),this._updateTilesForChangedImages();let b=this.sourceCaches[d.source];b&&b.setDependencies(d.tileID.key,d.type,d.icons)}getGlyphs(l,d,v){this.glyphManager.getGlyphs(d.stacks,v);let b=this.sourceCaches[d.source];b&&b.setDependencies(d.tileID.key,d.type,[\"\"])}getResource(l,d,v){return n.m(d,v)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(l,d={}){this._checkLoaded(),l&&this._validate(n.y.glyphs,\"glyphs\",l,null,d)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=l,this.glyphManager.entries={},this.glyphManager.setURL(l))}addSprite(l,d,v={},b){this._checkLoaded();let M=[{id:l,url:d}],O=[...Ot(this.stylesheet.sprite),...M];this._validate(n.y.sprite,\"sprite\",O,null,v)||(this.stylesheet.sprite=O,this._loadSprite(M,!0,b))}removeSprite(l){this._checkLoaded();let d=Ot(this.stylesheet.sprite);if(d.find(v=>v.id===l)){if(this._spritesImagesIds[l])for(let v of this._spritesImagesIds[l])this.imageManager.removeImage(v),this._changedImages[v]=!0;d.splice(d.findIndex(v=>v.id===l),1),this.stylesheet.sprite=d.length>0?d:void 0,delete this._spritesImagesIds[l],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}else this.fire(new n.j(new Error(`Sprite \"${l}\" doesn't exists on this map.`)))}getSprite(){return Ot(this.stylesheet.sprite)}setSprite(l,d={},v){this._checkLoaded(),l&&this._validate(n.y.sprite,\"sprite\",l,null,d)||(this.stylesheet.sprite=l,l?this._loadSprite(l,!0,v):(this._unloadSprite(),v&&v(null)))}}Vn.registerForPluginStateChange=n.aK;var mo=n.Q([{name:\"a_pos\",type:\"Int16\",components:2}]),zl=\"attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}\";let Yi={prelude:_i(`#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\n`,`#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}`),background:_i(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),backgroundPattern:_i(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),circle:_i(`varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:_i(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:_i(`uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`),heatmapTexture:_i(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),collisionBox:_i(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:_i(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:_i(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}\"),fill:_i(`#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:_i(`varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:_i(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:_i(`varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:_i(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:_i(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),line:_i(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}`),lineGradient:_i(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}`),linePattern:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:_i(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:_i(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),symbolIcon:_i(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:_i(`#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:_i(`#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:_i(\"uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}\",zl),terrainDepth:_i(\"varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}\",zl),terrainCoords:_i(\"precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}\",zl)};function _i(T,l){let d=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,v=l.match(/attribute ([\\w]+) ([\\w]+)/g),b=T.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),M=l.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),O=M?M.concat(b):b,B={};return{fragmentSource:T=T.replace(d,(U,W,Z,Q,st)=>(B[st]=!0,W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nvarying ${Z} ${Q} ${st};\n#else\nuniform ${Z} ${Q} u_${st};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${st}\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`)),vertexSource:l=l.replace(d,(U,W,Z,Q,st)=>{let At=Q===\"float\"?\"vec2\":\"vec4\",pt=st.match(/color/)?\"color\":At;return B[st]?W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nuniform lowp float u_${st}_t;\nattribute ${Z} ${At} a_${st};\nvarying ${Z} ${Q} ${st};\n#else\nuniform ${Z} ${Q} u_${st};\n#endif\n`:pt===\"vec4\"?`\n#ifndef HAS_UNIFORM_u_${st}\n ${st} = a_${st};\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${st}\n ${st} = unpack_mix_${pt}(a_${st}, u_${st}_t);\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`:W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nuniform lowp float u_${st}_t;\nattribute ${Z} ${At} a_${st};\n#else\nuniform ${Z} ${Q} u_${st};\n#endif\n`:pt===\"vec4\"?`\n#ifndef HAS_UNIFORM_u_${st}\n ${Z} ${Q} ${st} = a_${st};\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${st}\n ${Z} ${Q} ${st} = unpack_mix_${pt}(a_${st}, u_${st}_t);\n#else\n ${Z} ${Q} ${st} = u_${st};\n#endif\n`}),staticAttributes:v,staticUniforms:O}}class Nl{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(l,d,v,b,M,O,B,U,W){this.context=l;let Z=this.boundPaintVertexBuffers.length!==b.length;for(let Q=0;!Z&&Q({u_depth:new n.aL(Qt,se.u_depth),u_terrain:new n.aL(Qt,se.u_terrain),u_terrain_dim:new n.aM(Qt,se.u_terrain_dim),u_terrain_matrix:new n.aN(Qt,se.u_terrain_matrix),u_terrain_unpack:new n.aO(Qt,se.u_terrain_unpack),u_terrain_exaggeration:new n.aM(Qt,se.u_terrain_exaggeration)}))(l,Yt),this.binderUniforms=v?v.getUniforms(l,Yt):[]}draw(l,d,v,b,M,O,B,U,W,Z,Q,st,At,pt,yt,dt,Ft,Wt){let St=l.gl;if(this.failedToCreate)return;if(l.program.set(this.program),l.setDepthMode(v),l.setStencilMode(b),l.setColorMode(M),l.setCullFace(O),U){l.activeTexture.set(St.TEXTURE2),St.bindTexture(St.TEXTURE_2D,U.depthTexture),l.activeTexture.set(St.TEXTURE3),St.bindTexture(St.TEXTURE_2D,U.texture);for(let Yt in this.terrainUniforms)this.terrainUniforms[Yt].set(U[Yt])}for(let Yt in this.fixedUniforms)this.fixedUniforms[Yt].set(B[Yt]);yt&&yt.setUniforms(l,this.binderUniforms,At,{zoom:pt});let Bt=0;switch(d){case St.LINES:Bt=2;break;case St.TRIANGLES:Bt=3;break;case St.LINE_STRIP:Bt=1}for(let Yt of st.get()){let Qt=Yt.vaos||(Yt.vaos={});(Qt[W]||(Qt[W]=new Nl)).bind(l,this,Z,yt?yt.getPaintVertexBuffers():[],Q,Yt.vertexOffset,dt,Ft,Wt),St.drawElements(d,Yt.primitiveLength*Bt,St.UNSIGNED_SHORT,Yt.primitiveOffset*Bt*2)}}}function Jn(T,l,d){let v=1/Dt(d,1,l.transform.tileZoom),b=Math.pow(2,d.tileID.overscaledZ),M=d.tileSize*Math.pow(2,l.transform.tileZoom)/b,O=M*(d.tileID.canonical.x+d.tileID.wrap*b),B=M*d.tileID.canonical.y;return{u_image:0,u_texsize:d.imageAtlasTexture.size,u_scale:[v,T.fromScale,T.toScale],u_fade:T.t,u_pixel_coord_upper:[O>>16,B>>16],u_pixel_coord_lower:[65535&O,65535&B]}}let Up=(T,l,d,v)=>{let b=l.style.light,M=b.properties.get(\"position\"),O=[M.x,M.y,M.z],B=function(){var W=new n.A(9);return n.A!=Float32Array&&(W[1]=0,W[2]=0,W[3]=0,W[5]=0,W[6]=0,W[7]=0),W[0]=1,W[4]=1,W[8]=1,W}();b.properties.get(\"anchor\")===\"viewport\"&&function(W,Z){var Q=Math.sin(Z),st=Math.cos(Z);W[0]=st,W[1]=Q,W[2]=0,W[3]=-Q,W[4]=st,W[5]=0,W[6]=0,W[7]=0,W[8]=1}(B,-l.transform.angle),function(W,Z,Q){var st=Z[0],At=Z[1],pt=Z[2];W[0]=st*Q[0]+At*Q[3]+pt*Q[6],W[1]=st*Q[1]+At*Q[4]+pt*Q[7],W[2]=st*Q[2]+At*Q[5]+pt*Q[8]}(O,O,B);let U=b.properties.get(\"color\");return{u_matrix:T,u_lightpos:O,u_lightintensity:b.properties.get(\"intensity\"),u_lightcolor:[U.r,U.g,U.b],u_vertical_gradient:+d,u_opacity:v}},Ul=(T,l,d,v,b,M,O)=>n.e(Up(T,l,d,v),Jn(M,l,O),{u_height_factor:-Math.pow(2,b.overscaledZ)/O.tileSize/8}),md=T=>({u_matrix:T}),gd=(T,l,d,v)=>n.e(md(T),Jn(d,l,v)),_d=(T,l)=>({u_matrix:T,u_world:l}),yd=(T,l,d,v,b)=>n.e(gd(T,l,d,v),{u_world:b}),lt=(T,l,d,v)=>{let b=T.transform,M,O;if(v.paint.get(\"circle-pitch-alignment\")===\"map\"){let B=Dt(d,1,b.zoom);M=!0,O=[B,B]}else M=!1,O=b.pixelsToGLUnits;return{u_camera_to_center_distance:b.cameraToCenterDistance,u_scale_with_map:+(v.paint.get(\"circle-pitch-scale\")===\"map\"),u_matrix:T.translatePosMatrix(l.posMatrix,d,v.paint.get(\"circle-translate\"),v.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+M,u_device_pixel_ratio:T.pixelRatio,u_extrude_scale:O}},ft=(T,l,d)=>{let v=Dt(d,1,l.zoom),b=Math.pow(2,l.zoom-d.tileID.overscaledZ),M=d.tileID.overscaleFactor();return{u_matrix:T,u_camera_to_center_distance:l.cameraToCenterDistance,u_pixels_to_tile_units:v,u_extrude_scale:[l.pixelsToGLUnits[0]/(v*b),l.pixelsToGLUnits[1]/(v*b)],u_overscale_factor:M}},Lt=(T,l,d=1)=>({u_matrix:T,u_color:l,u_overlay:0,u_overlay_scale:d}),$t=T=>({u_matrix:T}),ge=(T,l,d,v)=>({u_matrix:T,u_extrude_scale:Dt(l,1,d),u_intensity:v});function qe(T,l){let d=Math.pow(2,l.canonical.z),v=l.canonical.y;return[new n.U(0,v/d).toLngLat().lat,new n.U(0,(v+1)/d).toLngLat().lat]}let ti=(T,l,d,v)=>{let b=T.transform;return{u_matrix:Fm(T,l,d,v),u_ratio:1/Dt(l,1,b.zoom),u_device_pixel_ratio:T.pixelRatio,u_units_to_pixels:[1/b.pixelsToGLUnits[0],1/b.pixelsToGLUnits[1]]}},ts=(T,l,d,v,b)=>n.e(ti(T,l,d,b),{u_image:0,u_image_height:v}),Ss=(T,l,d,v,b)=>{let M=T.transform,O=ka(l,M);return{u_matrix:Fm(T,l,d,b),u_texsize:l.imageAtlasTexture.size,u_ratio:1/Dt(l,1,M.zoom),u_device_pixel_ratio:T.pixelRatio,u_image:0,u_scale:[O,v.fromScale,v.toScale],u_fade:v.t,u_units_to_pixels:[1/M.pixelsToGLUnits[0],1/M.pixelsToGLUnits[1]]}},Bs=(T,l,d,v,b,M)=>{let O=T.lineAtlas,B=ka(l,T.transform),U=d.layout.get(\"line-cap\")===\"round\",W=O.getDash(v.from,U),Z=O.getDash(v.to,U),Q=W.width*b.fromScale,st=Z.width*b.toScale;return n.e(ti(T,l,d,M),{u_patternscale_a:[B/Q,-W.height/2],u_patternscale_b:[B/st,-Z.height/2],u_sdfgamma:O.width/(256*Math.min(Q,st)*T.pixelRatio)/2,u_image:0,u_tex_y_a:W.y,u_tex_y_b:Z.y,u_mix:b.t})};function ka(T,l){return 1/Dt(T,1,l.tileZoom)}function Fm(T,l,d,v){return T.translatePosMatrix(v?v.posMatrix:l.tileID.posMatrix,l,d.paint.get(\"line-translate\"),d.paint.get(\"line-translate-anchor\"))}let Mx=(T,l,d,v,b)=>{return{u_matrix:T,u_tl_parent:l,u_scale_parent:d,u_buffer_scale:1,u_fade_t:v.mix,u_opacity:v.opacity*b.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:b.paint.get(\"raster-brightness-min\"),u_brightness_high:b.paint.get(\"raster-brightness-max\"),u_saturation_factor:(O=b.paint.get(\"raster-saturation\"),O>0?1-1/(1.001-O):-O),u_contrast_factor:(M=b.paint.get(\"raster-contrast\"),M>0?1/(1-M):1+M),u_spin_weights:Ex(b.paint.get(\"raster-hue-rotate\"))};var M,O};function Ex(T){T*=Math.PI/180;let l=Math.sin(T),d=Math.cos(T);return[(2*d+1)/3,(-Math.sqrt(3)*l-d+1)/3,(Math.sqrt(3)*l-d+1)/3]}let Xg=(T,l,d,v,b,M,O,B,U,W)=>{let Z=b.transform;return{u_is_size_zoom_constant:+(T===\"constant\"||T===\"source\"),u_is_size_feature_constant:+(T===\"constant\"||T===\"camera\"),u_size_t:l?l.uSizeT:0,u_size:l?l.uSize:0,u_camera_to_center_distance:Z.cameraToCenterDistance,u_pitch:Z.pitch/360*2*Math.PI,u_rotate_symbol:+d,u_aspect_ratio:Z.width/Z.height,u_fade_change:b.options.fadeDuration?b.symbolFadeChange:1,u_matrix:M,u_label_plane_matrix:O,u_coord_matrix:B,u_is_text:+U,u_pitch_with_map:+v,u_texsize:W,u_texture:0}},Kg=(T,l,d,v,b,M,O,B,U,W,Z)=>{let Q=b.transform;return n.e(Xg(T,l,d,v,b,M,O,B,U,W),{u_gamma_scale:v?Math.cos(Q._pitch)*Q.cameraToCenterDistance:1,u_device_pixel_ratio:b.pixelRatio,u_is_halo:+Z})},Af=(T,l,d,v,b,M,O,B,U,W)=>n.e(Kg(T,l,d,v,b,M,O,B,!0,U,!0),{u_texsize_icon:W,u_texture_icon:1}),zm=(T,l,d)=>({u_matrix:T,u_opacity:l,u_color:d}),cl=(T,l,d,v,b,M)=>n.e(function(O,B,U,W){let Z=U.imageManager.getPattern(O.from.toString()),Q=U.imageManager.getPattern(O.to.toString()),{width:st,height:At}=U.imageManager.getPixelSize(),pt=Math.pow(2,W.tileID.overscaledZ),yt=W.tileSize*Math.pow(2,U.transform.tileZoom)/pt,dt=yt*(W.tileID.canonical.x+W.tileID.wrap*pt),Ft=yt*W.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Z.tl,u_pattern_br_a:Z.br,u_pattern_tl_b:Q.tl,u_pattern_br_b:Q.br,u_texsize:[st,At],u_mix:B.t,u_pattern_size_a:Z.displaySize,u_pattern_size_b:Q.displaySize,u_scale_a:B.fromScale,u_scale_b:B.toScale,u_tile_units_to_pixels:1/Dt(W,1,U.transform.tileZoom),u_pixel_coord_upper:[dt>>16,Ft>>16],u_pixel_coord_lower:[65535&dt,65535&Ft]}}(v,M,d,b),{u_matrix:T,u_opacity:l}),Nm={fillExtrusion:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_lightpos:new n.aP(T,l.u_lightpos),u_lightintensity:new n.aM(T,l.u_lightintensity),u_lightcolor:new n.aP(T,l.u_lightcolor),u_vertical_gradient:new n.aM(T,l.u_vertical_gradient),u_opacity:new n.aM(T,l.u_opacity)}),fillExtrusionPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_lightpos:new n.aP(T,l.u_lightpos),u_lightintensity:new n.aM(T,l.u_lightintensity),u_lightcolor:new n.aP(T,l.u_lightcolor),u_vertical_gradient:new n.aM(T,l.u_vertical_gradient),u_height_factor:new n.aM(T,l.u_height_factor),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade),u_opacity:new n.aM(T,l.u_opacity)}),fill:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix)}),fillPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),fillOutline:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world)}),fillOutlinePattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),circle:(T,l)=>({u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_scale_with_map:new n.aL(T,l.u_scale_with_map),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_extrude_scale:new n.aQ(T,l.u_extrude_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_matrix:new n.aN(T,l.u_matrix)}),collisionBox:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pixels_to_tile_units:new n.aM(T,l.u_pixels_to_tile_units),u_extrude_scale:new n.aQ(T,l.u_extrude_scale),u_overscale_factor:new n.aM(T,l.u_overscale_factor)}),collisionCircle:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_inv_matrix:new n.aN(T,l.u_inv_matrix),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_viewport_size:new n.aQ(T,l.u_viewport_size)}),debug:(T,l)=>({u_color:new n.aR(T,l.u_color),u_matrix:new n.aN(T,l.u_matrix),u_overlay:new n.aL(T,l.u_overlay),u_overlay_scale:new n.aM(T,l.u_overlay_scale)}),clippingMask:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix)}),heatmap:(T,l)=>({u_extrude_scale:new n.aM(T,l.u_extrude_scale),u_intensity:new n.aM(T,l.u_intensity),u_matrix:new n.aN(T,l.u_matrix)}),heatmapTexture:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world),u_image:new n.aL(T,l.u_image),u_color_ramp:new n.aL(T,l.u_color_ramp),u_opacity:new n.aM(T,l.u_opacity)}),hillshade:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_latrange:new n.aQ(T,l.u_latrange),u_light:new n.aQ(T,l.u_light),u_shadow:new n.aR(T,l.u_shadow),u_highlight:new n.aR(T,l.u_highlight),u_accent:new n.aR(T,l.u_accent)}),hillshadePrepare:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_dimension:new n.aQ(T,l.u_dimension),u_zoom:new n.aM(T,l.u_zoom),u_unpack:new n.aO(T,l.u_unpack)}),line:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels)}),lineGradient:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_image:new n.aL(T,l.u_image),u_image_height:new n.aM(T,l.u_image_height)}),linePattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texsize:new n.aQ(T,l.u_texsize),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_image:new n.aL(T,l.u_image),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),lineSDF:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_patternscale_a:new n.aQ(T,l.u_patternscale_a),u_patternscale_b:new n.aQ(T,l.u_patternscale_b),u_sdfgamma:new n.aM(T,l.u_sdfgamma),u_image:new n.aL(T,l.u_image),u_tex_y_a:new n.aM(T,l.u_tex_y_a),u_tex_y_b:new n.aM(T,l.u_tex_y_b),u_mix:new n.aM(T,l.u_mix)}),raster:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_tl_parent:new n.aQ(T,l.u_tl_parent),u_scale_parent:new n.aM(T,l.u_scale_parent),u_buffer_scale:new n.aM(T,l.u_buffer_scale),u_fade_t:new n.aM(T,l.u_fade_t),u_opacity:new n.aM(T,l.u_opacity),u_image0:new n.aL(T,l.u_image0),u_image1:new n.aL(T,l.u_image1),u_brightness_low:new n.aM(T,l.u_brightness_low),u_brightness_high:new n.aM(T,l.u_brightness_high),u_saturation_factor:new n.aM(T,l.u_saturation_factor),u_contrast_factor:new n.aM(T,l.u_contrast_factor),u_spin_weights:new n.aP(T,l.u_spin_weights)}),symbolIcon:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texture:new n.aL(T,l.u_texture)}),symbolSDF:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texture:new n.aL(T,l.u_texture),u_gamma_scale:new n.aM(T,l.u_gamma_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_is_halo:new n.aL(T,l.u_is_halo)}),symbolTextAndIcon:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texsize_icon:new n.aQ(T,l.u_texsize_icon),u_texture:new n.aL(T,l.u_texture),u_texture_icon:new n.aL(T,l.u_texture_icon),u_gamma_scale:new n.aM(T,l.u_gamma_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_is_halo:new n.aL(T,l.u_is_halo)}),background:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_opacity:new n.aM(T,l.u_opacity),u_color:new n.aR(T,l.u_color)}),backgroundPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_opacity:new n.aM(T,l.u_opacity),u_image:new n.aL(T,l.u_image),u_pattern_tl_a:new n.aQ(T,l.u_pattern_tl_a),u_pattern_br_a:new n.aQ(T,l.u_pattern_br_a),u_pattern_tl_b:new n.aQ(T,l.u_pattern_tl_b),u_pattern_br_b:new n.aQ(T,l.u_pattern_br_b),u_texsize:new n.aQ(T,l.u_texsize),u_mix:new n.aM(T,l.u_mix),u_pattern_size_a:new n.aQ(T,l.u_pattern_size_a),u_pattern_size_b:new n.aQ(T,l.u_pattern_size_b),u_scale_a:new n.aM(T,l.u_scale_a),u_scale_b:new n.aM(T,l.u_scale_b),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_tile_units_to_pixels:new n.aM(T,l.u_tile_units_to_pixels)}),terrain:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texture:new n.aL(T,l.u_texture),u_ele_delta:new n.aM(T,l.u_ele_delta)}),terrainDepth:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ele_delta:new n.aM(T,l.u_ele_delta)}),terrainCoords:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texture:new n.aL(T,l.u_texture),u_terrain_coords_id:new n.aM(T,l.u_terrain_coords_id),u_ele_delta:new n.aM(T,l.u_ele_delta)})};class Um{constructor(l,d,v){this.context=l;let b=l.gl;this.buffer=b.createBuffer(),this.dynamicDraw=!!v,this.context.unbindVAO(),l.bindElementBuffer.set(this.buffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,d.arrayBuffer,this.dynamicDraw?b.DYNAMIC_DRAW:b.STATIC_DRAW),this.dynamicDraw||delete d.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(l){let d=this.context.gl;if(!this.dynamicDraw)throw new Error(\"Attempted to update data while not in dynamic mode.\");this.context.unbindVAO(),this.bind(),d.bufferSubData(d.ELEMENT_ARRAY_BUFFER,0,l.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let Vp={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class Vm{constructor(l,d,v,b){this.length=d.length,this.attributes=v,this.itemSize=d.bytesPerElement,this.dynamicDraw=b,this.context=l;let M=l.gl;this.buffer=M.createBuffer(),l.bindVertexBuffer.set(this.buffer),M.bufferData(M.ARRAY_BUFFER,d.arrayBuffer,this.dynamicDraw?M.DYNAMIC_DRAW:M.STATIC_DRAW),this.dynamicDraw||delete d.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(l){if(l.length!==this.length)throw new Error(`Length of new data is ${l.length}, which doesn't match current length of ${this.length}`);let d=this.context.gl;this.bind(),d.bufferSubData(d.ARRAY_BUFFER,0,l.arrayBuffer)}enableAttributes(l,d){for(let v=0;v0){let xe=n.Z(),We=se;n.aU(xe,Qt.placementInvProjMatrix,T.transform.glCoordMatrix),n.aU(xe,xe,Qt.placementViewportMatrix),Z.push({circleArray:he,circleOffset:st,transform:We,invTransform:xe,coord:Bt}),Q+=he.length/4,st=Q}pe&&W.draw(B,U.LINES,ci.disabled,$e.disabled,T.colorModeForRenderPass(),It.disabled,ft(se,T.transform,Yt),T.style.map.terrain&&T.style.map.terrain.getTerrainData(Bt),d.id,pe.layoutVertexBuffer,pe.indexBuffer,pe.segments,null,T.transform.zoom,null,null,pe.collisionVertexBuffer)}if(!O||!Z.length)return;let At=T.useProgram(\"collisionCircle\"),pt=new n.aV;pt.resize(4*Q),pt._trim();let yt=0;for(let St of Z)for(let Bt=0;Bt=0&&(pt[dt.associatedIconIndex]={shiftedAnchor:Kr,angle:Me})}else ht(dt.numGlyphs,st)}if(W){At.clear();let yt=T.icon.placedSymbolArray;for(let dt=0;dtT.style.map.terrain.getElevation(pe,Ho,pn):null,us=d.layout.get(\"text-rotation-alignment\")===\"map\";Se(xe,pe.posMatrix,T,b,jr,jl,dt,W,us,On)}let gu=T.translatePosMatrix(pe.posMatrix,he,M,O),gh=Ft||b&&Qt||mu?Ym:jr,Ns=T.translatePosMatrix(jl,he,M,O,!0),Es=Me&&d.paint.get(b?\"text-halo-width\":\"icon-halo-width\").constantOr(1)!==0,yo;yo=Me?xe.iconsInText?Af(dr.kind,Jr,Wt,dt,T,gu,gh,Ns,ei,cs):Kg(dr.kind,Jr,Wt,dt,T,gu,gh,Ns,b,ei,!0):Xg(dr.kind,Jr,Wt,dt,T,gu,gh,Ns,b,ei);let _h={program:Vi,buffers:We,uniformValues:yo,atlasTexture:Rn,atlasTextureIcon:Dn,atlasInterpolation:$i,atlasInterpolationIcon:zs,isSDF:Me,hasHalo:Es};if(St&&xe.canOverlap){Bt=!0;let On=We.segments.get();for(let us of On)se.push({segments:new n.S([us]),sortKey:us.sortKey,state:_h,terrainData:Vr})}else se.push({segments:We.segments,sortKey:0,state:_h,terrainData:Vr})}Bt&&se.sort((pe,he)=>pe.sortKey-he.sortKey);for(let pe of se){let he=pe.state;if(st.activeTexture.set(At.TEXTURE0),he.atlasTexture.bind(he.atlasInterpolation,At.CLAMP_TO_EDGE),he.atlasTextureIcon&&(st.activeTexture.set(At.TEXTURE1),he.atlasTextureIcon&&he.atlasTextureIcon.bind(he.atlasInterpolationIcon,At.CLAMP_TO_EDGE)),he.isSDF){let xe=he.uniformValues;he.hasHalo&&(xe.u_is_halo=1,$m(he.buffers,pe.segments,d,T,he.program,Yt,Z,Q,xe,pe.terrainData)),xe.u_is_halo=0}$m(he.buffers,pe.segments,d,T,he.program,Yt,Z,Q,he.uniformValues,pe.terrainData)}}function $m(T,l,d,v,b,M,O,B,U,W){let Z=v.context;b.draw(Z,Z.gl.TRIANGLES,M,O,B,It.disabled,U,W,d.id,T.layoutVertexBuffer,T.indexBuffer,l,d.paint,v.transform.zoom,T.programConfigurations.get(d.id),T.dynamicLayoutVertexBuffer,T.opacityVertexBuffer)}function Td(T,l,d,v,b){if(!d||!v||!v.imageAtlas)return;let M=v.imageAtlas.patternPositions,O=M[d.to.toString()],B=M[d.from.toString()];if(!O&&B&&(O=B),!B&&O&&(B=O),!O||!B){let U=b.getPaintProperty(l);O=M[U],B=M[U]}O&&B&&T.setConstantPatternPositions(O,B)}function Md(T,l,d,v,b,M,O){let B=T.context.gl,U=\"fill-pattern\",W=d.paint.get(U),Z=W&&W.constantOr(1),Q=d.getCrossfadeParameters(),st,At,pt,yt,dt;O?(At=Z&&!d.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",st=B.LINES):(At=Z?\"fillPattern\":\"fill\",st=B.TRIANGLES);let Ft=W.constantOr(null);for(let Wt of v){let St=l.getTile(Wt);if(Z&&!St.patternsLoaded())continue;let Bt=St.getBucket(d);if(!Bt)continue;let Yt=Bt.programConfigurations.get(d.id),Qt=T.useProgram(At,Yt),se=T.style.map.terrain&&T.style.map.terrain.getTerrainData(Wt);Z&&(T.context.activeTexture.set(B.TEXTURE0),St.imageAtlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE),Yt.updatePaintBuffers(Q)),Td(Yt,U,Ft,St,d);let pe=se?Wt:null,he=T.translatePosMatrix(pe?pe.posMatrix:Wt.posMatrix,St,d.paint.get(\"fill-translate\"),d.paint.get(\"fill-translate-anchor\"));if(O){yt=Bt.indexBuffer2,dt=Bt.segments2;let xe=[B.drawingBufferWidth,B.drawingBufferHeight];pt=At===\"fillOutlinePattern\"&&Z?yd(he,T,Q,St,xe):_d(he,xe)}else yt=Bt.indexBuffer,dt=Bt.segments,pt=Z?gd(he,T,Q,St):md(he);Qt.draw(T.context,st,b,T.stencilModeForClipping(Wt),M,It.disabled,pt,se,d.id,Bt.layoutVertexBuffer,yt,dt,d.paint,T.transform.zoom,Yt)}}function Ed(T,l,d,v,b,M,O){let B=T.context,U=B.gl,W=\"fill-extrusion-pattern\",Z=d.paint.get(W),Q=Z.constantOr(1),st=d.getCrossfadeParameters(),At=d.paint.get(\"fill-extrusion-opacity\"),pt=Z.constantOr(null);for(let yt of v){let dt=l.getTile(yt),Ft=dt.getBucket(d);if(!Ft)continue;let Wt=T.style.map.terrain&&T.style.map.terrain.getTerrainData(yt),St=Ft.programConfigurations.get(d.id),Bt=T.useProgram(Q?\"fillExtrusionPattern\":\"fillExtrusion\",St);Q&&(T.context.activeTexture.set(U.TEXTURE0),dt.imageAtlasTexture.bind(U.LINEAR,U.CLAMP_TO_EDGE),St.updatePaintBuffers(st)),Td(St,W,pt,dt,d);let Yt=T.translatePosMatrix(yt.posMatrix,dt,d.paint.get(\"fill-extrusion-translate\"),d.paint.get(\"fill-extrusion-translate-anchor\")),Qt=d.paint.get(\"fill-extrusion-vertical-gradient\"),se=Q?Ul(Yt,T,Qt,At,yt,st,dt):Up(Yt,T,Qt,At);Bt.draw(B,B.gl.TRIANGLES,b,M,O,It.backCCW,se,Wt,d.id,Ft.layoutVertexBuffer,Ft.indexBuffer,Ft.segments,d.paint,T.transform.zoom,St,T.style.map.terrain&&Ft.centroidVertexBuffer)}}function Px(T,l,d,v,b,M,O){let B=T.context,U=B.gl,W=d.fbo;if(!W)return;let Z=T.useProgram(\"hillshade\"),Q=T.style.map.terrain&&T.style.map.terrain.getTerrainData(l);B.activeTexture.set(U.TEXTURE0),U.bindTexture(U.TEXTURE_2D,W.colorAttachment.get()),Z.draw(B,U.TRIANGLES,b,M,O,It.disabled,((st,At,pt,yt)=>{let dt=pt.paint.get(\"hillshade-shadow-color\"),Ft=pt.paint.get(\"hillshade-highlight-color\"),Wt=pt.paint.get(\"hillshade-accent-color\"),St=pt.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);pt.paint.get(\"hillshade-illumination-anchor\")===\"viewport\"&&(St-=st.transform.angle);let Bt=!st.options.moving;return{u_matrix:yt?yt.posMatrix:st.transform.calculatePosMatrix(At.tileID.toUnwrapped(),Bt),u_image:0,u_latrange:qe(0,At.tileID),u_light:[pt.paint.get(\"hillshade-exaggeration\"),St],u_shadow:dt,u_highlight:Ft,u_accent:Wt}})(T,d,v,Q?l:null),Q,v.id,T.rasterBoundsBuffer,T.quadTriangleIndexBuffer,T.rasterBoundsSegments)}function Xm(T,l,d,v,b,M){let O=T.context,B=O.gl,U=l.dem;if(U&&U.data){let W=U.dim,Z=U.stride,Q=U.getPixels();if(O.activeTexture.set(B.TEXTURE1),O.pixelStoreUnpackPremultiplyAlpha.set(!1),l.demTexture=l.demTexture||T.getTileTexture(Z),l.demTexture){let At=l.demTexture;At.update(Q,{premultiply:!1}),At.bind(B.NEAREST,B.CLAMP_TO_EDGE)}else l.demTexture=new Zt(O,Q,B.RGBA,{premultiply:!1}),l.demTexture.bind(B.NEAREST,B.CLAMP_TO_EDGE);O.activeTexture.set(B.TEXTURE0);let st=l.fbo;if(!st){let At=new Zt(O,{width:W,height:W,data:null},B.RGBA);At.bind(B.LINEAR,B.CLAMP_TO_EDGE),st=l.fbo=O.createFramebuffer(W,W,!0,!1),st.colorAttachment.set(At.texture)}O.bindFramebuffer.set(st.framebuffer),O.viewport.set([0,0,W,W]),T.useProgram(\"hillshadePrepare\").draw(O,B.TRIANGLES,v,b,M,It.disabled,((At,pt)=>{let yt=pt.stride,dt=n.Z();return n.aS(dt,0,n.N,-n.N,0,0,1),n.$(dt,dt,[0,-n.N,0]),{u_matrix:dt,u_image:1,u_dimension:[yt,yt],u_zoom:At.overscaledZ,u_unpack:pt.getUnpackVector()}})(l.tileID,U),null,d.id,T.rasterBoundsBuffer,T.quadTriangleIndexBuffer,T.rasterBoundsSegments),l.needsHillshadePrepare=!1}}function e_(T,l,d,v,b,M){let O=v.paint.get(\"raster-fade-duration\");if(!M&&O>0){let B=n.h.now(),U=(B-T.timeAdded)/O,W=l?(B-l.timeAdded)/O:-1,Z=d.getSource(),Q=b.coveringZoomLevel({tileSize:Z.tileSize,roundZoom:Z.roundZoom}),st=!l||Math.abs(l.tileID.overscaledZ-Q)>Math.abs(T.tileID.overscaledZ-Q),At=st&&T.refreshedUponExpiration?1:n.ad(st?U:1-W,0,1);return T.refreshedUponExpiration&&U>=1&&(T.refreshedUponExpiration=!1),l?{opacity:1,mix:1-At}:{opacity:At,mix:0}}return{opacity:1,mix:0}}let r_=new n.aT(1,0,0,1),gf=new n.aT(0,1,0,1),Oa=new n.aT(0,0,1,1),jn=new n.aT(1,0,1,1),i_=new n.aT(0,1,1,1);function Pd(T,l,d,v){Yp(T,0,l+d/2,T.transform.width,d,v)}function Zp(T,l,d,v){Yp(T,l-d/2,0,d,T.transform.height,v)}function Yp(T,l,d,v,b,M){let O=T.context,B=O.gl;B.enable(B.SCISSOR_TEST),B.scissor(l*T.pixelRatio,d*T.pixelRatio,v*T.pixelRatio,b*T.pixelRatio),O.clear({color:M}),B.disable(B.SCISSOR_TEST)}function Km(T,l,d){let v=T.context,b=v.gl,M=d.posMatrix,O=T.useProgram(\"debug\"),B=ci.disabled,U=$e.disabled,W=T.colorModeForRenderPass(),Z=\"$debug\",Q=T.style.map.terrain&&T.style.map.terrain.getTerrainData(d);v.activeTexture.set(b.TEXTURE0);let st=l.getTileByID(d.key).latestRawTileData,At=Math.floor((st&&st.byteLength||0)/1024),pt=l.getTile(d).tileSize,yt=512/Math.min(pt,512)*(d.overscaledZ/T.transform.zoom)*.5,dt=d.canonical.toString();d.overscaledZ!==d.canonical.z&&(dt+=` => ${d.overscaledZ}`),function(Ft,Wt){Ft.initDebugOverlayCanvas();let St=Ft.debugOverlayCanvas,Bt=Ft.context.gl,Yt=Ft.debugOverlayCanvas.getContext(\"2d\");Yt.clearRect(0,0,St.width,St.height),Yt.shadowColor=\"white\",Yt.shadowBlur=2,Yt.lineWidth=1.5,Yt.strokeStyle=\"white\",Yt.textBaseline=\"top\",Yt.font=\"bold 36px Open Sans, sans-serif\",Yt.fillText(Wt,5,5),Yt.strokeText(Wt,5,5),Ft.debugOverlayTexture.update(St),Ft.debugOverlayTexture.bind(Bt.LINEAR,Bt.CLAMP_TO_EDGE)}(T,`${dt} ${At}kB`),O.draw(v,b.TRIANGLES,B,U,Qi.alphaBlended,It.disabled,Lt(M,n.aT.transparent,yt),null,Z,T.debugBuffer,T.quadTriangleIndexBuffer,T.debugSegments),O.draw(v,b.LINE_STRIP,B,U,W,It.disabled,Lt(M,n.aT.red),Q,Z,T.debugBuffer,T.tileBorderIndexBuffer,T.debugSegments)}function Pn(T,l,d){let v=T.context,b=v.gl,M=T.colorModeForRenderPass(),O=new ci(b.LEQUAL,ci.ReadWrite,T.depthRangeFor3D),B=T.useProgram(\"terrain\"),U=l.getTerrainMesh();v.bindFramebuffer.set(null),v.viewport.set([0,0,T.width,T.height]);for(let W of d){let Z=T.renderToTexture.getTexture(W),Q=l.getTerrainData(W.tileID);v.activeTexture.set(b.TEXTURE0),b.bindTexture(b.TEXTURE_2D,Z.texture);let st={u_matrix:T.transform.calculatePosMatrix(W.tileID.toUnwrapped()),u_texture:0,u_ele_delta:l.getMeshFrameDelta(T.transform.zoom)};B.draw(v,b.TRIANGLES,O,$e.disabled,M,It.backCCW,st,Q,\"terrain\",U.vertexBuffer,U.indexBuffer,U.segments)}}class oh{constructor(l,d){this.context=new kc(l),this.transform=d,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:n.Z(),renderTime:0},this.setup(),this.numSublayers=os.maxUnderzooming+os.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Lc}resize(l,d,v){if(this.width=Math.floor(l*v),this.height=Math.floor(d*v),this.pixelRatio=v,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let b of this.style._order)this.style._layers[b].resize()}setup(){let l=this.context,d=new n.a_;d.emplaceBack(0,0),d.emplaceBack(n.N,0),d.emplaceBack(0,n.N),d.emplaceBack(n.N,n.N),this.tileExtentBuffer=l.createVertexBuffer(d,mo.members),this.tileExtentSegments=n.S.simpleSegment(0,0,4,2);let v=new n.a_;v.emplaceBack(0,0),v.emplaceBack(n.N,0),v.emplaceBack(0,n.N),v.emplaceBack(n.N,n.N),this.debugBuffer=l.createVertexBuffer(v,mo.members),this.debugSegments=n.S.simpleSegment(0,0,4,5);let b=new n.V;b.emplaceBack(0,0,0,0),b.emplaceBack(n.N,0,n.N,0),b.emplaceBack(0,n.N,0,n.N),b.emplaceBack(n.N,n.N,n.N,n.N),this.rasterBoundsBuffer=l.createVertexBuffer(b,$n.members),this.rasterBoundsSegments=n.S.simpleSegment(0,0,4,2);let M=new n.a_;M.emplaceBack(0,0),M.emplaceBack(1,0),M.emplaceBack(0,1),M.emplaceBack(1,1),this.viewportBuffer=l.createVertexBuffer(M,mo.members),this.viewportSegments=n.S.simpleSegment(0,0,4,2);let O=new n.a$;O.emplaceBack(0),O.emplaceBack(1),O.emplaceBack(3),O.emplaceBack(2),O.emplaceBack(0),this.tileBorderIndexBuffer=l.createIndexBuffer(O);let B=new n.b0;B.emplaceBack(0,1,2),B.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=l.createIndexBuffer(B);let U=this.context.gl;this.stencilClearMode=new $e({func:U.ALWAYS,mask:0},0,255,U.ZERO,U.ZERO,U.ZERO)}clearStencil(){let l=this.context,d=l.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let v=n.Z();n.aS(v,0,this.width,this.height,0,0,1),n.a0(v,v,[d.drawingBufferWidth,d.drawingBufferHeight,0]),this.useProgram(\"clippingMask\").draw(l,d.TRIANGLES,ci.disabled,this.stencilClearMode,Qi.disabled,It.disabled,$t(v),null,\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(l,d){if(this.currentStencilSource===l.source||!l.isTileClipped()||!d||!d.length)return;this.currentStencilSource=l.source;let v=this.context,b=v.gl;this.nextStencilID+d.length>256&&this.clearStencil(),v.setColorMode(Qi.disabled),v.setDepthMode(ci.disabled);let M=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(let O of d){let B=this._tileClippingMaskIDs[O.key]=this.nextStencilID++,U=this.style.map.terrain&&this.style.map.terrain.getTerrainData(O);M.draw(v,b.TRIANGLES,ci.disabled,new $e({func:b.ALWAYS,mask:0},B,255,b.KEEP,b.KEEP,b.REPLACE),Qi.disabled,It.disabled,$t(O.posMatrix),U,\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let l=this.nextStencilID++,d=this.context.gl;return new $e({func:d.NOTEQUAL,mask:255},l,255,d.KEEP,d.KEEP,d.REPLACE)}stencilModeForClipping(l){let d=this.context.gl;return new $e({func:d.EQUAL,mask:255},this._tileClippingMaskIDs[l.key],0,d.KEEP,d.KEEP,d.REPLACE)}stencilConfigForOverlap(l){let d=this.context.gl,v=l.sort((O,B)=>B.overscaledZ-O.overscaledZ),b=v[v.length-1].overscaledZ,M=v[0].overscaledZ-b+1;if(M>1){this.currentStencilSource=void 0,this.nextStencilID+M>256&&this.clearStencil();let O={};for(let B=0;B=0;this.currentLayer--){let U=this.style._layers[v[this.currentLayer]],W=b[U.source],Z=M[U.source];this._renderTileClippingMasks(U,Z),this.renderLayer(this,W,U,Z)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayerdt.source&&!dt.isHidden(Z)?[W.sourceCaches[dt.source]]:[]),At=st.filter(dt=>dt.getSource().type===\"vector\"),pt=st.filter(dt=>dt.getSource().type!==\"vector\"),yt=dt=>{(!Q||Q.getSource().maxzoomyt(dt)),Q||pt.forEach(dt=>yt(dt)),Q}(this.style,this.transform.zoom);U&&function(W,Z,Q){for(let st=0;stAt.style.map.terrain.getElevation(Qt,dr,Xe):null)}}}(U,M,B,O,B.layout.get(\"text-rotation-alignment\"),B.layout.get(\"text-pitch-alignment\"),W),B.paint.get(\"icon-opacity\").constantOr(1)!==0&&wt(M,O,B,U,!1,B.paint.get(\"icon-translate\"),B.paint.get(\"icon-translate-anchor\"),B.layout.get(\"icon-rotation-alignment\"),B.layout.get(\"icon-pitch-alignment\"),B.layout.get(\"icon-keep-upright\"),Z,Q),B.paint.get(\"text-opacity\").constantOr(1)!==0&&wt(M,O,B,U,!0,B.paint.get(\"text-translate\"),B.paint.get(\"text-translate-anchor\"),B.layout.get(\"text-rotation-alignment\"),B.layout.get(\"text-pitch-alignment\"),B.layout.get(\"text-keep-upright\"),Z,Q),O.map.showCollisionBoxes&&(Zm(M,O,B,U,B.paint.get(\"text-translate\"),B.paint.get(\"text-translate-anchor\"),!0),Zm(M,O,B,U,B.paint.get(\"icon-translate\"),B.paint.get(\"icon-translate-anchor\"),!1))})(l,d,v,b,this.style.placement.variableOffsets);break;case\"circle\":(function(M,O,B,U){if(M.renderPass!==\"translucent\")return;let W=B.paint.get(\"circle-opacity\"),Z=B.paint.get(\"circle-stroke-width\"),Q=B.paint.get(\"circle-stroke-opacity\"),st=!B.layout.get(\"circle-sort-key\").isConstant();if(W.constantOr(1)===0&&(Z.constantOr(1)===0||Q.constantOr(1)===0))return;let At=M.context,pt=At.gl,yt=M.depthModeForSublayer(0,ci.ReadOnly),dt=$e.disabled,Ft=M.colorModeForRenderPass(),Wt=[];for(let St=0;StSt.sortKey-Bt.sortKey);for(let St of Wt){let{programConfiguration:Bt,program:Yt,layoutVertexBuffer:Qt,indexBuffer:se,uniformValues:pe,terrainData:he}=St.state;Yt.draw(At,pt.TRIANGLES,yt,dt,Ft,It.disabled,pe,he,B.id,Qt,se,St.segments,B.paint,M.transform.zoom,Bt)}})(l,d,v,b);break;case\"heatmap\":(function(M,O,B,U){if(B.paint.get(\"heatmap-opacity\")!==0)if(M.renderPass===\"offscreen\"){let W=M.context,Z=W.gl,Q=$e.disabled,st=new Qi([Z.ONE,Z.ONE],n.aT.transparent,[!0,!0,!0,!0]);(function(At,pt,yt){let dt=At.gl;At.activeTexture.set(dt.TEXTURE1),At.viewport.set([0,0,pt.width/4,pt.height/4]);let Ft=yt.heatmapFbo;if(Ft)dt.bindTexture(dt.TEXTURE_2D,Ft.colorAttachment.get()),At.bindFramebuffer.set(Ft.framebuffer);else{let Wt=dt.createTexture();dt.bindTexture(dt.TEXTURE_2D,Wt),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_WRAP_S,dt.CLAMP_TO_EDGE),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_WRAP_T,dt.CLAMP_TO_EDGE),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_MIN_FILTER,dt.LINEAR),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_MAG_FILTER,dt.LINEAR),Ft=yt.heatmapFbo=At.createFramebuffer(pt.width/4,pt.height/4,!1,!1),function(St,Bt,Yt,Qt){var se,pe;let he=St.gl,xe=(se=St.HALF_FLOAT)!==null&&se!==void 0?se:he.UNSIGNED_BYTE,We=(pe=St.RGBA16F)!==null&&pe!==void 0?pe:he.RGBA;he.texImage2D(he.TEXTURE_2D,0,We,Bt.width/4,Bt.height/4,0,he.RGBA,xe,null),Qt.colorAttachment.set(Yt)}(At,pt,Wt,Ft)}})(W,M,B),W.clear({color:n.aT.transparent});for(let At=0;At{let St=n.Z();n.aS(St,0,yt.width,yt.height,0,0,1);let Bt=yt.context.gl;return{u_matrix:St,u_world:[Bt.drawingBufferWidth,Bt.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:dt.paint.get(\"heatmap-opacity\")}})(W,Z),null,Z.id,W.viewportBuffer,W.quadTriangleIndexBuffer,W.viewportSegments,Z.paint,W.transform.zoom)}(M,B))})(l,d,v,b);break;case\"line\":(function(M,O,B,U){if(M.renderPass!==\"translucent\")return;let W=B.paint.get(\"line-opacity\"),Z=B.paint.get(\"line-width\");if(W.constantOr(1)===0||Z.constantOr(1)===0)return;let Q=M.depthModeForSublayer(0,ci.ReadOnly),st=M.colorModeForRenderPass(),At=B.paint.get(\"line-dasharray\"),pt=B.paint.get(\"line-pattern\"),yt=pt.constantOr(1),dt=B.paint.get(\"line-gradient\"),Ft=B.getCrossfadeParameters(),Wt=yt?\"linePattern\":At?\"lineSDF\":dt?\"lineGradient\":\"line\",St=M.context,Bt=St.gl,Yt=!0;for(let Qt of U){let se=O.getTile(Qt);if(yt&&!se.patternsLoaded())continue;let pe=se.getBucket(B);if(!pe)continue;let he=pe.programConfigurations.get(B.id),xe=M.context.program.get(),We=M.useProgram(Wt,he),Kr=Yt||We.program!==xe,Me=M.style.map.terrain&&M.style.map.terrain.getTerrainData(Qt),dr=pt.constantOr(null);if(dr&&se.imageAtlas){let Jr=se.imageAtlas,Vr=Jr.patternPositions[dr.to.toString()],ei=Jr.patternPositions[dr.from.toString()];Vr&&ei&&he.setConstantPatternPositions(Vr,ei)}let Xe=Me?Qt:null,Vi=yt?Ss(M,se,B,Ft,Xe):At?Bs(M,se,B,At,Ft,Xe):dt?ts(M,se,B,pe.lineClipsArray.length,Xe):ti(M,se,B,Xe);if(yt)St.activeTexture.set(Bt.TEXTURE0),se.imageAtlasTexture.bind(Bt.LINEAR,Bt.CLAMP_TO_EDGE),he.updatePaintBuffers(Ft);else if(At&&(Kr||M.lineAtlas.dirty))St.activeTexture.set(Bt.TEXTURE0),M.lineAtlas.bind(St);else if(dt){let Jr=pe.gradients[B.id],Vr=Jr.texture;if(B.gradientVersion!==Jr.version){let ei=256;if(B.stepInterpolant){let Rn=O.getSource().maxzoom,$i=Qt.canonical.z===Rn?Math.ceil(1<0?d.pop():null}isPatternMissing(l){if(!l)return!1;if(!l.from||!l.to)return!0;let d=this.imageManager.getPattern(l.from.toString()),v=this.imageManager.getPattern(l.to.toString());return!d||!v}useProgram(l,d){this.cache=this.cache||{};let v=l+(d?d.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\")+(this.style.map.terrain?\"/terrain\":\"\");return this.cache[v]||(this.cache[v]=new hu(this.context,Yi[l],d,Nm[l],this._showOverdrawInspector,this.style.map.terrain)),this.cache[v]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let l=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(l.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new Zt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:l,drawingBufferHeight:d}=this.context.gl;return this.width!==l||this.height!==d}}class fi{constructor(l,d){this.points=l,this.planes=d}static fromInvProjectionMatrix(l,d,v){let b=Math.pow(2,v),M=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(B=>{let U=1/(B=n.ag([],B,l))[3]/d*b;return n.b3(B,B,[U,U,1/B[3],U])}),O=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(B=>{let U=function(st,At){var pt=At[0],yt=At[1],dt=At[2],Ft=pt*pt+yt*yt+dt*dt;return Ft>0&&(Ft=1/Math.sqrt(Ft)),st[0]=At[0]*Ft,st[1]=At[1]*Ft,st[2]=At[2]*Ft,st}([],function(st,At,pt){var yt=At[0],dt=At[1],Ft=At[2],Wt=pt[0],St=pt[1],Bt=pt[2];return st[0]=dt*Bt-Ft*St,st[1]=Ft*Wt-yt*Bt,st[2]=yt*St-dt*Wt,st}([],ut([],M[B[0]],M[B[1]]),ut([],M[B[2]],M[B[1]]))),W=-((Z=U)[0]*(Q=M[B[1]])[0]+Z[1]*Q[1]+Z[2]*Q[2]);var Z,Q;return U.concat(W)});return new fi(M,O)}}class du{constructor(l,d){this.min=l,this.max=d,this.center=function(v,b,M){return v[0]=.5*b[0],v[1]=.5*b[1],v[2]=.5*b[2],v}([],function(v,b,M){return v[0]=b[0]+M[0],v[1]=b[1]+M[1],v[2]=b[2]+M[2],v}([],this.min,this.max))}quadrant(l){let d=[l%2==0,l<2],v=K(this.min),b=K(this.max);for(let M=0;M=0&&O++;if(O===0)return 0;O!==d.length&&(v=!1)}if(v)return 2;for(let b=0;b<3;b++){let M=Number.MAX_VALUE,O=-Number.MAX_VALUE;for(let B=0;Bthis.max[b]-this.min[b])return 0}return 1}}class _f{constructor(l=0,d=0,v=0,b=0){if(isNaN(l)||l<0||isNaN(d)||d<0||isNaN(v)||v<0||isNaN(b)||b<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=l,this.bottom=d,this.left=v,this.right=b}interpolate(l,d,v){return d.top!=null&&l.top!=null&&(this.top=n.B.number(l.top,d.top,v)),d.bottom!=null&&l.bottom!=null&&(this.bottom=n.B.number(l.bottom,d.bottom,v)),d.left!=null&&l.left!=null&&(this.left=n.B.number(l.left,d.left,v)),d.right!=null&&l.right!=null&&(this.right=n.B.number(l.right,d.right,v)),this}getCenter(l,d){let v=n.ad((this.left+l-this.right)/2,0,l),b=n.ad((this.top+d-this.bottom)/2,0,d);return new n.P(v,b)}equals(l){return this.top===l.top&&this.bottom===l.bottom&&this.left===l.left&&this.right===l.right}clone(){return new _f(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class Qp{constructor(l,d,v,b,M){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=M===void 0||!!M,this._minZoom=l||0,this._maxZoom=d||22,this._minPitch=v??0,this._maxPitch=b??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new n.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new _f,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0}clone(){let l=new Qp(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return l.apply(this),l}apply(l){this.tileSize=l.tileSize,this.latRange=l.latRange,this.width=l.width,this.height=l.height,this._center=l._center,this._elevation=l._elevation,this._minEleveationForCurrentTile=l._minEleveationForCurrentTile,this.zoom=l.zoom,this.angle=l.angle,this._fov=l._fov,this._pitch=l._pitch,this._unmodified=l._unmodified,this._edgeInsets=l._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(l){this._minZoom!==l&&(this._minZoom=l,this.zoom=Math.max(this.zoom,l))}get maxZoom(){return this._maxZoom}set maxZoom(l){this._maxZoom!==l&&(this._maxZoom=l,this.zoom=Math.min(this.zoom,l))}get minPitch(){return this._minPitch}set minPitch(l){this._minPitch!==l&&(this._minPitch=l,this.pitch=Math.max(this.pitch,l))}get maxPitch(){return this._maxPitch}set maxPitch(l){this._maxPitch!==l&&(this._maxPitch=l,this.pitch=Math.min(this.pitch,l))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(l){l===void 0?l=!0:l===null&&(l=!1),this._renderWorldCopies=l}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new n.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(l){let d=-n.b5(l,-180,180)*Math.PI/180;this.angle!==d&&(this._unmodified=!1,this.angle=d,this._calcMatrices(),this.rotationMatrix=function(){var v=new n.A(4);return n.A!=Float32Array&&(v[1]=0,v[2]=0),v[0]=1,v[3]=1,v}(),function(v,b,M){var O=b[0],B=b[1],U=b[2],W=b[3],Z=Math.sin(M),Q=Math.cos(M);v[0]=O*Q+U*Z,v[1]=B*Q+W*Z,v[2]=O*-Z+U*Q,v[3]=B*-Z+W*Q}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(l){let d=n.ad(l,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==d&&(this._unmodified=!1,this._pitch=d,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(l){l=Math.max(.01,Math.min(60,l)),this._fov!==l&&(this._unmodified=!1,this._fov=l/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(l){let d=Math.min(Math.max(l,this.minZoom),this.maxZoom);this._zoom!==d&&(this._unmodified=!1,this._zoom=d,this.tileZoom=Math.max(0,Math.floor(d)),this.scale=this.zoomScale(d),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(l){l.lat===this._center.lat&&l.lng===this._center.lng||(this._unmodified=!1,this._center=l,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(l){l!==this._elevation&&(this._elevation=l,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(l){this._edgeInsets.equals(l)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,l,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(l){return this._edgeInsets.equals(l)}interpolatePadding(l,d,v){this._unmodified=!1,this._edgeInsets.interpolate(l,d,v),this._constrain(),this._calcMatrices()}coveringZoomLevel(l){let d=(l.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/l.tileSize));return Math.max(0,d)}getVisibleUnwrappedCoordinates(l){let d=[new n.b6(0,l)];if(this._renderWorldCopies){let v=this.pointCoordinate(new n.P(0,0)),b=this.pointCoordinate(new n.P(this.width,0)),M=this.pointCoordinate(new n.P(this.width,this.height)),O=this.pointCoordinate(new n.P(0,this.height)),B=Math.floor(Math.min(v.x,b.x,M.x,O.x)),U=Math.floor(Math.max(v.x,b.x,M.x,O.x)),W=1;for(let Z=B-W;Z<=U+W;Z++)Z!==0&&d.push(new n.b6(Z,l))}return d}coveringTiles(l){var d,v;let b=this.coveringZoomLevel(l),M=b;if(l.minzoom!==void 0&&bl.maxzoom&&(b=l.maxzoom);let O=this.pointCoordinate(this.getCameraPoint()),B=n.U.fromLngLat(this.center),U=Math.pow(2,b),W=[U*O.x,U*O.y,0],Z=[U*B.x,U*B.y,0],Q=fi.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,b),st=l.minzoom||0;!l.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(st=b);let At=l.terrain?2/Math.min(this.tileSize,l.tileSize)*this.tileSize:3,pt=St=>({aabb:new du([St*U,0,0],[(St+1)*U,U,0]),zoom:0,x:0,y:0,wrap:St,fullyVisible:!1}),yt=[],dt=[],Ft=b,Wt=l.reparseOverscaled?M:b;if(this._renderWorldCopies)for(let St=1;St<=3;St++)yt.push(pt(-St)),yt.push(pt(St));for(yt.push(pt(0));yt.length>0;){let St=yt.pop(),Bt=St.x,Yt=St.y,Qt=St.fullyVisible;if(!Qt){let We=St.aabb.intersects(Q);if(We===0)continue;Qt=We===2}let se=l.terrain?W:Z,pe=St.aabb.distanceX(se),he=St.aabb.distanceY(se),xe=Math.max(Math.abs(pe),Math.abs(he));if(St.zoom===Ft||xe>At+(1<=st){let We=Ft-St.zoom,Kr=W[0]-.5-(Bt<>1),dr=St.zoom+1,Xe=St.aabb.quadrant(We);if(l.terrain){let Vi=new n.O(dr,St.wrap,dr,Kr,Me),Jr=l.terrain.getMinMaxElevation(Vi),Vr=(d=Jr.minElevation)!==null&&d!==void 0?d:this.elevation,ei=(v=Jr.maxElevation)!==null&&v!==void 0?v:this.elevation;Xe=new du([Xe.min[0],Xe.min[1],Vr],[Xe.max[0],Xe.max[1],ei])}yt.push({aabb:Xe,zoom:dr,x:Kr,y:Me,wrap:St.wrap,fullyVisible:Qt})}}return dt.sort((St,Bt)=>St.distanceSq-Bt.distanceSq).map(St=>St.tileID)}resize(l,d){this.width=l,this.height=d,this.pixelsToGLUnits=[2/l,-2/d],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(l){return Math.pow(2,l)}scaleZoom(l){return Math.log(l)/Math.LN2}project(l){let d=n.ad(l.lat,-this.maxValidLatitude,this.maxValidLatitude);return new n.P(n.G(l.lng)*this.worldSize,n.H(d)*this.worldSize)}unproject(l){return new n.U(l.x/this.worldSize,l.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(l){let d=this.pointLocation(this.centerPoint,l),v=l.getElevationForLngLatZoom(d,this.tileZoom);if(!(this.elevation-v))return;let b=this.getCameraPosition(),M=n.U.fromLngLat(b.lngLat,b.altitude),O=n.U.fromLngLat(d,v),B=M.x-O.x,U=M.y-O.y,W=M.z-O.z,Z=Math.sqrt(B*B+U*U+W*W),Q=this.scaleZoom(this.cameraToCenterDistance/Z/this.tileSize);this._elevation=v,this._center=d,this.zoom=Q}setLocationAtPoint(l,d){let v=this.pointCoordinate(d),b=this.pointCoordinate(this.centerPoint),M=this.locationCoordinate(l),O=new n.U(M.x-(v.x-b.x),M.y-(v.y-b.y));this.center=this.coordinateLocation(O),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(l,d){return d?this.coordinatePoint(this.locationCoordinate(l),d.getElevationForLngLatZoom(l,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(l))}pointLocation(l,d){return this.coordinateLocation(this.pointCoordinate(l,d))}locationCoordinate(l){return n.U.fromLngLat(l)}coordinateLocation(l){return l&&l.toLngLat()}pointCoordinate(l,d){if(d){let st=d.pointCoordinate(l);if(st!=null)return st}let v=[l.x,l.y,0,1],b=[l.x,l.y,1,1];n.ag(v,v,this.pixelMatrixInverse),n.ag(b,b,this.pixelMatrixInverse);let M=v[3],O=b[3],B=v[1]/M,U=b[1]/O,W=v[2]/M,Z=b[2]/O,Q=W===Z?0:(0-W)/(Z-W);return new n.U(n.B.number(v[0]/M,b[0]/O,Q)/this.worldSize,n.B.number(B,U,Q)/this.worldSize)}coordinatePoint(l,d=0,v=this.pixelMatrix){let b=[l.x*this.worldSize,l.y*this.worldSize,d,1];return n.ag(b,b,v),new n.P(b[0]/b[3],b[1]/b[3])}getBounds(){let l=Math.max(0,this.height/2-this.getHorizon());return new wi().extend(this.pointLocation(new n.P(0,l))).extend(this.pointLocation(new n.P(this.width,l))).extend(this.pointLocation(new n.P(this.width,this.height))).extend(this.pointLocation(new n.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new wi([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(l){l?(this.lngRange=[l.getWest(),l.getEast()],this.latRange=[l.getSouth(),l.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])}calculatePosMatrix(l,d=!1){let v=l.key,b=d?this._alignedPosMatrixCache:this._posMatrixCache;if(b[v])return b[v];let M=l.canonical,O=this.worldSize/this.zoomScale(M.z),B=M.x+Math.pow(2,M.z)*l.wrap,U=n.ao(new Float64Array(16));return n.$(U,U,[B*O,M.y*O,0]),n.a0(U,U,[O/n.N,O/n.N,1]),n.a1(U,d?this.alignedProjMatrix:this.projMatrix,U),b[v]=new Float32Array(U),b[v]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let l,d,v,b,M=-90,O=90,B=-180,U=180,W=this.size,Z=this._unmodified;if(this.latRange){let At=this.latRange;M=n.H(At[1])*this.worldSize,O=n.H(At[0])*this.worldSize,l=O-MO&&(b=O-pt)}if(this.lngRange){let At=(B+U)/2,pt=n.b5(Q.x,At-this.worldSize/2,At+this.worldSize/2),yt=W.x/2;pt-ytU&&(v=U-yt)}v===void 0&&b===void 0||(this.center=this.unproject(new n.P(v!==void 0?v:Q.x,b!==void 0?b:Q.y)).wrap()),this._unmodified=Z,this._constraining=!1}_calcMatrices(){if(!this.height)return;let l=this.centerOffset,d=this.point.x,v=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=n.b7(1,this.center.lat)*this.worldSize;let b=n.ao(new Float64Array(16));n.a0(b,b,[this.width/2,-this.height/2,1]),n.$(b,b,[1,-1,0]),this.labelPlaneMatrix=b,b=n.ao(new Float64Array(16)),n.a0(b,b,[1,-1,1]),n.$(b,b,[-1,-1,0]),n.a0(b,b,[2/this.width,2/this.height,1]),this.glCoordMatrix=b;let M=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),O=Math.min(this.elevation,this._minEleveationForCurrentTile),B=M-O*this._pixelPerMeter/Math.cos(this._pitch),U=O<0?B:M,W=Math.PI/2+this._pitch,Z=this._fov*(.5+l.y/this.height),Q=Math.sin(Z)*U/Math.sin(n.ad(Math.PI-W-Z,.01,Math.PI-.01)),st=this.getHorizon(),At=2*Math.atan(st/this.cameraToCenterDistance)*(.5+l.y/(2*st)),pt=Math.sin(At)*U/Math.sin(n.ad(Math.PI-W-At,.01,Math.PI-.01)),yt=Math.min(Q,pt),dt=1.01*(Math.cos(Math.PI/2-this._pitch)*yt+U),Ft=this.height/50;b=new Float64Array(16),n.b8(b,this._fov,this.width/this.height,Ft,dt),b[8]=2*-l.x/this.width,b[9]=2*l.y/this.height,n.a0(b,b,[1,-1,1]),n.$(b,b,[0,0,-this.cameraToCenterDistance]),n.b9(b,b,this._pitch),n.ae(b,b,this.angle),n.$(b,b,[-d,-v,0]),this.mercatorMatrix=n.a0([],b,[this.worldSize,this.worldSize,this.worldSize]),n.a0(b,b,[1,1,this._pixelPerMeter]),this.pixelMatrix=n.a1(new Float64Array(16),this.labelPlaneMatrix,b),n.$(b,b,[0,0,-this.elevation]),this.projMatrix=b,this.invProjMatrix=n.as([],b),this.pixelMatrix3D=n.a1(new Float64Array(16),this.labelPlaneMatrix,b);let Wt=this.width%2/2,St=this.height%2/2,Bt=Math.cos(this.angle),Yt=Math.sin(this.angle),Qt=d-Math.round(d)+Bt*Wt+Yt*St,se=v-Math.round(v)+Bt*St+Yt*Wt,pe=new Float64Array(b);if(n.$(pe,pe,[Qt>.5?Qt-1:Qt,se>.5?se-1:se,0]),this.alignedProjMatrix=pe,b=n.as(new Float64Array(16),this.pixelMatrix),!b)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=b,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let l=this.pointCoordinate(new n.P(0,0)),d=[l.x*this.worldSize,l.y*this.worldSize,0,1];return n.ag(d,d,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let l=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new n.P(0,l))}getCameraQueryGeometry(l){let d=this.getCameraPoint();if(l.length===1)return[l[0],d];{let v=d.x,b=d.y,M=d.x,O=d.y;for(let B of l)v=Math.min(v,B.x),b=Math.min(b,B.y),M=Math.max(M,B.x),O=Math.max(O,B.y);return[new n.P(v,b),new n.P(M,b),new n.P(M,O),new n.P(v,O),new n.P(v,b)]}}}function ah(T,l){let d,v=!1,b=null,M=null,O=()=>{b=null,v&&(T.apply(M,d),b=setTimeout(O,l),v=!1)};return(...B)=>(v=!0,M=this,d=B,b||O(),b)}class Id{constructor(l){this._getCurrentHash=()=>{let d=window.location.hash.replace(\"#\",\"\");if(this._hashName){let v;return d.split(\"&\").map(b=>b.split(\"=\")).forEach(b=>{b[0]===this._hashName&&(v=b)}),(v&&v[1]||\"\").split(\"/\")}return d.split(\"/\")},this._onHashChange=()=>{let d=this._getCurrentHash();if(d.length>=3&&!d.some(v=>isNaN(v))){let v=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(d[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+d[2],+d[1]],zoom:+d[0],bearing:v,pitch:+(d[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let d=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,d)}catch{}},this._updateHash=ah(this._updateHashUnthrottled,300),this._hashName=l&&encodeURIComponent(l)}addTo(l){return this._map=l,addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(l){let d=this._map.getCenter(),v=Math.round(100*this._map.getZoom())/100,b=Math.ceil((v*Math.LN2+Math.log(512/360/.5))/Math.LN10),M=Math.pow(10,b),O=Math.round(d.lng*M)/M,B=Math.round(d.lat*M)/M,U=this._map.getBearing(),W=this._map.getPitch(),Z=\"\";if(Z+=l?`/${O}/${B}/${v}`:`${v}/${B}/${O}`,(U||W)&&(Z+=\"/\"+Math.round(10*U)/10),W&&(Z+=`/${Math.round(W)}`),this._hashName){let Q=this._hashName,st=!1,At=window.location.hash.slice(1).split(\"&\").map(pt=>{let yt=pt.split(\"=\")[0];return yt===Q?(st=!0,`${yt}=${Z}`):pt}).filter(pt=>pt);return st||At.push(`${Q}=${Z}`),`#${At.join(\"&\")}`}return`#${Z}`}}let lh={linearity:.3,easing:n.ba(0,0,.3,1)},$p=n.e({deceleration:2500,maxSpeed:1400},lh),Xp=n.e({deceleration:20,maxSpeed:1400},lh),n_=n.e({deceleration:1e3,maxSpeed:360},lh),s_=n.e({deceleration:1e3,maxSpeed:90},lh);class Jm{constructor(l){this._map=l,this.clear()}clear(){this._inertiaBuffer=[]}record(l){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:n.h.now(),settings:l})}_drainInertiaBuffer(){let l=this._inertiaBuffer,d=n.h.now();for(;l.length>0&&d-l[0].time>160;)l.shift()}_onMoveEnd(l){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let d={zoom:0,bearing:0,pitch:0,pan:new n.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:M}of this._inertiaBuffer)d.zoom+=M.zoomDelta||0,d.bearing+=M.bearingDelta||0,d.pitch+=M.pitchDelta||0,M.panDelta&&d.pan._add(M.panDelta),M.around&&(d.around=M.around),M.pinchAround&&(d.pinchAround=M.pinchAround);let v=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,b={};if(d.pan.mag()){let M=ch(d.pan.mag(),v,n.e({},$p,l||{}));b.offset=d.pan.mult(M.amount/d.pan.mag()),b.center=this._map.transform.center,hl(b,M)}if(d.zoom){let M=ch(d.zoom,v,Xp);b.zoom=this._map.transform.zoom+M.amount,hl(b,M)}if(d.bearing){let M=ch(d.bearing,v,n_);b.bearing=this._map.transform.bearing+n.ad(M.amount,-179,179),hl(b,M)}if(d.pitch){let M=ch(d.pitch,v,s_);b.pitch=this._map.transform.pitch+M.amount,hl(b,M)}if(b.zoom||b.bearing){let M=d.pinchAround===void 0?d.around:d.pinchAround;b.around=M?this._map.unproject(M):this._map.getCenter()}return this.clear(),n.e(b,{noMoveStart:!0})}}function hl(T,l){(!T.duration||T.durationd.unproject(U)),B=M.reduce((U,W,Z,Q)=>U.add(W.div(Q.length)),new n.P(0,0));super(l,{points:M,point:B,lngLats:O,lngLat:d.unproject(B),originalEvent:v}),this._defaultPrevented=!1}}class o_ extends n.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(l,d,v){super(l,{originalEvent:v}),this._defaultPrevented=!1}}class Fs{constructor(l,d){this._map=l,this._clickTolerance=d.clickTolerance}reset(){delete this._mousedownPos}wheel(l){return this._firePreventable(new o_(l.type,this._map,l))}mousedown(l,d){return this._mousedownPos=d,this._firePreventable(new la(l.type,this._map,l))}mouseup(l){this._map.fire(new la(l.type,this._map,l))}click(l,d){this._mousedownPos&&this._mousedownPos.dist(d)>=this._clickTolerance||this._map.fire(new la(l.type,this._map,l))}dblclick(l){return this._firePreventable(new la(l.type,this._map,l))}mouseover(l){this._map.fire(new la(l.type,this._map,l))}mouseout(l){this._map.fire(new la(l.type,this._map,l))}touchstart(l){return this._firePreventable(new Cd(l.type,this._map,l))}touchmove(l){this._map.fire(new Cd(l.type,this._map,l))}touchend(l){this._map.fire(new Cd(l.type,this._map,l))}touchcancel(l){this._map.fire(new Cd(l.type,this._map,l))}_firePreventable(l){if(this._map.fire(l),l.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class pu{constructor(l){this._map=l}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(l){this._map.fire(new la(l.type,this._map,l))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new la(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(l){this._delayContextMenu?this._contextMenuEvent=l:this._ignoreContextMenu||this._map.fire(new la(l.type,this._map,l)),this._map.listens(\"contextmenu\")&&l.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class In{constructor(l){this._map=l}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(l){return this.transform.pointLocation(n.P.convert(l),this._map.terrain)}}class Kp{constructor(l,d){this._map=l,this._tr=new In(l),this._el=l.getCanvasContainer(),this._container=l.getContainer(),this._clickTolerance=d.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(l,d){this.isEnabled()&&l.shiftKey&&l.button===0&&(c.disableDrag(),this._startPos=this._lastPos=d,this._active=!0)}mousemoveWindow(l,d){if(!this._active)return;let v=d;if(this._lastPos.equals(v)||!this._box&&v.dist(this._startPos)M.fitScreenCoordinates(v,b,this._tr.bearing,{linear:!0})};this._fireEvent(\"boxzoomcancel\",l)}keydown(l){this._active&&l.keyCode===27&&(this.reset(),this._fireEvent(\"boxzoomcancel\",l))}reset(){this._active=!1,this._container.classList.remove(\"maplibregl-crosshair\"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(l,d){return this._map.fire(new n.k(l,{originalEvent:d}))}}function ca(T,l){if(T.length!==l.length)throw new Error(`The number of touches and points are not equal - touches ${T.length}, points ${l.length}`);let d={};for(let v=0;vthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=l.timeStamp),v.length===this.numTouches&&(this.centroid=function(b){let M=new n.P(0,0);for(let O of b)M._add(O);return M.div(b.length)}(d),this.touches=ca(v,d)))}touchmove(l,d,v){if(this.aborted||!this.centroid)return;let b=ca(v,d);for(let M in this.touches){let O=b[M];(!O||O.dist(this.touches[M])>30)&&(this.aborted=!0)}}touchend(l,d,v){if((!this.centroid||l.timeStamp-this.startTime>500)&&(this.aborted=!0),v.length===0){let b=!this.aborted&&this.centroid;if(this.reset(),b)return b}}}class Ld{constructor(l){this.singleTap=new Ba(l),this.numTaps=l.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(l,d,v){this.singleTap.touchstart(l,d,v)}touchmove(l,d,v){this.singleTap.touchmove(l,d,v)}touchend(l,d,v){let b=this.singleTap.touchend(l,d,v);if(b){let M=l.timeStamp-this.lastTime<500,O=!this.lastTap||this.lastTap.dist(b)<30;if(M&&O||this.reset(),this.count++,this.lastTime=l.timeStamp,this.lastTap=b,this.count===this.numTaps)return this.reset(),b}}}class fl{constructor(l){this._tr=new In(l),this._zoomIn=new Ld({numTouches:1,numTaps:2}),this._zoomOut=new Ld({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(l,d,v){this._zoomIn.touchstart(l,d,v),this._zoomOut.touchstart(l,d,v)}touchmove(l,d,v){this._zoomIn.touchmove(l,d,v),this._zoomOut.touchmove(l,d,v)}touchend(l,d,v){let b=this._zoomIn.touchend(l,d,v),M=this._zoomOut.touchend(l,d,v),O=this._tr;return b?(this._active=!0,l.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:O.zoom+1,around:O.unproject(b)},{originalEvent:l})}):M?(this._active=!0,l.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:O.zoom-1,around:O.unproject(M)},{originalEvent:l})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fa{constructor(l){this._enabled=!!l.enable,this._moveStateManager=l.moveStateManager,this._clickTolerance=l.clickTolerance||1,this._moveFunction=l.move,this._activateOnStart=!!l.activateOnStart,l.assignEvents(this),this.reset()}reset(l){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(l)}_move(...l){let d=this._moveFunction(...l);if(d.bearingDelta||d.pitchDelta||d.around||d.panDelta)return this._active=!0,d}dragStart(l,d){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(l)&&(this._moveStateManager.startMove(l),this._lastPoint=d.length?d[0]:d,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(l,d){if(!this.isEnabled())return;let v=this._lastPoint;if(!v)return;if(l.preventDefault(),!this._moveStateManager.isValidMoveEvent(l))return void this.reset(l);let b=d.length?d[0]:d;return!this._moved&&b.dist(v){T.mousedown=T.dragStart,T.mousemoveWindow=T.dragMove,T.mouseup=T.dragEnd,T.contextmenu=function(l){l.preventDefault()}},za=({enable:T,clickTolerance:l,bearingDegreesPerPixelMoved:d=.8})=>{let v=new Jp({checkCorrectEvent:b=>c.mouseButton(b)===0&&b.ctrlKey||c.mouseButton(b)===2});return new Fa({clickTolerance:l,move:(b,M)=>({bearingDelta:(M.x-b.x)*d}),moveStateManager:v,enable:T,assignEvents:hh})},ro=({enable:T,clickTolerance:l,pitchDegreesPerPixelMoved:d=-.5})=>{let v=new Jp({checkCorrectEvent:b=>c.mouseButton(b)===0&&b.ctrlKey||c.mouseButton(b)===2});return new Fa({clickTolerance:l,move:(b,M)=>({pitchDelta:(M.y-b.y)*d}),moveStateManager:v,enable:T,assignEvents:hh})};class Ue{constructor(l,d){this._minTouches=l.cooperativeGestures?2:1,this._clickTolerance=l.clickTolerance||1,this._map=d,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new n.P(0,0),setTimeout(()=>{this._cancelCooperativeMessage=!1},200)}touchstart(l,d,v){return this._calculateTransform(l,d,v)}touchmove(l,d,v){if(this._map._cooperativeGestures&&(this._minTouches===2&&v.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(l,!1,v.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(v.length0&&(this._active=!0);let b=ca(v,d),M=new n.P(0,0),O=new n.P(0,0),B=0;for(let W in b){let Z=b[W],Q=this._touches[W];Q&&(M._add(Z),O._add(Z.sub(Q)),B++,b[W]=Z)}if(this._touches=b,BMath.abs(T.x)}class Ix extends kd{constructor(l){super(),this._map=l}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(l,d,v){super.touchstart(l,d,v),this._currentTouchCount=v.length}_start(l){this._lastPoints=l,r0(l[0].sub(l[1]))&&(this._valid=!1)}_move(l,d,v){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;let b=l[0].sub(this._lastPoints[0]),M=l[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(b,M,v.timeStamp),this._valid?(this._lastPoints=l,this._active=!0,{pitchDelta:(b.y+M.y)/2*-.5}):void 0}gestureBeginsVertically(l,d,v){if(this._valid!==void 0)return this._valid;let b=l.mag()>=2,M=d.mag()>=2;if(!b&&!M)return;if(!b||!M)return this._firstMove===void 0&&(this._firstMove=v),v-this._firstMove<100&&void 0;let O=l.y>0==d.y>0;return r0(l)&&r0(d)&&O}}let fh={panStep:100,bearingStep:15,pitchStep:10};class l_{constructor(l){this._tr=new In(l);let d=fh;this._panStep=d.panStep,this._bearingStep=d.bearingStep,this._pitchStep=d.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(l){if(l.altKey||l.ctrlKey||l.metaKey)return;let d=0,v=0,b=0,M=0,O=0;switch(l.keyCode){case 61:case 107:case 171:case 187:d=1;break;case 189:case 109:case 173:d=-1;break;case 37:l.shiftKey?v=-1:(l.preventDefault(),M=-1);break;case 39:l.shiftKey?v=1:(l.preventDefault(),M=1);break;case 38:l.shiftKey?b=1:(l.preventDefault(),O=-1);break;case 40:l.shiftKey?b=-1:(l.preventDefault(),O=1);break;default:return}return this._rotationDisabled&&(v=0,b=0),{cameraAnimation:B=>{let U=this._tr;B.easeTo({duration:300,easeId:\"keyboardHandler\",easing:i0,zoom:d?Math.round(U.zoom)+d*(l.shiftKey?2:1):U.zoom,bearing:U.bearing+v*this._bearingStep,pitch:U.pitch+b*this._pitchStep,offset:[-M*this._panStep,-O*this._panStep],center:U.center},{originalEvent:l})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function i0(T){return T*(2-T)}let n0=4.000244140625;class vf{constructor(l,d){this._onTimeout=v=>{this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(v)},this._map=l,this._tr=new In(l),this._el=l.getCanvasContainer(),this._triggerRenderFrame=d,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(l){this._defaultZoomRate=l}setWheelZoomRate(l){this._wheelZoomRate=l}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(l){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!l&&l.around===\"center\")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(l){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!l[this._map._metaKey])return;l.preventDefault()}let d=l.deltaMode===WheelEvent.DOM_DELTA_LINE?40*l.deltaY:l.deltaY,v=n.h.now(),b=v-(this._lastWheelEventTime||0);this._lastWheelEventTime=v,d!==0&&d%n0==0?this._type=\"wheel\":d!==0&&Math.abs(d)<4?this._type=\"trackpad\":b>400?(this._type=null,this._lastValue=d,this._timeout=setTimeout(this._onTimeout,40,l)):this._type||(this._type=Math.abs(b*d)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,d+=this._lastValue)),l.shiftKey&&d&&(d/=4),this._type&&(this._lastWheelEvent=l,this._delta-=d,this._active||this._start(l)),l.preventDefault()}_start(l){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let d=c.mousePos(this._el,l),v=this._tr;this._around=n.L.convert(this._aroundCenter?v.center:v.unproject(d)),this._aroundPoint=v.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let l=this._tr.transform;if(this._delta!==0){let B=this._type===\"wheel\"&&Math.abs(this._delta)>n0?this._wheelZoomRate:this._defaultZoomRate,U=2/(1+Math.exp(-Math.abs(this._delta*B)));this._delta<0&&U!==0&&(U=1/U);let W=typeof this._targetZoom==\"number\"?l.zoomScale(this._targetZoom):l.scale;this._targetZoom=Math.min(l.maxZoom,Math.max(l.minZoom,l.scaleZoom(W*U))),this._type===\"wheel\"&&(this._startZoom=l.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let d=typeof this._targetZoom==\"number\"?this._targetZoom:l.zoom,v=this._startZoom,b=this._easing,M,O=!1;if(this._type===\"wheel\"&&v&&b){let B=Math.min((n.h.now()-this._lastWheelEventTime)/200,1),U=b(B);M=n.B.number(v,d,U),B<1?this._frameId||(this._frameId=!0):O=!0}else M=d,O=!0;return this._active=!0,O&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!O,zoomDelta:M-l.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(l){let d=n.bb;if(this._prevEase){let v=this._prevEase,b=(n.h.now()-v.start)/v.duration,M=v.easing(b+.01)-v.easing(b),O=.27/Math.sqrt(M*M+1e-4)*.01,B=Math.sqrt(.0729-O*O);d=n.ba(O,B,.25,1)}return this._prevEase={start:n.h.now(),duration:l,easing:d},d}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class s0{constructor(l,d){this._clickZoom=l,this._tapZoom=d}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class tA{constructor(l){this._tr=new In(l),this.reset()}reset(){this._active=!1}dblclick(l,d){return l.preventDefault(),{cameraAnimation:v=>{v.easeTo({duration:300,zoom:this._tr.zoom+(l.shiftKey?-1:1),around:this._tr.unproject(d)},{originalEvent:l})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class eA{constructor(){this._tap=new Ld({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(l,d,v){if(!this._swipePoint)if(this._tapTime){let b=d[0],M=l.timeStamp-this._tapTime<500,O=this._tapPoint.dist(b)<30;M&&O?v.length>0&&(this._swipePoint=b,this._swipeTouch=v[0].identifier):this.reset()}else this._tap.touchstart(l,d,v)}touchmove(l,d,v){if(this._tapTime){if(this._swipePoint){if(v[0].identifier!==this._swipeTouch)return;let b=d[0],M=b.y-this._swipePoint.y;return this._swipePoint=b,l.preventDefault(),this._active=!0,{zoomDelta:M/128}}}else this._tap.touchmove(l,d,v)}touchend(l,d,v){if(this._tapTime)this._swipePoint&&v.length===0&&this.reset();else{let b=this._tap.touchend(l,d,v);b&&(this._tapTime=l.timeStamp,this._tapPoint=b)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class dh{constructor(l,d,v){this._el=l,this._mousePan=d,this._touchPan=v}enable(l){this._inertiaOptions=l||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"maplibregl-touch-drag-pan\")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"maplibregl-touch-drag-pan\")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class ls{constructor(l,d,v){this._pitchWithRotate=l.pitchWithRotate,this._mouseRotate=d,this._mousePitch=v}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Au{constructor(l,d,v,b){this._el=l,this._touchZoom=d,this._touchRotate=v,this._tapDragZoom=b,this._rotationDisabled=!1,this._enabled=!0}enable(l){this._touchZoom.enable(l),this._rotationDisabled||this._touchRotate.enable(l),this._tapDragZoom.enable(),this._el.classList.add(\"maplibregl-touch-zoom-rotate\")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"maplibregl-touch-zoom-rotate\")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}let Rc=T=>T.zoom||T.drag||T.pitch||T.rotate;class o0 extends n.k{}function Rd(T){return T.panDelta&&T.panDelta.mag()||T.zoomDelta||T.bearingDelta||T.pitchDelta}class a0{constructor(l,d){this.handleWindowEvent=b=>{this.handleEvent(b,`${b.type}Window`)},this.handleEvent=(b,M)=>{if(b.type===\"blur\")return void this.stop(!0);this._updatingCamera=!0;let O=b.type===\"renderFrame\"?void 0:b,B={needsRenderFrame:!1},U={},W={},Z=b.touches,Q=Z?this._getMapTouches(Z):void 0,st=Q?c.touchPos(this._el,Q):c.mousePos(this._el,b);for(let{handlerName:yt,handler:dt,allowed:Ft}of this._handlers){if(!dt.isEnabled())continue;let Wt;this._blockedByActive(W,Ft,yt)?dt.reset():dt[M||b.type]&&(Wt=dt[M||b.type](b,st,Q),this.mergeHandlerResult(B,U,Wt,yt,O),Wt&&Wt.needsRenderFrame&&this._triggerRenderFrame()),(Wt||dt.isActive())&&(W[yt]=dt)}let At={};for(let yt in this._previousActiveHandlers)W[yt]||(At[yt]=O);this._previousActiveHandlers=W,(Object.keys(At).length||Rd(B))&&(this._changes.push([B,U,At]),this._triggerRenderFrame()),(Object.keys(W).length||Rd(B))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:pt}=B;pt&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],pt(this._map))},this._map=l,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Jm(l),this._bearingSnap=d.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(d);let v=this._el;this._listeners=[[v,\"touchstart\",{passive:!0}],[v,\"touchmove\",{passive:!1}],[v,\"touchend\",void 0],[v,\"touchcancel\",void 0],[v,\"mousedown\",void 0],[v,\"mousemove\",void 0],[v,\"mouseup\",void 0],[document,\"mousemove\",{capture:!0}],[document,\"mouseup\",void 0],[v,\"mouseover\",void 0],[v,\"mouseout\",void 0],[v,\"dblclick\",void 0],[v,\"click\",void 0],[v,\"keydown\",{capture:!1}],[v,\"keyup\",void 0],[v,\"wheel\",{passive:!1}],[v,\"contextmenu\",void 0],[window,\"blur\",void 0]];for(let[b,M,O]of this._listeners)c.addEventListener(b,M,b===document?this.handleWindowEvent:this.handleEvent,O)}destroy(){for(let[l,d,v]of this._listeners)c.removeEventListener(l,d,l===document?this.handleWindowEvent:this.handleEvent,v)}_addDefaultHandlers(l){let d=this._map,v=d.getCanvasContainer();this._add(\"mapEvent\",new Fs(d,l));let b=d.boxZoom=new Kp(d,l);this._add(\"boxZoom\",b),l.interactive&&l.boxZoom&&b.enable();let M=new fl(d),O=new tA(d);d.doubleClickZoom=new s0(O,M),this._add(\"tapZoom\",M),this._add(\"clickZoom\",O),l.interactive&&l.doubleClickZoom&&d.doubleClickZoom.enable();let B=new eA;this._add(\"tapDragZoom\",B);let U=d.touchPitch=new Ix(d);this._add(\"touchPitch\",U),l.interactive&&l.touchPitch&&d.touchPitch.enable(l.touchPitch);let W=za(l),Z=ro(l);d.dragRotate=new ls(l,W,Z),this._add(\"mouseRotate\",W,[\"mousePitch\"]),this._add(\"mousePitch\",Z,[\"mouseRotate\"]),l.interactive&&l.dragRotate&&d.dragRotate.enable();let Q=(({enable:Ft,clickTolerance:Wt})=>{let St=new Jp({checkCorrectEvent:Bt=>c.mouseButton(Bt)===0&&!Bt.ctrlKey});return new Fa({clickTolerance:Wt,move:(Bt,Yt)=>({around:Yt,panDelta:Yt.sub(Bt)}),activateOnStart:!0,moveStateManager:St,enable:Ft,assignEvents:hh})})(l),st=new Ue(l,d);d.dragPan=new dh(v,Q,st),this._add(\"mousePan\",Q),this._add(\"touchPan\",st,[\"touchZoom\",\"touchRotate\"]),l.interactive&&l.dragPan&&d.dragPan.enable(l.dragPan);let At=new e0,pt=new a_;d.touchZoomRotate=new Au(v,pt,At,B),this._add(\"touchRotate\",At,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",pt,[\"touchPan\",\"touchRotate\"]),l.interactive&&l.touchZoomRotate&&d.touchZoomRotate.enable(l.touchZoomRotate);let yt=d.scrollZoom=new vf(d,()=>this._triggerRenderFrame());this._add(\"scrollZoom\",yt,[\"mousePan\"]),l.interactive&&l.scrollZoom&&d.scrollZoom.enable(l.scrollZoom);let dt=d.keyboard=new l_(d);this._add(\"keyboard\",dt),l.interactive&&l.keyboard&&d.keyboard.enable(),this._add(\"blockableMapEvent\",new pu(d))}_add(l,d,v){this._handlers.push({handlerName:l,handler:d,allowed:v}),this._handlersById[l]=d}stop(l){if(!this._updatingCamera){for(let{handler:d}of this._handlers)d.reset();this._inertia.clear(),this._fireEvents({},{},l),this._changes=[]}}isActive(){for(let{handler:l}of this._handlers)if(l.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Rc(this._eventsInProgress)||this.isZooming()}_blockedByActive(l,d,v){for(let b in l)if(b!==v&&(!d||d.indexOf(b)<0))return!0;return!1}_getMapTouches(l){let d=[];for(let v of l)this._el.contains(v.target)&&d.push(v);return d}mergeHandlerResult(l,d,v,b,M){if(!v)return;n.e(l,v);let O={handlerName:b,originalEvent:v.originalEvent||M};v.zoomDelta!==void 0&&(d.zoom=O),v.panDelta!==void 0&&(d.drag=O),v.pitchDelta!==void 0&&(d.pitch=O),v.bearingDelta!==void 0&&(d.rotate=O)}_applyChanges(){let l={},d={},v={};for(let[b,M,O]of this._changes)b.panDelta&&(l.panDelta=(l.panDelta||new n.P(0,0))._add(b.panDelta)),b.zoomDelta&&(l.zoomDelta=(l.zoomDelta||0)+b.zoomDelta),b.bearingDelta&&(l.bearingDelta=(l.bearingDelta||0)+b.bearingDelta),b.pitchDelta&&(l.pitchDelta=(l.pitchDelta||0)+b.pitchDelta),b.around!==void 0&&(l.around=b.around),b.pinchAround!==void 0&&(l.pinchAround=b.pinchAround),b.noInertia&&(l.noInertia=b.noInertia),n.e(d,M),n.e(v,O);this._updateMapTransform(l,d,v),this._changes=[]}_updateMapTransform(l,d,v){let b=this._map,M=b._getTransformForUpdate(),O=b.terrain;if(!(Rd(l)||O&&this._terrainMovement))return this._fireEvents(d,v,!0);let{panDelta:B,zoomDelta:U,bearingDelta:W,pitchDelta:Z,around:Q,pinchAround:st}=l;st!==void 0&&(Q=st),b._stop(!0),Q=Q||b.transform.centerPoint;let At=M.pointLocation(B?Q.sub(B):Q);W&&(M.bearing+=W),Z&&(M.pitch+=Z),U&&(M.zoom+=U),O?this._terrainMovement||!d.drag&&!d.zoom?d.drag&&this._terrainMovement?M.center=M.pointLocation(M.centerPoint.sub(B)):M.setLocationAtPoint(At,Q):(this._terrainMovement=!0,this._map._elevationFreeze=!0,M.setLocationAtPoint(At,Q),this._map.once(\"moveend\",()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,M.recalculateZoom(b.terrain)})):M.setLocationAtPoint(At,Q),b._applyUpdatedTransform(M),this._map._update(),l.noInertia||this._inertia.record(l),this._fireEvents(d,v,!0)}_fireEvents(l,d,v){let b=Rc(this._eventsInProgress),M=Rc(l),O={};for(let Z in l){let{originalEvent:Q}=l[Z];this._eventsInProgress[Z]||(O[`${Z}start`]=Q),this._eventsInProgress[Z]=l[Z]}!b&&M&&this._fireEvent(\"movestart\",M.originalEvent);for(let Z in O)this._fireEvent(Z,O[Z]);M&&this._fireEvent(\"move\",M.originalEvent);for(let Z in l){let{originalEvent:Q}=l[Z];this._fireEvent(Z,Q)}let B={},U;for(let Z in this._eventsInProgress){let{handlerName:Q,originalEvent:st}=this._eventsInProgress[Z];this._handlersById[Q].isActive()||(delete this._eventsInProgress[Z],U=d[Q]||st,B[`${Z}end`]=U)}for(let Z in B)this._fireEvent(Z,B[Z]);let W=Rc(this._eventsInProgress);if(v&&(b||M)&&!W){this._updatingCamera=!0;let Z=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),Q=st=>st!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new o0(\"renderFrame\",{timeStamp:l})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class c_ extends n.E{constructor(l,d){super(),this._renderFrameCallback=()=>{let v=Math.min((n.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(v)),v<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=l,this._bearingSnap=d.bearingSnap,this.on(\"moveend\",()=>{delete this._requestedCameraState})}getCenter(){return new n.L(this.transform.center.lng,this.transform.center.lat)}setCenter(l,d){return this.jumpTo({center:l},d)}panBy(l,d,v){return l=n.P.convert(l).mult(-1),this.panTo(this.transform.center,n.e({offset:l},d),v)}panTo(l,d,v){return this.easeTo(n.e({center:l},d),v)}getZoom(){return this.transform.zoom}setZoom(l,d){return this.jumpTo({zoom:l},d),this}zoomTo(l,d,v){return this.easeTo(n.e({zoom:l},d),v)}zoomIn(l,d){return this.zoomTo(this.getZoom()+1,l,d),this}zoomOut(l,d){return this.zoomTo(this.getZoom()-1,l,d),this}getBearing(){return this.transform.bearing}setBearing(l,d){return this.jumpTo({bearing:l},d),this}getPadding(){return this.transform.padding}setPadding(l,d){return this.jumpTo({padding:l},d),this}rotateTo(l,d,v){return this.easeTo(n.e({bearing:l},d),v)}resetNorth(l,d){return this.rotateTo(0,n.e({duration:1e3},l),d),this}resetNorthPitch(l,d){return this.easeTo(n.e({bearing:0,pitch:0,duration:1e3},l),d),this}snapToNorth(l,d){return Math.abs(this.getBearing()){if(this._zooming&&(v.zoom=n.B.number(b,U,Qt)),this._rotating&&(v.bearing=n.B.number(M,W,Qt)),this._pitching&&(v.pitch=n.B.number(O,Z,Qt)),this._padding&&(v.interpolatePadding(B,Q,Qt),At=v.centerPoint.add(st)),this.terrain&&!l.freezeElevation&&this._updateElevation(Qt),St)v.setLocationAtPoint(St,Bt);else{let se=v.zoomScale(v.zoom-b),pe=U>b?Math.min(2,Wt):Math.max(.5,Wt),he=Math.pow(pe,1-Qt),xe=v.unproject(dt.add(Ft.mult(Qt*he)).mult(se));v.setLocationAtPoint(v.renderWorldCopies?xe.wrap():xe,At)}this._applyUpdatedTransform(v),this._fireMoveEvents(d)},Qt=>{this.terrain&&this._finalizeElevation(),this._afterEase(d,Qt)},l),this}_prepareEase(l,d,v={}){this._moving=!0,d||v.moving||this.fire(new n.k(\"movestart\",l)),this._zooming&&!v.zooming&&this.fire(new n.k(\"zoomstart\",l)),this._rotating&&!v.rotating&&this.fire(new n.k(\"rotatestart\",l)),this._pitching&&!v.pitching&&this.fire(new n.k(\"pitchstart\",l))}_prepareElevation(l){this._elevationCenter=l,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(l,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(l){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let d=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(l<1&&d!==this._elevationTarget){let v=this._elevationTarget-this._elevationStart;this._elevationStart+=l*(v-(d-(v*l+this._elevationStart))/(1-l)),this._elevationTarget=d}this.transform.elevation=n.B.number(this._elevationStart,this._elevationTarget,l)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(l){if(!this.transformCameraUpdate)return;let d=l.clone(),{center:v,zoom:b,pitch:M,bearing:O,elevation:B}=this.transformCameraUpdate(d);v&&(d.center=v),b!==void 0&&(d.zoom=b),M!==void 0&&(d.pitch=M),O!==void 0&&(d.bearing=O),B!==void 0&&(d.elevation=B),this.transform.apply(d)}_fireMoveEvents(l){this.fire(new n.k(\"move\",l)),this._zooming&&this.fire(new n.k(\"zoom\",l)),this._rotating&&this.fire(new n.k(\"rotate\",l)),this._pitching&&this.fire(new n.k(\"pitch\",l))}_afterEase(l,d){if(this._easeId&&d&&this._easeId===d)return;delete this._easeId;let v=this._zooming,b=this._rotating,M=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,v&&this.fire(new n.k(\"zoomend\",l)),b&&this.fire(new n.k(\"rotateend\",l)),M&&this.fire(new n.k(\"pitchend\",l)),this.fire(new n.k(\"moveend\",l))}flyTo(l,d){if(!l.essential&&n.h.prefersReducedMotion){let Xe=n.F(l,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(Xe,d)}this.stop(),l=n.e({offset:[0,0],speed:1.2,curve:1.42,easing:n.bb},l);let v=this._getTransformForUpdate(),b=this.getZoom(),M=this.getBearing(),O=this.getPitch(),B=this.getPadding(),U=\"zoom\"in l?n.ad(+l.zoom,v.minZoom,v.maxZoom):b,W=\"bearing\"in l?this._normalizeBearing(l.bearing,M):M,Z=\"pitch\"in l?+l.pitch:O,Q=\"padding\"in l?l.padding:v.padding,st=v.zoomScale(U-b),At=n.P.convert(l.offset),pt=v.centerPoint.add(At),yt=v.pointLocation(pt),dt=n.L.convert(l.center||yt);this._normalizeCenter(dt);let Ft=v.project(yt),Wt=v.project(dt).sub(Ft),St=l.curve,Bt=Math.max(v.width,v.height),Yt=Bt/st,Qt=Wt.mag();if(\"minZoom\"in l){let Xe=n.ad(Math.min(l.minZoom,b,U),v.minZoom,v.maxZoom),Vi=Bt/v.zoomScale(Xe-b);St=Math.sqrt(Vi/Qt*2)}let se=St*St;function pe(Xe){let Vi=(Yt*Yt-Bt*Bt+(Xe?-1:1)*se*se*Qt*Qt)/(2*(Xe?Yt:Bt)*se*Qt);return Math.log(Math.sqrt(Vi*Vi+1)-Vi)}function he(Xe){return(Math.exp(Xe)-Math.exp(-Xe))/2}function xe(Xe){return(Math.exp(Xe)+Math.exp(-Xe))/2}let We=pe(!1),Kr=function(Xe){return xe(We)/xe(We+St*Xe)},Me=function(Xe){return Bt*((xe(We)*(he(Vi=We+St*Xe)/xe(Vi))-he(We))/se)/Qt;var Vi},dr=(pe(!0)-We)/St;if(Math.abs(Qt)<1e-6||!isFinite(dr)){if(Math.abs(Bt-Yt)<1e-6)return this.easeTo(l,d);let Xe=Ytl.maxDuration&&(l.duration=0),this._zooming=!0,this._rotating=M!==W,this._pitching=Z!==O,this._padding=!v.isPaddingEqual(Q),this._prepareEase(d,!1),this.terrain&&this._prepareElevation(dt),this._ease(Xe=>{let Vi=Xe*dr,Jr=1/Kr(Vi);v.zoom=Xe===1?U:b+v.scaleZoom(Jr),this._rotating&&(v.bearing=n.B.number(M,W,Xe)),this._pitching&&(v.pitch=n.B.number(O,Z,Xe)),this._padding&&(v.interpolatePadding(B,Q,Xe),pt=v.centerPoint.add(At)),this.terrain&&!l.freezeElevation&&this._updateElevation(Xe);let Vr=Xe===1?dt:v.unproject(Ft.add(Wt.mult(Me(Vi))).mult(Jr));v.setLocationAtPoint(v.renderWorldCopies?Vr.wrap():Vr,pt),this._applyUpdatedTransform(v),this._fireMoveEvents(d)},()=>{this.terrain&&this._finalizeElevation(),this._afterEase(d)},l),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(l,d){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let v=this._onEaseEnd;delete this._onEaseEnd,v.call(this,d)}if(!l){let v=this.handlers;v&&v.stop(!1)}return this}_ease(l,d,v){v.animate===!1||v.duration===0?(l(1),d()):(this._easeStart=n.h.now(),this._easeOptions=v,this._onEaseFrame=l,this._onEaseEnd=d,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(l,d){l=n.b5(l,-180,180);let v=Math.abs(l-d);return Math.abs(l-360-d)180?-360:v<-180?360:0}queryTerrainElevation(l){return this.terrain?this.terrain.getElevationForLngLatZoom(n.L.convert(l),this.transform.tileZoom)-this.transform.elevation:null}}class ua{constructor(l={}){this._toggleAttribution=()=>{this._container.classList.contains(\"maplibregl-compact\")&&(this._container.classList.contains(\"maplibregl-compact-show\")?(this._container.setAttribute(\"open\",\"\"),this._container.classList.remove(\"maplibregl-compact-show\")):(this._container.classList.add(\"maplibregl-compact-show\"),this._container.removeAttribute(\"open\")))},this._updateData=d=>{!d||d.sourceDataType!==\"metadata\"&&d.sourceDataType!==\"visibility\"&&d.dataType!==\"style\"&&d.type!==\"terrain\"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute(\"open\",\"\"):this._container.classList.contains(\"maplibregl-compact\")||this._container.classList.contains(\"maplibregl-attrib-empty\")||(this._container.setAttribute(\"open\",\"\"),this._container.classList.add(\"maplibregl-compact\",\"maplibregl-compact-show\")):(this._container.setAttribute(\"open\",\"\"),this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.remove(\"maplibregl-compact\",\"maplibregl-compact-show\"))},this._updateCompactMinimize=()=>{this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.contains(\"maplibregl-compact-show\")&&this._container.classList.remove(\"maplibregl-compact-show\")},this.options=l}getDefaultPosition(){return\"bottom-right\"}onAdd(l){return this._map=l,this._compact=this.options&&this.options.compact,this._container=c.create(\"details\",\"maplibregl-ctrl maplibregl-ctrl-attrib\"),this._compactButton=c.create(\"summary\",\"maplibregl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=c.create(\"div\",\"maplibregl-ctrl-attrib-inner\",this._container),this._updateAttributions(),this._updateCompact(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"terrain\",this._updateData),this._map.on(\"resize\",this._updateCompact),this._map.on(\"drag\",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"terrain\",this._updateData),this._map.off(\"resize\",this._updateCompact),this._map.off(\"drag\",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(l,d){let v=this._map._getUIString(`AttributionControl.${d}`);l.title=v,l.setAttribute(\"aria-label\",v)}_updateAttributions(){if(!this._map.style)return;let l=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?l=l.concat(this.options.customAttribution.map(b=>typeof b!=\"string\"?\"\":b)):typeof this.options.customAttribution==\"string\"&&l.push(this.options.customAttribution)),this._map.style.stylesheet){let b=this._map.style.stylesheet;this.styleOwner=b.owner,this.styleId=b.id}let d=this._map.style.sourceCaches;for(let b in d){let M=d[b];if(M.used||M.usedForTerrain){let O=M.getSource();O.attribution&&l.indexOf(O.attribution)<0&&l.push(O.attribution)}}l=l.filter(b=>String(b).trim()),l.sort((b,M)=>b.length-M.length),l=l.filter((b,M)=>{for(let O=M+1;O=0)return!1;return!0});let v=l.join(\" | \");v!==this._attribHTML&&(this._attribHTML=v,l.length?(this._innerContainer.innerHTML=v,this._container.classList.remove(\"maplibregl-attrib-empty\")):this._container.classList.add(\"maplibregl-attrib-empty\"),this._updateCompact(),this._editLink=null)}}class ln{constructor(l={}){this._updateCompact=()=>{let d=this._container.children;if(d.length){let v=d[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&v.classList.add(\"maplibregl-compact\"):v.classList.remove(\"maplibregl-compact\")}},this.options=l}getDefaultPosition(){return\"bottom-left\"}onAdd(l){this._map=l,this._compact=this.options&&this.options.compact,this._container=c.create(\"div\",\"maplibregl-ctrl\");let d=c.create(\"a\",\"maplibregl-ctrl-logo\");return d.target=\"_blank\",d.rel=\"noopener nofollow\",d.href=\"https://maplibre.org/\",d.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),d.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(d),this._container.style.display=\"block\",this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._compact=void 0}}class rA{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(l){let d=++this._id;return this._queue.push({callback:l,id:d,cancelled:!1}),d}remove(l){let d=this._currentlyRunning,v=d?this._queue.concat(d):this._queue;for(let b of v)if(b.id===l)return void(b.cancelled=!0)}run(l=0){if(this._currentlyRunning)throw new Error(\"Attempting to run(), but is already running.\");let d=this._currentlyRunning=this._queue;this._queue=[];for(let v of d)if(!v.cancelled&&(v.callback(l),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}let l0={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"TerrainControl.enableTerrain\":\"Enable terrain\",\"TerrainControl.disableTerrain\":\"Disable terrain\"};var ph=n.Q([{name:\"a_pos3d\",type:\"Int16\",components:3}]);class u_ extends n.E{constructor(l){super(),this.sourceCache=l,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,l.usedForTerrain=!0,l.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(l,d){this.sourceCache.update(l,d),this._renderableTilesKeys=[];let v={};for(let b of l.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:d}))v[b.key]=!0,this._renderableTilesKeys.push(b.key),this._tiles[b.key]||(b.posMatrix=new Float64Array(16),n.aS(b.posMatrix,0,n.N,0,n.N,0,1),this._tiles[b.key]=new to(b,this.tileSize));for(let b in this._tiles)v[b]||delete this._tiles[b]}freeRtt(l){for(let d in this._tiles){let v=this._tiles[d];(!l||v.tileID.equals(l)||v.tileID.isChildOf(l)||l.isChildOf(v.tileID))&&(v.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(l=>this.getTileByID(l))}getTileByID(l){return this._tiles[l]}getTerrainCoords(l){let d={};for(let v of this._renderableTilesKeys){let b=this._tiles[v].tileID;if(b.canonical.equals(l.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16),n.aS(M.posMatrix,0,n.N,0,n.N,0,1),d[v]=M}else if(b.canonical.isChildOf(l.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16);let O=b.canonical.z-l.canonical.z,B=b.canonical.x-(b.canonical.x>>O<>O<>O;n.aS(M.posMatrix,0,W,0,W,0,1),n.$(M.posMatrix,M.posMatrix,[-B*W,-U*W,0]),d[v]=M}else if(l.canonical.isChildOf(b.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16);let O=l.canonical.z-b.canonical.z,B=l.canonical.x-(l.canonical.x>>O<>O<>O;n.aS(M.posMatrix,0,n.N,0,n.N,0,1),n.$(M.posMatrix,M.posMatrix,[B*W,U*W,0]),n.a0(M.posMatrix,M.posMatrix,[1/2**O,1/2**O,0]),d[v]=M}}return d}getSourceTile(l,d){let v=this.sourceCache._source,b=l.overscaledZ-this.deltaZoom;if(b>v.maxzoom&&(b=v.maxzoom),b=v.minzoom&&(!M||!M.dem);)M=this.sourceCache.getTileByID(l.scaledTo(b--).key);return M}tilesAfterTime(l=Date.now()){return Object.values(this._tiles).filter(d=>d.timeAdded>=l)}}class h_{constructor(l,d,v){this.painter=l,this.sourceCache=new u_(d),this.options=v,this.exaggeration=typeof v.exaggeration==\"number\"?v.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(l,d,v,b=n.N){var M;if(!(d>=0&&d=0&&vl.canonical.z&&(l.canonical.z>=b?M=l.canonical.z-b:n.w(\"cannot calculate elevation if elevation maxzoom > source.maxzoom\"));let O=l.canonical.x-(l.canonical.x>>M<>M<>8<<4|M>>8,d[O+3]=0;let v=new n.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(d.buffer)),b=new Zt(l,v,l.gl.RGBA,{premultiply:!1});return b.bind(l.gl.NEAREST,l.gl.CLAMP_TO_EDGE),this._coordsTexture=b,b}pointCoordinate(l){let d=new Uint8Array(4),v=this.painter.context,b=v.gl;v.bindFramebuffer.set(this.getFramebuffer(\"coords\").framebuffer),b.readPixels(l.x,this.painter.height/devicePixelRatio-l.y-1,1,1,b.RGBA,b.UNSIGNED_BYTE,d),v.bindFramebuffer.set(null);let M=d[0]+(d[2]>>4<<8),O=d[1]+((15&d[2])<<8),B=this.coordsIndex[255-d[3]],U=B&&this.sourceCache.getTileByID(B);if(!U)return null;let W=this._coordsTextureSize,Z=(1<0&&Math.sign(M)<0||!v&&Math.sign(b)<0&&Math.sign(M)>0?(b=360*Math.sign(M)+b,n.G(b)):d}}class Cx{constructor(l,d,v){this._context=l,this._size=d,this._tileSize=v,this._objects=[],this._recentlyUsed=[],this._stamp=0}destruct(){for(let l of this._objects)l.texture.destroy(),l.fbo.destroy()}_createObject(l){let d=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),v=new Zt(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return v.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),d.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),d.colorAttachment.set(v.texture),{id:l,fbo:d,texture:v,stamp:-1,inUse:!1}}getObjectForId(l){return this._objects[l]}useObject(l){l.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter(d=>l.id!==d),this._recentlyUsed.push(l.id)}stampObject(l){l.stamp=++this._stamp}getOrCreateFreeObject(){for(let d of this._recentlyUsed)if(!this._objects[d].inUse)return this._objects[d];if(this._objects.length>=this._size)throw new Error(\"No free RenderPool available, call freeAllObjects() required!\");let l=this._createObject(this._objects.length);return this._objects.push(l),l}freeObject(l){l.inUse=!1}freeAllObjects(){for(let l of this._objects)this.freeObject(l)}isFull(){return!(this._objects.length!l.inUse)===!1}}let _o={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class iA{constructor(l,d){this.painter=l,this.terrain=d,this.pool=new Cx(l.context,30,d.sourceCache.tileSize*d.qualityFactor)}destruct(){this.pool.destruct()}getTexture(l){return this.pool.getObjectForId(l.rtt[this._stacks.length-1].id).texture}prepareForRender(l,d){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=l._order.filter(v=>!l._layers[v].isHidden(d)),this._coordsDescendingInv={};for(let v in l.sourceCaches){this._coordsDescendingInv[v]={};let b=l.sourceCaches[v].getVisibleCoordinates();for(let M of b){let O=this.terrain.sourceCache.getTerrainCoords(M);for(let B in O)this._coordsDescendingInv[v][B]||(this._coordsDescendingInv[v][B]=[]),this._coordsDescendingInv[v][B].push(O[B])}}this._coordsDescendingInvStr={};for(let v of l._order){let b=l._layers[v],M=b.source;if(_o[b.type]&&!this._coordsDescendingInvStr[M]){this._coordsDescendingInvStr[M]={};for(let O in this._coordsDescendingInv[M])this._coordsDescendingInvStr[M][O]=this._coordsDescendingInv[M][O].map(B=>B.key).sort().join()}}for(let v of this._renderableTiles)for(let b in this._coordsDescendingInvStr){let M=this._coordsDescendingInvStr[b][v.tileID.key];M&&M!==v.rttCoords[b]&&(v.rtt=[])}}renderLayer(l){if(l.isHidden(this.painter.transform.zoom))return!1;let d=l.type,v=this.painter,b=this._renderableLayerIds[this._renderableLayerIds.length-1]===l.id;if(_o[d]&&(this._prevType&&_o[this._prevType]||this._stacks.push([]),this._prevType=d,this._stacks[this._stacks.length-1].push(l.id),!b))return!0;if(_o[this._prevType]||_o[d]&&b){this._prevType=d;let M=this._stacks.length-1,O=this._stacks[M]||[];for(let B of this._renderableTiles){if(this.pool.isFull()&&(Pn(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(B),B.rtt[M]){let W=this.pool.getObjectForId(B.rtt[M].id);if(W.stamp===B.rtt[M].stamp){this.pool.useObject(W);continue}}let U=this.pool.getOrCreateFreeObject();this.pool.useObject(U),this.pool.stampObject(U),B.rtt[M]={id:U.id,stamp:U.stamp},v.context.bindFramebuffer.set(U.fbo.framebuffer),v.context.clear({color:n.aT.transparent,stencil:0}),v.currentStencilSource=void 0;for(let W=0;W{T.touchstart=T.dragStart,T.touchmoveWindow=T.dragMove,T.touchend=T.dragEnd},nA={showCompass:!0,showZoom:!0,visualizePitch:!1};class Dd{constructor(l,d,v=!1){this.mousedown=O=>{this.startMouse(n.e({},O,{ctrlKey:!0,preventDefault:()=>O.preventDefault()}),c.mousePos(this.element,O)),c.addEventListener(window,\"mousemove\",this.mousemove),c.addEventListener(window,\"mouseup\",this.mouseup)},this.mousemove=O=>{this.moveMouse(O,c.mousePos(this.element,O))},this.mouseup=O=>{this.mouseRotate.dragEnd(O),this.mousePitch&&this.mousePitch.dragEnd(O),this.offTemp()},this.touchstart=O=>{O.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,O.targetTouches)[0],this.startTouch(O,this._startPos),c.addEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.addEventListener(window,\"touchend\",this.touchend))},this.touchmove=O=>{O.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,O.targetTouches)[0],this.moveTouch(O,this._lastPos))},this.touchend=O=>{O.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let b=l.dragRotate._mouseRotate.getClickTolerance(),M=l.dragRotate._mousePitch.getClickTolerance();this.element=d,this.mouseRotate=za({clickTolerance:b,enable:!0}),this.touchRotate=(({enable:O,clickTolerance:B,bearingDegreesPerPixelMoved:U=.8})=>{let W=new t0;return new Fa({clickTolerance:B,move:(Z,Q)=>({bearingDelta:(Q.x-Z.x)*U}),moveStateManager:W,enable:O,assignEvents:xf})})({clickTolerance:b,enable:!0}),this.map=l,v&&(this.mousePitch=ro({clickTolerance:M,enable:!0}),this.touchPitch=(({enable:O,clickTolerance:B,pitchDegreesPerPixelMoved:U=-.5})=>{let W=new t0;return new Fa({clickTolerance:B,move:(Z,Q)=>({pitchDelta:(Q.y-Z.y)*U}),moveStateManager:W,enable:O,assignEvents:xf})})({clickTolerance:M,enable:!0})),c.addEventListener(d,\"mousedown\",this.mousedown),c.addEventListener(d,\"touchstart\",this.touchstart,{passive:!1}),c.addEventListener(d,\"touchcancel\",this.reset)}startMouse(l,d){this.mouseRotate.dragStart(l,d),this.mousePitch&&this.mousePitch.dragStart(l,d),c.disableDrag()}startTouch(l,d){this.touchRotate.dragStart(l,d),this.touchPitch&&this.touchPitch.dragStart(l,d),c.disableDrag()}moveMouse(l,d){let v=this.map,{bearingDelta:b}=this.mouseRotate.dragMove(l,d)||{};if(b&&v.setBearing(v.getBearing()+b),this.mousePitch){let{pitchDelta:M}=this.mousePitch.dragMove(l,d)||{};M&&v.setPitch(v.getPitch()+M)}}moveTouch(l,d){let v=this.map,{bearingDelta:b}=this.touchRotate.dragMove(l,d)||{};if(b&&v.setBearing(v.getBearing()+b),this.touchPitch){let{pitchDelta:M}=this.touchPitch.dragMove(l,d)||{};M&&v.setPitch(v.getPitch()+M)}}off(){let l=this.element;c.removeEventListener(l,\"mousedown\",this.mousedown),c.removeEventListener(l,\"touchstart\",this.touchstart,{passive:!1}),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend),c.removeEventListener(l,\"touchcancel\",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,\"mousemove\",this.mousemove),c.removeEventListener(window,\"mouseup\",this.mouseup),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend)}}let Gn;function io(T,l,d){if(T=new n.L(T.lng,T.lat),l){let v=new n.L(T.lng-360,T.lat),b=new n.L(T.lng+360,T.lat),M=d.locationPoint(T).distSqr(l);d.locationPoint(v).distSqr(l)180;){let v=d.locationPoint(T);if(v.x>=0&&v.y>=0&&v.x<=d.width&&v.y<=d.height)break;T.lng>d.center.lng?T.lng-=360:T.lng+=360}return T}let Ui={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function f_(T,l,d){let v=T.classList;for(let b in Ui)v.remove(`maplibregl-${d}-anchor-${b}`);v.add(`maplibregl-${d}-anchor-${l}`)}class Ah extends n.E{constructor(l){if(super(),this._onKeyPress=d=>{let v=d.code,b=d.charCode||d.keyCode;v!==\"Space\"&&v!==\"Enter\"&&b!==32&&b!==13||this.togglePopup()},this._onMapClick=d=>{let v=d.originalEvent.target,b=this._element;this._popup&&(v===b||b.contains(v))&&this.togglePopup()},this._update=d=>{if(!this._map)return;let v=this._map.loaded()&&!this._map.isMoving();(d?.type===\"terrain\"||d?.type===\"render\"&&!v)&&this._map.once(\"render\",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=io(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let b=\"\";this._rotationAlignment===\"viewport\"||this._rotationAlignment===\"auto\"?b=`rotateZ(${this._rotation}deg)`:this._rotationAlignment===\"map\"&&(b=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let M=\"\";this._pitchAlignment===\"viewport\"||this._pitchAlignment===\"auto\"?M=\"rotateX(0deg)\":this._pitchAlignment===\"map\"&&(M=`rotateX(${this._map.getPitch()}deg)`),d&&d.type!==\"moveend\"||(this._pos=this._pos.round()),c.setTransform(this._element,`${Ui[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${M} ${b}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout(()=>{let O=this._map.unproject(this._pos),B=40075016686e-3*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=O.distanceTo(this._lngLat)>20*B?\"0.2\":\"1.0\",this._opacityTimeout=null},100))},this._onMove=d=>{if(!this._isDragging){let v=this._clickTolerance||this._map._clickTolerance;this._isDragging=d.point.dist(this._pointerdownPos)>=v}this._isDragging&&(this._pos=d.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",this._state===\"pending\"&&(this._state=\"active\",this.fire(new n.k(\"dragstart\"))),this.fire(new n.k(\"drag\")))},this._onUp=()=>{this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),this._state===\"active\"&&this.fire(new n.k(\"dragend\")),this._state=\"inactive\"},this._addDragHandler=d=>{this._element.contains(d.originalEvent.target)&&(d.preventDefault(),this._positionDelta=d.point.sub(this._pos).add(this._offset),this._pointerdownPos=d.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp))},this._anchor=l&&l.anchor||\"center\",this._color=l&&l.color||\"#3FB1CE\",this._scale=l&&l.scale||1,this._draggable=l&&l.draggable||!1,this._clickTolerance=l&&l.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=l&&l.rotation||0,this._rotationAlignment=l&&l.rotationAlignment||\"auto\",this._pitchAlignment=l&&l.pitchAlignment&&l.pitchAlignment!==\"auto\"?l.pitchAlignment:this._rotationAlignment,l&&l.element)this._element=l.element,this._offset=n.P.convert(l&&l.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");let d=c.createNS(\"http://www.w3.org/2000/svg\",\"svg\"),v=41,b=27;d.setAttributeNS(null,\"display\",\"block\"),d.setAttributeNS(null,\"height\",`${v}px`),d.setAttributeNS(null,\"width\",`${b}px`),d.setAttributeNS(null,\"viewBox\",`0 0 ${b} ${v}`);let M=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");M.setAttributeNS(null,\"stroke\",\"none\"),M.setAttributeNS(null,\"stroke-width\",\"1\"),M.setAttributeNS(null,\"fill\",\"none\"),M.setAttributeNS(null,\"fill-rule\",\"evenodd\");let O=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");O.setAttributeNS(null,\"fill-rule\",\"nonzero\");let B=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");B.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),B.setAttributeNS(null,\"fill\",\"#000000\");let U=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];for(let Ft of U){let Wt=c.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");Wt.setAttributeNS(null,\"opacity\",\"0.04\"),Wt.setAttributeNS(null,\"cx\",\"10.5\"),Wt.setAttributeNS(null,\"cy\",\"5.80029008\"),Wt.setAttributeNS(null,\"rx\",Ft.rx),Wt.setAttributeNS(null,\"ry\",Ft.ry),B.appendChild(Wt)}let W=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");W.setAttributeNS(null,\"fill\",this._color);let Z=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");Z.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),W.appendChild(Z);let Q=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");Q.setAttributeNS(null,\"opacity\",\"0.25\"),Q.setAttributeNS(null,\"fill\",\"#000000\");let st=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");st.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),Q.appendChild(st);let At=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");At.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),At.setAttributeNS(null,\"fill\",\"#FFFFFF\");let pt=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");pt.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");let yt=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");yt.setAttributeNS(null,\"fill\",\"#000000\"),yt.setAttributeNS(null,\"opacity\",\"0.25\"),yt.setAttributeNS(null,\"cx\",\"5.5\"),yt.setAttributeNS(null,\"cy\",\"5.5\"),yt.setAttributeNS(null,\"r\",\"5.4999962\");let dt=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");dt.setAttributeNS(null,\"fill\",\"#FFFFFF\"),dt.setAttributeNS(null,\"cx\",\"5.5\"),dt.setAttributeNS(null,\"cy\",\"5.5\"),dt.setAttributeNS(null,\"r\",\"5.4999962\"),pt.appendChild(yt),pt.appendChild(dt),O.appendChild(B),O.appendChild(W),O.appendChild(Q),O.appendChild(At),O.appendChild(pt),d.appendChild(O),d.setAttributeNS(null,\"height\",v*this._scale+\"px\"),d.setAttributeNS(null,\"width\",b*this._scale+\"px\"),this._element.appendChild(d),this._offset=n.P.convert(l&&l.offset||[0,-14])}if(this._element.classList.add(\"maplibregl-marker\"),this._element.addEventListener(\"dragstart\",d=>{d.preventDefault()}),this._element.addEventListener(\"mousedown\",d=>{d.preventDefault()}),f_(this._element,this._anchor,\"marker\"),l&&l.className)for(let d of l.className.split(\" \"))this._element.classList.add(d);this._popup=null}addTo(l){return this.remove(),this._map=l,l.getCanvasContainer().appendChild(this._element),l.on(\"move\",this._update),l.on(\"moveend\",this._update),l.on(\"terrain\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(l){return this._lngLat=n.L.convert(l),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(l){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),l){if(!(\"offset\"in l.options)){let b=Math.abs(13.5)/Math.SQRT2;l.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-38.1],\"bottom-left\":[b,-1*(38.1-13.5+b)],\"bottom-right\":[-b,-1*(38.1-13.5+b)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=l,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress)}return this}getPopup(){return this._popup}togglePopup(){let l=this._popup;return l?(l.isOpen()?l.remove():l.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(l){return this._offset=n.P.convert(l),this._update(),this}addClassName(l){this._element.classList.add(l)}removeClassName(l){this._element.classList.remove(l)}toggleClassName(l){return this._element.classList.toggle(l)}setDraggable(l){return this._draggable=!!l,this._map&&(l?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(l){return this._rotation=l||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(l){return this._rotationAlignment=l||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(l){return this._pitchAlignment=l&&l!==\"auto\"?l:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}let Cn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},yn=0,bf=!1,Ms={maxWidth:100,unit:\"metric\"};function mh(T,l,d){let v=d&&d.maxWidth||100,b=T._container.clientHeight/2,M=T.unproject([0,b]),O=T.unproject([v,b]),B=M.distanceTo(O);if(d&&d.unit===\"imperial\"){let U=3.2808*B;U>5280?jo(l,v,U/5280,T._getUIString(\"ScaleControl.Miles\")):jo(l,v,U,T._getUIString(\"ScaleControl.Feet\"))}else d&&d.unit===\"nautical\"?jo(l,v,B/1852,T._getUIString(\"ScaleControl.NauticalMiles\")):B>=1e3?jo(l,v,B/1e3,T._getUIString(\"ScaleControl.Kilometers\")):jo(l,v,B,T._getUIString(\"ScaleControl.Meters\"))}function jo(T,l,d,v){let b=function(M){let O=Math.pow(10,`${Math.floor(M)}`.length-1),B=M/O;return B=B>=10?10:B>=5?5:B>=3?3:B>=2?2:B>=1?1:function(U){let W=Math.pow(10,Math.ceil(-Math.log(U)/Math.LN10));return Math.round(U*W)/W}(B),O*B}(d);T.style.width=l*(b/d)+\"px\",T.innerHTML=`${b} ${v}`}let c0={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},Od=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function wf(T){if(T){if(typeof T==\"number\"){let l=Math.round(Math.abs(T)/Math.SQRT2);return{center:new n.P(0,0),top:new n.P(0,T),\"top-left\":new n.P(l,l),\"top-right\":new n.P(-l,l),bottom:new n.P(0,-T),\"bottom-left\":new n.P(l,-l),\"bottom-right\":new n.P(-l,-l),left:new n.P(T,0),right:new n.P(-T,0)}}if(T instanceof n.P||Array.isArray(T)){let l=n.P.convert(T);return{center:l,top:l,\"top-left\":l,\"top-right\":l,bottom:l,\"bottom-left\":l,\"bottom-right\":l,left:l,right:l}}return{center:n.P.convert(T.center||[0,0]),top:n.P.convert(T.top||[0,0]),\"top-left\":n.P.convert(T[\"top-left\"]||[0,0]),\"top-right\":n.P.convert(T[\"top-right\"]||[0,0]),bottom:n.P.convert(T.bottom||[0,0]),\"bottom-left\":n.P.convert(T[\"bottom-left\"]||[0,0]),\"bottom-right\":n.P.convert(T[\"bottom-right\"]||[0,0]),left:n.P.convert(T.left||[0,0]),right:n.P.convert(T.right||[0,0])}}return wf(new n.P(0,0))}let Go={extend:(T,...l)=>n.e(T,...l),run(T){T()},logToElement(T,l=!1,d=\"log\"){let v=window.document.getElementById(d);v&&(l&&(v.innerHTML=\"\"),v.innerHTML+=`
${T}`)}},sA=o;class xi{static get version(){return sA}static get workerCount(){return eo.workerCount}static set workerCount(l){eo.workerCount=l}static get maxParallelImageRequests(){return n.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(l){n.c.MAX_PARALLEL_IMAGE_REQUESTS=l}static get workerUrl(){return n.c.WORKER_URL}static set workerUrl(l){n.c.WORKER_URL=l}static addProtocol(l,d){n.c.REGISTERED_PROTOCOLS[l]=d}static removeProtocol(l){delete n.c.REGISTERED_PROTOCOLS[l]}}return xi.Map=class extends c_{constructor(T){if(n.bg.mark(n.bh.create),(T=n.e({},fr,T)).minZoom!=null&&T.maxZoom!=null&&T.minZoom>T.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(T.minPitch!=null&&T.maxPitch!=null&&T.minPitch>T.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(T.minPitch!=null&&T.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(T.maxPitch!=null&&T.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(super(new Qp(T.minZoom,T.maxZoom,T.minPitch,T.maxPitch,T.renderWorldCopies),{bearingSnap:T.bearingSnap}),this._cooperativeGesturesOnWheel=l=>{this._onCooperativeGesture(l,l[this._metaKey],1)},this._contextLost=l=>{l.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new n.k(\"webglcontextlost\",{originalEvent:l}))},this._contextRestored=l=>{this._setupPainter(),this.resize(),this._update(),this.fire(new n.k(\"webglcontextrestored\",{originalEvent:l}))},this._onMapScroll=l=>{if(l.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=T.interactive,this._cooperativeGestures=T.cooperativeGestures,this._metaKey=navigator.platform.indexOf(\"Mac\")===0?\"metaKey\":\"ctrlKey\",this._maxTileCacheSize=T.maxTileCacheSize,this._maxTileCacheZoomLevels=T.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=T.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=T.preserveDrawingBuffer,this._antialias=T.antialias,this._trackResize=T.trackResize,this._bearingSnap=T.bearingSnap,this._refreshExpiredTiles=T.refreshExpiredTiles,this._fadeDuration=T.fadeDuration,this._crossSourceCollisions=T.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=T.collectResourceTiming,this._renderTaskQueue=new rA,this._controls=[],this._mapId=n.a2(),this._locale=n.e({},l0,T.locale),this._clickTolerance=T.clickTolerance,this._overridePixelRatio=T.pixelRatio,this._maxCanvasSize=T.maxCanvasSize,this.transformCameraUpdate=T.transformCameraUpdate,this._imageQueueHandle=j.addThrottleControl(()=>this.isMoving()),this._requestManager=new rt(T.transformRequest),typeof T.container==\"string\"){if(this._container=document.getElementById(T.container),!this._container)throw new Error(`Container '${T.container}' not found.`)}else{if(!(T.container instanceof HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=T.container}if(T.maxBounds&&this.setMaxBounds(T.maxBounds),this._setupContainer(),this._setupPainter(),this.on(\"move\",()=>this._update(!1)),this.on(\"moveend\",()=>this._update(!1)),this.on(\"zoom\",()=>this._update(!0)),this.on(\"terrain\",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once(\"idle\",()=>{this._idleTriggered=!0}),typeof window<\"u\"){addEventListener(\"online\",this._onWindowOnline,!1);let l=!1,d=ah(v=>{this._trackResize&&!this._removed&&this.resize(v)._update()},50);this._resizeObserver=new ResizeObserver(v=>{l?d(v):l=!0}),this._resizeObserver.observe(this._container)}this.handlers=new a0(this,T),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=T.hash&&new Id(typeof T.hash==\"string\"&&T.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:T.center,zoom:T.zoom,bearing:T.bearing,pitch:T.pitch}),T.bounds&&(this.resize(),this.fitBounds(T.bounds,n.e({},T.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=T.localIdeographFontFamily,this._validateStyle=T.validateStyle,T.style&&this.setStyle(T.style,{localIdeographFontFamily:T.localIdeographFontFamily}),T.attributionControl&&this.addControl(new ua({customAttribution:T.customAttribution})),T.maplibreLogo&&this.addControl(new ln,T.logoPosition),this.on(\"style.load\",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on(\"data\",l=>{this._update(l.dataType===\"style\"),this.fire(new n.k(`${l.dataType}data`,l))}),this.on(\"dataloading\",l=>{this.fire(new n.k(`${l.dataType}dataloading`,l))}),this.on(\"dataabort\",l=>{this.fire(new n.k(\"sourcedataabort\",l))})}_getMapId(){return this._mapId}addControl(T,l){if(l===void 0&&(l=T.getDefaultPosition?T.getDefaultPosition():\"top-right\"),!T||!T.onAdd)return this.fire(new n.j(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));let d=T.onAdd(this);this._controls.push(T);let v=this._controlPositions[l];return l.indexOf(\"bottom\")!==-1?v.insertBefore(d,v.firstChild):v.appendChild(d),this}removeControl(T){if(!T||!T.onRemove)return this.fire(new n.j(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));let l=this._controls.indexOf(T);return l>-1&&this._controls.splice(l,1),T.onRemove(this),this}hasControl(T){return this._controls.indexOf(T)>-1}calculateCameraOptionsFromTo(T,l,d,v){return v==null&&this.terrain&&(v=this.terrain.getElevationForLngLatZoom(d,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(T,l,d,v)}resize(T){var l;let d=this._containerDimensions(),v=d[0],b=d[1],M=this._getClampedPixelRatio(v,b);if(this._resizeCanvas(v,b,M),this.painter.resize(v,b,M),this.painter.overLimit()){let B=this.painter.context.gl;this._maxCanvasSize=[B.drawingBufferWidth,B.drawingBufferHeight];let U=this._getClampedPixelRatio(v,b);this._resizeCanvas(v,b,U),this.painter.resize(v,b,U)}this.transform.resize(v,b),(l=this._requestedCameraState)===null||l===void 0||l.resize(v,b);let O=!this._moving;return O&&(this.stop(),this.fire(new n.k(\"movestart\",T)).fire(new n.k(\"move\",T))),this.fire(new n.k(\"resize\",T)),O&&this.fire(new n.k(\"moveend\",T)),this}_getClampedPixelRatio(T,l){let{0:d,1:v}=this._maxCanvasSize,b=this.getPixelRatio(),M=T*b,O=l*b;return Math.min(M>d?d/M:1,O>v?v/O:1)*b}getPixelRatio(){var T;return(T=this._overridePixelRatio)!==null&&T!==void 0?T:devicePixelRatio}setPixelRatio(T){this._overridePixelRatio=T,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(T){return this.transform.setMaxBounds(wi.convert(T)),this._update()}setMinZoom(T){if((T=T??-2)>=-2&&T<=this.transform.maxZoom)return this.transform.minZoom=T,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=T,this._update(),this.getZoom()>T&&this.setZoom(T),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(T){if((T=T??0)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(T>=0&&T<=this.transform.maxPitch)return this.transform.minPitch=T,this._update(),this.getPitch()85)throw new Error(\"maxPitch must be less than or equal to 85\");if(T>=this.transform.minPitch)return this.transform.maxPitch=T,this._update(),this.getPitch()>T&&this.setPitch(T),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(T){return this.transform.renderWorldCopies=T,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(T){return this._cooperativeGestures=T,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(T){return this.transform.locationPoint(n.L.convert(T),this.style&&this.terrain)}unproject(T){return this.transform.pointLocation(n.P.convert(T),this.terrain)}isMoving(){var T;return this._moving||((T=this.handlers)===null||T===void 0?void 0:T.isMoving())}isZooming(){var T;return this._zooming||((T=this.handlers)===null||T===void 0?void 0:T.isZooming())}isRotating(){var T;return this._rotating||((T=this.handlers)===null||T===void 0?void 0:T.isRotating())}_createDelegatedListener(T,l,d){if(T===\"mouseenter\"||T===\"mouseover\"){let v=!1;return{layer:l,listener:d,delegates:{mousemove:M=>{let O=this.getLayer(l)?this.queryRenderedFeatures(M.point,{layers:[l]}):[];O.length?v||(v=!0,d.call(this,new la(T,this,M.originalEvent,{features:O}))):v=!1},mouseout:()=>{v=!1}}}}if(T===\"mouseleave\"||T===\"mouseout\"){let v=!1;return{layer:l,listener:d,delegates:{mousemove:O=>{(this.getLayer(l)?this.queryRenderedFeatures(O.point,{layers:[l]}):[]).length?v=!0:v&&(v=!1,d.call(this,new la(T,this,O.originalEvent)))},mouseout:O=>{v&&(v=!1,d.call(this,new la(T,this,O.originalEvent)))}}}}{let v=b=>{let M=this.getLayer(l)?this.queryRenderedFeatures(b.point,{layers:[l]}):[];M.length&&(b.features=M,d.call(this,b),delete b.features)};return{layer:l,listener:d,delegates:{[T]:v}}}}on(T,l,d){if(d===void 0)return super.on(T,l);let v=this._createDelegatedListener(T,l,d);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[T]=this._delegatedListeners[T]||[],this._delegatedListeners[T].push(v);for(let b in v.delegates)this.on(b,v.delegates[b]);return this}once(T,l,d){if(d===void 0)return super.once(T,l);let v=this._createDelegatedListener(T,l,d);for(let b in v.delegates)this.once(b,v.delegates[b]);return this}off(T,l,d){return d===void 0?super.off(T,l):(this._delegatedListeners&&this._delegatedListeners[T]&&(v=>{let b=this._delegatedListeners[T];for(let M=0;Mthis._updateStyle(T,l));let d=this.style&&l.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!T)),T?(this.style=new Vn(this,l||{}),this.style.setEventedParent(this,{style:this.style}),typeof T==\"string\"?this.style.loadURL(T,l,d):this.style.loadJSON(T,l,d),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Vn(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(T,l){if(typeof T==\"string\"){let d=this._requestManager.transformRequest(T,Y.Style);n.f(d,(v,b)=>{v?this.fire(new n.j(v)):b&&this._updateDiff(b,l)})}else typeof T==\"object\"&&this._updateDiff(T,l)}_updateDiff(T,l){try{this.style.setState(T,l)&&this._update(!0)}catch(d){n.w(`Unable to perform style diff: ${d.message||d.error||d}. Rebuilding the style from scratch.`),this._updateStyle(T,l)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():n.w(\"There is no style added to the map.\")}addSource(T,l){return this._lazyInitEmptyStyle(),this.style.addSource(T,l),this._update(!0)}isSourceLoaded(T){let l=this.style&&this.style.sourceCaches[T];if(l!==void 0)return l.loaded();this.fire(new n.j(new Error(`There is no source with ID '${T}'`)))}setTerrain(T){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off(\"data\",this._terrainDataCallback),T){let l=this.style.sourceCaches[T.source];if(!l)throw new Error(`cannot load terrain, because there exists no source with ID: ${T.source}`);for(let d in this.style._layers){let v=this.style._layers[d];v.type===\"hillshade\"&&v.source===T.source&&n.w(\"You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.\")}this.terrain=new h_(this.painter,l,T),this.painter.renderToTexture=new iA(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=d=>{d.dataType===\"style\"?this.terrain.sourceCache.freeRtt():d.dataType===\"source\"&&d.tile&&(d.sourceId!==T.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(d.tile.tileID))},this.style.on(\"data\",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new n.k(\"terrain\",{terrain:T})),this}getTerrain(){var T,l;return(l=(T=this.terrain)===null||T===void 0?void 0:T.options)!==null&&l!==void 0?l:null}areTilesLoaded(){let T=this.style&&this.style.sourceCaches;for(let l in T){let d=T[l]._tiles;for(let v in d){let b=d[v];if(b.state!==\"loaded\"&&b.state!==\"errored\")return!1}}return!0}addSourceType(T,l,d){return this._lazyInitEmptyStyle(),this.style.addSourceType(T,l,d)}removeSource(T){return this.style.removeSource(T),this._update(!0)}getSource(T){return this.style.getSource(T)}addImage(T,l,d={}){let{pixelRatio:v=1,sdf:b=!1,stretchX:M,stretchY:O,content:B}=d;if(this._lazyInitEmptyStyle(),!(l instanceof HTMLImageElement||n.a(l))){if(l.width===void 0||l.height===void 0)return this.fire(new n.j(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{let{width:U,height:W,data:Z}=l,Q=l;return this.style.addImage(T,{data:new n.R({width:U,height:W},new Uint8Array(Z)),pixelRatio:v,stretchX:M,stretchY:O,content:B,sdf:b,version:0,userImage:Q}),Q.onAdd&&Q.onAdd(this,T),this}}{let{width:U,height:W,data:Z}=n.h.getImageData(l);this.style.addImage(T,{data:new n.R({width:U,height:W},Z),pixelRatio:v,stretchX:M,stretchY:O,content:B,sdf:b,version:0})}}updateImage(T,l){let d=this.style.getImage(T);if(!d)return this.fire(new n.j(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));let v=l instanceof HTMLImageElement||n.a(l)?n.h.getImageData(l):l,{width:b,height:M,data:O}=v;if(b===void 0||M===void 0)return this.fire(new n.j(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(b!==d.data.width||M!==d.data.height)return this.fire(new n.j(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));let B=!(l instanceof HTMLImageElement||n.a(l));return d.data.replace(O,B),this.style.updateImage(T,d),this}getImage(T){return this.style.getImage(T)}hasImage(T){return T?!!this.style.getImage(T):(this.fire(new n.j(new Error(\"Missing required image id\"))),!1)}removeImage(T){this.style.removeImage(T)}loadImage(T,l){j.getImage(this._requestManager.transformRequest(T,Y.Image),l)}listImages(){return this.style.listImages()}addLayer(T,l){return this._lazyInitEmptyStyle(),this.style.addLayer(T,l),this._update(!0)}moveLayer(T,l){return this.style.moveLayer(T,l),this._update(!0)}removeLayer(T){return this.style.removeLayer(T),this._update(!0)}getLayer(T){return this.style.getLayer(T)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(T,l,d){return this.style.setLayerZoomRange(T,l,d),this._update(!0)}setFilter(T,l,d={}){return this.style.setFilter(T,l,d),this._update(!0)}getFilter(T){return this.style.getFilter(T)}setPaintProperty(T,l,d,v={}){return this.style.setPaintProperty(T,l,d,v),this._update(!0)}getPaintProperty(T,l){return this.style.getPaintProperty(T,l)}setLayoutProperty(T,l,d,v={}){return this.style.setLayoutProperty(T,l,d,v),this._update(!0)}getLayoutProperty(T,l){return this.style.getLayoutProperty(T,l)}setGlyphs(T,l={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(T,l),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(T,l,d={}){return this._lazyInitEmptyStyle(),this.style.addSprite(T,l,d,v=>{v||this._update(!0)}),this}removeSprite(T){return this._lazyInitEmptyStyle(),this.style.removeSprite(T),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(T,l={}){return this._lazyInitEmptyStyle(),this.style.setSprite(T,l,d=>{d||this._update(!0)}),this}setLight(T,l={}){return this._lazyInitEmptyStyle(),this.style.setLight(T,l),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(T,l){return this.style.setFeatureState(T,l),this._update()}removeFeatureState(T,l){return this.style.removeFeatureState(T,l),this._update()}getFeatureState(T){return this.style.getFeatureState(T)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let T=0,l=0;return this._container&&(T=this._container.clientWidth||400,l=this._container.clientHeight||300),[T,l]}_setupContainer(){let T=this._container;T.classList.add(\"maplibregl-map\");let l=this._canvasContainer=c.create(\"div\",\"maplibregl-canvas-container\",T);this._interactive&&l.classList.add(\"maplibregl-interactive\"),this._canvas=c.create(\"canvas\",\"maplibregl-canvas\",l),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\");let d=this._containerDimensions(),v=this._getClampedPixelRatio(d[0],d[1]);this._resizeCanvas(d[0],d[1],v);let b=this._controlContainer=c.create(\"div\",\"maplibregl-control-container\",T),M=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(O=>{M[O]=c.create(\"div\",`maplibregl-ctrl-${O} `,b)}),this._container.addEventListener(\"scroll\",this._onMapScroll,!1)}_setupCooperativeGestures(){this._cooperativeGesturesScreen=c.create(\"div\",\"maplibregl-cooperative-gesture-screen\",this._container);let T=typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:\"Use Ctrl + scroll to zoom the map\";navigator.platform.indexOf(\"Mac\")===0&&(T=typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:\"Use \\u2318 + scroll to zoom the map\"),this._cooperativeGesturesScreen.innerHTML=`\n
${T}
\n
${typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:\"Use two fingers to move the map\"}
\n `,this._cooperativeGesturesScreen.setAttribute(\"aria-hidden\",\"true\"),this._canvasContainer.addEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add(\"maplibregl-cooperative-gestures\")}_destroyCooperativeGestures(){c.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove(\"maplibregl-cooperative-gestures\")}_resizeCanvas(T,l,d){this._canvas.width=Math.floor(d*T),this._canvas.height=Math.floor(d*l),this._canvas.style.width=`${T}px`,this._canvas.style.height=`${l}px`}_setupPainter(){let T={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},l=null;this._canvas.addEventListener(\"webglcontextcreationerror\",v=>{l={requestedAttributes:T},v&&(l.statusMessage=v.statusMessage,l.type=v.type)},{once:!0});let d=this._canvas.getContext(\"webgl2\",T)||this._canvas.getContext(\"webgl\",T);if(!d){let v=\"Failed to initialize WebGL\";throw l?(l.message=v,new Error(JSON.stringify(l))):new Error(v)}this.painter=new oh(d,this.transform),f.testSupport(d)}_onCooperativeGesture(T,l,d){return!l&&d<2&&(this._cooperativeGesturesScreen.classList.add(\"maplibregl-show\"),setTimeout(()=>{this._cooperativeGesturesScreen.classList.remove(\"maplibregl-show\")},100)),!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(T){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||T,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(T){return this._update(),this._renderTaskQueue.add(T)}_cancelRenderFrame(T){this._renderTaskQueue.remove(T)}_render(T){let l=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(T),this._removed)return;let d=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let b=this.transform.zoom,M=n.h.now();this.style.zoomHistory.update(b,M);let O=new n.a8(b,{now:M,fadeDuration:l,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),B=O.crossFadingFactor();B===1&&B===this._crossFadingFactor||(d=!0,this._crossFadingFactor=B),this.style.update(O)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,l,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:l,showPadding:this.showPadding}),this.fire(new n.k(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,n.bg.mark(n.bh.load),this.fire(new n.k(\"load\"))),this.style&&(this.style.hasTransitions()||d)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let v=this._sourcesDirty||this._styleDirty||this._placementDirty;return v||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new n.k(\"idle\")),!this._loaded||this._fullyLoaded||v||(this._fullyLoaded=!0,n.bg.mark(n.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var T;this._hash&&this._hash.remove();for(let d of this._controls)d.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<\"u\"&&removeEventListener(\"online\",this._onWindowOnline,!1),j.removeThrottleControl(this._imageQueueHandle),(T=this._resizeObserver)===null||T===void 0||T.disconnect();let l=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");l&&l.loseContext(),this._canvas.removeEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.removeEventListener(\"webglcontextlost\",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove(\"maplibregl-map\"),n.bg.clearMetrics(),this._removed=!0,this.fire(new n.k(\"remove\"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=n.h.frame(T=>{n.bg.frame(T),this._frame=null,this._render(T)}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(T){this._showTileBoundaries!==T&&(this._showTileBoundaries=T,this._update())}get showPadding(){return!!this._showPadding}set showPadding(T){this._showPadding!==T&&(this._showPadding=T,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(T){this._showCollisionBoxes!==T&&(this._showCollisionBoxes=T,T?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(T){this._showOverdrawInspector!==T&&(this._showOverdrawInspector=T,this._update())}get repaint(){return!!this._repaint}set repaint(T){this._repaint!==T&&(this._repaint=T,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(T){this._vertices=T,this._update()}get version(){return rr}getCameraTargetElevation(){return this.transform.elevation}},xi.NavigationControl=class{constructor(T){this._updateZoomButtons=()=>{let l=this._map.getZoom(),d=l===this._map.getMaxZoom(),v=l===this._map.getMinZoom();this._zoomInButton.disabled=d,this._zoomOutButton.disabled=v,this._zoomInButton.setAttribute(\"aria-disabled\",d.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",v.toString())},this._rotateCompassArrow=()=>{let l=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=l},this._setButtonTitle=(l,d)=>{let v=this._map._getUIString(`NavigationControl.${d}`);l.title=v,l.setAttribute(\"aria-label\",v)},this.options=n.e({},nA,T),this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",l=>l.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton(\"maplibregl-ctrl-zoom-in\",l=>this._map.zoomIn({},{originalEvent:l})),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"maplibregl-ctrl-zoom-out\",l=>this._map.zoomOut({},{originalEvent:l})),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(this._compass=this._createButton(\"maplibregl-ctrl-compass\",l=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:l}):this._map.resetNorth({},{originalEvent:l})}),this._compassIcon=c.create(\"span\",\"maplibregl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"))}onAdd(T){return this._map=T,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Dd(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(T,l){let d=c.create(\"button\",T,this._container);return d.type=\"button\",d.addEventListener(\"click\",l),d}},xi.GeolocateControl=class extends n.E{constructor(T){super(),this._onSuccess=l=>{if(this._map){if(this._isOutOfMapMaxBounds(l))return this._setErrorState(),this.fire(new n.k(\"outofmaxbounds\",l)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=l,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!==\"OFF\"&&this._updateMarker(l),this.options.trackUserLocation&&this._watchState!==\"ACTIVE_LOCK\"||this._updateCamera(l),this.options.showUserLocation&&this._dotElement.classList.remove(\"maplibregl-user-location-dot-stale\"),this.fire(new n.k(\"geolocate\",l)),this._finish()}},this._updateCamera=l=>{let d=new n.L(l.coords.longitude,l.coords.latitude),v=l.coords.accuracy,b=this._map.getBearing(),M=n.e({bearing:b},this.options.fitBoundsOptions),O=wi.fromLngLat(d,v);this._map.fitBounds(O,M,{geolocateSource:!0})},this._updateMarker=l=>{if(l){let d=new n.L(l.coords.longitude,l.coords.latitude);this._accuracyCircleMarker.setLngLat(d).addTo(this._map),this._userLocationDotMarker.setLngLat(d).addTo(this._map),this._accuracy=l.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=l=>{if(this._map){if(this.options.trackUserLocation)if(l.code===1){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;let d=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(l.code===3&&bf)return;this._setErrorState()}this._watchState!==\"OFF\"&&this.options.showUserLocation&&this._dotElement.classList.add(\"maplibregl-user-location-dot-stale\"),this.fire(new n.k(\"error\",l)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=l=>{if(this._map){if(this._container.addEventListener(\"contextmenu\",d=>d.preventDefault()),this._geolocateButton=c.create(\"button\",\"maplibregl-ctrl-geolocate\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",l===!1){n.w(\"Geolocation support is not available so the GeolocateControl will be disabled.\");let d=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d)}else{let d=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=c.create(\"div\",\"maplibregl-user-location-dot\"),this._userLocationDotMarker=new Ah({element:this._dotElement}),this._circleElement=c.create(\"div\",\"maplibregl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Ah({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",d=>{d.geolocateSource||this._watchState!==\"ACTIVE_LOCK\"||d.originalEvent&&d.originalEvent.type===\"resize\"||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this.fire(new n.k(\"trackuserlocationend\")))})}},this.options=n.e({},Cn,T)}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),function(l,d=!1){Gn===void 0||d?window.navigator.permissions!==void 0?window.navigator.permissions.query({name:\"geolocation\"}).then(v=>{Gn=v.state!==\"denied\",l(Gn)}).catch(()=>{Gn=!!window.navigator.geolocation,l(Gn)}):(Gn=!!window.navigator.geolocation,l(Gn)):l(Gn)}(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off(\"zoom\",this._onZoom),this._map=void 0,yn=0,bf=!1}_isOutOfMapMaxBounds(T){let l=this._map.getMaxBounds(),d=T.coords;return l&&(d.longitudel.getEast()||d.latitudel.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"ACTIVE_ERROR\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let T=this._map.getBounds(),l=T.getSouthEast(),d=T.getNorthEast(),v=l.distanceTo(d),b=Math.ceil(this._accuracy/(v/this._map._container.clientHeight)*2);this._circleElement.style.width=`${b}px`,this._circleElement.style.height=`${b}px`}trigger(){if(!this._setup)return n.w(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new n.k(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":yn--,bf=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this.fire(new n.k(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new n.k(\"trackuserlocationstart\"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"OFF\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState===\"OFF\"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let T;this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),yn++,yn>1?(T={maximumAge:6e5,timeout:0},bf=!0):(T=this.options.positionOptions,bf=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,T)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)}},xi.AttributionControl=ua,xi.LogoControl=ln,xi.ScaleControl=class{constructor(T){this._onMove=()=>{mh(this._map,this._container,this.options)},this.setUnit=l=>{this.options.unit=l,mh(this._map,this._container,this.options)},this.options=n.e({},Ms,T)}getDefaultPosition(){return\"bottom-left\"}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-scale\",T.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0}},xi.FullscreenControl=class extends n.E{constructor(T={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,T&&T.container&&(T.container instanceof HTMLElement?this._container=T.container:n.w(\"Full screen control 'container' must be a DOM element.\")),\"onfullscreenchange\"in document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in document&&(this._fullscreenchange=\"MSFullscreenChange\")}onAdd(T){return this._map=T,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let T=this._fullscreenButton=c.create(\"button\",\"maplibregl-ctrl-fullscreen\",this._controlContainer);c.create(\"span\",\"maplibregl-ctrl-icon\",T).setAttribute(\"aria-hidden\",\"true\"),T.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let T=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",T),this._fullscreenButton.title=T}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-fullscreen\"),this._updateTitle(),this._fullscreen?(this.fire(new n.k(\"fullscreenstart\")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new n.k(\"fullscreenend\")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures))}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle(\"maplibregl-pseudo-fullscreen\"),this._handleFullscreenChange(),this._map.resize()}},xi.TerrainControl=class{constructor(T){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain\"),this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain-enabled\"),this._map.terrain?(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain-enabled\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.disableTerrain\")):(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.enableTerrain\"))},this.options=T}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._terrainButton=c.create(\"button\",\"maplibregl-ctrl-terrain\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._terrainButton).setAttribute(\"aria-hidden\",\"true\"),this._terrainButton.type=\"button\",this._terrainButton.addEventListener(\"click\",this._toggleTerrain),this._updateTerrainIcon(),this._map.on(\"terrain\",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off(\"terrain\",this._updateTerrainIcon),this._map=void 0}},xi.Popup=class extends n.E{constructor(T){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new n.k(\"close\")),this),this._onMouseUp=l=>{this._update(l.point)},this._onMouseMove=l=>{this._update(l.point)},this._onDrag=l=>{this._update(l.point)},this._update=l=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create(\"div\",\"maplibregl-popup\",this._map.getContainer()),this._tip=c.create(\"div\",\"maplibregl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className)for(let O of this.options.className.split(\" \"))this._container.classList.add(O);this._trackPointer&&this._container.classList.add(\"maplibregl-popup-track-pointer\")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=io(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!l)return;let d=this._pos=this._trackPointer&&l?l:this._map.project(this._lngLat),v=this.options.anchor,b=wf(this.options.offset);if(!v){let O=this._container.offsetWidth,B=this._container.offsetHeight,U;U=d.y+b.bottom.ythis._map.transform.height-B?[\"bottom\"]:[],d.xthis._map.transform.width-O/2&&U.push(\"right\"),v=U.length===0?\"bottom\":U.join(\"-\")}let M=d.add(b[v]).round();c.setTransform(this._container,`${Ui[v]} translate(${M.x}px,${M.y}px)`),f_(this._container,v,\"popup\")},this._onClose=()=>{this.remove()},this.options=n.e(Object.create(c0),T)}addTo(T){return this._map&&this.remove(),this._map=T,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new n.k(\"open\")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(T){return this._lngLat=n.L.convert(T),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")),this}getElement(){return this._container}setText(T){return this.setDOMContent(document.createTextNode(T))}setHTML(T){let l=document.createDocumentFragment(),d=document.createElement(\"body\"),v;for(d.innerHTML=T;v=d.firstChild,v;)l.appendChild(v);return this.setDOMContent(l)}getMaxWidth(){var T;return(T=this._container)===null||T===void 0?void 0:T.style.maxWidth}setMaxWidth(T){return this.options.maxWidth=T,this._update(),this}setDOMContent(T){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create(\"div\",\"maplibregl-popup-content\",this._container);return this._content.appendChild(T),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(T){this._container&&this._container.classList.add(T)}removeClassName(T){this._container&&this._container.classList.remove(T)}setOffset(T){return this.options.offset=T,this._update(),this}toggleClassName(T){if(this._container)return this._container.classList.toggle(T)}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create(\"button\",\"maplibregl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let T=this._container.querySelector(Od);T&&T.focus()}},xi.Marker=Ah,xi.Style=Vn,xi.LngLat=n.L,xi.LngLatBounds=wi,xi.Point=n.P,xi.MercatorCoordinate=n.U,xi.Evented=n.E,xi.AJAXError=n.bi,xi.config=n.c,xi.CanvasSource=No,xi.GeoJSONSource=Zi,xi.ImageSource=Ii,xi.RasterDEMTileSource=Cc,xi.RasterTileSource=Ic,xi.VectorTileSource=sl,xi.VideoSource=Xn,xi.setRTLTextPlugin=n.bj,xi.getRTLTextPluginStatus=n.bk,xi.prewarm=function(){po().acquire(oi)},xi.clearPrewarmedResources=function(){let T=al;T&&(T.isPreloaded()&&T.numActive()===1?(T.release(oi),al=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},Go.extend(xi,{isSafari:n.ac,getPerformanceMetrics:n.bg.getPerformanceMetrics}),xi});var s=r;return s})});var eG=Br((d6t,GE)=>{(function(e,t,r,i){\"use strict\";var s=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],n=t.createElement(\"div\"),o=\"function\",c=Math.round,f=Math.abs,_=Date.now;function w(lt,ft,Lt){return setTimeout(K(lt,Lt),ft)}function C(lt,ft,Lt){return Array.isArray(lt)?(R(lt,Lt[ft],Lt),!0):!1}function R(lt,ft,Lt){var $t;if(lt)if(lt.forEach)lt.forEach(ft,Lt);else if(lt.length!==i)for($t=0;$t\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",ti=e.console&&(e.console.warn||e.console.log);return ti&&ti.call(e.console,$t,qe),lt.apply(this,arguments)}}var j;typeof Object.assign!=\"function\"?j=function(ft){if(ft===i||ft===null)throw new TypeError(\"Cannot convert undefined or null to object\");for(var Lt=Object(ft),$t=1;$t-1}function le(lt){return lt.trim().split(/\\s+/g)}function ue(lt,ft,Lt){if(lt.indexOf&&!Lt)return lt.indexOf(ft);for(var $t=0;$tBs[ft]}):$t=$t.sort()),$t}function er(lt,ft){for(var Lt,$t,ge=ft[0].toUpperCase()+ft.slice(1),qe=0;qe1&&!Lt.firstMultiple?Lt.firstMultiple=po(ft):ge===1&&(Lt.firstMultiple=!1);var qe=Lt.firstInput,ti=Lt.firstMultiple,ts=ti?ti.center:qe.center,Ss=ft.center=ll($t);ft.timeStamp=_(),ft.deltaTime=ft.timeStamp-qe.timeStamp,ft.angle=Uo(ts,Ss),ft.distance=ve(ts,Ss),uu(Lt,ft),ft.offsetDirection=Ao(ft.deltaX,ft.deltaY);var Bs=Pa(ft.deltaTime,ft.deltaX,ft.deltaY);ft.overallVelocityX=Bs.x,ft.overallVelocityY=Bs.y,ft.overallVelocity=f(Bs.x)>f(Bs.y)?Bs.x:Bs.y,ft.scale=ti?Bl(ti.pointers,$t):1,ft.rotation=ti?dn(ti.pointers,$t):0,ft.maxPointers=Lt.prevInput?ft.pointers.length>Lt.prevInput.maxPointers?ft.pointers.length:Lt.prevInput.maxPointers:ft.pointers.length,al(Lt,ft);var ka=lt.element;Kt(ft.srcEvent.target,ka)&&(ka=ft.srcEvent.target),ft.target=ka}function uu(lt,ft){var Lt=ft.center,$t=lt.offsetDelta||{},ge=lt.prevDelta||{},qe=lt.prevInput||{};(ft.eventType===Zi||qe.eventType===Ii)&&(ge=lt.prevDelta={x:qe.deltaX||0,y:qe.deltaY||0},$t=lt.offsetDelta={x:Lt.x,y:Lt.y}),ft.deltaX=ge.x+(Lt.x-$t.x),ft.deltaY=ge.y+(Lt.y-$t.y)}function al(lt,ft){var Lt=lt.lastInterval||ft,$t=ft.timeStamp-Lt.timeStamp,ge,qe,ti,ts;if(ft.eventType!=Xn&&($t>Cc||Lt.velocity===i)){var Ss=ft.deltaX-Lt.deltaX,Bs=ft.deltaY-Lt.deltaY,ka=Pa($t,Ss,Bs);qe=ka.x,ti=ka.y,ge=f(ka.x)>f(ka.y)?ka.x:ka.y,ts=Ao(Ss,Bs),lt.lastInterval=ft}else ge=Lt.velocity,qe=Lt.velocityX,ti=Lt.velocityY,ts=Lt.direction;ft.velocity=ge,ft.velocityX=qe,ft.velocityY=ti,ft.direction=ts}function po(lt){for(var ft=[],Lt=0;Lt=f(ft)?lt<0?ol:fo:ft<0?Ea:na}function ve(lt,ft,Lt){Lt||(Lt=te);var $t=ft[Lt[0]]-lt[Lt[0]],ge=ft[Lt[1]]-lt[Lt[1]];return Math.sqrt($t*$t+ge*ge)}function Uo(lt,ft,Lt){Lt||(Lt=te);var $t=ft[Lt[0]]-lt[Lt[0]],ge=ft[Lt[1]]-lt[Lt[1]];return Math.atan2(ge,$t)*180/Math.PI}function dn(lt,ft){return Uo(ft[1],ft[0],os)+Uo(lt[1],lt[0],os)}function Bl(lt,ft){return ve(ft[0],ft[1],os)/ve(lt[0],lt[1],os)}var Ia={mousedown:Zi,mousemove:$n,mouseup:Ii},Se=\"mousedown\",Dr=\"mousemove mouseup\";function mr(){this.evEl=Se,this.evWin=Dr,this.pressed=!1,fn.apply(this,arguments)}$(mr,fn,{handler:function(ft){var Lt=Ia[ft.type];Lt&Zi&&ft.button===0&&(this.pressed=!0),Lt&$n&&ft.which!==1&&(Lt=Ii),this.pressed&&(Lt&Ii&&(this.pressed=!1),this.callback(this.manager,Lt,{pointers:[ft],changedPointers:[ft],pointerType:sl,srcEvent:ft}))}});var Os={pointerdown:Zi,pointermove:$n,pointerup:Ii,pointercancel:Xn,pointerout:Xn},Ca={2:wi,3:Ds,4:sl,5:Ic},Tr=\"pointerdown\",sa=\"pointermove pointerup pointercancel\";e.MSPointerEvent&&!e.PointerEvent&&(Tr=\"MSPointerDown\",sa=\"MSPointerMove MSPointerUp MSPointerCancel\");function gt(){this.evEl=Tr,this.evWin=sa,fn.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}$(gt,fn,{handler:function(ft){var Lt=this.store,$t=!1,ge=ft.type.toLowerCase().replace(\"ms\",\"\"),qe=Os[ge],ti=Ca[ft.pointerType]||ft.pointerType,ts=ti==wi,Ss=ue(Lt,ft.pointerId,\"pointerId\");qe&Zi&&(ft.button===0||ts)?Ss<0&&(Lt.push(ft),Ss=Lt.length-1):qe&(Ii|Xn)&&($t=!0),!(Ss<0)&&(Lt[Ss]=ft,this.callback(this.manager,qe,{pointers:Lt,changedPointers:[ft],pointerType:ti,srcEvent:ft}),$t&&Lt.splice(Ss,1))}});var J={touchstart:Zi,touchmove:$n,touchend:Ii,touchcancel:Xn},nt=\"touchstart\",ht=\"touchstart touchmove touchend touchcancel\";function vt(){this.evTarget=nt,this.evWin=ht,this.started=!1,fn.apply(this,arguments)}$(vt,fn,{handler:function(ft){var Lt=J[ft.type];if(Lt===Zi&&(this.started=!0),!!this.started){var $t=xt.call(this,ft,Lt);Lt&(Ii|Xn)&&$t[0].length-$t[1].length===0&&(this.started=!1),this.callback(this.manager,Lt,{pointers:$t[0],changedPointers:$t[1],pointerType:wi,srcEvent:ft})}}});function xt(lt,ft){var Lt=Ge(lt.touches),$t=Ge(lt.changedTouches);return ft&(Ii|Xn)&&(Lt=tr(Lt.concat($t),\"identifier\",!0)),[Lt,$t]}var _t={touchstart:Zi,touchmove:$n,touchend:Ii,touchcancel:Xn},Dt=\"touchstart touchmove touchend touchcancel\";function Mt(){this.evTarget=Dt,this.targetIds={},fn.apply(this,arguments)}$(Mt,fn,{handler:function(ft){var Lt=_t[ft.type],$t=Ut.call(this,ft,Lt);$t&&this.callback(this.manager,Lt,{pointers:$t[0],changedPointers:$t[1],pointerType:wi,srcEvent:ft})}});function Ut(lt,ft){var Lt=Ge(lt.touches),$t=this.targetIds;if(ft&(Zi|$n)&&Lt.length===1)return $t[Lt[0].identifier]=!0,[Lt,Lt];var ge,qe,ti=Ge(lt.changedTouches),ts=[],Ss=this.target;if(qe=Lt.filter(function(Bs){return Kt(Bs.target,Ss)}),ft===Zi)for(ge=0;ge-1&&$t.splice(qe,1)};setTimeout(ge,re)}}function Ye(lt){for(var ft=lt.srcEvent.clientX,Lt=lt.srcEvent.clientY,$t=0;$t-1&&this.requireFail.splice(ft,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(lt){return!!this.simultaneous[lt.id]},emit:function(lt){var ft=this,Lt=this.state;function $t(ge){ft.manager.emit(ge,lt)}Lt=ai&&$t(ft.options.event+Bm(Lt))},tryEmit:function(lt){if(this.canEmit())return this.emit(lt);this.state=on},canEmit:function(){for(var lt=0;ltft.threshold&&ge&ft.direction},attrTest:function(lt){return mo.prototype.attrTest.call(this,lt)&&(this.state&ws||!(this.state&ws)&&this.directionTest(lt))},emit:function(lt){this.pX=lt.deltaX,this.pY=lt.deltaY;var ft=Vo(lt.direction);ft&&(lt.additionalEvent=this.options.event+ft),this._super.emit.call(this,lt)}});function Yi(){mo.apply(this,arguments)}$(Yi,mo,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[Hr]},attrTest:function(lt){return this._super.attrTest.call(this,lt)&&(Math.abs(lt.scale-1)>this.options.threshold||this.state&ws)},emit:function(lt){if(lt.scale!==1){var ft=lt.scale<1?\"in\":\"out\";lt.additionalEvent=this.options.event+ft}this._super.emit.call(this,lt)}});function _i(){kn.apply(this,arguments),this._timer=null,this._input=null}$(_i,kn,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Bi]},process:function(lt){var ft=this.options,Lt=lt.pointers.length===ft.pointers,$t=lt.distanceft.time;if(this._input=lt,!$t||!Lt||lt.eventType&(Ii|Xn)&&!ge)this.reset();else if(lt.eventType&Zi)this.reset(),this._timer=w(function(){this.state=La,this.tryEmit()},ft.time,this);else if(lt.eventType&Ii)return La;return on},reset:function(){clearTimeout(this._timer)},emit:function(lt){this.state===La&&(lt&<.eventType&Ii?this.manager.emit(this.options.event+\"up\",lt):(this._input.timeStamp=_(),this.manager.emit(this.options.event,this._input)))}});function Nl(){mo.apply(this,arguments)}$(Nl,mo,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[Hr]},attrTest:function(lt){return this._super.attrTest.call(this,lt)&&(Math.abs(lt.rotation)>this.options.threshold||this.state&ws)}});function an(){mo.apply(this,arguments)}$(an,mo,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:ss|to,pointers:1},getTouchAction:function(){return zl.prototype.getTouchAction.call(this)},attrTest:function(lt){var ft=this.options.direction,Lt;return ft&(ss|to)?Lt=lt.overallVelocity:ft&ss?Lt=lt.overallVelocityX:ft&to&&(Lt=lt.overallVelocityY),this._super.attrTest.call(this,lt)&&ft<.offsetDirection&<.distance>this.options.threshold&<.maxPointers==this.options.pointers&&f(Lt)>this.options.velocity&<.eventType&Ii},emit:function(lt){var ft=Vo(lt.offsetDirection);ft&&this.manager.emit(this.options.event+ft,lt),this.manager.emit(this.options.event,lt)}});function hu(){kn.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}$(hu,kn,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ni]},process:function(lt){var ft=this.options,Lt=lt.pointers.length===ft.pointers,$t=lt.distance{\"use strict\";QO.exports=b3;QO.exports.default=b3;function b3(e,t,r){r=r||2;var i=t&&t.length,s=i?t[0]*r:e.length,n=GH(e,0,s,r,!0),o=[];if(!n||n.next===n.prev)return o;var c,f,_,w,C,R,N;if(i&&(n=Sdt(e,t,n,r)),e.length>80*r){c=_=e[0],f=w=e[1];for(var j=r;j_&&(_=C),R>w&&(w=R);N=Math.max(_-c,w-f),N=N!==0?32767/N:0}return z2(n,o,r,c,f,N,0),o}function GH(e,t,r,i,s){var n,o;if(s===YO(e,t,r,i)>0)for(n=t;n=t;n-=i)o=jH(n,e[n],e[n+1],o);return o&&w3(o,o.next)&&(U2(o),o=o.next),o}function Rg(e,t){if(!e)return e;t||(t=e);var r=e,i;do if(i=!1,!r.steiner&&(w3(r,r.next)||_s(r.prev,r,r.next)===0)){if(U2(r),r=t=r.prev,r===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function z2(e,t,r,i,s,n,o){if(e){!o&&n&&Idt(e,i,s,n);for(var c=e,f,_;e.prev!==e.next;){if(f=e.prev,_=e.next,n?xdt(e,i,s,n):vdt(e)){t.push(f.i/r|0),t.push(e.i/r|0),t.push(_.i/r|0),U2(e),e=_.next,c=_.next;continue}if(e=_,e===c){o?o===1?(e=bdt(Rg(e),t,r),z2(e,t,r,i,s,n,2)):o===2&&wdt(e,t,r,i,s,n):z2(Rg(e),t,r,i,s,n,1);break}}}}function vdt(e){var t=e.prev,r=e,i=e.next;if(_s(t,r,i)>=0)return!1;for(var s=t.x,n=r.x,o=i.x,c=t.y,f=r.y,_=i.y,w=sn?s>o?s:o:n>o?n:o,N=c>f?c>_?c:_:f>_?f:_,j=i.next;j!==t;){if(j.x>=w&&j.x<=R&&j.y>=C&&j.y<=N&&jv(s,c,n,f,o,_,j.x,j.y)&&_s(j.prev,j,j.next)>=0)return!1;j=j.next}return!0}function xdt(e,t,r,i){var s=e.prev,n=e,o=e.next;if(_s(s,n,o)>=0)return!1;for(var c=s.x,f=n.x,_=o.x,w=s.y,C=n.y,R=o.y,N=cf?c>_?c:_:f>_?f:_,rt=w>C?w>R?w:R:C>R?C:R,$=qO(N,j,t,r,i),K=qO(Y,rt,t,r,i),tt=e.prevZ,ut=e.nextZ;tt&&tt.z>=$&&ut&&ut.z<=K;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&jv(c,w,f,C,_,R,tt.x,tt.y)&&_s(tt.prev,tt,tt.next)>=0||(tt=tt.prevZ,ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&jv(c,w,f,C,_,R,ut.x,ut.y)&&_s(ut.prev,ut,ut.next)>=0))return!1;ut=ut.nextZ}for(;tt&&tt.z>=$;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&jv(c,w,f,C,_,R,tt.x,tt.y)&&_s(tt.prev,tt,tt.next)>=0)return!1;tt=tt.prevZ}for(;ut&&ut.z<=K;){if(ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&jv(c,w,f,C,_,R,ut.x,ut.y)&&_s(ut.prev,ut,ut.next)>=0)return!1;ut=ut.nextZ}return!0}function bdt(e,t,r){var i=e;do{var s=i.prev,n=i.next.next;!w3(s,n)&&WH(s,i,i.next,n)&&N2(s,n)&&N2(n,s)&&(t.push(s.i/r|0),t.push(i.i/r|0),t.push(n.i/r|0),U2(i),U2(i.next),i=e=n),i=i.next}while(i!==e);return Rg(i)}function wdt(e,t,r,i,s,n){var o=e;do{for(var c=o.next.next;c!==o.prev;){if(o.i!==c.i&&kdt(o,c)){var f=HH(o,c);o=Rg(o,o.next),f=Rg(f,f.next),z2(o,t,r,i,s,n,0),z2(f,t,r,i,s,n,0);return}c=c.next}o=o.next}while(o!==e)}function Sdt(e,t,r,i){var s=[],n,o,c,f,_;for(n=0,o=t.length;n=r.next.y&&r.next.y!==r.y){var c=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(c<=i&&c>n&&(n=c,o=r.x=r.x&&r.x>=_&&i!==r.x&&jv(so.x||r.x===o.x&&Pdt(o,r)))&&(o=r,C=R)),r=r.next;while(r!==f);return o}function Pdt(e,t){return _s(e.prev,e,t.prev)<0&&_s(t.next,e,e.next)<0}function Idt(e,t,r,i){var s=e;do s.z===0&&(s.z=qO(s.x,s.y,t,r,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,Cdt(s)}function Cdt(e){var t,r,i,s,n,o,c,f,_=1;do{for(r=e,e=null,n=null,o=0;r;){for(o++,i=r,c=0,t=0;t<_&&(c++,i=i.nextZ,!!i);t++);for(f=_;c>0||f>0&&i;)c!==0&&(f===0||!i||r.z<=i.z)?(s=r,r=r.nextZ,c--):(s=i,i=i.nextZ,f--),n?n.nextZ=s:e=s,s.prevZ=n,n=s;r=i}n.nextZ=null,_*=2}while(o>1);return e}function qO(e,t,r,i,s){return e=(e-r)*s|0,t=(t-i)*s|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function Ldt(e){var t=e,r=e;do(t.x=(e-o)*(n-c)&&(e-o)*(i-c)>=(r-o)*(t-c)&&(r-o)*(n-c)>=(s-o)*(i-c)}function kdt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!Rdt(e,t)&&(N2(e,t)&&N2(t,e)&&Ddt(e,t)&&(_s(e.prev,e,t.prev)||_s(e,t.prev,t))||w3(e,t)&&_s(e.prev,e,e.next)>0&&_s(t.prev,t,t.next)>0)}function _s(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function w3(e,t){return e.x===t.x&&e.y===t.y}function WH(e,t,r,i){var s=x3(_s(e,t,r)),n=x3(_s(e,t,i)),o=x3(_s(r,i,e)),c=x3(_s(r,i,t));return!!(s!==n&&o!==c||s===0&&v3(e,r,t)||n===0&&v3(e,i,t)||o===0&&v3(r,e,i)||c===0&&v3(r,t,i))}function v3(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function x3(e){return e>0?1:e<0?-1:0}function Rdt(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&WH(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function N2(e,t){return _s(e.prev,e,e.next)<0?_s(e,t,e.next)>=0&&_s(e,e.prev,t)>=0:_s(e,t,e.prev)<0||_s(e,e.next,t)<0}function Ddt(e,t){var r=e,i=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do r.y>n!=r.next.y>n&&r.next.y!==r.y&&s<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next;while(r!==e);return i}function HH(e,t){var r=new ZO(e.i,e.x,e.y),i=new ZO(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,r.next=s,s.prev=r,i.next=r,r.prev=i,n.next=i,i.prev=n,i}function jH(e,t,r,i){var s=new ZO(e,t,r);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function U2(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function ZO(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}b3.deviation=function(e,t,r,i){var s=t&&t.length,n=s?t[0]*r:e.length,o=Math.abs(YO(e,0,n,r));if(s)for(var c=0,f=t.length;c0&&(i+=e[s-1].length,r.holes.push(i))}return r}});var jB=Br(Ax=>{\"use strict\";Object.defineProperty(Ax,\"__esModule\",{value:!0});Ax.DefaultSerializer=Ax.extendSerializer=void 0;function W_t(e,t){let r=e.deserialize.bind(e),i=e.serialize.bind(e);return{deserialize(s){return t.deserialize(s,r)},serialize(s){return t.serialize(s,i)}}}Ax.extendSerializer=W_t;var DQ={deserialize(e){return Object.assign(Error(e.message),{name:e.name,stack:e.stack})},serialize(e){return{__error_marker:\"$$error\",message:e.message,name:e.name,stack:e.stack}}},H_t=e=>e&&typeof e==\"object\"&&\"__error_marker\"in e&&e.__error_marker===\"$$error\";Ax.DefaultSerializer={deserialize(e){return H_t(e)?DQ.deserialize(e):e},serialize(e){return e instanceof Error?DQ.serialize(e):e}}});var mx=Br(Em=>{\"use strict\";Object.defineProperty(Em,\"__esModule\",{value:!0});Em.serialize=Em.deserialize=Em.registerSerializer=void 0;var OQ=jB(),vI=OQ.DefaultSerializer;function q_t(e){vI=OQ.extendSerializer(vI,e)}Em.registerSerializer=q_t;function Z_t(e){return vI.deserialize(e)}Em.deserialize=Z_t;function Y_t(e){return vI.serialize(e)}Em.serialize=Y_t});var FQ=Br(gx=>{\"use strict\";Object.defineProperty(gx,\"__esModule\",{value:!0});gx.getBundleURL=gx.getBaseURL=void 0;var GB;function Q_t(){return GB||(GB=$_t()),GB}gx.getBundleURL=Q_t;function $_t(){try{throw new Error}catch(e){let t=(\"\"+e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\\/\\/[^)\\n]+/g);if(t)return BQ(t[0])}return\"/\"}function BQ(e){return(\"\"+e).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\\/\\/.+)?\\/[^/]+(?:\\?.*)?$/,\"$1\")+\"/\"}gx.getBaseURL=BQ});var HB=Br(Pm=>{\"use strict\";Object.defineProperty(Pm,\"__esModule\",{value:!0});Pm.isWorkerRuntime=Pm.getWorkerImplementation=Pm.defaultPoolSize=void 0;var zQ=FQ();Pm.defaultPoolSize=typeof navigator<\"u\"&&navigator.hardwareConcurrency?navigator.hardwareConcurrency:4;var NQ=e=>/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(e);function UQ(e){let t=new Blob([e],{type:\"application/javascript\"});return URL.createObjectURL(t)}function X_t(){if(typeof Worker>\"u\")return class{constructor(){throw Error(\"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.\")}};class e extends Worker{constructor(i,s){var n,o;typeof i==\"string\"&&s&&s._baseURL?i=new URL(i,s._baseURL):typeof i==\"string\"&&!NQ(i)&&zQ.getBundleURL().match(/^file:\\/\\//i)&&(i=new URL(i,zQ.getBundleURL().replace(/\\/[^\\/]+$/,\"/\")),(!((n=s?.CORSWorkaround)!==null&&n!==void 0)||n)&&(i=UQ(`importScripts(${JSON.stringify(i)});`))),typeof i==\"string\"&&NQ(i)&&(!((o=s?.CORSWorkaround)!==null&&o!==void 0)||o)&&(i=UQ(`importScripts(${JSON.stringify(i)});`)),super(i,s)}}class t extends e{constructor(i,s){let n=window.URL.createObjectURL(i);super(n,s)}static fromText(i,s){let n=new window.Blob([i],{type:\"text/javascript\"});return new t(n,s)}}return{blob:t,default:e}}var WB;function K_t(){return WB||(WB=X_t()),WB}Pm.getWorkerImplementation=K_t;function J_t(){let e=typeof self<\"u\"&&typeof Window<\"u\"&&self instanceof Window;return!!(typeof self<\"u\"&&self.postMessage&&!e)}Pm.isWorkerRuntime=J_t});var jQ=Br((Qoe,VQ)=>{var _x=1e3,yx=_x*60,vx=yx*60,qg=vx*24,tyt=qg*7,eyt=qg*365.25;VQ.exports=function(e,t){t=t||{};var r=typeof e;if(r===\"string\"&&e.length>0)return ryt(e);if(r===\"number\"&&isFinite(e))return t.long?nyt(e):iyt(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))};function ryt(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),i=(t[2]||\"ms\").toLowerCase();switch(i){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*eyt;case\"weeks\":case\"week\":case\"w\":return r*tyt;case\"days\":case\"day\":case\"d\":return r*qg;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*vx;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*yx;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*_x;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function iyt(e){var t=Math.abs(e);return t>=qg?Math.round(e/qg)+\"d\":t>=vx?Math.round(e/vx)+\"h\":t>=yx?Math.round(e/yx)+\"m\":t>=_x?Math.round(e/_x)+\"s\":e+\"ms\"}function nyt(e){var t=Math.abs(e);return t>=qg?xI(e,t,qg,\"day\"):t>=vx?xI(e,t,vx,\"hour\"):t>=yx?xI(e,t,yx,\"minute\"):t>=_x?xI(e,t,_x,\"second\"):e+\" ms\"}function xI(e,t,r,i){var s=t>=r*1.5;return Math.round(e/r)+\" \"+i+(s?\"s\":\"\")}});var WQ=Br(($oe,GQ)=>{function syt(e){r.debug=r,r.default=r,r.coerce=f,r.disable=n,r.enable=s,r.enabled=o,r.humanize=jQ(),r.destroy=_,Object.keys(e).forEach(w=>{r[w]=e[w]}),r.names=[],r.skips=[],r.formatters={};function t(w){let C=0;for(let R=0;R{if(Ot===\"%%\")return\"%\";ut++;let Zt=r.formatters[Kt];if(typeof Zt==\"function\"){let le=rt[ut];Ot=Zt.call($,le),rt.splice(ut,1),ut--}return Ot}),r.formatArgs.call($,rt),($.log||r.log).apply($,rt)}return Y.namespace=w,Y.useColors=r.useColors(),Y.color=r.selectColor(w),Y.extend=i,Y.destroy=r.destroy,Object.defineProperty(Y,\"enabled\",{enumerable:!0,configurable:!1,get:()=>R!==null?R:(N!==r.namespaces&&(N=r.namespaces,j=r.enabled(w)),j),set:rt=>{R=rt}}),typeof r.init==\"function\"&&r.init(Y),Y}function i(w,C){let R=r(this.namespace+(typeof C>\"u\"?\":\":C)+w);return R.log=this.log,R}function s(w){r.save(w),r.namespaces=w,r.names=[],r.skips=[];let C,R=(typeof w==\"string\"?w:\"\").split(/[\\s,]+/),N=R.length;for(C=0;C\"-\"+C)].join(\",\");return r.enable(\"\"),w}function o(w){if(w[w.length-1]===\"*\")return!0;let C,R;for(C=0,R=r.skips.length;C{lu.formatArgs=ayt;lu.save=lyt;lu.load=cyt;lu.useColors=oyt;lu.storage=uyt();lu.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();lu.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function oyt(){return typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs)?!0:typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)?!1:typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function ayt(e){if(e[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+e[0]+(this.useColors?\"%c \":\" \")+\"+\"+bI.exports.humanize(this.diff),!this.useColors)return;let t=\"color: \"+this.color;e.splice(1,0,t,\"color: inherit\");let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,s=>{s!==\"%%\"&&(r++,s===\"%c\"&&(i=r))}),e.splice(i,0,t)}lu.log=console.debug||console.log||(()=>{});function lyt(e){try{e?lu.storage.setItem(\"debug\",e):lu.storage.removeItem(\"debug\")}catch{}}function cyt(){let e;try{e=lu.storage.getItem(\"debug\")}catch{}return!e&&typeof process<\"u\"&&\"env\"in process&&(e=process.env.DEBUG),e}function uyt(){try{return localStorage}catch{}}bI.exports=WQ()(lu);var{formatters:hyt}=bI.exports;hyt.j=function(e){try{return JSON.stringify(e)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}}});var _S=Br(xx=>{\"use strict\";var fyt=xx&&xx.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(xx,\"__esModule\",{value:!0});xx.AsyncSerialScheduler=void 0;var qB=class{constructor(t){this._baseObserver=t,this._pendingPromises=new Set}complete(){Promise.all(this._pendingPromises).then(()=>this._baseObserver.complete()).catch(t=>this._baseObserver.error(t))}error(t){this._baseObserver.error(t)}schedule(t){let r=Promise.all(this._pendingPromises),i=[],s=o=>i.push(o),n=Promise.resolve().then(()=>fyt(this,void 0,void 0,function*(){yield r,yield t(s),this._pendingPromises.delete(n);for(let o of i)this._baseObserver.next(o)})).catch(o=>{this._pendingPromises.delete(n),this._baseObserver.error(o)});this._pendingPromises.add(n)}};xx.AsyncSerialScheduler=qB});var qQ=Br(HQ=>{\"use strict\";Object.defineProperty(HQ,\"__esModule\",{value:!0})});var ZB=Br(Rl=>{\"use strict\";Object.defineProperty(Rl,\"__esModule\",{value:!0});Rl.registerObservableSymbol=Rl.getSymbol=Rl.hasSymbol=Rl.hasSymbols=void 0;var dyt=()=>typeof Symbol==\"function\";Rl.hasSymbols=dyt;var pyt=e=>Rl.hasSymbols()&&!!Symbol[e];Rl.hasSymbol=pyt;var Ayt=e=>Rl.hasSymbol(e)?Symbol[e]:\"@@\"+e;Rl.getSymbol=Ayt;function myt(){Rl.hasSymbols()&&!Rl.hasSymbol(\"observable\")&&(Symbol.observable=Symbol(\"observable\"))}Rl.registerObservableSymbol=myt;Rl.hasSymbol(\"asyncIterator\")||(Symbol.asyncIterator=Symbol.asyncIterator||Symbol.for(\"Symbol.asyncIterator\"))});var Ad=Br(Fp=>{\"use strict\";Object.defineProperty(Fp,\"__esModule\",{value:!0});Fp.Observable=Fp.SubscriptionObserver=Fp.Subscription=void 0;qQ();var vS=ZB(),gyt=vS.getSymbol(\"iterator\"),QB=vS.getSymbol(\"observable\"),ZQ=vS.getSymbol(\"species\");function TI(e,t){let r=e[t];if(r!=null){if(typeof r!=\"function\")throw new TypeError(r+\" is not a function\");return r}}function yS(e){let t=e.constructor;return t!==void 0&&(t=t[ZQ],t===null&&(t=void 0)),t!==void 0?t:Zg}function _yt(e){return e instanceof Zg}function bx(e){bx.log?bx.log(e):setTimeout(()=>{throw e},0)}function SI(e){Promise.resolve().then(()=>{try{e()}catch(t){bx(t)}})}function YQ(e){let t=e._cleanup;if(t!==void 0&&(e._cleanup=void 0,!!t))try{if(typeof t==\"function\")t();else{let r=TI(t,\"unsubscribe\");r&&r.call(t)}}catch(r){bx(r)}}function $B(e){e._observer=void 0,e._queue=void 0,e._state=\"closed\"}function yyt(e){let t=e._queue;if(t){e._queue=void 0,e._state=\"ready\";for(let r of t)if(QQ(e,r.type,r.value),e._state===\"closed\")break}}function QQ(e,t,r){e._state=\"running\";let i=e._observer;try{let s=i?TI(i,t):void 0;switch(t){case\"next\":s&&s.call(i,r);break;case\"error\":if($B(e),s)s.call(i,r);else throw r;break;case\"complete\":$B(e),s&&s.call(i);break}}catch(s){bx(s)}e._state===\"closed\"?YQ(e):e._state===\"running\"&&(e._state=\"ready\")}function YB(e,t,r){if(e._state!==\"closed\"){if(e._state===\"buffering\"){e._queue=e._queue||[],e._queue.push({type:t,value:r});return}if(e._state!==\"ready\"){e._state=\"buffering\",e._queue=[{type:t,value:r}],SI(()=>yyt(e));return}QQ(e,t,r)}}var MI=class{constructor(t,r){this._cleanup=void 0,this._observer=t,this._queue=void 0,this._state=\"initializing\";let i=new EI(this);try{this._cleanup=r.call(void 0,i)}catch(s){i.error(s)}this._state===\"initializing\"&&(this._state=\"ready\")}get closed(){return this._state===\"closed\"}unsubscribe(){this._state!==\"closed\"&&($B(this),YQ(this))}};Fp.Subscription=MI;var EI=class{constructor(t){this._subscription=t}get closed(){return this._subscription._state===\"closed\"}next(t){YB(this._subscription,\"next\",t)}error(t){YB(this._subscription,\"error\",t)}complete(){YB(this._subscription,\"complete\")}};Fp.SubscriptionObserver=EI;var Zg=class e{constructor(t){if(!(this instanceof e))throw new TypeError(\"Observable cannot be called as a function\");if(typeof t!=\"function\")throw new TypeError(\"Observable initializer must be a function\");this._subscriber=t}subscribe(t,r,i){return(typeof t!=\"object\"||t===null)&&(t={next:t,error:r,complete:i}),new MI(t,this._subscriber)}pipe(t,...r){let i=this;for(let s of[t,...r])i=s(i);return i}tap(t,r,i){let s=typeof t!=\"object\"||t===null?{next:t,error:r,complete:i}:t;return new e(n=>this.subscribe({next(o){s.next&&s.next(o),n.next(o)},error(o){s.error&&s.error(o),n.error(o)},complete(){s.complete&&s.complete(),n.complete()},start(o){s.start&&s.start(o)}}))}forEach(t){return new Promise((r,i)=>{if(typeof t!=\"function\"){i(new TypeError(t+\" is not a function\"));return}function s(){n.unsubscribe(),r(void 0)}let n=this.subscribe({next(o){try{t(o,s)}catch(c){i(c),n.unsubscribe()}},error(o){i(o)},complete(){r(void 0)}})})}map(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=yS(this);return new r(i=>this.subscribe({next(s){let n=s;try{n=t(s)}catch(o){return i.error(o)}i.next(n)},error(s){i.error(s)},complete(){i.complete()}}))}filter(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=yS(this);return new r(i=>this.subscribe({next(s){try{if(!t(s))return}catch(n){return i.error(n)}i.next(s)},error(s){i.error(s)},complete(){i.complete()}}))}reduce(t,r){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let i=yS(this),s=arguments.length>1,n=!1,o=r;return new i(c=>this.subscribe({next(f){let _=!n;if(n=!0,!_||s)try{o=t(o,f)}catch(w){return c.error(w)}else o=f},error(f){c.error(f)},complete(){if(!n&&!s)return c.error(new TypeError(\"Cannot reduce an empty sequence\"));c.next(o),c.complete()}}))}concat(...t){let r=yS(this);return new r(i=>{let s,n=0;function o(c){s=c.subscribe({next(f){i.next(f)},error(f){i.error(f)},complete(){n===t.length?(s=void 0,i.complete()):o(r.from(t[n++]))}})}return o(this),()=>{s&&(s.unsubscribe(),s=void 0)}})}flatMap(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=yS(this);return new r(i=>{let s=[],n=this.subscribe({next(c){let f;if(t)try{f=t(c)}catch(w){return i.error(w)}else f=c;let _=r.from(f).subscribe({next(w){i.next(w)},error(w){i.error(w)},complete(){let w=s.indexOf(_);w>=0&&s.splice(w,1),o()}});s.push(_)},error(c){i.error(c)},complete(){o()}});function o(){n.closed&&s.length===0&&i.complete()}return()=>{s.forEach(c=>c.unsubscribe()),n.unsubscribe()}})}[(Symbol.observable,QB)](){return this}static from(t){let r=typeof this==\"function\"?this:e;if(t==null)throw new TypeError(t+\" is not an object\");let i=TI(t,QB);if(i){let s=i.call(t);if(Object(s)!==s)throw new TypeError(s+\" is not an object\");return _yt(s)&&s.constructor===r?s:new r(n=>s.subscribe(n))}if(vS.hasSymbol(\"iterator\")){let s=TI(t,gyt);if(s)return new r(n=>{SI(()=>{if(!n.closed){for(let o of s.call(t))if(n.next(o),n.closed)return;n.complete()}})})}if(Array.isArray(t))return new r(s=>{SI(()=>{if(!s.closed){for(let n of t)if(s.next(n),s.closed)return;s.complete()}})});throw new TypeError(t+\" is not observable\")}static of(...t){let r=typeof this==\"function\"?this:e;return new r(i=>{SI(()=>{if(!i.closed){for(let s of t)if(i.next(s),i.closed)return;i.complete()}})})}static get[ZQ](){return this}};Fp.Observable=Zg;vS.hasSymbols()&&Object.defineProperty(Zg,Symbol(\"extensions\"),{value:{symbol:QB,hostReportError:bx},configurable:!0});Fp.default=Zg});var Im=Br(XB=>{\"use strict\";Object.defineProperty(XB,\"__esModule\",{value:!0});function vyt(e){typeof e==\"function\"?e():e&&typeof e.unsubscribe==\"function\"&&e.unsubscribe()}XB.default=vyt});var $Q=Br(xS=>{\"use strict\";var xyt=xS&&xS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(xS,\"__esModule\",{value:!0});var byt=_S(),wyt=Ad(),Syt=Im();function Tyt(e){return t=>new wyt.default(r=>{let i=new byt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>xyt(this,void 0,void 0,function*(){(yield e(n))&&o(n)}))}});return()=>Syt.default(s)})}xS.default=Tyt});var KQ=Br(wx=>{\"use strict\";Object.defineProperty(wx,\"__esModule\",{value:!0});wx.isIterator=wx.isAsyncIterator=void 0;var XQ=ZB();function Myt(e){return e&&XQ.hasSymbol(\"asyncIterator\")&&e[Symbol.asyncIterator]}wx.isAsyncIterator=Myt;function Eyt(e){return e&&XQ.hasSymbol(\"iterator\")&&e[Symbol.iterator]}wx.isIterator=Eyt});var t$=Br(Yg=>{\"use strict\";var Pyt=Yg&&Yg.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},Iyt=Yg&&Yg.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof __values==\"function\"?__values(e):e[Symbol.iterator](),r={},i(\"next\"),i(\"throw\"),i(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=e[n]&&function(o){return new Promise(function(c,f){o=e[n](o),s(c,f,o.done,o.value)})}}function s(n,o,c,f){Promise.resolve(f).then(function(_){n({value:_,done:c})},o)}};Object.defineProperty(Yg,\"__esModule\",{value:!0});var Cyt=_S(),JQ=KQ(),Lyt=Ad(),kyt=Im();function Ryt(e){return t=>new Lyt.default(r=>{let i=new Cyt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>Pyt(this,void 0,void 0,function*(){var c,f;let _=yield e(n);if(JQ.isIterator(_)||JQ.isAsyncIterator(_))try{for(var w=Iyt(_),C;C=yield w.next(),!C.done;){let R=C.value;o(R)}}catch(R){c={error:R}}finally{try{C&&!C.done&&(f=w.return)&&(yield f.call(w))}finally{if(c)throw c.error}}else _.map(R=>o(R))}))}});return()=>kyt.default(s)})}Yg.default=Ryt});var e$=Br(KB=>{\"use strict\";Object.defineProperty(KB,\"__esModule\",{value:!0});var Dyt=Ad();function Oyt(e){return new Dyt.Observable(t=>{let r=0,i=setInterval(()=>{t.next(r++)},e);return()=>clearInterval(i)})}KB.default=Oyt});var r$=Br(bS=>{\"use strict\";var Byt=bS&&bS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(bS,\"__esModule\",{value:!0});var Fyt=_S(),zyt=Ad(),Nyt=Im();function Uyt(e){return t=>new zyt.default(r=>{let i=new Fyt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>Byt(this,void 0,void 0,function*(){let c=yield e(n);o(c)}))}});return()=>Nyt.default(s)})}bS.default=Uyt});var n$=Br(JB=>{\"use strict\";Object.defineProperty(JB,\"__esModule\",{value:!0});var i$=Ad(),Vyt=Im();function jyt(...e){return e.length===0?i$.Observable.from([]):new i$.Observable(t=>{let r=0,i=e.map(n=>n.subscribe({error(o){t.error(o),s()},next(o){t.next(o)},complete(){++r===e.length&&(t.complete(),s())}})),s=()=>{i.forEach(n=>Vyt.default(n))};return s})}JB.default=jyt});var r6=Br(e6=>{\"use strict\";Object.defineProperty(e6,\"__esModule\",{value:!0});var Gyt=Ad(),t6=class extends Gyt.default{constructor(){super(t=>(this._observers.add(t),()=>this._observers.delete(t))),this._observers=new Set}next(t){for(let r of this._observers)r.next(t)}error(t){for(let r of this._observers)r.error(t)}complete(){for(let t of this._observers)t.complete()}};e6.default=t6});var s$=Br(i6=>{\"use strict\";Object.defineProperty(i6,\"__esModule\",{value:!0});var Wyt=Ad(),Hyt=r6(),qyt=Im();function Zyt(e){let t=new Hyt.default,r,i=0;return new Wyt.default(s=>{r||(r=e.subscribe(t));let n=t.subscribe(s);return i++,()=>{i--,n.unsubscribe(),i===0&&(qyt.default(r),r=void 0)}})}i6.default=Zyt});var o$=Br(wS=>{\"use strict\";var Yyt=wS&&wS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(wS,\"__esModule\",{value:!0});var Qyt=_S(),$yt=Ad(),Xyt=Im();function Kyt(e,t){return r=>new $yt.default(i=>{let s,n=0,o=new Qyt.AsyncSerialScheduler(i),c=r.subscribe({complete(){o.complete()},error(f){o.error(f)},next(f){o.schedule(_=>Yyt(this,void 0,void 0,function*(){s=yield e(n===0?typeof t>\"u\"?f:t:s,f,n++),_(s)}))}});return()=>Xyt.default(c)})}wS.default=Kyt});var a$=Br(Rs=>{\"use strict\";Object.defineProperty(Rs,\"__esModule\",{value:!0});Rs.unsubscribe=Rs.Subject=Rs.scan=Rs.Observable=Rs.multicast=Rs.merge=Rs.map=Rs.interval=Rs.flatMap=Rs.filter=void 0;var Jyt=$Q();Object.defineProperty(Rs,\"filter\",{enumerable:!0,get:function(){return Jyt.default}});var tvt=t$();Object.defineProperty(Rs,\"flatMap\",{enumerable:!0,get:function(){return tvt.default}});var evt=e$();Object.defineProperty(Rs,\"interval\",{enumerable:!0,get:function(){return evt.default}});var rvt=r$();Object.defineProperty(Rs,\"map\",{enumerable:!0,get:function(){return rvt.default}});var ivt=n$();Object.defineProperty(Rs,\"merge\",{enumerable:!0,get:function(){return ivt.default}});var nvt=s$();Object.defineProperty(Rs,\"multicast\",{enumerable:!0,get:function(){return nvt.default}});var svt=Ad();Object.defineProperty(Rs,\"Observable\",{enumerable:!0,get:function(){return svt.default}});var ovt=o$();Object.defineProperty(Rs,\"scan\",{enumerable:!0,get:function(){return ovt.default}});var avt=r6();Object.defineProperty(Rs,\"Subject\",{enumerable:!0,get:function(){return avt.default}});var lvt=Im();Object.defineProperty(Rs,\"unsubscribe\",{enumerable:!0,get:function(){return lvt.default}})});var SS=Br((fae,l$)=>{l$.exports=a$()});var c$=Br(PI=>{\"use strict\";Object.defineProperty(PI,\"__esModule\",{value:!0});PI.allSettled=void 0;function cvt(e){return Promise.all(e.map(t=>{let r=n=>({status:\"fulfilled\",value:n}),i=n=>({status:\"rejected\",reason:n}),s=Promise.resolve(t);try{return s.then(r,i)}catch(n){return Promise.reject(n)}}))}PI.allSettled=cvt});var u$=Br(TS=>{\"use strict\";Object.defineProperty(TS,\"__esModule\",{value:!0});TS.PoolEventType=void 0;var uvt;(function(e){e.initialized=\"initialized\",e.taskCanceled=\"taskCanceled\",e.taskCompleted=\"taskCompleted\",e.taskFailed=\"taskFailed\",e.taskQueued=\"taskQueued\",e.taskQueueDrained=\"taskQueueDrained\",e.taskStart=\"taskStart\",e.terminated=\"terminated\"})(uvt=TS.PoolEventType||(TS.PoolEventType={}))});var MS=Br(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.$worker=th.$transferable=th.$terminate=th.$events=th.$errors=void 0;th.$errors=Symbol(\"thread.errors\");th.$events=Symbol(\"thread.events\");th.$terminate=Symbol(\"thread.terminate\");th.$transferable=Symbol(\"thread.transferable\");th.$worker=Symbol(\"thread.worker\")});var s6=Br(II=>{\"use strict\";Object.defineProperty(II,\"__esModule\",{value:!0});II.Thread=void 0;var n6=MS();function h$(e){throw Error(e)}II.Thread={errors(e){return e[n6.$errors]||h$(\"Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\")},events(e){return e[n6.$events]||h$(\"Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\")},terminate(e){return e[n6.$terminate]()}}});var A$=Br(eh=>{\"use strict\";var Qg=eh&&eh.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},hvt=eh&&eh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eh,\"__esModule\",{value:!0});eh.Pool=eh.Thread=eh.PoolEventType=void 0;var fvt=hvt(wI()),o6=SS(),f$=c$(),dvt=HB(),ia=u$();Object.defineProperty(eh,\"PoolEventType\",{enumerable:!0,get:function(){return ia.PoolEventType}});var d$=s6();Object.defineProperty(eh,\"Thread\",{enumerable:!0,get:function(){return d$.Thread}});var pvt=1;function Avt(e){let t=[];for(let r=0;rsetTimeout(t,e))}function gvt(e,t){return e.reduce((r,i)=>[...r,...t(i)],[])}function _vt(e){return e.replace(/\\W/g,\" \").trim().replace(/\\s+/g,\"-\")}function yvt(e,t){return Avt(t).map(()=>({init:e(),runningTasks:[]}))}var CI=class{constructor(t,r){this.eventSubject=new o6.Subject,this.initErrors=[],this.isClosing=!1,this.nextTaskID=1,this.taskQueue=[];let i=typeof r==\"number\"?{size:r}:r||{},{size:s=dvt.defaultPoolSize}=i;this.debug=fvt.default(`threads:pool:${_vt(i.name||String(pvt++))}`),this.options=i,this.workers=yvt(t,s),this.eventObservable=o6.multicast(o6.Observable.from(this.eventSubject)),Promise.all(this.workers.map(n=>n.init)).then(()=>this.eventSubject.next({type:ia.PoolEventType.initialized,size:this.workers.length}),n=>{this.debug(\"Error while initializing pool worker:\",n),this.eventSubject.error(n),this.initErrors.push(n)})}findIdlingWorker(){let{concurrency:t=1}=this.options;return this.workers.find(r=>r.runningTasks.length{t.runningTasks=t.runningTasks.filter(n=>n!==i)};yield mvt(0);try{yield this.runPoolTask(t,r)}finally{s(),this.isClosing||this.scheduleWork()}});t.runningTasks.push(i)})}scheduleWork(){this.debug(\"Attempt de-queueing a task in order to run it...\");let t=this.findIdlingWorker();if(!t)return;let r=this.taskQueue.shift();if(!r){this.debug(\"Task queue is empty\"),this.eventSubject.next({type:ia.PoolEventType.taskQueueDrained});return}this.run(t,r)}taskCompletion(t){return new Promise((r,i)=>{let s=this.events().subscribe(n=>{n.type===ia.PoolEventType.taskCompleted&&n.taskID===t?(s.unsubscribe(),r(n.returnValue)):n.type===ia.PoolEventType.taskFailed&&n.taskID===t?(s.unsubscribe(),i(n.error)):n.type===ia.PoolEventType.terminated&&(s.unsubscribe(),i(Error(\"Pool has been terminated before task was run.\")))})})}settled(t=!1){return Qg(this,void 0,void 0,function*(){let r=()=>gvt(this.workers,n=>n.runningTasks),i=[],s=this.eventObservable.subscribe(n=>{n.type===ia.PoolEventType.taskFailed&&i.push(n.error)});return this.initErrors.length>0?Promise.reject(this.initErrors[0]):t&&this.taskQueue.length===0?(yield f$.allSettled(r()),i):(yield new Promise((n,o)=>{let c=this.eventObservable.subscribe({next(f){f.type===ia.PoolEventType.taskQueueDrained&&(c.unsubscribe(),n(void 0))},error:o})}),yield f$.allSettled(r()),s.unsubscribe(),i)})}completed(t=!1){return Qg(this,void 0,void 0,function*(){let r=this.settled(t),i=new Promise((n,o)=>{let c=this.eventObservable.subscribe({next(f){f.type===ia.PoolEventType.taskQueueDrained?(c.unsubscribe(),n(r)):f.type===ia.PoolEventType.taskFailed&&(c.unsubscribe(),o(f.error))},error:o})}),s=yield Promise.race([r,i]);if(s.length>0)throw s[0]})}events(){return this.eventObservable}queue(t){let{maxQueuedJobs:r=1/0}=this.options;if(this.isClosing)throw Error(\"Cannot schedule pool tasks after terminate() has been called.\");if(this.initErrors.length>0)throw this.initErrors[0];let i=this.nextTaskID++,s=this.taskCompletion(i);s.catch(o=>{this.debug(`Task #${i} errored:`,o)});let n={id:i,run:t,cancel:()=>{this.taskQueue.indexOf(n)!==-1&&(this.taskQueue=this.taskQueue.filter(o=>o!==n),this.eventSubject.next({type:ia.PoolEventType.taskCanceled,taskID:n.id}))},then:s.then.bind(s)};if(this.taskQueue.length>=r)throw Error(`Maximum number of pool tasks queued. Refusing to queue another one.\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool.`);return this.debug(`Queueing task #${n.id}...`),this.taskQueue.push(n),this.eventSubject.next({type:ia.PoolEventType.taskQueued,taskID:n.id}),this.scheduleWork(),n}terminate(t){return Qg(this,void 0,void 0,function*(){this.isClosing=!0,t||(yield this.completed(!0)),this.eventSubject.next({type:ia.PoolEventType.terminated,remainingQueue:[...this.taskQueue]}),this.eventSubject.complete(),yield Promise.all(this.workers.map(r=>Qg(this,void 0,void 0,function*(){return d$.Thread.terminate(yield r.init)})))})}};CI.EventType=ia.PoolEventType;function p$(e,t){return new CI(e,t)}p$.EventType=ia.PoolEventType;eh.Pool=p$});var m$=Br(LI=>{\"use strict\";Object.defineProperty(LI,\"__esModule\",{value:!0});LI.createPromiseWithResolver=void 0;var vvt=()=>{};function xvt(){let e=!1,t,r=vvt;return[new Promise(n=>{e?n(t):r=n}),n=>{e=!0,t=n,r(t)}]}LI.createPromiseWithResolver=xvt});var g$=Br(ES=>{\"use strict\";Object.defineProperty(ES,\"__esModule\",{value:!0});ES.WorkerEventType=void 0;var yae=MS(),bvt;(function(e){e.internalError=\"internalError\",e.message=\"message\",e.termination=\"termination\"})(bvt=ES.WorkerEventType||(ES.WorkerEventType={}))});var y$=Br(kI=>{\"use strict\";Object.defineProperty(kI,\"__esModule\",{value:!0});kI.ObservablePromise=void 0;var wvt=SS(),Svt=()=>{},Tvt=e=>e,_$=e=>Promise.resolve().then(e);function Mvt(e){throw e}function Evt(e){return e&&typeof e.then==\"function\"}var a6=class e extends wvt.Observable{constructor(t){super(r=>{let i=this,s=Object.assign(Object.assign({},r),{complete(){r.complete(),i.onCompletion()},error(n){r.error(n),i.onError(n)},next(n){r.next(n),i.onNext(n)}});try{return this.initHasRun=!0,t(s)}catch(n){s.error(n)}}),this.initHasRun=!1,this.fulfillmentCallbacks=[],this.rejectionCallbacks=[],this.firstValueSet=!1,this.state=\"pending\"}onNext(t){this.firstValueSet||(this.firstValue=t,this.firstValueSet=!0)}onError(t){this.state=\"rejected\",this.rejection=t;for(let r of this.rejectionCallbacks)_$(()=>r(t))}onCompletion(){this.state=\"fulfilled\";for(let t of this.fulfillmentCallbacks)_$(()=>t(this.firstValue))}then(t,r){let i=t||Tvt,s=r||Mvt,n=!1;return new Promise((o,c)=>{let f=w=>{if(!n){n=!0;try{o(s(w))}catch(C){c(C)}}},_=w=>{try{o(i(w))}catch(C){f(C)}};if(this.initHasRun||this.subscribe({error:f}),this.state===\"fulfilled\")return o(i(this.firstValue));if(this.state===\"rejected\")return n=!0,o(s(this.rejection));this.fulfillmentCallbacks.push(_),this.rejectionCallbacks.push(f)})}catch(t){return this.then(void 0,t)}finally(t){let r=t||Svt;return this.then(i=>(r(),i),()=>r())}static from(t){return Evt(t)?new e(r=>{let i=n=>{r.next(n),r.complete()},s=n=>{r.error(n)};t.then(i,s)}):super.from(t)}};kI.ObservablePromise=a6});var PS=Br(Sx=>{\"use strict\";Object.defineProperty(Sx,\"__esModule\",{value:!0});Sx.Transfer=Sx.isTransferDescriptor=void 0;var v$=MS();function Pvt(e){return!(!e||typeof e!=\"object\")}function Ivt(e){return e&&typeof e==\"object\"&&e[v$.$transferable]}Sx.isTransferDescriptor=Ivt;function Cvt(e,t){if(!t){if(!Pvt(e))throw Error();t=[e]}return{[v$.$transferable]:!0,send:e,transferables:t}}Sx.Transfer=Cvt});var l6=Br(Cm=>{\"use strict\";Object.defineProperty(Cm,\"__esModule\",{value:!0});Cm.WorkerMessageType=Cm.MasterMessageType=void 0;var Lvt;(function(e){e.cancel=\"cancel\",e.run=\"run\"})(Lvt=Cm.MasterMessageType||(Cm.MasterMessageType={}));var kvt;(function(e){e.error=\"error\",e.init=\"init\",e.result=\"result\",e.running=\"running\",e.uncaughtError=\"uncaughtError\"})(kvt=Cm.WorkerMessageType||(Cm.WorkerMessageType={}))});var T$=Br(Lm=>{\"use strict\";var Rvt=Lm&&Lm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Lm,\"__esModule\",{value:!0});Lm.createProxyModule=Lm.createProxyFunction=void 0;var Dvt=Rvt(wI()),b$=SS(),IS=mx(),x$=y$(),Ovt=PS(),CS=l6(),w$=Dvt.default(\"threads:master:messages\"),Bvt=1,Fvt=e=>Array.from(new Set(e)),zvt=e=>e&&e.type===CS.WorkerMessageType.error,Nvt=e=>e&&e.type===CS.WorkerMessageType.result,Uvt=e=>e&&e.type===CS.WorkerMessageType.running;function Vvt(e,t){return new b$.Observable(r=>{let i,s=n=>{if(w$(\"Message from worker:\",n.data),!(!n.data||n.data.uid!==t)){if(Uvt(n.data))i=n.data.resultType;else if(Nvt(n.data))i===\"promise\"?(typeof n.data.payload<\"u\"&&r.next(IS.deserialize(n.data.payload)),r.complete(),e.removeEventListener(\"message\",s)):(n.data.payload&&r.next(IS.deserialize(n.data.payload)),n.data.complete&&(r.complete(),e.removeEventListener(\"message\",s)));else if(zvt(n.data)){let o=IS.deserialize(n.data.error);r.error(o),e.removeEventListener(\"message\",s)}}};return e.addEventListener(\"message\",s),()=>{if(i===\"observable\"||!i){let n={type:CS.MasterMessageType.cancel,uid:t};e.postMessage(n)}e.removeEventListener(\"message\",s)}})}function jvt(e){if(e.length===0)return{args:[],transferables:[]};let t=[],r=[];for(let i of e)Ovt.isTransferDescriptor(i)?(t.push(IS.serialize(i.send)),r.push(...i.transferables)):t.push(IS.serialize(i));return{args:t,transferables:r.length===0?r:Fvt(r)}}function S$(e,t){return(...r)=>{let i=Bvt++,{args:s,transferables:n}=jvt(r),o={type:CS.MasterMessageType.run,uid:i,method:t,args:s};w$(\"Sending command to run function to worker:\",o);try{e.postMessage(o,n)}catch(c){return x$.ObservablePromise.from(Promise.reject(c))}return x$.ObservablePromise.from(b$.multicast(Vvt(e,i)))}}Lm.createProxyFunction=S$;function Gvt(e,t){let r={};for(let i of t)r[i]=S$(e,i);return r}Lm.createProxyModule=Gvt});var I$=Br(km=>{\"use strict\";var c6=km&&km.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},Wvt=km&&km.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(km,\"__esModule\",{value:!0});km.spawn=void 0;var u6=Wvt(wI()),Hvt=SS(),qvt=mx(),Zvt=m$(),RI=MS(),DI=g$(),M$=T$(),Yvt=u6.default(\"threads:master:messages\"),Qvt=u6.default(\"threads:master:spawn\"),P$=u6.default(\"threads:master:thread-utils\"),$vt=e=>e&&e.type===\"init\",Xvt=e=>e&&e.type===\"uncaughtError\",Kvt=typeof process<\"u\"&&process.env.THREADS_WORKER_INIT_TIMEOUT?Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT,10):1e4;function Jvt(e,t,r){return c6(this,void 0,void 0,function*(){let i,s=new Promise((o,c)=>{i=setTimeout(()=>c(Error(r)),t)}),n=yield Promise.race([e,s]);return clearTimeout(i),n})}function txt(e){return new Promise((t,r)=>{let i=s=>{Yvt(\"Message from worker before finishing initialization:\",s.data),$vt(s.data)?(e.removeEventListener(\"message\",i),t(s.data)):Xvt(s.data)&&(e.removeEventListener(\"message\",i),r(qvt.deserialize(s.data.error)))};e.addEventListener(\"message\",i)})}function ext(e,t){return new Hvt.Observable(r=>{let i=n=>{let o={type:DI.WorkerEventType.message,data:n.data};r.next(o)},s=n=>{P$(\"Unhandled promise rejection event in thread:\",n);let o={type:DI.WorkerEventType.internalError,error:Error(n.reason)};r.next(o)};e.addEventListener(\"message\",i),e.addEventListener(\"unhandledrejection\",s),t.then(()=>{let n={type:DI.WorkerEventType.termination};e.removeEventListener(\"message\",i),e.removeEventListener(\"unhandledrejection\",s),r.next(n),r.complete()})})}function rxt(e){let[t,r]=Zvt.createPromiseWithResolver();return{terminate:()=>c6(this,void 0,void 0,function*(){P$(\"Terminating worker\"),yield e.terminate(),r()}),termination:t}}function E$(e,t,r,i){let s=r.filter(n=>n.type===DI.WorkerEventType.internalError).map(n=>n.error);return Object.assign(e,{[RI.$errors]:s,[RI.$events]:r,[RI.$terminate]:i,[RI.$worker]:t})}function ixt(e,t){return c6(this,void 0,void 0,function*(){Qvt(\"Initializing new thread\");let r=t&&t.timeout?t.timeout:Kvt,s=(yield Jvt(txt(e),r,`Timeout: Did not receive an init message from worker after ${r}ms. Make sure the worker calls expose().`)).exposed,{termination:n,terminate:o}=rxt(e),c=ext(e,n);if(s.type===\"function\"){let f=M$.createProxyFunction(e);return E$(f,e,c,o)}else if(s.type===\"module\"){let f=M$.createProxyModule(e,s.methods);return E$(f,e,c,o)}else{let f=s.type;throw Error(`Worker init message states unexpected type of expose(): ${f}`)}})}km.spawn=ixt});var C$=Br(Mc=>{\"use strict\";Object.defineProperty(Mc,\"__esModule\",{value:!0});Mc.Worker=Mc.BlobWorker=Mc.isWorkerRuntime=Mc.Thread=Mc.spawn=Mc.Pool=void 0;var h6=HB();Object.defineProperty(Mc,\"isWorkerRuntime\",{enumerable:!0,get:function(){return h6.isWorkerRuntime}});var nxt=A$();Object.defineProperty(Mc,\"Pool\",{enumerable:!0,get:function(){return nxt.Pool}});var sxt=I$();Object.defineProperty(Mc,\"spawn\",{enumerable:!0,get:function(){return sxt.spawn}});var oxt=s6();Object.defineProperty(Mc,\"Thread\",{enumerable:!0,get:function(){return oxt.Thread}});Mc.BlobWorker=h6.getWorkerImplementation().blob;Mc.Worker=h6.getWorkerImplementation().default});var k$=Br((Eae,L$)=>{\"use strict\";L$.exports=e=>e?typeof Symbol.observable==\"symbol\"&&typeof e[Symbol.observable]==\"function\"?e===e[Symbol.observable]():typeof e[\"@@observable\"]==\"function\"?e===e[\"@@observable\"]():!1:!1});var R$=Br(f6=>{\"use strict\";Object.defineProperty(f6,\"__esModule\",{value:!0});var axt=function(){let t=typeof self<\"u\"&&typeof Window<\"u\"&&self instanceof Window;return!!(typeof self<\"u\"&&self.postMessage&&!t)},lxt=function(t,r){self.postMessage(t,r)},cxt=function(t){let r=s=>{t(s.data)},i=()=>{self.removeEventListener(\"message\",r)};return self.addEventListener(\"message\",r),i};f6.default={isWorkerRuntime:axt,postMessageToMaster:lxt,subscribeToMasterMessages:cxt}});var U$=Br(Ec=>{\"use strict\";var uxt=Ec&&Ec.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(C){o(C)}}function f(w){try{_(i.throw(w))}catch(C){o(C)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},z$=Ec&&Ec.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ec,\"__esModule\",{value:!0});Ec.expose=Ec.isWorkerRuntime=Ec.Transfer=Ec.registerSerializer=void 0;var hxt=z$(k$()),Rm=mx(),fxt=PS(),Dm=l6(),cu=z$(R$()),dxt=mx();Object.defineProperty(Ec,\"registerSerializer\",{enumerable:!0,get:function(){return dxt.registerSerializer}});var pxt=PS();Object.defineProperty(Ec,\"Transfer\",{enumerable:!0,get:function(){return pxt.Transfer}});Ec.isWorkerRuntime=cu.default.isWorkerRuntime;var D$=!1,LS=new Map,Axt=e=>e&&e.type===Dm.MasterMessageType.cancel,O$=e=>e&&e.type===Dm.MasterMessageType.run,B$=e=>hxt.default(e)||mxt(e);function mxt(e){return e&&typeof e==\"object\"&&typeof e.subscribe==\"function\"}function N$(e){return fxt.isTransferDescriptor(e)?{payload:e.send,transferables:e.transferables}:{payload:e,transferables:void 0}}function gxt(){let e={type:Dm.WorkerMessageType.init,exposed:{type:\"function\"}};cu.default.postMessageToMaster(e)}function _xt(e){let t={type:Dm.WorkerMessageType.init,exposed:{type:\"module\",methods:e}};cu.default.postMessageToMaster(t)}function d6(e,t){let{payload:r,transferables:i}=N$(t),s={type:Dm.WorkerMessageType.error,uid:e,error:Rm.serialize(r)};cu.default.postMessageToMaster(s,i)}function p6(e,t,r){let{payload:i,transferables:s}=N$(r),n={type:Dm.WorkerMessageType.result,uid:e,complete:t?!0:void 0,payload:i};cu.default.postMessageToMaster(n,s)}function yxt(e,t){let r={type:Dm.WorkerMessageType.running,uid:e,resultType:t};cu.default.postMessageToMaster(r)}function OI(e){try{let t={type:Dm.WorkerMessageType.uncaughtError,error:Rm.serialize(e)};cu.default.postMessageToMaster(t)}catch(t){console.error(`Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:`,t,`\nOriginal error:`,e)}}function F$(e,t,r){return uxt(this,void 0,void 0,function*(){let i;try{i=t(...r)}catch(n){return d6(e,n)}let s=B$(i)?\"observable\":\"promise\";if(yxt(e,s),B$(i)){let n=i.subscribe(o=>p6(e,!1,Rm.serialize(o)),o=>{d6(e,Rm.serialize(o)),LS.delete(e)},()=>{p6(e,!0),LS.delete(e)});LS.set(e,n)}else try{let n=yield i;p6(e,!0,Rm.serialize(n))}catch(n){d6(e,Rm.serialize(n))}})}function vxt(e){if(!cu.default.isWorkerRuntime())throw Error(\"expose() called in the master thread.\");if(D$)throw Error(\"expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.\");if(D$=!0,typeof e==\"function\")cu.default.subscribeToMasterMessages(t=>{O$(t)&&!t.method&&F$(t.uid,e,t.args.map(Rm.deserialize))}),gxt();else if(typeof e==\"object\"&&e){cu.default.subscribeToMasterMessages(r=>{O$(r)&&r.method&&F$(r.uid,e[r.method],r.args.map(Rm.deserialize))});let t=Object.keys(e).filter(r=>typeof e[r]==\"function\");_xt(t)}else throw Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${e}`);cu.default.subscribeToMasterMessages(t=>{if(Axt(t)){let r=t.uid,i=LS.get(r);i&&(i.unsubscribe(),LS.delete(r))}})}Ec.expose=vxt;typeof self<\"u\"&&typeof self.addEventListener==\"function\"&&cu.default.isWorkerRuntime()&&(self.addEventListener(\"error\",e=>{setTimeout(()=>OI(e.error||e),250)}),self.addEventListener(\"unhandledrejection\",e=>{let t=e.reason;t&&typeof t.message==\"string\"&&setTimeout(()=>OI(t),250)}));typeof process<\"u\"&&typeof process.on==\"function\"&&cu.default.isWorkerRuntime()&&(process.on(\"uncaughtException\",e=>{setTimeout(()=>OI(e),250)}),process.on(\"unhandledRejection\",e=>{e&&typeof e.message==\"string\"&&setTimeout(()=>OI(e),250)}))});var V$=Br(Dl=>{\"use strict\";var xxt=Dl&&Dl.__createBinding||(Object.create?function(e,t,r,i){i===void 0&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){i===void 0&&(i=r),e[i]=t[r]}),bxt=Dl&&Dl.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&xxt(t,e,r)};Object.defineProperty(Dl,\"__esModule\",{value:!0});Dl.Transfer=Dl.DefaultSerializer=Dl.expose=Dl.registerSerializer=void 0;var wxt=mx();Object.defineProperty(Dl,\"registerSerializer\",{enumerable:!0,get:function(){return wxt.registerSerializer}});bxt(C$(),Dl);var Sxt=U$();Object.defineProperty(Dl,\"expose\",{enumerable:!0,get:function(){return Sxt.expose}});var Txt=jB();Object.defineProperty(Dl,\"DefaultSerializer\",{enumerable:!0,get:function(){return Txt.DefaultSerializer}});var Mxt=PS();Object.defineProperty(Dl,\"Transfer\",{enumerable:!0,get:function(){return Mxt.Transfer}})});var WI=ki(Ji(),1),$g=ki(Ji(),1);var Xl=ki(Ji(),1),T8=ki(S8(),1),M8=Xl.createContext(null);function Qk(){let e=Xl.useContext(M8);if(!e)throw new Error(\"Model not found\");return e}function P0(e){let t=Qk(),[r,i]=Xl.useState(t.get(e));return Xl.useEffect(()=>{let s=()=>i(t.get(e));return t.on(`change:${e}`,s),()=>t.off(`change:${e}`,s)},[t,e]),[r,s=>{t.set(e,s),t.save_changes()}]}function E8(e){return({model:t,el:r})=>{let i=T8.createRoot(r);return i.render(Xl.createElement(Xl.StrictMode,null,Xl.createElement(M8.Provider,{value:t},Xl.createElement(e)))),()=>i.unmount()}}var V8=ki(Ji());var K_=ki(Ji()),Hc=ki(Ji());var $k=ki(Ji()),wM=ki(Ji());var P8=$k.createContext(null);function I8(e,t){let r=Array.isArray(e)?e[0]:e?e.x:0,i=Array.isArray(e)?e[1]:e?e.y:0,s=Array.isArray(t)?t[0]:t?t.x:0,n=Array.isArray(t)?t[1]:t?t.y:0;return r===s&&i===n}function Kl(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r{let s=null;\"interactive\"in i&&(s=Object.assign({},i),delete s.interactive);let n=t[i.ref];if(n){s=s||Object.assign({},i),delete s.ref;for(let o of ret)o in n&&(s[o]=n[o])}return s||i});return{...e,layers:r}}var L8={version:8,sources:{},layers:[]},k8={mousedown:\"onMouseDown\",mouseup:\"onMouseUp\",mouseover:\"onMouseOver\",mousemove:\"onMouseMove\",click:\"onClick\",dblclick:\"onDblClick\",mouseenter:\"onMouseEnter\",mouseleave:\"onMouseLeave\",mouseout:\"onMouseOut\",contextmenu:\"onContextMenu\",touchstart:\"onTouchStart\",touchend:\"onTouchEnd\",touchmove:\"onTouchMove\",touchcancel:\"onTouchCancel\"},e4={movestart:\"onMoveStart\",move:\"onMove\",moveend:\"onMoveEnd\",dragstart:\"onDragStart\",drag:\"onDrag\",dragend:\"onDragEnd\",zoomstart:\"onZoomStart\",zoom:\"onZoom\",zoomend:\"onZoomEnd\",rotatestart:\"onRotateStart\",rotate:\"onRotate\",rotateend:\"onRotateEnd\",pitchstart:\"onPitchStart\",pitch:\"onPitch\",pitchend:\"onPitchEnd\"},R8={wheel:\"onWheel\",boxzoomstart:\"onBoxZoomStart\",boxzoomend:\"onBoxZoomEnd\",boxzoomcancel:\"onBoxZoomCancel\",resize:\"onResize\",load:\"onLoad\",render:\"onRender\",idle:\"onIdle\",remove:\"onRemove\",data:\"onData\",styledata:\"onStyleData\",sourcedata:\"onSourceData\",error:\"onError\"},iet=[\"minZoom\",\"maxZoom\",\"minPitch\",\"maxPitch\",\"maxBounds\",\"projection\",\"renderWorldCopies\"],net=[\"scrollZoom\",\"boxZoom\",\"dragRotate\",\"dragPan\",\"keyboard\",\"doubleClickZoom\",\"touchZoomRotate\",\"touchPitch\"],I0=class e{constructor(t,r,i){this._map=null,this._internalUpdate=!1,this._inRender=!1,this._hoveredFeatures=null,this._deferredEvents={move:!1,zoom:!1,pitch:!1,rotate:!1},this._onEvent=s=>{let n=this.props[R8[s.type]];n?n(s):s.type===\"error\"&&console.error(s.error)},this._onPointerEvent=s=>{(s.type===\"mousemove\"||s.type===\"mouseout\")&&this._updateHover(s);let n=this.props[k8[s.type]];n&&(this.props.interactiveLayerIds&&s.type!==\"mouseover\"&&s.type!==\"mouseout\"&&(s.features=this._hoveredFeatures||this._queryRenderedFeatures(s.point)),n(s),delete s.features)},this._onCameraEvent=s=>{if(!this._internalUpdate){let n=this.props[e4[s.type]];n&&n(s)}s.type in this._deferredEvents&&(this._deferredEvents[s.type]=!1)},this._MapClass=t,this.props=r,this._initialize(i)}get map(){return this._map}get transform(){return this._renderTransform}setProps(t){let r=this.props;this.props=t;let i=this._updateSettings(t,r);i&&this._createShadowTransform(this._map);let s=this._updateSize(t),n=this._updateViewState(t,!0);this._updateStyle(t,r),this._updateStyleComponents(t,r),this._updateHandlers(t,r),(i||s||n&&!this._map.isMoving())&&this.redraw()}static reuse(t,r){let i=e.savedMaps.pop();if(!i)return null;let s=i.map,n=s.getContainer();for(r.className=n.className;n.childNodes.length>0;)r.appendChild(n.childNodes[0]);s._container=r;let o=s._resizeObserver;o&&(o.disconnect(),o.observe(r)),i.setProps({...t,styleDiffing:!1}),s.resize();let{initialViewState:c}=t;return c&&(c.bounds?s.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):i._updateViewState(c,!1)),s.isStyleLoaded()?s.fire(\"load\"):s.once(\"styledata\",()=>s.fire(\"load\")),s._update(),i}_initialize(t){let{props:r}=this,{mapStyle:i=L8}=r,s={...r,...r.initialViewState,accessToken:r.mapboxAccessToken||set()||null,container:t,style:t4(i)},n=s.initialViewState||s.viewState||s;if(Object.assign(s,{center:[n.longitude||0,n.latitude||0],zoom:n.zoom||0,pitch:n.pitch||0,bearing:n.bearing||0}),r.gl){let w=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=w,r.gl)}let o=new this._MapClass(s);n.padding&&o.setPadding(n.padding),r.cursor&&(o.getCanvas().style.cursor=r.cursor),this._createShadowTransform(o);let c=o._render;o._render=w=>{this._inRender=!0,c.call(o,w),this._inRender=!1};let f=o._renderTaskQueue.run;o._renderTaskQueue.run=w=>{f.call(o._renderTaskQueue,w),this._onBeforeRepaint()},o.on(\"render\",()=>this._onAfterRepaint());let _=o.fire;o.fire=this._fireEvent.bind(this,_),o.on(\"resize\",()=>{this._renderTransform.resize(o.transform.width,o.transform.height)}),o.on(\"styledata\",()=>{this._updateStyleComponents(this.props,{}),Xk(o.transform,this._renderTransform)}),o.on(\"sourcedata\",()=>this._updateStyleComponents(this.props,{}));for(let w in k8)o.on(w,this._onPointerEvent);for(let w in e4)o.on(w,this._onCameraEvent);for(let w in R8)o.on(w,this._onEvent);this._map=o}recycle(){let r=this.map.getContainer().querySelector(\"[mapboxgl-children]\");r?.remove(),e.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){let t=this._map;!this._inRender&&t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_createShadowTransform(t){let r=C8(t.transform);t.painter.transform=r,this._renderTransform=r}_updateSize(t){let{viewState:r}=t;if(r){let i=this._map;if(r.width!==i.transform.width||r.height!==i.transform.height)return i.resize(),!0}return!1}_updateViewState(t,r){if(this._internalUpdate)return!1;let i=this._map,s=this._renderTransform,{zoom:n,pitch:o,bearing:c}=s,f=i.isMoving();f&&(s.cameraElevationReference=\"sea\");let _=Jk(s,{...Kk(i.transform),...t});if(f&&(s.cameraElevationReference=\"ground\"),_&&r){let w=this._deferredEvents;w.move=!0,w.zoom||(w.zoom=n!==s.zoom),w.rotate||(w.rotate=c!==s.bearing),w.pitch||(w.pitch=o!==s.pitch)}return f||Jk(i.transform,t),_}_updateSettings(t,r){let i=this._map,s=!1;for(let n of iet)if(n in t&&!Kl(t[n],r[n])){s=!0;let o=i[`set${n[0].toUpperCase()}${n.slice(1)}`];o?.call(i,t[n])}return s}_updateStyle(t,r){if(t.cursor!==r.cursor&&(this._map.getCanvas().style.cursor=t.cursor||\"\"),t.mapStyle!==r.mapStyle){let{mapStyle:i=L8,styleDiffing:s=!0}=t,n={diff:s};return\"localIdeographFontFamily\"in t&&(n.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(t4(i),n),!0}return!1}_updateStyleComponents(t,r){let i=this._map,s=!1;return i.isStyleLoaded()&&(\"light\"in t&&i.setLight&&!Kl(t.light,r.light)&&(s=!0,i.setLight(t.light)),\"fog\"in t&&i.setFog&&!Kl(t.fog,r.fog)&&(s=!0,i.setFog(t.fog)),\"terrain\"in t&&i.setTerrain&&!Kl(t.terrain,r.terrain)&&(!t.terrain||i.getSource(t.terrain.source))&&(s=!0,i.setTerrain(t.terrain))),s}_updateHandlers(t,r){var i,s;let n=this._map,o=!1;for(let c of net){let f=(i=t[c])!==null&&i!==void 0?i:!0,_=(s=r[c])!==null&&s!==void 0?s:!0;Kl(f,_)||(o=!0,f?n[c].enable(f):n[c].disable())}return o}_queryRenderedFeatures(t){let r=this._map,i=r.transform,{interactiveLayerIds:s=[]}=this.props;try{return r.transform=this._renderTransform,r.queryRenderedFeatures(t,{layers:s.filter(r.getLayer.bind(r))})}catch{return[]}finally{r.transform=i}}_updateHover(t){var r;let{props:i}=this;if(i.interactiveLayerIds&&(i.onMouseMove||i.onMouseEnter||i.onMouseLeave)){let n=t.type,o=((r=this._hoveredFeatures)===null||r===void 0?void 0:r.length)>0,c=this._queryRenderedFeatures(t.point),f=c.length>0;!f&&o&&(t.type=\"mouseleave\",this._onPointerEvent(t)),this._hoveredFeatures=c,f&&!o&&(t.type=\"mouseenter\",this._onPointerEvent(t)),t.type=n}else this._hoveredFeatures=null}_fireEvent(t,r,i){let s=this._map,n=s.transform,o=typeof r==\"string\"?r:r.type;return o===\"move\"&&this._updateViewState(this.props,!1),o in e4&&(typeof r==\"object\"&&(r.viewState=Kk(n)),this._map.isMoving())?(s.transform=this._renderTransform,t.call(s,r,i),s.transform=n,s):(t.call(s,r,i),s)}_onBeforeRepaint(){let t=this._map;this._internalUpdate=!0;for(let i in this._deferredEvents)this._deferredEvents[i]&&t.fire(i);this._internalUpdate=!1;let r=this._map.transform;t.transform=this._renderTransform,this._onAfterRepaint=()=>{Xk(this._renderTransform,r),t.transform=r}}};I0.savedMaps=[];function set(){let e=null;if(typeof location<\"u\"){let t=/access_token=([^&\\/]*)/.exec(location.search);e=t&&t[1]}try{e=e||process.env.MapboxAccessToken}catch{}try{e=e||process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}catch{}return e}var oet=[\"setMaxBounds\",\"setMinZoom\",\"setMaxZoom\",\"setMinPitch\",\"setMaxPitch\",\"setRenderWorldCopies\",\"setProjection\",\"setStyle\",\"addSource\",\"removeSource\",\"addLayer\",\"removeLayer\",\"setLayerZoomRange\",\"setFilter\",\"setPaintProperty\",\"setLayoutProperty\",\"setLight\",\"setTerrain\",\"setFog\",\"remove\"];function r4(e){if(!e)return null;let t=e.map,r={getMap:()=>t,getCenter:()=>e.transform.center,getZoom:()=>e.transform.zoom,getBearing:()=>e.transform.bearing,getPitch:()=>e.transform.pitch,getPadding:()=>e.transform.padding,getBounds:()=>e.transform.getBounds(),project:i=>{let s=t.transform;t.transform=e.transform;let n=t.project(i);return t.transform=s,n},unproject:i=>{let s=t.transform;t.transform=e.transform;let n=t.unproject(i);return t.transform=s,n},queryTerrainElevation:(i,s)=>{let n=t.transform;t.transform=e.transform;let o=t.queryTerrainElevation(i,s);return t.transform=n,o},queryRenderedFeatures:(i,s)=>{let n=t.transform;t.transform=e.transform;let o=t.queryRenderedFeatures(i,s);return t.transform=n,o}};for(let i of aet(t))!(i in r)&&!oet.includes(i)&&(r[i]=t[i].bind(t));return r}function aet(e){let t=new Set,r=e;for(;r;){for(let i of Object.getOwnPropertyNames(r))i[0]!==\"_\"&&typeof e[i]==\"function\"&&i!==\"fire\"&&i!==\"setEventedParent\"&&t.add(i);r=Object.getPrototypeOf(r)}return Array.from(t)}var SM=ki(Ji()),cet=typeof document<\"u\"?SM.useLayoutEffect:SM.useEffect,D8=cet;var uet=[\"baseApiUrl\",\"maxParallelImageRequests\",\"workerClass\",\"workerCount\",\"workerUrl\"];function i4(e,t){for(let i of uet)i in t&&(e[i]=t[i]);let{RTLTextPlugin:r=\"https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js\"}=t;r&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()===\"unavailable\"&&e.setRTLTextPlugin(r,i=>{i&&console.error(i)},!0)}var Rf=K_.createContext(null);function n4(e,t,r){let i=(0,Hc.useContext)(P8),[s,n]=(0,Hc.useState)(null),o=(0,Hc.useRef)(),{current:c}=(0,Hc.useRef)({mapLib:null,map:null});(0,Hc.useEffect)(()=>{let w=e.mapLib,C=!0,R;return Promise.resolve(w||r).then(N=>{if(!C)return;if(!N)throw new Error(\"Invalid mapLib\");let j=\"Map\"in N?N:N.default;if(!j.Map)throw new Error(\"Invalid mapLib\");if(i4(j,e),!j.supported||j.supported(e))e.reuseMaps&&(R=I0.reuse(e,o.current)),R||(R=new I0(j.Map,e,o.current)),c.map=r4(R),c.mapLib=j,n(R),i?.onMapMount(c.map,e.id);else throw new Error(\"Map is not supported by this browser\")}).catch(N=>{let{onError:j}=e;j?j({type:\"error\",target:null,originalEvent:null,error:N}):console.error(N)}),()=>{C=!1,R&&(i?.onMapUnmount(e.id),e.reuseMaps?R.recycle():R.destroy())}},[]),D8(()=>{s&&s.setProps(e)}),(0,Hc.useImperativeHandle)(t,()=>c.map,[s]);let f=(0,Hc.useMemo)(()=>({position:\"relative\",width:\"100%\",height:\"100%\",...e.style}),[e.style]),_={height:\"100%\"};return K_.createElement(\"div\",{id:e.id,ref:o,style:f},s&&K_.createElement(Rf.Provider,{value:c},K_.createElement(\"div\",{\"mapboxgl-children\":\"\",style:_},e.children)))}var O8=ki(Ji()),B8=ki(bM()),bl=ki(Ji());var het=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function Jl(e,t){if(!e||!t)return;let r=e.style;for(let i in t){let s=t[i];Number.isFinite(s)&&!het.test(i)?r[i]=`${s}px`:r[i]=s}}function fet(e,t){let{map:r,mapLib:i}=(0,bl.useContext)(Rf),s=(0,bl.useRef)({props:e});s.current.props=e;let n=(0,bl.useMemo)(()=>{let Y=!1;O8.Children.forEach(e.children,K=>{K&&(Y=!0)});let rt={...e,element:Y?document.createElement(\"div\"):null},$=new i.Marker(rt);return $.setLngLat([e.longitude,e.latitude]),$.getElement().addEventListener(\"click\",K=>{var tt,ut;(ut=(tt=s.current.props).onClick)===null||ut===void 0||ut.call(tt,{type:\"click\",target:$,originalEvent:K})}),$.on(\"dragstart\",K=>{var tt,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(tt=s.current.props).onDragStart)===null||ut===void 0||ut.call(tt,Pt)}),$.on(\"drag\",K=>{var tt,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(tt=s.current.props).onDrag)===null||ut===void 0||ut.call(tt,Pt)}),$.on(\"dragend\",K=>{var tt,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(tt=s.current.props).onDragEnd)===null||ut===void 0||ut.call(tt,Pt)}),$},[]);(0,bl.useEffect)(()=>(n.addTo(r.getMap()),()=>{n.remove()}),[]);let{longitude:o,latitude:c,offset:f,style:_,draggable:w=!1,popup:C=null,rotation:R=0,rotationAlignment:N=\"auto\",pitchAlignment:j=\"auto\"}=e;return(0,bl.useEffect)(()=>{Jl(n.getElement(),_)},[_]),(0,bl.useImperativeHandle)(t,()=>n,[]),(n.getLngLat().lng!==o||n.getLngLat().lat!==c)&&n.setLngLat([o,c]),f&&!I8(n.getOffset(),f)&&n.setOffset(f),n.isDraggable()!==w&&n.setDraggable(w),n.getRotation()!==R&&n.setRotation(R),n.getRotationAlignment()!==N&&n.setRotationAlignment(N),n.getPitchAlignment()!==j&&n.setPitchAlignment(j),n.getPopup()!==C&&n.setPopup(C),(0,B8.createPortal)(e.children,n.getElement())}var det=(0,bl.memo)((0,bl.forwardRef)(fet));var z8=ki(bM()),$a=ki(Ji());function F8(e){return new Set(e?e.trim().split(/\\s+/):[])}function pet(e,t){let{map:r,mapLib:i}=(0,$a.useContext)(Rf),s=(0,$a.useMemo)(()=>document.createElement(\"div\"),[]),n=(0,$a.useRef)({props:e});n.current.props=e;let o=(0,$a.useMemo)(()=>{let c={...e},f=new i.Popup(c);return f.setLngLat([e.longitude,e.latitude]),f.once(\"open\",_=>{var w,C;(C=(w=n.current.props).onOpen)===null||C===void 0||C.call(w,_)}),f},[]);if((0,$a.useEffect)(()=>{let c=f=>{var _,w;(w=(_=n.current.props).onClose)===null||w===void 0||w.call(_,f)};return o.on(\"close\",c),o.setDOMContent(s).addTo(r.getMap()),()=>{o.off(\"close\",c),o.isOpen()&&o.remove()}},[]),(0,$a.useEffect)(()=>{Jl(o.getElement(),e.style)},[e.style]),(0,$a.useImperativeHandle)(t,()=>o,[]),o.isOpen()&&((o.getLngLat().lng!==e.longitude||o.getLngLat().lat!==e.latitude)&&o.setLngLat([e.longitude,e.latitude]),e.offset&&!Kl(o.options.offset,e.offset)&&o.setOffset(e.offset),(o.options.anchor!==e.anchor||o.options.maxWidth!==e.maxWidth)&&(o.options.anchor=e.anchor,o.setMaxWidth(e.maxWidth)),o.options.className!==e.className)){let c=F8(o.options.className),f=F8(e.className);for(let _ of c)f.has(_)||o.removeClassName(_);for(let _ of f)c.has(_)||o.addClassName(_);o.options.className=e.className}return(0,z8.createPortal)(e.children,s)}var Aet=(0,$a.memo)((0,$a.forwardRef)(pet));var TM=ki(Ji());var J_=ki(Ji());function met(e,t,r,i){let s=(0,J_.useContext)(Rf),n=(0,J_.useMemo)(()=>e(s),[]);return(0,J_.useEffect)(()=>{let o=i||r||t,c=typeof t==\"function\"&&typeof r==\"function\"?t:null,f=typeof r==\"function\"?r:typeof t==\"function\"?t:null,{map:_}=s;return _.hasControl(n)||(_.addControl(n,o?.position),c&&c(s)),()=>{f&&f(s),_.hasControl(n)&&_.removeControl(n)}},[]),n}var Lh=met;function get(e){let t=Lh(({mapLib:r})=>new r.AttributionControl(e),{position:e.position});return(0,TM.useEffect)(()=>{Jl(t._container,e.style)},[e.style]),null}var _et=(0,TM.memo)(get);var MM=ki(Ji());function yet(e){let t=Lh(({mapLib:r})=>new r.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return(0,MM.useEffect)(()=>{Jl(t._controlContainer,e.style)},[e.style]),null}var vet=(0,MM.memo)(yet);var Df=ki(Ji());function xet(e,t){let r=(0,Df.useRef)({props:e}),i=Lh(({mapLib:s})=>{let n=new s.GeolocateControl(e),o=n._setupUI;return n._setupUI=c=>{n._container.hasChildNodes()||o(c)},n.on(\"geolocate\",c=>{var f,_;(_=(f=r.current.props).onGeolocate)===null||_===void 0||_.call(f,c)}),n.on(\"error\",c=>{var f,_;(_=(f=r.current.props).onError)===null||_===void 0||_.call(f,c)}),n.on(\"outofmaxbounds\",c=>{var f,_;(_=(f=r.current.props).onOutOfMaxBounds)===null||_===void 0||_.call(f,c)}),n.on(\"trackuserlocationstart\",c=>{var f,_;(_=(f=r.current.props).onTrackUserLocationStart)===null||_===void 0||_.call(f,c)}),n.on(\"trackuserlocationend\",c=>{var f,_;(_=(f=r.current.props).onTrackUserLocationEnd)===null||_===void 0||_.call(f,c)}),n},{position:e.position});return r.current.props=e,(0,Df.useImperativeHandle)(t,()=>i,[]),(0,Df.useEffect)(()=>{Jl(i._container,e.style)},[e.style]),null}var bet=(0,Df.memo)((0,Df.forwardRef)(xet));var EM=ki(Ji());function wet(e){let t=Lh(({mapLib:r})=>new r.NavigationControl(e),{position:e.position});return(0,EM.useEffect)(()=>{Jl(t._container,e.style)},[e.style]),null}var Tet=(0,EM.memo)(wet);var ty=ki(Ji());function Met(e){let t=Lh(({mapLib:n})=>new n.ScaleControl(e),{position:e.position}),r=(0,ty.useRef)(e),i=r.current;r.current=e;let{style:s}=e;return e.maxWidth!==void 0&&e.maxWidth!==i.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==i.unit&&t.setUnit(e.unit),(0,ty.useEffect)(()=>{Jl(t._container,s)},[s]),null}var Eet=(0,ty.memo)(Met);var N1=ki(Ji());var Iet=ki(Ji()),U1=ki(Ji()),Cet=ki(Ji());var Let=Promise.resolve().then(()=>ki(U8())),ket=V8.forwardRef(function(t,r){return n4(t,r,Let)});var j8=ket;var Mo=ki(Ji());function OA(e,t){if(!e)throw new Error(t||\"loader assertion failed.\")}var Of={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document},Ret=Of.self||Of.window||Of.global||{},Det=Of.window||Of.self||Of.global||{},Oet=Of.global||Of.self||Of.window||{},Bet=Of.document||{};var C0=!!(typeof process!=\"object\"||String(process)!==\"[object process]\"||process.browser);var G8=typeof process<\"u\"&&process.version&&/v([0-9]*)/.exec(process.version),Fet=G8&&parseFloat(G8[1])||0;var W8=\"3.4.14\";function Xa(e,t){if(!e)throw new Error(t||\"loaders.gl assertion failed.\")}var Bf={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document},Zbt=Bf.self||Bf.window||Bf.global||{},Ybt=Bf.window||Bf.self||Bf.global||{},Qbt=Bf.global||Bf.self||Bf.window||{},$bt=Bf.document||{};var L0=typeof process!=\"object\"||String(process)!==\"[object process]\"||process.browser;var q8=typeof window<\"u\"&&typeof window.orientation<\"u\",H8=typeof process<\"u\"&&process.version&&/v([0-9]*)/.exec(process.version),Xbt=H8&&parseFloat(H8[1])||0;function BA(e){\"@babel/helpers - typeof\";return BA=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},BA(e)}function a4(e,t){if(BA(e)!=\"object\"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||\"default\");if(BA(i)!=\"object\")return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(t===\"string\"?String:Number)(e)}function l4(e){var t=a4(e,\"string\");return BA(t)==\"symbol\"?t:String(t)}function G(e,t,r){return t=l4(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var V1=class{constructor(t,r){G(this,\"name\",void 0),G(this,\"workerThread\",void 0),G(this,\"isRunning\",!0),G(this,\"result\",void 0),G(this,\"_resolve\",()=>{}),G(this,\"_reject\",()=>{}),this.name=t,this.workerThread=r,this.result=new Promise((i,s)=>{this._resolve=i,this._reject=s})}postMessage(t,r){this.workerThread.postMessage({source:\"loaders.gl\",type:t,payload:r})}done(t){Xa(this.isRunning),this.isRunning=!1,this._resolve(t)}error(t){Xa(this.isRunning),this.isRunning=!1,this._reject(t)}};var ey=class{terminate(){}};var c4=new Map;function Z8(e){Xa(e.source&&!e.url||!e.source&&e.url);let t=c4.get(e.source||e.url);return t||(e.url&&(t=zet(e.url),c4.set(e.url,t)),e.source&&(t=Y8(e.source),c4.set(e.source,t))),Xa(t),t}function zet(e){if(!e.startsWith(\"http\"))return e;let t=Net(e);return Y8(t)}function Y8(e){let t=new Blob([e],{type:\"application/javascript\"});return URL.createObjectURL(t)}function Net(e){return`try {\n importScripts('`.concat(e,`');\n} catch (error) {\n console.error(error);\n throw error;\n}`)}function u4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=arguments.length>2?arguments[2]:void 0,i=r||new Set;if(e){if(Q8(e))i.add(e);else if(Q8(e.buffer))i.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(t&&typeof e==\"object\")for(let s in e)u4(e[s],t,i)}}return r===void 0?Array.from(i):[]}function Q8(e){return e?e instanceof ArrayBuffer||typeof MessagePort<\"u\"&&e instanceof MessagePort||typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap||typeof OffscreenCanvas<\"u\"&&e instanceof OffscreenCanvas:!1}var h4=()=>{},FA=class{static isSupported(){return typeof Worker<\"u\"&&L0||typeof ey<\"u\"&&!L0}constructor(t){G(this,\"name\",void 0),G(this,\"source\",void 0),G(this,\"url\",void 0),G(this,\"terminated\",!1),G(this,\"worker\",void 0),G(this,\"onMessage\",void 0),G(this,\"onError\",void 0),G(this,\"_loadableURL\",\"\");let{name:r,source:i,url:s}=t;Xa(i||s),this.name=r,this.source=i,this.url=s,this.onMessage=h4,this.onError=n=>console.log(n),this.worker=L0?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=h4,this.onError=h4,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(t,r){r=r||u4(t),this.worker.postMessage(t,r)}_getErrorFromErrorEvent(t){let r=\"Failed to load \";return r+=\"worker \".concat(this.name,\" from \").concat(this.url,\". \"),t.message&&(r+=\"\".concat(t.message,\" in \")),t.lineno&&(r+=\":\".concat(t.lineno,\":\").concat(t.colno)),new Error(r)}_createBrowserWorker(){this._loadableURL=Z8({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error(\"No data received\"))},t.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},t.onmessageerror=r=>console.error(r),t}_createNodeWorker(){let t;if(this.url){let i=this.url.includes(\":/\")||this.url.startsWith(\"/\")?this.url:\"./\".concat(this.url);t=new ey(i,{eval:!1})}else if(this.source)t=new ey(this.source,{eval:!0});else throw new Error(\"no worker\");return t.on(\"message\",r=>{this.onMessage(r)}),t.on(\"error\",r=>{this.onError(r)}),t.on(\"exit\",r=>{}),t}};var j1=class{static isSupported(){return FA.isSupported()}constructor(t){G(this,\"name\",\"unnamed\"),G(this,\"source\",void 0),G(this,\"url\",void 0),G(this,\"maxConcurrency\",1),G(this,\"maxMobileConcurrency\",1),G(this,\"onDebug\",()=>{}),G(this,\"reuseWorkers\",!0),G(this,\"props\",{}),G(this,\"jobQueue\",[]),G(this,\"idleQueue\",[]),G(this,\"count\",0),G(this,\"isDestroyed\",!1),this.source=t.source,this.url=t.url,this.setProps(t)}destroy(){this.idleQueue.forEach(t=>t.destroy()),this.isDestroyed=!0}setProps(t){this.props={...this.props,...t},t.name!==void 0&&(this.name=t.name),t.maxConcurrency!==void 0&&(this.maxConcurrency=t.maxConcurrency),t.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=t.maxMobileConcurrency),t.reuseWorkers!==void 0&&(this.reuseWorkers=t.reuseWorkers),t.onDebug!==void 0&&(this.onDebug=t.onDebug)}async startJob(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(n,o,c)=>n.done(c),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(n,o)=>n.error(o),s=new Promise(n=>(this.jobQueue.push({name:t,onMessage:r,onError:i,onStart:n}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:\"Starting job\",name:r.name,workerThread:t,backlog:this.jobQueue.length});let i=new V1(r.name,t);t.onMessage=s=>r.onMessage(i,s.type,s.payload),t.onError=s=>r.onError(i,s),r.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(t.destroy(),this.count--):this.idleQueue.push(t),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}},zA=class e{static isSupported(){return FA.isSupported()}static getWorkerFarm(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e._workerFarm=e._workerFarm||new e({}),e._workerFarm.setProps(t),e._workerFarm}constructor(t){G(this,\"props\",void 0),G(this,\"workerPools\",new Map),this.props={...Uet},this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props={...this.props,...t};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:r,source:i,url:s}=t,n=this.workerPools.get(r);return n||(n=new j1({name:r,source:i,url:s}),n.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}};G(zA,\"_workerFarm\",void 0);var Vet=\"latest\";function f4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t[e.id]||{},i=\"\".concat(e.id,\"-worker.js\"),s=r.workerUrl;if(!s&&e.id===\"compression\"&&(s=t.workerUrl),t._workerType===\"test\"&&(s=\"modules/\".concat(e.module,\"/dist/\").concat(i)),!s){let n=e.version;n===\"latest\"&&(n=Vet);let o=n?\"@\".concat(n):\"\";s=\"https://unpkg.com/@loaders.gl/\".concat(e.module).concat(o,\"/dist/\").concat(i)}return Xa(s),s}function d4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:W8;Xa(e,\"no worker provided\");let r=e.version;return!(!t||!r)}function p4(e,t){return!zA.isSupported()||!L0&&!(t!=null&&t._nodeWorkers)?!1:e.worker&&t?.worker}async function A4(e,t,r,i,s){let n=e.id,o=f4(e,r),f=zA.getWorkerFarm(r).getWorkerPool({name:n,url:o});r=JSON.parse(JSON.stringify(r)),i=JSON.parse(JSON.stringify(i||{}));let _=await f.startJob(\"process-on-worker\",jet.bind(null,s));return _.postMessage(\"process\",{input:t,options:r,context:i}),await(await _.result).result}async function jet(e,t,r,i){switch(r){case\"done\":t.done(i);break;case\"error\":t.error(new Error(i.error));break;case\"process\":let{id:s,input:n,options:o}=i;try{let c=await e(n,o);t.postMessage(\"done\",{id:s,result:c})}catch(c){let f=c instanceof Error?c.message:\"unknown error\";t.postMessage(\"error\",{id:s,error:f})}break;default:console.warn(\"parse-with-worker unknown message \".concat(r))}}function m4(e,t,r){if(r=r||e.byteLength,e.byteLengthc instanceof ArrayBuffer?new Uint8Array(c):c),s=i.reduce((c,f)=>c+f.byteLength,0),n=new Uint8Array(s),o=0;for(let c of i)n.set(c,o),o+=c.byteLength;return n.buffer}async function _4(e){let t=[];for await(let r of e)t.push(r);return g4(...t)}function G1(){let e;if(typeof window<\"u\"&&window.performance)e=window.performance.now();else if(typeof process<\"u\"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var k0=class{constructor(t,r){this.name=void 0,this.type=void 0,this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=G1(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(G1()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var ry=class{constructor(t){this.id=void 0,this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"count\";return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let r of Object.values(this.stats))t(r)}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(r=>this._getOrCreate(r))}_getOrCreate(t){let{name:r,type:i}=t,s=this.stats[r];return s||(t instanceof k0?s=t:s=new k0(r,i),this.stats[r]=s),s}};var Get=\"Queued Requests\",Wet=\"Active Requests\",Het=\"Cancelled Requests\",qet=\"Queued Requests Ever\",Zet=\"Active Requests Ever\",Yet={id:\"request-scheduler\",throttleRequests:!0,maxRequests:6},iy=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};G(this,\"props\",void 0),G(this,\"stats\",void 0),G(this,\"activeRequestCount\",0),G(this,\"requestQueue\",[]),G(this,\"requestMap\",new Map),G(this,\"deferredUpdate\",null),this.props={...Yet,...t},this.stats=new ry({id:this.props.id}),this.stats.get(Get),this.stats.get(Wet),this.stats.get(Het),this.stats.get(qet),this.stats.get(Zet)}scheduleRequest(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:()=>0;if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let i={handle:t,priority:0,getPriority:r},s=new Promise(n=>(i.resolve=n,i));return this.requestQueue.push(i),this.requestMap.set(t,s),this._issueNewRequests(),s}_issueRequest(t){let{handle:r,resolve:i}=t,s=!1,n=()=>{s||(s=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,i?i({done:n}):Promise.resolve({done:n})}_issueNewRequests(){this.deferredUpdate||(this.deferredUpdate=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequestsAsync(){this.deferredUpdate=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let r=0;rr.priority-i.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var Qet=\"\",$8={};function y4(e){for(let t in $8)if(e.startsWith(t)){let r=$8[t];e=e.replace(t,r)}return!e.startsWith(\"http://\")&&!e.startsWith(\"https://\")&&(e=\"\".concat(Qet).concat(e)),e}function X8(e){return e&&typeof e==\"object\"&&e.isBuffer}function PM(e){if(X8(e))return e;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e==\"string\"){let t=e;return new TextEncoder().encode(t).buffer}if(e&&typeof e==\"object\"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error(\"toArrayBuffer\")}var R0={};dA(R0,{dirname:()=>Xet,filename:()=>$et,join:()=>Ket,resolve:()=>Jet});function K8(){var e;if(typeof process<\"u\"&&typeof process.cwd<\"u\")return process.cwd();let t=(e=window.location)===null||e===void 0?void 0:e.pathname;return t?.slice(0,t.lastIndexOf(\"/\")+1)||\"\"}function $et(e){let t=e?e.lastIndexOf(\"/\"):-1;return t>=0?e.substr(t+1):\"\"}function Xet(e){let t=e?e.lastIndexOf(\"/\"):-1;return t>=0?e.substr(0,t):\"\"}function Ket(){for(var e=arguments.length,t=new Array(e),r=0;r(n&&(s=s.replace(new RegExp(\"^\".concat(i)),\"\")),n!==t.length-1&&(s=s.replace(new RegExp(\"\".concat(i,\"$\")),\"\")),s)),t.join(i)}function Jet(){let e=[];for(let s=0;s=-1&&!r;s--){let n;s>=0?n=e[s]:(i===void 0&&(i=K8()),n=i),n.length!==0&&(t=\"\".concat(n,\"/\").concat(t),r=n.charCodeAt(0)===W1)}return t=trt(t,!r),r?\"/\".concat(t):t.length>0?t:\".\"}var W1=47,v4=46;function trt(e,t){let r=\"\",i=-1,s=0,n,o=!1;for(let c=0;c<=e.length;++c){if(c2){let f=r.length-1,_=f;for(;_>=0&&r.charCodeAt(_)!==W1;--_);if(_!==f){r=_===-1?\"\":r.slice(0,_),i=c,s=0,o=!1;continue}}else if(r.length===2||r.length===1){r=\"\",i=c,s=0,o=!1;continue}}t&&(r.length>0?r+=\"/..\":r=\"..\",o=!0)}else{let f=e.slice(i+1,c);r.length>0?r+=\"/\".concat(f):r=f,o=!1}i=c,s=0}else n===v4&&s!==-1?++s:s=-1}return r}var ert=e=>typeof e==\"boolean\",H1=e=>typeof e==\"function\",D0=e=>e!==null&&typeof e==\"object\",x4=e=>D0(e)&&e.constructor==={}.constructor;var J8=e=>e&&typeof e[Symbol.iterator]==\"function\",tU=e=>e&&typeof e[Symbol.asyncIterator]==\"function\";var Eu=e=>typeof Response<\"u\"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json;var Pu=e=>typeof Blob<\"u\"&&e instanceof Blob,eU=e=>e&&typeof e==\"object\"&&e.isBuffer;var rrt=e=>typeof ReadableStream<\"u\"&&e instanceof ReadableStream||D0(e)&&H1(e.tee)&&H1(e.cancel)&&H1(e.getReader);var irt=e=>D0(e)&&H1(e.read)&&H1(e.pipe)&&ert(e.readable),IM=e=>rrt(e)||irt(e);var nrt=/^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/,srt=/^([-\\w.]+\\/[-\\w.+]+)/;function rU(e){let t=srt.exec(e);return t?t[1]:e}function b4(e){let t=nrt.exec(e);return t?t[1]:\"\"}var iU=/\\?.*/;function nU(e){let t=e.match(iU);return t&&t[0]}function ny(e){return e.replace(iU,\"\")}function O0(e){return Eu(e)?e.url:Pu(e)?e.name||\"\":typeof e==\"string\"?e:\"\"}function q1(e){if(Eu(e)){let t=e,r=t.headers.get(\"content-type\")||\"\",i=ny(t.url);return rU(r)||b4(i)}return Pu(e)?e.type||\"\":typeof e==\"string\"?b4(e):\"\"}function sU(e){return Eu(e)?e.headers[\"content-length\"]||-1:Pu(e)?e.size:typeof e==\"string\"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function CM(e){if(Eu(e))return e;let t={},r=sU(e);r>=0&&(t[\"content-length\"]=String(r));let i=O0(e),s=q1(e);s&&(t[\"content-type\"]=s);let n=await art(e);n&&(t[\"x-first-bytes\"]=n),typeof e==\"string\"&&(e=new TextEncoder().encode(e));let o=new Response(e,{headers:t});return Object.defineProperty(o,\"url\",{value:i}),o}async function oU(e){if(!e.ok){let t=await ort(e);throw new Error(t)}}async function ort(e){let t=\"Failed to fetch resource \".concat(e.url,\" (\").concat(e.status,\"): \");try{let r=e.headers.get(\"Content-Type\"),i=e.statusText;r.includes(\"application/json\")&&(i+=\" \".concat(await e.text())),t+=i,t=t.length>60?\"\".concat(t.slice(0,60),\"...\"):t}catch{}return t}async function art(e){if(typeof e==\"string\")return\"data:,\".concat(e.slice(0,5));if(e instanceof Blob){let r=e.slice(0,5);return await new Promise(i=>{let s=new FileReader;s.onload=n=>{var o;return i(n==null||(o=n.target)===null||o===void 0?void 0:o.result)},s.readAsDataURL(r)})}if(e instanceof ArrayBuffer){let r=e.slice(0,5),i=lrt(r);return\"data:base64,\".concat(i)}return null}function lrt(e){let t=\"\",r=new Uint8Array(e);for(let i=0;i=0)}function kh(){return!(typeof process==\"object\"&&String(process)===\"[object process]\"&&!process.browser)||S4()}var crt=globalThis.self||globalThis.window||globalThis.global,sy=globalThis.window||globalThis.self||globalThis.global,urt=globalThis.document||{},B0=globalThis.process||{},hrt=globalThis.console,j2t=globalThis.navigator||{};var LM=typeof __VERSION__<\"u\"?__VERSION__:\"untranspiled source\",H2t=kh();function frt(e){try{let t=window[e],r=\"__storage_test__\";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var kM=class{constructor(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"sessionStorage\";this.storage=void 0,this.id=void 0,this.config=void 0,this.storage=frt(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}};function aU(e){let t;return e<10?t=\"\".concat(e.toFixed(2),\"ms\"):e<100?t=\"\".concat(e.toFixed(1),\"ms\"):e<1e3?t=\"\".concat(e.toFixed(0),\"ms\"):t=\"\".concat((e/1e3).toFixed(2),\"s\"),t}function lU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,r=Math.max(t-e.length,0);return\"\".concat(\" \".repeat(r)).concat(e)}function RM(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,s=e.src.replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\");e.width>i&&(r=Math.min(r,i/e.width));let n=e.width*r,o=e.height*r,c=[\"font-size:1px;\",\"padding:\".concat(Math.floor(o/2),\"px \").concat(Math.floor(n/2),\"px;\"),\"line-height:\".concat(o,\"px;\"),\"background:url(\".concat(s,\");\"),\"background-size:\".concat(n,\"px \").concat(o,\"px;\"),\"color:transparent;\"].join(\"\");return[\"\".concat(t,\" %c+\"),c]}var DM;(function(e){e[e.BLACK=30]=\"BLACK\",e[e.RED=31]=\"RED\",e[e.GREEN=32]=\"GREEN\",e[e.YELLOW=33]=\"YELLOW\",e[e.BLUE=34]=\"BLUE\",e[e.MAGENTA=35]=\"MAGENTA\",e[e.CYAN=36]=\"CYAN\",e[e.WHITE=37]=\"WHITE\",e[e.BRIGHT_BLACK=90]=\"BRIGHT_BLACK\",e[e.BRIGHT_RED=91]=\"BRIGHT_RED\",e[e.BRIGHT_GREEN=92]=\"BRIGHT_GREEN\",e[e.BRIGHT_YELLOW=93]=\"BRIGHT_YELLOW\",e[e.BRIGHT_BLUE=94]=\"BRIGHT_BLUE\",e[e.BRIGHT_MAGENTA=95]=\"BRIGHT_MAGENTA\",e[e.BRIGHT_CYAN=96]=\"BRIGHT_CYAN\",e[e.BRIGHT_WHITE=97]=\"BRIGHT_WHITE\"})(DM||(DM={}));var drt=10;function cU(e){return typeof e!=\"string\"?e:(e=e.toUpperCase(),DM[e]||DM.WHITE)}function uU(e,t,r){if(!kh&&typeof e==\"string\"){if(t){let i=cU(t);e=\"\\x1B[\".concat(i,\"m\").concat(e,\"\\x1B[39m\")}if(r){let i=cU(r);e=\"\\x1B[\".concat(i+drt,\"m\").concat(e,\"\\x1B[49m\")}}return e}function hU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[\"constructor\"],r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r),s=e;for(let n of i){let o=s[n];typeof o==\"function\"&&(t.find(c=>n===c)||(s[n]=o.bind(e)))}}function oy(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function F0(){let e;if(kh()&&sy.performance){var t,r;e=sy===null||sy===void 0||(t=sy.performance)===null||t===void 0||(r=t.now)===null||r===void 0?void 0:r.call(t)}else if(\"hrtime\"in B0){var i;let s=B0===null||B0===void 0||(i=B0.hrtime)===null||i===void 0?void 0:i.call(B0);e=s[0]*1e3+s[1]/1e6}else e=Date.now();return e}var ay={debug:kh()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},prt={enabled:!0,level:0};function Iu(){}var fU={},dU={once:!0},Ff=class{constructor(){let{id:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:\"\"};this.id=void 0,this.VERSION=LM,this._startTs=F0(),this._deltaTs=F0(),this._storage=void 0,this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=t,this.userData={},this._storage=new kM(\"__probe-\".concat(this.id,\"__\"),prt),this.timeStamp(\"\".concat(this.id,\" started\")),hU(this),Object.seal(this)}set level(t){this.setLevel(t)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((F0()-this._startTs).toPrecision(10))}getDelta(){return Number((F0()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:t}),this}setLevel(t){return this._storage.setConfiguration({level:t}),this}get(t){return this._storage.config[t]}set(t,r){this._storage.setConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){oy(t,r)}warn(t){return this._getLogFunction(0,t,ay.warn,arguments,dU)}error(t){return this._getLogFunction(0,t,ay.error,arguments)}deprecated(t,r){return this.warn(\"`\".concat(t,\"` is deprecated and will be removed in a later version. Use `\").concat(r,\"` instead\"))}removed(t,r){return this.error(\"`\".concat(t,\"` has been removed. Use `\").concat(r,\"` instead\"))}probe(t,r){return this._getLogFunction(t,r,ay.log,arguments,{time:!0,once:!0})}log(t,r){return this._getLogFunction(t,r,ay.debug,arguments)}info(t,r){return this._getLogFunction(t,r,console.info,arguments)}once(t,r){return this._getLogFunction(t,r,ay.debug||ay.info,arguments,dU)}table(t,r,i){return r?this._getLogFunction(t,r,console.table||Iu,i&&[i],{tag:_rt(r)}):Iu}image(t){let{logLevel:r,priority:i,image:s,message:n=\"\",scale:o=1}=t;return this._shouldLog(r||i)?kh()?grt({image:s,message:n,scale:o}):mrt({image:s,message:n,scale:o}):Iu}time(t,r){return this._getLogFunction(t,r,console.time?console.time:console.info)}timeEnd(t,r){return this._getLogFunction(t,r,console.timeEnd?console.timeEnd:console.info)}timeStamp(t,r){return this._getLogFunction(t,r,console.timeStamp||Iu)}group(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},s=pU({logLevel:t,message:r,opts:i}),{collapsed:n}=i;return s.method=(n?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._getLogFunction(t,\"\",console.groupEnd||Iu)}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&this.getLevel()>=AU(t)}_getLogFunction(t,r,i,s,n){if(this._shouldLog(t)){n=pU({logLevel:t,message:r,args:s,opts:n}),i=i||n.method,oy(i),n.total=this.getTotal(),n.delta=this.getDelta(),this._deltaTs=F0();let o=n.tag||n.message;if(n.once&&o)if(!fU[o])fU[o]=F0();else return Iu;return r=Art(this.id,n.message,n),i.bind(console,r,...n.args)}return Iu}};Ff.VERSION=LM;function AU(e){if(!e)return 0;let t;switch(typeof e){case\"number\":t=e;break;case\"object\":t=e.logLevel||e.priority||0;break;default:return 0}return oy(Number.isFinite(t)&&t>=0),t}function pU(e){let{logLevel:t,message:r}=e;e.logLevel=AU(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case\"string\":case\"function\":r!==void 0&&i.unshift(r),e.message=t;break;case\"object\":Object.assign(e,t);break;default:}typeof e.message==\"function\"&&(e.message=e.message());let s=typeof e.message;return oy(s===\"string\"||s===\"object\"),Object.assign(e,{args:i},e.opts)}function Art(e,t,r){if(typeof t==\"string\"){let i=r.time?lU(aU(r.total)):\"\";t=r.time?\"\".concat(e,\": \").concat(i,\" \").concat(t):\"\".concat(e,\": \").concat(t),t=uU(t,r.color,r.background)}return t}function mrt(e){let{image:t,message:r=\"\",scale:i=1}=e;return console.warn(\"removed\"),Iu}function grt(e){let{image:t,message:r=\"\",scale:i=1}=e;if(typeof t==\"string\"){let n=new Image;return n.onload=()=>{let o=RM(n,r,i);console.log(...o)},n.src=t,Iu}let s=t.nodeName||\"\";if(s.toLowerCase()===\"img\")return console.log(...RM(t,r,i)),Iu;if(s.toLowerCase()===\"canvas\"){let n=new Image;return n.onload=()=>console.log(...RM(n,r,i)),n.src=t.toDataURL(),Iu}return Iu}function _rt(e){for(let t in e)for(let r in e[t])return r||\"untitled\";return\"empty\"}var mSt=new Ff({id:\"@probe.gl/log\"});var T4=new Ff({id:\"loaders.gl\"}),OM=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},BM=class{constructor(){G(this,\"console\",void 0),this.console=console}log(){for(var t=arguments.length,r=new Array(t),i=0;i{let e=E4();return e.globalOptions=e.globalOptions||{...M4},e.globalOptions};function yU(e,t,r,i){return r=r||[],r=Array.isArray(r)?r:[r],yrt(e,r),xrt(t,e,i)}function yrt(e,t){gU(e,null,M4,mU,t);for(let r of t){let i=e&&e[r.id]||{},s=r.options&&r.options[r.id]||{},n=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};gU(i,r.id,s,n,t)}}function gU(e,t,r,i,s){let n=t||\"Top level\",o=t?\"\".concat(t,\".\"):\"\";for(let c in e){let f=!t&&D0(e[c]),_=c===\"baseUri\"&&!t,w=c===\"workerUrl\"&&t;if(!(c in r)&&!_&&!w){if(c in i)T4.warn(\"\".concat(n,\" loader option '\").concat(o).concat(c,\"' no longer supported, use '\").concat(i[c],\"'\"))();else if(!f){let C=vrt(c,s);T4.warn(\"\".concat(n,\" loader option '\").concat(o).concat(c,\"' not recognized. \").concat(C))()}}}}function vrt(e,t){let r=e.toLowerCase(),i=\"\";for(let s of t)for(let n in s.options){if(e===n)return\"Did you mean '\".concat(s.id,\".\").concat(n,\"'?\");let o=n.toLowerCase();(r.startsWith(o)||o.startsWith(r))&&(i=i||\"Did you mean '\".concat(s.id,\".\").concat(n,\"'?\"))}return i}function xrt(e,t,r){let s={...e.options||{}};return brt(s,r),s.log===null&&(s.log=new OM),_U(s,P4()),_U(s,t),s}function _U(e,t){for(let r in t)if(r in t){let i=t[r];x4(i)&&x4(e[r])?e[r]={...e[r],...t[r]}:e[r]=t[r]}}function brt(e,t){t&&!(\"baseUri\"in e)&&(e.baseUri=t)}function Z1(e){var t;return e?(Array.isArray(e)&&(e=e[0]),Array.isArray((t=e)===null||t===void 0?void 0:t.extensions)):!1}function Y1(e){var t,r;OA(e,\"null loader\"),OA(Z1(e),\"invalid loader\");let i;return Array.isArray(e)&&(i=e[1],e=e[0],e={...e,options:{...e.options,...i}}),((t=e)!==null&&t!==void 0&&t.parseTextSync||(r=e)!==null&&r!==void 0&&r.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var vU=()=>{let e=E4();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function I4(e){let t=vU();e=Array.isArray(e)?e:[e];for(let r of e){let i=Y1(r);t.find(s=>i===s)||t.unshift(i)}}function xU(){return vU()}var bU=new Ff({id:\"loaders.gl\"});var wrt=/\\.([^.]+)$/;async function TU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(!MU(e))return null;let s=wU(e,t,{...r,nothrow:!0},i);if(s)return s;if(Pu(e)&&(e=await e.slice(0,10).arrayBuffer(),s=wU(e,t,r,i)),!s&&!(r!=null&&r.nothrow))throw new Error(EU(e));return s}function wU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(!MU(e))return null;if(t&&!Array.isArray(t))return Y1(t);let s=[];t&&(s=s.concat(t)),r!=null&&r.ignoreRegisteredLoaders||s.push(...xU()),Trt(s);let n=Srt(e,s,r,i);if(!n&&!(r!=null&&r.nothrow))throw new Error(EU(e));return n}function Srt(e,t,r,i){let s=O0(e),n=q1(e),o=ny(s)||i?.url,c=null,f=\"\";if(r!=null&&r.mimeType&&(c=C4(t,r?.mimeType),f=\"match forced by supplied MIME type \".concat(r?.mimeType)),c=c||Mrt(t,o),f=f||(c?\"matched url \".concat(o):\"\"),c=c||C4(t,n),f=f||(c?\"matched MIME type \".concat(n):\"\"),c=c||Prt(t,e),f=f||(c?\"matched initial data \".concat(PU(e)):\"\"),c=c||C4(t,r?.fallbackMimeType),f=f||(c?\"matched fallback MIME type \".concat(n):\"\"),f){var _;bU.log(1,\"selectLoader selected \".concat((_=c)===null||_===void 0?void 0:_.name,\": \").concat(f,\".\"))}return c}function MU(e){return!(e instanceof Response&&e.status===204)}function EU(e){let t=O0(e),r=q1(e),i=\"No valid loader found (\";i+=t?\"\".concat(R0.filename(t),\", \"):\"no url provided, \",i+=\"MIME type: \".concat(r?'\"'.concat(r,'\"'):\"not provided\",\", \");let s=e?PU(e):\"\";return i+=s?' first bytes: \"'.concat(s,'\"'):\"first bytes: not available\",i+=\")\",i}function Trt(e){for(let t of e)Y1(t)}function Mrt(e,t){let r=t&&wrt.exec(t),i=r&&r[1];return i?Ert(e,i):null}function Ert(e,t){t=t.toLowerCase();for(let r of e)for(let i of r.extensions)if(i.toLowerCase()===t)return r;return null}function C4(e,t){for(let r of e)if(r.mimeTypes&&r.mimeTypes.includes(t)||t===\"application/x.\".concat(r.id))return r;return null}function Prt(e,t){if(!t)return null;for(let r of e)if(typeof t==\"string\"){if(Irt(t,r))return r}else if(ArrayBuffer.isView(t)){if(SU(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer&&SU(t,0,r))return r;return null}function Irt(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(i=>e.startsWith(i))}function SU(e,t,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>Crt(e,t,r,s))}function Crt(e,t,r,i){if(i instanceof ArrayBuffer)return m4(i,e,i.byteLength);switch(typeof i){case\"function\":return i(e,r);case\"string\":let s=L4(e,t,i.length);return i===s;default:return!1}}function PU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5;return typeof e==\"string\"?e.slice(0,t):ArrayBuffer.isView(e)?L4(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?L4(e,0,t):\"\"}function L4(e,t,r){if(e.byteLength1&&arguments[1]!==void 0?arguments[1]:{};return function*(){let{chunkSize:r=262144}=t,i=0;for(;iw4(s,i):t!=null&&t.fetch?t?.fetch:w4}function OU(e,t,r){if(r)return r;let i={fetch:FM(t,e),...e};if(i.url){let s=ny(i.url);i.baseUrl=s,i.queryString=nU(i.url),i.filename=R0.filename(s),i.baseUrl=R0.dirname(s)}return Array.isArray(i.loaders)||(i.loaders=null),i}function BU(e,t){if(!t&&e&&!Array.isArray(e))return e;let r;if(e&&(r=Array.isArray(e)?e:[e]),t&&t.loaders){let i=Array.isArray(t.loaders)?t.loaders:[t.loaders];r=r?[...r,...i]:i}return r&&r.length?r:null}async function zM(e,t,r,i){Xa(!i||typeof i==\"object\"),t&&!Array.isArray(t)&&!Z1(t)&&(i=void 0,r=t,t=void 0),e=await e,r=r||{};let s=O0(e),o=BU(t,i),c=await TU(e,o,r);return c?(r=yU(r,c,o,s),i=OU({url:s,parse:zM,loaders:o},r,i||null),await Drt(c,e,r,i)):null}async function Drt(e,t,r,i){if(d4(e),Eu(t)){let s=t,{ok:n,redirected:o,status:c,statusText:f,type:_,url:w}=s,C=Object.fromEntries(s.headers.entries());i.response={headers:C,ok:n,redirected:o,status:c,statusText:f,type:_,url:w}}if(t=await DU(t,e,r),e.parseTextSync&&typeof t==\"string\")return r.dataType=\"text\",e.parseTextSync(t,r,i,e);if(p4(e,r))return await A4(e,t,r,i,zM);if(e.parseText&&typeof t==\"string\")return await e.parseText(t,r,i,e);if(e.parse)return await e.parse(t,r,i,e);throw Xa(!e.parseSync),new Error(\"\".concat(e.id,\" loader - no parser found and worker is disabled\"))}async function NA(e,t,r,i){!Array.isArray(t)&&!Z1(t)&&(i=void 0,r=t,t=void 0);let s=FM(r),n=e;return typeof e==\"string\"&&(n=await s(e)),Pu(e)&&(n=await s(e)),await zM(n,t,r)}var FU=\"3.4.14\";var{_parseImageNode:Ort}=globalThis,R4=typeof Image<\"u\",D4=typeof ImageBitmap<\"u\",Brt=!!Ort,O4=C0?!0:Brt;function zU(e){switch(e){case\"auto\":return D4||R4||O4;case\"imagebitmap\":return D4;case\"image\":return R4;case\"data\":return O4;default:throw new Error(\"@loaders.gl/images: image \".concat(e,\" not supported in this environment\"))}}function NU(){if(D4)return\"imagebitmap\";if(R4)return\"image\";if(O4)return\"data\";throw new Error(\"Install '@loaders.gl/polyfills' to parse images under Node.js\")}function Frt(e){let t=zrt(e);if(!t)throw new Error(\"Not an image\");return t}function UU(e){switch(Frt(e)){case\"data\":return e;case\"image\":case\"imagebitmap\":let t=document.createElement(\"canvas\"),r=t.getContext(\"2d\");if(!r)throw new Error(\"getImageData\");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error(\"getImageData\")}}function zrt(e){return typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap?\"imagebitmap\":typeof Image<\"u\"&&e instanceof Image?\"image\":e&&typeof e==\"object\"&&e.data&&e.width&&e.height?\"data\":null}var Nrt=/^data:image\\/svg\\+xml/,Urt=/\\.svg((\\?|#).*)?$/;function NM(e){return e&&(Nrt.test(e)||Urt.test(e))}function VU(e,t){if(NM(t)){let i=new TextDecoder().decode(e);try{typeof unescape==\"function\"&&typeof encodeURIComponent==\"function\"&&(i=unescape(encodeURIComponent(i)))}catch(n){throw new Error(n.message)}return\"data:image/svg+xml;base64,\".concat(btoa(i))}return B4(e,t)}function B4(e,t){if(NM(t))throw new Error(\"SVG cannot be parsed directly to imagebitmap\");return new Blob([new Uint8Array(e)])}async function UM(e,t,r){let i=VU(e,r),s=self.URL||self.webkitURL,n=typeof i!=\"string\"&&s.createObjectURL(i);try{return await Vrt(n||i,t)}finally{n&&s.revokeObjectURL(n)}}async function Vrt(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((i,s)=>{try{r.onload=()=>i(r),r.onerror=n=>s(new Error(\"Could not load image \".concat(e,\": \").concat(n)))}catch(n){s(n)}})}var jrt={},jU=!0;async function GU(e,t,r){let i;NM(r)?i=await UM(e,t,r):i=B4(e,r);let s=t&&t.imagebitmap;return await Grt(i,s)}async function Grt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if((Wrt(t)||!jU)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),jU=!1}return await createImageBitmap(e)}function Wrt(e){for(let t in e||jrt)return!1;return!0}function WU(e){return!Yrt(e,\"ftyp\",4)||!(e[8]&96)?null:Hrt(e)}function Hrt(e){switch(qrt(e,8,12).replace(\"\\0\",\" \").trim()){case\"avif\":case\"avis\":return{extension:\"avif\",mimeType:\"image/avif\"};default:return null}}function qrt(e,t,r){return String.fromCharCode(...e.slice(t,r))}function Zrt(e){return[...e].map(t=>t.charCodeAt(0))}function Yrt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=Zrt(t);for(let s=0;s=24&&t.getUint32(0,zf)===2303741511?{mimeType:\"image/png\",width:t.getUint32(16,zf),height:t.getUint32(20,zf)}:null}function Xrt(e){let t=$1(e);return t.byteLength>=10&&t.getUint32(0,zf)===1195984440?{mimeType:\"image/gif\",width:t.getUint16(6,Q1),height:t.getUint16(8,Q1)}:null}function Krt(e){let t=$1(e);return t.byteLength>=14&&t.getUint16(0,zf)===16973&&t.getUint32(2,Q1)===t.byteLength?{mimeType:\"image/bmp\",width:t.getUint32(18,Q1),height:t.getUint32(22,Q1)}:null}function Jrt(e){let t=$1(e);if(!(t.byteLength>=3&&t.getUint16(0,zf)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:s}=tit(),n=2;for(;n+9!!VM(new DataView(e))],options:nit};function X1(e){if(typeof window<\"u\"&&typeof window.process==\"object\"&&window.process.type===\"renderer\"||typeof process<\"u\"&&typeof process.versions==\"object\"&&process.versions.electron)return!0;let t=typeof navigator==\"object\"&&typeof navigator.userAgent==\"string\"&&navigator.userAgent,r=e||t;return!!(r&&r.indexOf(\"Electron\")>=0)}function wo(){return!(typeof process==\"object\"&&String(process)===\"[object process]\"&&!process.browser)||X1()}var UA={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document,process:typeof process==\"object\"&&process};var sit=UA.self||UA.window||UA.global,ly=UA.window||UA.self||UA.global,oit=UA.document||{},z0=UA.process||{};var jM=typeof __VERSION__<\"u\"?__VERSION__:\"untranspiled source\",dMt=wo();var z4=globalThis;function cy(e){if(!e&&!wo())return\"Node\";if(X1(e))return\"Electron\";let r=e||(typeof navigator<\"u\"?navigator:{}).userAgent||\"\";if(r.indexOf(\"Edge\")>-1)return\"Edge\";let i=r.indexOf(\"MSIE \")!==-1,s=r.indexOf(\"Trident/\")!==-1;return i||s?\"IE\":z4.chrome?\"Chrome\":z4.safari?\"Safari\":z4.mozInnerScreenX?\"Firefox\":\"Unknown\"}function ait(e){try{let t=window[e],r=\"__storage_test__\";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var GM=class{constructor(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"sessionStorage\";G(this,\"storage\",void 0),G(this,\"id\",void 0),G(this,\"config\",void 0),this.storage=ait(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}};function ZU(e){let t;return e<10?t=\"\".concat(e.toFixed(2),\"ms\"):e<100?t=\"\".concat(e.toFixed(1),\"ms\"):e<1e3?t=\"\".concat(e.toFixed(0),\"ms\"):t=\"\".concat((e/1e3).toFixed(2),\"s\"),t}function YU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,r=Math.max(t-e.length,0);return\"\".concat(\" \".repeat(r)).concat(e)}function WM(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,s=e.src.replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\");e.width>i&&(r=Math.min(r,i/e.width));let n=e.width*r,o=e.height*r,c=[\"font-size:1px;\",\"padding:\".concat(Math.floor(o/2),\"px \").concat(Math.floor(n/2),\"px;\"),\"line-height:\".concat(o,\"px;\"),\"background:url(\".concat(s,\");\"),\"background-size:\".concat(n,\"px \").concat(o,\"px;\"),\"color:transparent;\"].join(\"\");return[\"\".concat(t,\" %c+\"),c]}var HM;(function(e){e[e.BLACK=30]=\"BLACK\",e[e.RED=31]=\"RED\",e[e.GREEN=32]=\"GREEN\",e[e.YELLOW=33]=\"YELLOW\",e[e.BLUE=34]=\"BLUE\",e[e.MAGENTA=35]=\"MAGENTA\",e[e.CYAN=36]=\"CYAN\",e[e.WHITE=37]=\"WHITE\",e[e.BRIGHT_BLACK=90]=\"BRIGHT_BLACK\",e[e.BRIGHT_RED=91]=\"BRIGHT_RED\",e[e.BRIGHT_GREEN=92]=\"BRIGHT_GREEN\",e[e.BRIGHT_YELLOW=93]=\"BRIGHT_YELLOW\",e[e.BRIGHT_BLUE=94]=\"BRIGHT_BLUE\",e[e.BRIGHT_MAGENTA=95]=\"BRIGHT_MAGENTA\",e[e.BRIGHT_CYAN=96]=\"BRIGHT_CYAN\",e[e.BRIGHT_WHITE=97]=\"BRIGHT_WHITE\"})(HM||(HM={}));function QU(e){return typeof e==\"string\"?HM[e.toUpperCase()]||HM.WHITE:e}function $U(e,t,r){return!wo&&typeof e==\"string\"&&(t&&(t=QU(t),e=\"\\x1B[\".concat(t,\"m\").concat(e,\"\\x1B[39m\")),r&&(t=QU(r),e=\"\\x1B[\".concat(r+10,\"m\").concat(e,\"\\x1B[49m\"))),e}function XU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[\"constructor\"],r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r);for(let s of i)typeof e[s]==\"function\"&&(t.find(n=>s===n)||(e[s]=e[s].bind(e)))}function uy(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function N0(){let e;if(wo&&\"performance\"in ly){var t,r;e=ly===null||ly===void 0||(t=ly.performance)===null||t===void 0||(r=t.now)===null||r===void 0?void 0:r.call(t)}else if(\"hrtime\"in z0){var i;let s=z0===null||z0===void 0||(i=z0.hrtime)===null||i===void 0?void 0:i.call(z0);e=s[0]*1e3+s[1]/1e6}else e=Date.now();return e}var hy={debug:wo&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},lit={enabled:!0,level:0};function Cu(){}var KU={},JU={once:!0},Nf=class{constructor(){let{id:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:\"\"};G(this,\"id\",void 0),G(this,\"VERSION\",jM),G(this,\"_startTs\",N0()),G(this,\"_deltaTs\",N0()),G(this,\"_storage\",void 0),G(this,\"userData\",{}),G(this,\"LOG_THROTTLE_TIMEOUT\",0),this.id=t,this.userData={},this._storage=new GM(\"__probe-\".concat(this.id,\"__\"),lit),this.timeStamp(\"\".concat(this.id,\" started\")),XU(this),Object.seal(this)}set level(t){this.setLevel(t)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((N0()-this._startTs).toPrecision(10))}getDelta(){return Number((N0()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:t}),this}setLevel(t){return this._storage.setConfiguration({level:t}),this}get(t){return this._storage.config[t]}set(t,r){this._storage.setConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){uy(t,r)}warn(t){return this._getLogFunction(0,t,hy.warn,arguments,JU)}error(t){return this._getLogFunction(0,t,hy.error,arguments)}deprecated(t,r){return this.warn(\"`\".concat(t,\"` is deprecated and will be removed in a later version. Use `\").concat(r,\"` instead\"))}removed(t,r){return this.error(\"`\".concat(t,\"` has been removed. Use `\").concat(r,\"` instead\"))}probe(t,r){return this._getLogFunction(t,r,hy.log,arguments,{time:!0,once:!0})}log(t,r){return this._getLogFunction(t,r,hy.debug,arguments)}info(t,r){return this._getLogFunction(t,r,console.info,arguments)}once(t,r){for(var i=arguments.length,s=new Array(i>2?i-2:0),n=2;n2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},s=tV({logLevel:t,message:r,opts:i}),{collapsed:n}=i;return s.method=(n?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._getLogFunction(t,\"\",console.groupEnd||Cu)}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&this.getLevel()>=eV(t)}_getLogFunction(t,r,i,s,n){if(this._shouldLog(t)){n=tV({logLevel:t,message:r,args:s,opts:n}),i=i||n.method,uy(i),n.total=this.getTotal(),n.delta=this.getDelta(),this._deltaTs=N0();let o=n.tag||n.message;if(n.once)if(!KU[o])KU[o]=N0();else return Cu;return r=cit(this.id,n.message,n),i.bind(console,r,...n.args)}return Cu}};G(Nf,\"VERSION\",jM);function eV(e){if(!e)return 0;let t;switch(typeof e){case\"number\":t=e;break;case\"object\":t=e.logLevel||e.priority||0;break;default:return 0}return uy(Number.isFinite(t)&&t>=0),t}function tV(e){let{logLevel:t,message:r}=e;e.logLevel=eV(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case\"string\":case\"function\":r!==void 0&&i.unshift(r),e.message=t;break;case\"object\":Object.assign(e,t);break;default:}typeof e.message==\"function\"&&(e.message=e.message());let s=typeof e.message;return uy(s===\"string\"||s===\"object\"),Object.assign(e,{args:i},e.opts)}function cit(e,t,r){if(typeof t==\"string\"){let i=r.time?YU(ZU(r.total)):\"\";t=r.time?\"\".concat(e,\": \").concat(i,\" \").concat(t):\"\".concat(e,\": \").concat(t),t=$U(t,r.color,r.background)}return t}function uit(e){let{image:t,message:r=\"\",scale:i=1}=e;return console.warn(\"removed\"),Cu}function hit(e){let{image:t,message:r=\"\",scale:i=1}=e;if(typeof t==\"string\"){let n=new Image;return n.onload=()=>{let o=WM(n,r,i);console.log(...o)},n.src=t,Cu}let s=t.nodeName||\"\";if(s.toLowerCase()===\"img\")return console.log(...WM(t,r,i)),Cu;if(s.toLowerCase()===\"canvas\"){let n=new Image;return n.onload=()=>console.log(...WM(n,r,i)),n.src=t.toDataURL(),Cu}return Cu}function fit(e){for(let t in e)for(let r in e[t])return r||\"untitled\";return\"empty\"}var qMt=new Nf({id:\"@probe.gl/log\"});var nr=new Nf({id:\"deck\"});var N4={};function rV(e){N4=e}function Cs(e,t,r,i){nr.level>0&&N4[e]&&N4[e].call(null,t,r,i)}function dit(e){let t=e[0],r=e[e.length-1];return t===\"{\"&&r===\"}\"||t===\"[\"&&r===\"]\"}var iV={id:\"JSON\",name:\"JSON\",module:\"\",version:\"\",options:{},extensions:[\"json\",\"geojson\"],mimeTypes:[\"application/json\",\"application/geo+json\"],testText:dit,parseTextSync:JSON.parse};function pit(){let e=\"8.9.34\",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(\"deck.gl - multiple versions detected: \".concat(t,\" vs \").concat(e));return t||(nr.log(1,\"deck.gl \".concat(e))(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:nr,_registerLoggers:rV},I4([iV,[F4,{imagebitmap:{premultiplyAlpha:\"none\"}}]])),e}var nV=pit();var Yr={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(Yr,\"IDENTITY\",{get:()=>(nr.deprecated(\"COORDINATE_SYSTEM.IDENTITY\",\"COORDINATE_SYSTEM.CARTESIAN\")(),0)});var Ka={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},Ko={common:0,meters:1,pixels:2},U4={click:{handler:\"onClick\"},panstart:{handler:\"onDragStart\"},panmove:{handler:\"onDrag\"},panend:{handler:\"onDragEnd\"}};var je=new Nf({id:\"luma.gl\"});function Zs(e,t){if(!e)throw new Error(t||\"luma.gl: assertion failed.\")}var Ait=\"Invalid WebGLRenderingContext\";var mit=\"Requires WebGL2\";function Xd(e){return typeof WebGLRenderingContext<\"u\"&&e instanceof WebGLRenderingContext||typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&Number.isFinite(e._version))}function hr(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function V4(e){return hr(e)?e:null}function Kd(e){return Zs(Xd(e),Ait),e}function qn(e){return Zs(hr(e),mit),e}var K1={};function git(e){globalThis.console&&globalThis.console.error&&globalThis.console.error(e)}function _it(e){globalThis.console&&globalThis.console.log&&globalThis.console.log(e)}function yit(e,t){K1[e]=!0,t!==void 0&&git(t)}function vit(e){let t=e.getError;e.getError=function(){let i;do i=t.apply(e),i!==0&&(K1[i]=!0);while(i!==0);for(i in K1)if(K1[i])return delete K1[i],parseInt(i,10);return 0}}var J1=function e(t){let r=t.gl;this.ext=t,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(t.maxVertexAttribs);for(let i=0;i{_it(\"OESVertexArrayObject emulation library context restored\"),r.reset_()},!0),this.reset_()};U0.prototype.VERTEX_ARRAY_BINDING_OES=34229;U0.prototype.reset_=function(){if(this.vertexArrayObjects!==void 0)for(let i=0;ihr(e)?void 0:0,Cit={3074:e=>hr(e)?void 0:36064,[Sit]:e=>hr(e)?void 0:Tit,35977:zn,32937:zn,[Mit]:(e,t)=>{let r=hr(e)?e.getExtension(bit):e.getExtension(xit);return r&&r.GPU_DISJOINT_EXT?t(r.GPU_DISJOINT_EXT):0},[Pit]:(e,t)=>{let r=e.getExtension(lV);return t(r&&r.UNMASKED_VENDOR_WEBGL||7936)},[Iit]:(e,t)=>{let r=e.getExtension(lV);return t(r&&r.UNMASKED_RENDERER_WEBGL||7937)},[Eit]:(e,t)=>{let r=e.luma.extensions[wit];return r?t(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1},32883:zn,35071:zn,37447:zn,36063:(e,t)=>{if(!hr(e)){let r=e.getExtension(aV);return r?t(r.MAX_COLOR_ATTACHMENTS_WEBGL):0}},35379:zn,35374:zn,35377:zn,34852:e=>{if(!hr(e)){let t=e.getExtension(aV);return t?t.MAX_DRAW_BUFFERS_WEBGL:0}},36203:e=>e.getExtension(oV)?2147483647:65535,33001:e=>e.getExtension(oV)?16777216:65535,33e3:e=>16777216,37157:zn,35373:zn,35657:zn,36183:zn,37137:zn,34045:zn,35978:zn,35979:zn,35968:zn,35376:zn,35375:zn,35659:zn,37154:zn,35371:zn,35658:zn,35076:zn,35077:zn,35380:zn};function cV(e,t,r){let i=Cit[r],s=typeof i==\"function\"?i(e,t,r):i;return s!==void 0?s:t(r)}var Lit=\"OES_vertex_array_object\",uV=\"ANGLE_instanced_arrays\",kit=\"WEBGL_draw_buffers\",Rit=\"EXT_disjoint_timer_query\",Dit=\"EXT_texture_filter_anisotropic\",Oit=\"VertexArray requires WebGL2 or OES_vertex_array_object extension\";function Bit(e,t){return{webgl2:hr(e),ext:e.getExtension(t)}}var j4={[Lit]:{meta:{suffix:\"OES\"},createVertexArray:()=>{Zs(!1,Oit)},deleteVertexArray:()=>{},bindVertexArray:()=>{},isVertexArray:()=>!1},[uV]:{meta:{suffix:\"ANGLE\"},vertexAttribDivisor(e,t){Zs(t===0,\"WebGL instanced rendering not supported\")},drawElementsInstanced:()=>{},drawArraysInstanced:()=>{}},[kit]:{meta:{suffix:\"WEBGL\"},drawBuffers:()=>{Zs(!1)}},[Rit]:{meta:{suffix:\"EXT\"},createQuery:()=>{Zs(!1)},deleteQuery:()=>{Zs(!1)},beginQuery:()=>{Zs(!1)},endQuery:()=>{},getQuery(e,t){return this.getQueryObject(e,t)},getQueryParameter(e,t){return this.getQueryObject(e,t)},getQueryObject:()=>{}}},qM={readBuffer:(e,t,r)=>{hr(e)&&t(r)},getVertexAttrib:(e,t,r,i)=>{let{webgl2:s,ext:n}=Bit(e,uV),o;switch(i){case 35069:o=s?void 0:!1;break;case 35070:o=!s&&!n?0:void 0;break;default:}return o!==void 0?o:t(r,i)},getProgramParameter:(e,t,r,i)=>{if(!hr(e))switch(i){case 35967:return 35981;case 35971:return 0;case 35382:return 0;default:}return t(r,i)},getInternalformatParameter:(e,t,r,i,s)=>{if(!hr(e))switch(s){case 32937:return new Int32Array([0]);default:}return e.getInternalformatParameter(r,i,s)},getTexParameter(e,t,r,i){switch(i){case 34046:let{extensions:s}=e.luma,n=s[Dit];i=n&&n.TEXTURE_MAX_ANISOTROPY_EXT||34046;break;default:}return t(r,i)},getParameter:cV,hint(e,t,r,i){return t(r,i)}};function hV(e){e.luma=e.luma||{};let{luma:t}=e;return t.polyfilled||(sV(e),Fit(e),Nit(e,j4),zit(e,{target:t,target2:e}),t.polyfilled=!0),e}globalThis.polyfillContext=hV;function Fit(e){e.luma.extensions={};let t=e.getSupportedExtensions()||[];for(let r of t)e.luma[r]=e.getExtension(r)}function zit(e,t){let{target:r,target2:i}=t;Object.keys(qM).forEach(s=>{if(typeof qM[s]==\"function\"){let n=e[s]?e[s].bind(e):()=>{},o=qM[s].bind(null,e,n);r[s]=o,i[s]=o}})}function Nit(e,t){for(let r of Object.getOwnPropertyNames(t))r!==\"overrides\"&&Uit(e,{extension:r,target:e.luma,target2:e})}function Uit(e,t){let{extension:r,target:i,target2:s}=t,n=j4[r];Zs(n);let{meta:o={}}=n,{suffix:c=\"\"}=o,f=e.getExtension(r);for(let _ of Object.keys(n)){let w=\"\".concat(_).concat(c),C=null;_===\"meta\"||typeof e[_]==\"function\"||(f&&typeof f[w]==\"function\"?C=function(){return f[w](...arguments)}:typeof n[_]==\"function\"&&(C=n[_].bind(i))),C&&(i[_]=C,s[_]=C)}}var eb={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,36006:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],3333:4,3317:4,37440:!1,37441:!1,37443:37444,35723:4352,36010:null,35977:!1,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},VA=(e,t,r)=>t?e.enable(r):e.disable(r),fV=(e,t,r)=>e.hint(r,t),qc=(e,t,r)=>e.pixelStorei(r,t),Vit=(e,t)=>{let r=hr(e)?36009:36160;return e.bindFramebuffer(r,t)},jit=(e,t)=>e.bindFramebuffer(36008,t);function tb(e){return Array.isArray(e)||ArrayBuffer.isView(e)}var dV={3042:VA,32773:(e,t)=>e.blendColor(...t),32777:\"blendEquation\",34877:\"blendEquation\",32969:\"blendFunc\",32968:\"blendFunc\",32971:\"blendFunc\",32970:\"blendFunc\",3106:(e,t)=>e.clearColor(...t),3107:(e,t)=>e.colorMask(...t),2884:VA,2885:(e,t)=>e.cullFace(t),2929:VA,2931:(e,t)=>e.clearDepth(t),2932:(e,t)=>e.depthFunc(t),2928:(e,t)=>e.depthRange(...t),2930:(e,t)=>e.depthMask(t),3024:VA,35723:fV,36006:Vit,2886:(e,t)=>e.frontFace(t),33170:fV,2849:(e,t)=>e.lineWidth(t),32823:VA,32824:\"polygonOffset\",10752:\"polygonOffset\",35977:VA,32938:\"sampleCoverage\",32939:\"sampleCoverage\",3089:VA,3088:(e,t)=>e.scissor(...t),2960:VA,2961:(e,t)=>e.clearStencil(t),2968:(e,t)=>e.stencilMaskSeparate(1028,t),36005:(e,t)=>e.stencilMaskSeparate(1029,t),2962:\"stencilFuncFront\",2967:\"stencilFuncFront\",2963:\"stencilFuncFront\",34816:\"stencilFuncBack\",36003:\"stencilFuncBack\",36004:\"stencilFuncBack\",2964:\"stencilOpFront\",2965:\"stencilOpFront\",2966:\"stencilOpFront\",34817:\"stencilOpBack\",34818:\"stencilOpBack\",34819:\"stencilOpBack\",2978:(e,t)=>e.viewport(...t),3333:qc,3317:qc,37440:qc,37441:qc,37443:qc,3330:qc,3332:qc,3331:qc,36010:jit,3314:qc,32878:qc,3316:qc,3315:qc,32877:qc,framebuffer:(e,t)=>{let r=t&&\"handle\"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{t=tb(t)?t:[t,t],e.blendEquationSeparate(...t)},blendFunc:(e,t)=>{t=tb(t)&&t.length===2?[...t,...t]:t,e.blendFuncSeparate(...t)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(...t),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=tb(t)?t:[t,t];let[r,i]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,t)=>{t=tb(t)&&t.length===3?[...t,...t]:t;let[r,i,s,n,o,c]=t;e.stencilFuncSeparate(1028,r,i,s),e.stencilFuncSeparate(1029,n,o,c)},stencilOp:(e,t)=>{t=tb(t)&&t.length===3?[...t,...t]:t;let[r,i,s,n,o,c]=t;e.stencilOpSeparate(1028,r,i,s),e.stencilOpSeparate(1029,n,o,c)},viewport:(e,t)=>e.viewport(...t)};function Ls(e,t,r){return t[e]!==void 0?t[e]:r[e]}var pV={blendEquation:(e,t,r)=>e.blendEquationSeparate(Ls(32777,t,r),Ls(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(Ls(32969,t,r),Ls(32968,t,r),Ls(32971,t,r),Ls(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(Ls(32824,t,r),Ls(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(Ls(32938,t,r),Ls(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,Ls(2962,t,r),Ls(2967,t,r),Ls(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,Ls(34816,t,r),Ls(36003,t,r),Ls(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,Ls(2964,t,r),Ls(2965,t,r),Ls(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,Ls(34817,t,r),Ls(34818,t,r),Ls(34819,t,r))},G4={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({36006:r,36010:r});case 36009:return e({36006:r});case 36008:return e({36010:r});default:return null}},blendColor:(e,t,r,i,s)=>e({32773:new Float32Array([t,r,i,s])}),blendEquation:(e,t)=>e({32777:t,34877:t}),blendEquationSeparate:(e,t,r)=>e({32777:t,34877:r}),blendFunc:(e,t,r)=>e({32969:t,32968:r,32971:t,32970:r}),blendFuncSeparate:(e,t,r,i,s)=>e({32969:t,32968:r,32971:i,32970:s}),clearColor:(e,t,r,i,s)=>e({3106:new Float32Array([t,r,i,s])}),clearDepth:(e,t)=>e({2931:t}),clearStencil:(e,t)=>e({2961:t}),colorMask:(e,t,r,i,s)=>e({3107:[t,r,i,s]}),cullFace:(e,t)=>e({2885:t}),depthFunc:(e,t)=>e({2932:t}),depthRange:(e,t,r)=>e({2928:new Float32Array([t,r])}),depthMask:(e,t)=>e({2930:t}),frontFace:(e,t)=>e({2886:t}),lineWidth:(e,t)=>e({2849:t}),polygonOffset:(e,t,r)=>e({32824:t,10752:r}),sampleCoverage:(e,t,r)=>e({32938:t,32939:r}),scissor:(e,t,r,i,s)=>e({3088:new Int32Array([t,r,i,s])}),stencilMask:(e,t)=>e({2968:t,36005:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,i)=>e({2962:t,2967:r,2963:i,34816:t,36003:r,36004:i}),stencilFuncSeparate:(e,t,r,i,s)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:i,[t===1028?2963:36004]:s}),stencilOp:(e,t,r,i)=>e({2964:t,2965:r,2966:i,34817:t,34818:r,34819:i}),stencilOpSeparate:(e,t,r,i,s)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:i,[t===1028?2966:34819]:s}),viewport:(e,t,r,i,s)=>e({2978:[t,r,i,s]})},Uf=(e,t)=>e.isEnabled(t),W4={3042:Uf,2884:Uf,2929:Uf,3024:Uf,32823:Uf,32926:Uf,32928:Uf,3089:Uf,2960:Uf,35977:Uf};function H4(e){for(let t in e)return!1;return!0}function AV(e,t){if(e===t)return!0;let r=Array.isArray(e)||ArrayBuffer.isView(e),i=Array.isArray(t)||ArrayBuffer.isView(t);if(r&&i&&e.length===t.length){for(let s=0;s{}}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.program=null,this.stateStack=[],this.enable=!0,this.cache=r?fy(t):Object.assign({},eb),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.stateStack.push({})}pop(){Zs(this.stateStack.length>0);let t=this.stateStack[this.stateStack.length-1];wl(this.gl,t),this.stateStack.pop()}_updateCache(t){let r=!1,i,s=this.stateStack.length>0&&this.stateStack[this.stateStack.length-1];for(let n in t){Zs(n!==void 0);let o=t[n],c=this.cache[n];AV(o,c)||(r=!0,i=c,s&&!(n in s)&&(s[n]=c),this.cache[n]=o)}return{valueChanged:r,oldValue:i}}};function ZM(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{enable:r=!0,copyState:i}=t;if(Zs(i!==void 0),!e.state){let{polyfillContext:s}=globalThis;s&&s(e),e.state=new q4(e,{copyState:i}),Wit(e);for(let n in G4){let o=G4[n];Git(e,n,o)}mV(e,\"getParameter\"),mV(e,\"isEnabled\")}return e.state.enable=r,e}function Z4(e){e.state||ZM(e,{copyState:!1}),e.state.push()}function YM(e){Zs(e.state),e.state.pop()}function wl(e,t){if(Zs(Xd(e),\"setParameters requires a WebGL context\"),H4(t))return;let r={};for(let s in t){let n=Number(s),o=dV[s];o&&(typeof o==\"string\"?r[o]=!0:o(e,t[s],n))}let i=e.state&&e.state.cache;if(i)for(let s in r){let n=pV[s];n(e,t,i)}}function fy(e,t){if(t=t||eb,typeof t==\"number\"){let s=t,n=W4[s];return n?n(e,s):e.getParameter(s)}let r=Array.isArray(t)?t:Object.keys(t),i={};for(let s of r){let n=W4[s];i[s]=n?n(e,Number(s)):e.getParameter(Number(s))}return i}function QM(e){wl(e,eb)}function bn(e,t,r){if(H4(t))return r(e);let{nocatch:i=!0}=t;Z4(e),wl(e,t);let s;if(i)s=r(e),YM(e);else try{s=r(e)}finally{YM(e)}return s}function Sl(e){let{luma:t}=e;if(e.canvas&&t){let r=t.canvasSizeInfo,i=\"clientWidth\"in r?r.clientWidth:e.canvas.clientWidth;return i?e.drawingBufferWidth/i:1}return 1}function dy(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=Sl(e),s=e.drawingBufferWidth,n=e.drawingBufferHeight;return Hit(t,i,s,n,r)}function yV(e){let t=typeof window>\"u\"?1:window.devicePixelRatio||1;return Number.isFinite(e)?e<=0?1:e:e?t:1}function Hit(e,t,r,i,s){let n=gV(e[0],t,r),o=_V(e[1],t,i,s),c=gV(e[0]+1,t,r),f=c===r-1?c:c-1;c=_V(e[1]+1,t,i,s);let _;return s?(c=c===0?c:c+1,_=o,o=c):_=c===i-1?c:c-1,{x:n,y:o,width:Math.max(f-n+1,1),height:Math.max(_-o+1,1)}}function gV(e,t,r){return Math.min(Math.round(e*t),r-1)}function _V(e,t,r,i){return i?Math.max(0,r-1-Math.round(e*t)):Math.min(Math.round(e*t),r-1)}var Y4=wo(),qit=Y4&&typeof document<\"u\",vV={webgl2:!0,webgl1:!0,throwOnError:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function py(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Zs(Y4,`createGLContext only available in the browser.\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils`),e=Object.assign({},vV,e);let{width:t,height:r}=e;function i(c){if(e.throwOnError)throw new Error(c);return console.error(c),null}e.onError=i;let s,{canvas:n}=e,o=Yit({canvas:n,width:t,height:r,onError:i});return s=Zit(o,e),s?(s=V0(s,e),Qit(s),s):null}function V0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||e._instrumented)return e;e._version=e._version||$it(e),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{},t=Object.assign({},vV,t);let{manageState:r,debug:i}=t;return r&&ZM(e,{copyState:!1,log:function(){for(var s=arguments.length,n=new Array(s),o=0;o1&&arguments[1]!==void 0?arguments[1]:{};if(e.canvas){let i=yV(t.useDevicePixels);Xit(e,i,t);return}let r=e.getExtension(\"STACKGL_resize_drawingbuffer\");r&&\"width\"in t&&\"height\"in t&&r.resize(t.width,t.height)}function Zit(e,t){let{onError:r}=t,i=null,s=f=>i=f.statusMessage||i;e.addEventListener(\"webglcontextcreationerror\",s,!1);let{webgl1:n=!0,webgl2:o=!0}=t,c=null;return o&&(c=c||e.getContext(\"webgl2\",t),c=c||e.getContext(\"experimental-webgl2\",t)),n&&(c=c||e.getContext(\"webgl\",t),c=c||e.getContext(\"experimental-webgl\",t)),e.removeEventListener(\"webglcontextcreationerror\",s,!1),c?(t.onContextLost&&e.addEventListener(\"webglcontextlost\",t.onContextLost,!1),t.onContextRestored&&e.addEventListener(\"webglcontextrestored\",t.onContextRestored,!1),c):r(\"Failed to create \".concat(o&&!n?\"WebGL2\":\"WebGL\",\" context: \").concat(i||\"Unknown error\"))}function Yit(e){let{canvas:t,width:r=800,height:i=600,onError:s}=e,n;return typeof t==\"string\"?(qit&&document.readyState===\"complete\"||s(\"createGLContext called on canvas '\".concat(t,\"' before page was loaded\")),n=document.getElementById(t)):t?n=t:(n=document.createElement(\"canvas\"),n.id=\"lumagl-canvas\",n.style.width=Number.isFinite(r)?\"\".concat(r,\"px\"):\"100%\",n.style.height=Number.isFinite(i)?\"\".concat(i,\"px\"):\"100%\",document.body.insertBefore(n,document.body.firstChild)),n}function Qit(e){let t=hr(e)?\"WebGL2\":\"WebGL1\",r=xV(e),i=r?\"(\".concat(r.vendor,\",\").concat(r.renderer,\")\"):\"\",s=e.debug?\" debug\":\"\";je.info(1,\"\".concat(t).concat(s,\" context \").concat(i))()}function $it(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?2:1}function Xit(e,t,r){let i=\"width\"in r?r.width:e.canvas.clientWidth,s=\"height\"in r?r.height:e.canvas.clientHeight;(!i||!s)&&(je.log(1,\"Canvas clientWidth/clientHeight is 0\")(),t=1,i=e.canvas.width||1,s=e.canvas.height||1),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{};let n=e.luma.canvasSizeInfo;if(n.clientWidth!==i||n.clientHeight!==s||n.devicePixelRatio!==t){let o=t,c=Math.floor(i*o),f=Math.floor(s*o);e.canvas.width=c,e.canvas.height=f,(e.drawingBufferWidth!==c||e.drawingBufferHeight!==f)&&(je.warn(\"Device pixel ratio clamped\")(),o=Math.min(e.drawingBufferWidth/i,e.drawingBufferHeight/s),e.canvas.width=Math.floor(i*o),e.canvas.height=Math.floor(s*o)),Object.assign(e.luma.canvasSizeInfo,{clientWidth:i,clientHeight:s,devicePixelRatio:t})}}function rb(){let e;if(typeof window<\"u\"&&window.performance)e=window.performance.now();else if(typeof process<\"u\"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var j0=class{constructor(t,r){G(this,\"name\",void 0),G(this,\"type\",void 0),G(this,\"sampleSize\",1),G(this,\"time\",void 0),G(this,\"count\",void 0),G(this,\"samples\",void 0),G(this,\"lastTiming\",void 0),G(this,\"lastSampleTime\",void 0),G(this,\"lastSampleCount\",void 0),G(this,\"_count\",0),G(this,\"_time\",0),G(this,\"_samples\",0),G(this,\"_startTime\",0),G(this,\"_timerPending\",!1),this.name=t,this.type=r,this.reset()}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=rb(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(rb()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var Vf=class{constructor(t){G(this,\"id\",void 0),G(this,\"stats\",{}),this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"count\";return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t in this.stats)this.stats[t].reset();return this}forEach(t){for(let r in this.stats)t(this.stats[r])}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(r=>this._getOrCreate(r))}_getOrCreate(t){if(!t||!t.name)return null;let{name:r,type:i}=t;return this.stats[r]||(t instanceof j0?this.stats[r]=t:this.stats[r]=new j0(r,i)),this.stats[r]}};var ib=\"8.5.21\",Kit=\"set luma.log.level=1 (or higher) to trace rendering\",$4=class{constructor(){this.stats=new Map}get(t){return this.stats.has(t)||this.stats.set(t,new Vf({id:t})),this.stats.get(t)}},Lu=new $4;if(globalThis.luma&&globalThis.luma.VERSION!==ib)throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION,\" vs \").concat(ib));globalThis.luma||(wo()&&je.log(1,\"luma.gl \".concat(ib,\" - \").concat(Kit))(),globalThis.luma=globalThis.luma||{VERSION:ib,version:ib,log:je,stats:Lu,globals:{modules:{},nodeIO:{}}});var pPt=globalThis.luma;function X4(e){return typeof window<\"u\"&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)}function K4(e){return typeof window<\"u\"&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e)}function ye(e,t){if(!e)throw new Error(t||\"luma.gl: assertion failed.\")}function $M(e,t){if(typeof t!=\"string\")return t;let r=Number(t);if(!isNaN(r))return r;t=t.replace(/^.*\\./,\"\");let i=e[t];return ye(i!==void 0,\"Accessing undefined constant GL.\".concat(t)),i}function ku(e,t){t=Number(t);for(let r in e)if(e[r]===t)return\"GL.\".concat(r);return String(t)}var J4={};function Jo(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"id\";J4[e]=J4[e]||1;let t=J4[e]++;return\"\".concat(e,\"-\").concat(t)}function tR(e){return ye(typeof e==\"number\",\"Input must be a number\"),e&&(e&e-1)===0}function jf(e){let t=!0;for(let r in e){t=!1;break}return t}function XM(e,t,r,i){let s=\"See luma.gl \".concat(r,\" Upgrade Guide at https://luma.gl/docs/upgrade-guide\"),n=Object.getPrototypeOf(e);i.forEach(o=>{n.methodName||(n[o]=()=>{throw je.removed(\"Calling removed method \".concat(t,\".\").concat(o,\": \"),s)(),new Error(o)})})}var Ay=\"Resource subclass must define virtual methods\",Ys=class{get[Symbol.toStringTag](){return\"Resource\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Kd(t);let{id:i,userData:s={}}=r;this.gl=t,this.gl2=t,this.id=i||Jo(this[Symbol.toStringTag]),this.userData=s,this._bound=!1,this._handle=r.handle,this._handle===void 0&&(this._handle=this._createHandle()),this.byteLength=0,this._addStats()}toString(){return\"\".concat(this[Symbol.toStringTag]||this.constructor.name,\"(\").concat(this.id,\")\")}get handle(){return this._handle}delete(){let{deleteChildren:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this._handle&&this._deleteHandle(this._handle);return this._handle&&this._removeStats(),this._handle=null,r&&t&&r.filter(Boolean).forEach(i=>i.delete()),this}bind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.handle;if(typeof t!=\"function\")return this._bindHandle(t),this;let r;return this._bound?r=t():(this._bindHandle(this.handle),this._bound=!0,r=t(),this._bound=!1,this._bindHandle(null)),r}unbind(){this.bind(null)}getParameter(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};t=$M(this.gl,t),ye(t);let s=(this.constructor.PARAMETERS||{})[t];if(s){let n=hr(this.gl);if(!((!(\"webgl2\"in s)||n)&&(!(\"extension\"in s)||this.gl.getExtension(s.extension)))){let c=s.webgl1,f=\"webgl2\"in s?s.webgl2:s.webgl1;return n?f:c}}return this._getParameter(t,r)}getParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{parameters:r,keys:i}=t,s=this.constructor.PARAMETERS||{},n=hr(this.gl),o={},c=r||Object.keys(s);for(let f of c){let _=s[f];if(_&&(!(\"webgl2\"in _)||n)&&(!(\"extension\"in _)||this.gl.getExtension(_.extension))){let C=i?ku(this.gl,f):f;o[C]=this.getParameter(f,t),i&&_.type===\"GLenum\"&&(o[C]=ku(this.gl,o[C]))}}return o}setParameter(t,r){t=$M(this.gl,t),ye(t);let s=(this.constructor.PARAMETERS||{})[t];if(s){let n=hr(this.gl);if(!((!(\"webgl2\"in s)||n)&&(!(\"extension\"in s)||this.gl.getExtension(s.extension))))throw new Error(\"Parameter not available on this platform\");s.type===\"GLenum\"&&(r=$M(r))}return this._setParameter(t,r),this}setParameters(t){for(let r in t)this.setParameter(r,t[r]);return this}stubRemovedMethods(t,r,i){return XM(this,t,r,i)}initialize(t){}_createHandle(){throw new Error(Ay)}_deleteHandle(){throw new Error(Ay)}_bindHandle(t){throw new Error(Ay)}_getOptsFromHandle(){throw new Error(Ay)}_getParameter(t,r){throw new Error(Ay)}_setParameter(t,r){throw new Error(Ay)}_context(){return this.gl.luma=this.gl.luma||{},this.gl.luma}_addStats(){let t=this[Symbol.toStringTag],r=Lu.get(\"Resource Counts\");r.get(\"Resources Created\").incrementCount(),r.get(\"\".concat(t,\"s Created\")).incrementCount(),r.get(\"\".concat(t,\"s Active\")).incrementCount()}_removeStats(){let t=this[Symbol.toStringTag];Lu.get(\"Resource Counts\").get(\"\".concat(t,\"s Active\")).decrementCount()}_trackAllocatedMemory(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag];this._trackAllocatedMemoryForContext(t,r),this._trackAllocatedMemoryForContext(t,r,this.gl.canvas&&this.gl.canvas.id),this.byteLength=t}_trackAllocatedMemoryForContext(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"\",s=Lu.get(\"Memory Usage\".concat(i));s.get(\"GPU Memory\").addCount(t),s.get(\"\".concat(r,\" Memory\")).addCount(t)}_trackDeallocatedMemory(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag];this._trackDeallocatedMemoryForContext(t),this._trackDeallocatedMemoryForContext(t,this.gl.canvas&&this.gl.canvas.id),this.byteLength=0}_trackDeallocatedMemoryForContext(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\",i=Lu.get(\"Memory Usage\".concat(r));i.get(\"GPU Memory\").subtractCount(this.byteLength),i.get(\"\".concat(t,\" Memory\")).subtractCount(this.byteLength)}};var Jit=\"Failed to deduce GL constant from typed array\";function nb(e){switch(ArrayBuffer.isView(e)?e.constructor:e){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(Jit)}}function jA(e){let{clamped:t=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return t?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error(\"Failed to deduce typed array type from GL constant\")}}function bV(e){let{data:t,width:r,height:i,bytesPerPixel:s=4,temp:n}=e,o=r*s;n=n||new Uint8Array(o);for(let c=0;cthis._assign(s)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return e.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return e.getBytesPerVertex(this)}_assign(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t=sb(\"Accessor\",t,ent),t.type!==void 0&&(this.type=t.type,(t.type===5124||t.type===5125)&&(this.integer=!0)),t.size!==void 0&&(this.size=t.size),t.offset!==void 0&&(this.offset=t.offset),t.stride!==void 0&&(this.stride=t.stride),t.normalized!==void 0&&(this.normalized=t.normalized),t.integer!==void 0&&(this.integer=t.integer),t.divisor!==void 0&&(this.divisor=t.divisor),t.buffer!==void 0&&(this.buffer=t.buffer),t.index!==void 0&&(typeof t.index==\"boolean\"?this.index=t.index?1:0:this.index=t.index),t.instanced!==void 0&&(this.divisor=t.instanced?1:0),t.isInstanced!==void 0&&(this.divisor=t.isInstanced?1:0),this}};var SV=10,TV={offset:\"accessor.offset\",stride:\"accessor.stride\",type:\"accessor.type\",size:\"accessor.size\",divisor:\"accessor.divisor\",normalized:\"accessor.normalized\",integer:\"accessor.integer\",instanced:\"accessor.divisor\",isInstanced:\"accessor.divisor\"},rnt={removedProps:{},replacedProps:{bytes:\"byteLength\"},deprecatedProps:TV},int={removedProps:TV},Fr=class extends Ys{get[Symbol.toStringTag](){return\"Buffer\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.stubRemovedMethods(\"Buffer\",\"v6.0\",[\"layout\",\"setLayout\",\"getIndexedParameter\"]),this.target=r.target||(this.gl.webgl2?36662:34962),this.initialize(r),Object.seal(this)}getElementCount(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Tl.getBytesPerElement(t))}getVertexCount(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Tl.getBytesPerVertex(t))}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ArrayBuffer.isView(t)&&(t={data:t}),Number.isFinite(t)&&(t={byteLength:t}),t=sb(\"Buffer\",t,rnt),this.usage=t.usage||35044,this.debugData=null,this.setAccessor(Object.assign({},t,t.accessor)),t.data?this._setData(t.data,t.offset,t.byteLength):this._setByteLength(t.byteLength||0),this}setProps(t){return t=sb(\"Buffer\",t,int),\"accessor\"in t&&this.setAccessor(t.accessor),this}setAccessor(t){return t=Object.assign({},t),delete t.buffer,this.accessor=new Tl(t),this}reallocate(t){return t>this.byteLength?(this._setByteLength(t),!0):(this.bytesUsed=t,!1)}setData(t){return this.initialize(t)}subData(t){ArrayBuffer.isView(t)&&(t={data:t});let{data:r,offset:i=0,srcOffset:s=0}=t,n=t.byteLength||t.length;ye(r);let o=this.gl.webgl2?36663:this.target;return this.gl.bindBuffer(o,this.handle),s!==0||n!==void 0?(qn(this.gl),this.gl.bufferSubData(this.target,i,r,s,n)):this.gl.bufferSubData(o,i,r),this.gl.bindBuffer(o,null),this.debugData=null,this._inferType(r),this}copyData(t){let{sourceBuffer:r,readOffset:i=0,writeOffset:s=0,size:n}=t,{gl:o}=this;return qn(o),o.bindBuffer(36662,r.handle),o.bindBuffer(36663,this.handle),o.copyBufferSubData(36662,36663,i,s,n),o.bindBuffer(36662,null),o.bindBuffer(36663,null),this.debugData=null,this}getData(){let{dstData:t=null,srcByteOffset:r=0,dstOffset:i=0,length:s=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};qn(this.gl);let n=jA(this.accessor.type||5126,{clamped:!1}),o=this._getAvailableElementCount(r),c=i,f,_;t?(_=t.length,f=_-c):(f=Math.min(o,s||o),_=c+f);let w=Math.min(o,f);return s=s||w,ye(s<=w),t=t||new n(_),this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,r,t,i,s),this.gl.bindBuffer(36662,null),t}bind(){let{target:t=this.target,index:r=this.accessor&&this.accessor.index,offset:i=0,size:s}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t===35345||t===35982?s!==void 0?this.gl.bindBufferRange(t,r,this.handle,i,s):(ye(i===0),this.gl.bindBufferBase(t,r,this.handle)):this.gl.bindBuffer(t,this.handle),this}unbind(){let{target:t=this.target,index:r=this.accessor&&this.accessor.index}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t===35345||t===35982?this.gl.bindBufferBase(t,r,null):this.gl.bindBuffer(t,null),this}getDebugData(){return this.debugData?{data:this.debugData,changed:!1}:(this.debugData=this.getData({length:Math.min(SV,this.byteLength)}),{data:this.debugData,changed:!0})}invalidateDebugData(){this.debugData=null}_setData(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.byteLength+r;ye(ArrayBuffer.isView(t)),this._trackDeallocatedMemory();let s=this._getTarget();this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.usage),this.gl.bufferSubData(s,r,t),this.gl.bindBuffer(s,null),this.debugData=t.slice(0,SV),this.bytesUsed=i,this._trackAllocatedMemory(i);let n=nb(t);return ye(n),this.setAccessor(new Tl(this.accessor,{type:n})),this}_setByteLength(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.usage;ye(t>=0),this._trackDeallocatedMemory();let i=t;t===0&&(i=new Float32Array(0));let s=this._getTarget();return this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,r),this.gl.bindBuffer(s,null),this.usage=r,this.debugData=null,this.bytesUsed=t,this._trackAllocatedMemory(t),this}_getTarget(){return this.gl.webgl2?36663:this.target}_getAvailableElementCount(t){let r=jA(this.accessor.type||5126,{clamped:!1}),i=t/r.BYTES_PER_ELEMENT;return this.getElementCount()-i}_inferType(t){this.accessor.type||this.setAccessor(new Tl(this.accessor,{type:nb(t)}))}_createHandle(){return this.gl.createBuffer()}_deleteHandle(){this.gl.deleteBuffer(this.handle),this._trackDeallocatedMemory()}_getParameter(t){this.gl.bindBuffer(this.target,this.handle);let r=this.gl.getBufferParameter(this.target,t);return this.gl.bindBuffer(this.target,null),r}get type(){return je.deprecated(\"Buffer.type\",\"Buffer.accessor.type\")(),this.accessor.type}get bytes(){return je.deprecated(\"Buffer.bytes\",\"Buffer.byteLength\")(),this.byteLength}setByteLength(t){return je.deprecated(\"setByteLength\",\"reallocate\")(),this.reallocate(t)}updateAccessor(t){return je.deprecated(\"updateAccessor(...)\",\"setAccessor(new Accessor(buffer.accessor, ...)\")(),this.accessor=new Tl(this.accessor,t),this}};var KM={6407:{dataFormat:6407,types:[5121,33635]},6408:{dataFormat:6408,types:[5121,32819,32820]},6406:{dataFormat:6406,types:[5121]},6409:{dataFormat:6409,types:[5121]},6410:{dataFormat:6410,types:[5121]},33326:{dataFormat:6403,types:[5126],gl2:!0},33328:{dataFormat:33319,types:[5126],gl2:!0},34837:{dataFormat:6407,types:[5126],gl2:!0},34836:{dataFormat:6408,types:[5126],gl2:!0}},JM={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},tE={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function MV(e,t){let r=KM[t];if(!r)return!1;if(r.gl1===void 0&&r.gl2===void 0)return!0;let i=hr(e)&&r.gl2||r.gl1;return typeof i==\"string\"?e.getExtension(i):i}function EV(e,t){let r=KM[t];switch(r&&r.types[0]){case 5126:return e.getExtension(\"OES_texture_float_linear\");case 5131:return e.getExtension(\"OES_texture_half_float_linear\");default:return!0}}var nnt=[9729,9728],PV=globalThis.WebGLBuffer||function(){},Ja=class extends Ys{get[Symbol.toStringTag](){return\"Texture\"}static isSupported(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{format:i,linearFiltering:s}=r,n=!0;return i&&(n=n&&MV(t,i),n=n&&(!s||EV(t,i))),n}constructor(t,r){let{id:i=Jo(\"texture\"),handle:s,target:n}=r;super(t,{id:i,handle:s}),this.target=n,this.textureUnit=void 0,this.loaded=!1,this.width=void 0,this.height=void 0,this.depth=void 0,this.format=void 0,this.type=void 0,this.dataFormat=void 0,this.border=void 0,this.textureUnit=void 0,this.mipmaps=void 0}toString(){return\"Texture(\".concat(this.id,\",\").concat(this.width,\"x\").concat(this.height,\")\")}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=t.data;if(r instanceof Promise)return r.then(K=>this.initialize(Object.assign({},t,{pixels:K,data:K}))),this;let i=typeof HTMLVideoElement<\"u\"&&r instanceof HTMLVideoElement;if(i&&r.readyStatethis.initialize(t)),this;let{pixels:s=null,format:n=6408,border:o=0,recreate:c=!1,parameters:f={},pixelStore:_={},textureUnit:w=void 0}=t;r||(r=s);let{width:C,height:R,dataFormat:N,type:j,compressed:Y=!1,mipmaps:rt=!0}=t,{depth:$=0}=t;return{width:C,height:R,compressed:Y,dataFormat:N,type:j}=this._deduceParameters({format:n,type:j,dataFormat:N,compressed:Y,data:r,width:C,height:R}),this.width=C,this.height=R,this.depth=$,this.format=n,this.type=j,this.dataFormat=N,this.border=o,this.textureUnit=w,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),rt&&this._isNPOT()&&(je.warn(\"texture: \".concat(this,\" is Non-Power-Of-Two, disabling mipmaping\"))(),rt=!1,this._updateForNPOT(f)),this.mipmaps=rt,this.setImageData({data:r,width:C,height:R,depth:$,format:n,type:j,dataFormat:N,border:o,mipmaps:rt,parameters:_,compressed:Y}),rt&&this.generateMipmap(),this.setParameters(f),c&&(this.data=r),i&&(this._video={video:r,parameters:f,lastTime:r.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?r.currentTime:-1}),this}update(){if(this._video){let{video:t,parameters:r,lastTime:i}=this._video;if(i===t.currentTime||t.readyState0&&arguments[0]!==void 0?arguments[0]:{};return this._isNPOT()?(je.warn(\"texture: \".concat(this,\" is Non-Power-Of-Two, disabling mipmaping\"))(),this):(this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),bn(this.gl,t,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this)}setImageData(t){this._trackDeallocatedMemory(\"Texture\");let{target:r=this.target,pixels:i=null,level:s=0,format:n=this.format,border:o=this.border,offset:c=0,parameters:f={}}=t,{data:_=null,type:w=this.type,width:C=this.width,height:R=this.height,dataFormat:N=this.dataFormat,compressed:j=!1}=t;_||(_=i),{type:w,dataFormat:N,compressed:j,width:C,height:R}=this._deduceParameters({format:n,type:w,dataFormat:N,compressed:j,data:_,width:C,height:R});let{gl:Y}=this;Y.bindTexture(this.target,this.handle);let rt=null;({data:_,dataType:rt}=this._getDataType({data:_,compressed:j}));let $,K=0;if(bn(this.gl,f,()=>{switch(rt){case\"null\":Y.texImage2D(r,s,n,C,R,o,N,w,_);break;case\"typed-array\":Y.texImage2D(r,s,n,C,R,o,N,w,_,c);break;case\"buffer\":$=qn(Y),$.bindBuffer(35052,_.handle||_),$.texImage2D(r,s,n,C,R,o,N,w,c),$.bindBuffer(35052,null);break;case\"browser-object\":hr(Y)?Y.texImage2D(r,s,n,C,R,o,N,w,_):Y.texImage2D(r,s,n,N,w,_);break;case\"compressed\":for(let[tt,ut]of _.entries())Y.compressedTexImage2D(r,tt,ut.format,ut.width,ut.height,o,ut.data),K+=ut.levelSize;break;default:ye(!1,\"Unknown image data type\")}}),rt===\"compressed\")this._trackAllocatedMemory(K,\"Texture\");else if(_&&_.byteLength)this._trackAllocatedMemory(_.byteLength,\"Texture\");else{let tt=JM[this.dataFormat]||4,ut=tE[this.type]||1;this._trackAllocatedMemory(this.width*this.height*tt*ut,\"Texture\")}return this.loaded=!0,this}setSubImageData(t){let{target:r=this.target,pixels:i=null,data:s=null,x:n=0,y:o=0,width:c=this.width,height:f=this.height,level:_=0,format:w=this.format,type:C=this.type,dataFormat:R=this.dataFormat,compressed:N=!1,offset:j=0,border:Y=this.border,parameters:rt={}}=t;if({type:C,dataFormat:R,compressed:N,width:c,height:f}=this._deduceParameters({format:w,type:C,dataFormat:R,compressed:N,data:s,width:c,height:f}),ye(this.depth===0,\"texSubImage not supported for 3D textures\"),s||(s=i),s&&s.data){let $=s;s=$.data,c=$.shape[0],f=$.shape[1]}s instanceof Fr&&(s=s.handle),this.gl.bindTexture(this.target,this.handle),bn(this.gl,rt,()=>{if(N)this.gl.compressedTexSubImage2D(r,_,n,o,c,f,w,s);else if(s===null)this.gl.texSubImage2D(r,_,n,o,c,f,R,C,null);else if(ArrayBuffer.isView(s))this.gl.texSubImage2D(r,_,n,o,c,f,R,C,s,j);else if(s instanceof PV){let $=qn(this.gl);$.bindBuffer(35052,s),$.texSubImage2D(r,_,n,o,c,f,R,C,j),$.bindBuffer(35052,null)}else hr(this.gl)?qn(this.gl).texSubImage2D(r,_,n,o,c,f,R,C,s):this.gl.texSubImage2D(r,_,n,o,R,C,s)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})\")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit,{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,this.handle),t}unbind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit,{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,null),t}_getDataType(t){let{data:r,compressed:i=!1}=t;return i?{data:r,dataType:\"compressed\"}:r===null?{data:r,dataType:\"null\"}:ArrayBuffer.isView(r)?{data:r,dataType:\"typed-array\"}:r instanceof Fr?{data:r.handle,dataType:\"buffer\"}:r instanceof PV?{data:r,dataType:\"buffer\"}:{data:r,dataType:\"browser-object\"}}_deduceParameters(t){let{format:r,data:i}=t,{width:s,height:n,dataFormat:o,type:c,compressed:f}=t,_=KM[r];return o=o||_&&_.dataFormat,c=c||_&&_.types[0],f=f||_&&_.compressed,{width:s,height:n}=this._deduceImageSize(i,s,n),{dataFormat:o,type:c,compressed:f,width:s,height:n,format:r,data:i}}_deduceImageSize(t,r,i){let s;return typeof ImageData<\"u\"&&t instanceof ImageData?s={width:t.width,height:t.height}:typeof HTMLImageElement<\"u\"&&t instanceof HTMLImageElement?s={width:t.naturalWidth,height:t.naturalHeight}:typeof HTMLCanvasElement<\"u\"&&t instanceof HTMLCanvasElement?s={width:t.width,height:t.height}:typeof ImageBitmap<\"u\"&&t instanceof ImageBitmap?s={width:t.width,height:t.height}:typeof HTMLVideoElement<\"u\"&&t instanceof HTMLVideoElement?s={width:t.videoWidth,height:t.videoHeight}:t?s={width:r,height:i}:s={width:r>=0?r:1,height:i>=0?i:1},ye(s,\"Could not deduced texture size\"),ye(r===void 0||s.width===r,\"Deduced texture width does not match supplied width\"),ye(i===void 0||s.height===i,\"Deduced texture height does not match supplied height\"),s}_createHandle(){return this.gl.createTexture()}_deleteHandle(){this.gl.deleteTexture(this.handle),this._trackDeallocatedMemory(\"Texture\")}_getParameter(t){switch(t){case 4096:return this.width;case 4097:return this.height;default:this.gl.bindTexture(this.target,this.handle);let r=this.gl.getTexParameter(this.target,t);return this.gl.bindTexture(this.target,null),r}}_setParameter(t,r){switch(this.gl.bindTexture(this.target,this.handle),r=this._getNPOTParam(t,r),t){case 33082:case 33083:this.gl.texParameterf(this.handle,t,r);break;case 4096:case 4097:ye(!1);break;default:this.gl.texParameteri(this.target,t,r);break}return this.gl.bindTexture(this.target,null),this}_isNPOT(){return hr(this.gl)||!this.width||!this.height?!1:!tR(this.width)||!tR(this.height)}_updateForNPOT(t){t[this.gl.TEXTURE_MIN_FILTER]===void 0&&(t[this.gl.TEXTURE_MIN_FILTER]=this.gl.LINEAR),t[this.gl.TEXTURE_WRAP_S]===void 0&&(t[this.gl.TEXTURE_WRAP_S]=this.gl.CLAMP_TO_EDGE),t[this.gl.TEXTURE_WRAP_T]===void 0&&(t[this.gl.TEXTURE_WRAP_T]=this.gl.CLAMP_TO_EDGE)}_getNPOTParam(t,r){if(this._isNPOT())switch(t){case 10241:nnt.indexOf(r)===-1&&(r=9729);break;case 10242:case 10243:r!==33071&&(r=33071);break;default:break}return r}};var snt=\"\";function IV(e,t){return ye(typeof e==\"string\"),e=snt+e,new Promise((r,i)=>{try{let s=new Image;s.onload=()=>r(s),s.onerror=()=>i(new Error(\"Could not load image \".concat(e,\".\"))),s.crossOrigin=t&&t.crossOrigin||\"anonymous\",s.src=e}catch(s){i(s)}})}var pi=class extends Ja{get[Symbol.toStringTag](){return\"Texture2D\"}static isSupported(t,r){return Ja.isSupported(t,r)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Kd(t),(r instanceof Promise||typeof r==\"string\")&&(r={data:r}),typeof r.data==\"string\"&&(r=Object.assign({},r,{data:IV(r.data)})),super(t,Object.assign({},r,{target:3553})),this.initialize(r),Object.seal(this)}};var eR=[34069,34070,34071,34072,34073,34074],G0=class extends Ja{get[Symbol.toStringTag](){return\"TextureCube\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Kd(t),super(t,Object.assign({},r,{target:34067})),this.initialize(r),Object.seal(this)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{mipmaps:r=!0,parameters:i={}}=t;return this.opts=t,this.setCubeMapImageData(t).then(()=>{this.loaded=!0,r&&this.generateMipmap(t),this.setParameters(i)}),this}subImage(t){let{face:r,data:i,x:s=0,y:n=0,mipmapLevel:o=0}=t;return this._subImage({target:r,data:i,x:s,y:n,mipmapLevel:o})}async setCubeMapImageData(t){let{width:r,height:i,pixels:s,data:n,border:o=0,format:c=6408,type:f=5121}=t,{gl:_}=this,w=s||n,C=await Promise.all(eR.map(R=>{let N=w[R];return Promise.all(Array.isArray(N)?N:[N])}));this.bind(),eR.forEach((R,N)=>{C[N].length>1&&this.opts.mipmaps!==!1&&je.warn(\"\".concat(this.id,\" has mipmap and multiple LODs.\"))(),C[N].forEach((j,Y)=>{r&&i?_.texImage2D(R,Y,c,r,i,o,c,f,j):_.texImage2D(R,Y,c,c,f,j)})}),this.unbind()}setImageDataForFace(t){let{face:r,width:i,height:s,pixels:n,data:o,border:c=0,format:f=6408,type:_=5121}=t,{gl:w}=this,C=n||o;return this.bind(),C instanceof Promise?C.then(R=>this.setImageDataForFace(Object.assign({},t,{face:r,data:R,pixels:R}))):this.width||this.height?w.texImage2D(r,0,f,i,s,c,f,_,C):w.texImage2D(r,0,f,f,_,C),this}};G0.FACES=eR;var my=class extends Ja{get[Symbol.toStringTag](){return\"Texture3D\"}static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(t),r=Object.assign({depth:1},r,{target:32879,unpackFlipY:!1}),super(t,r),this.initialize(r),Object.seal(this)}setImageData(t){let{level:r=0,dataFormat:i=6408,width:s,height:n,depth:o=1,border:c=0,format:f,type:_=5121,offset:w=0,data:C,parameters:R={}}=t;if(this._trackDeallocatedMemory(\"Texture\"),this.gl.bindTexture(this.target,this.handle),bn(this.gl,R,()=>{ArrayBuffer.isView(C)&&this.gl.texImage3D(this.target,r,i,s,n,o,c,f,_,C),C instanceof Fr&&(this.gl.bindBuffer(35052,C.handle),this.gl.texImage3D(this.target,r,i,s,n,o,c,f,_,w))}),C&&C.byteLength)this._trackAllocatedMemory(C.byteLength,\"Texture\");else{let N=JM[this.dataFormat]||4,j=tE[this.type]||1;this._trackAllocatedMemory(this.width*this.height*this.depth*N*j,\"Texture\")}return this.loaded=!0,this}};var W0=\"EXT_color_buffer_float\",rR={33189:{bpp:2},33190:{gl2:!0,bpp:3},36012:{gl2:!0,bpp:4},36168:{bpp:1},34041:{bpp:4},35056:{gl2:!0,bpp:4},36013:{gl2:!0,bpp:5},32854:{bpp:2},36194:{bpp:2},32855:{bpp:2},33321:{gl2:!0,bpp:1},33330:{gl2:!0,bpp:1},33329:{gl2:!0,bpp:1},33332:{gl2:!0,bpp:2},33331:{gl2:!0,bpp:2},33334:{gl2:!0,bpp:4},33333:{gl2:!0,bpp:4},33323:{gl2:!0,bpp:2},33336:{gl2:!0,bpp:2},33335:{gl2:!0,bpp:2},33338:{gl2:!0,bpp:4},33337:{gl2:!0,bpp:4},33340:{gl2:!0,bpp:8},33339:{gl2:!0,bpp:8},32849:{gl2:!0,bpp:3},32856:{gl2:!0,bpp:4},32857:{gl2:!0,bpp:4},36220:{gl2:!0,bpp:4},36238:{gl2:!0,bpp:4},36975:{gl2:!0,bpp:4},36214:{gl2:!0,bpp:8},36232:{gl2:!0,bpp:8},36226:{gl2:!0,bpp:16},36208:{gl2:!0,bpp:16},33325:{gl2:W0,bpp:2},33327:{gl2:W0,bpp:4},34842:{gl2:W0,bpp:8},33326:{gl2:W0,bpp:4},33328:{gl2:W0,bpp:8},34836:{gl2:W0,bpp:16},35898:{gl2:W0,bpp:4}};function ont(e,t,r){let i=r[t];if(!i)return!1;let s=hr(e)&&i.gl2||i.gl1;return typeof s==\"string\"?e.getExtension(s):s}var tl=class extends Ys{get[Symbol.toStringTag](){return\"Renderbuffer\"}static isSupported(t){let{format:r}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{format:null};return!r||ont(t,r,rR)}static getSamplesForFormat(t,r){let{format:i}=r;return t.getInternalformatParameter(36161,i,32937)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.initialize(r),Object.seal(this)}initialize(t){let{format:r,width:i=1,height:s=1,samples:n=0}=t;return ye(r,\"Needs format\"),this._trackDeallocatedMemory(),this.gl.bindRenderbuffer(36161,this.handle),n!==0&&hr(this.gl)?this.gl.renderbufferStorageMultisample(36161,n,r,i,s):this.gl.renderbufferStorage(36161,r,i,s),this.format=r,this.width=i,this.height=s,this.samples=n,this._trackAllocatedMemory(this.width*this.height*(this.samples||1)*rR[this.format].bpp),this}resize(t){let{width:r,height:i}=t;return r!==this.width||i!==this.height?this.initialize({width:r,height:i,format:this.format,samples:this.samples}):this}_createHandle(){return this.gl.createRenderbuffer()}_deleteHandle(){this.gl.deleteRenderbuffer(this.handle),this._trackDeallocatedMemory()}_bindHandle(t){this.gl.bindRenderbuffer(36161,t)}_syncHandle(t){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}_getParameter(t){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,t)}};var ant=256,lnt=1024,cnt=16384,CV=6144,LV=6145,kV=6146,RV=34041,DV=\"clear: bad arguments\";function Gf(e){let{framebuffer:t=null,color:r=null,depth:i=null,stencil:s=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={};t&&(n.framebuffer=t);let o=0;r&&(o|=cnt,r!==!0&&(n.clearColor=r)),i&&(o|=ant,i!==!0&&(n.clearDepth=i)),s&&(o|=lnt,i!==!0&&(n.clearStencil=i)),ye(o!==0,DV),bn(e,n,()=>{e.clear(o)})}function iR(e){let{framebuffer:t=null,buffer:r=CV,drawBuffer:i=0,value:s=[0,0,0,0]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(e),bn(e,{framebuffer:t},()=>{switch(r){case CV:switch(s.constructor){case Int32Array:e.clearBufferiv(r,i,s);break;case Uint32Array:e.clearBufferuiv(r,i,s);break;case Float32Array:default:e.clearBufferfv(r,i,s)}break;case LV:e.clearBufferfv(LV,0,[s]);break;case kV:e.clearBufferiv(kV,0,[s]);break;case RV:let[n,o]=s;e.clearBufferfi(RV,0,n,o);break;default:ye(!1,DV)}})}function OV(e){switch(e){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return ye(!1),0}}function Rh(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{sourceX:r=0,sourceY:i=0,sourceFormat:s=6408}=t,{sourceAttachment:n=36064,target:o=null,sourceWidth:c,sourceHeight:f,sourceType:_}=t,{framebuffer:w,deleteFramebuffer:C}=BV(e);ye(w);let{gl:R,handle:N,attachments:j}=w;c=c||w.width,f=f||w.height,n===36064&&N===null&&(n=1028),ye(j[n]),_=_||j[n].type,o=unt(o,_,s,c,f),_=_||nb(o);let Y=R.bindFramebuffer(36160,N);return R.readPixels(r,i,c,f,s,_,o),R.bindFramebuffer(36160,Y||null),C&&w.delete(),o}function eE(e){let{sourceAttachment:t=36064,targetMaxHeight:r=Number.MAX_SAFE_INTEGER}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=Rh(e,{sourceAttachment:t}),{width:s,height:n}=e;for(;n>r;)({data:i,width:s,height:n}=wV({data:i,width:s,height:n}));bV({data:i,width:s,height:n});let o=document.createElement(\"canvas\");o.width=s,o.height=n;let c=o.getContext(\"2d\"),f=c.createImageData(s,n);return f.data.set(i),c.putImageData(f,0,0),o.toDataURL()}function rE(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{sourceX:i=0,sourceY:s=0,targetMipmaplevel:n=0,targetInternalFormat:o=6408}=r,{targetX:c,targetY:f,targetZ:_,width:w,height:C}=r,{framebuffer:R,deleteFramebuffer:N}=BV(e);ye(R);let{gl:j,handle:Y}=R,rt=typeof c<\"u\"||typeof f<\"u\"||typeof _<\"u\";c=c||0,f=f||0,_=_||0;let $=j.bindFramebuffer(36160,Y);ye(t);let K=null;if(t instanceof Ja&&(K=t,w=Number.isFinite(w)?w:K.width,C=Number.isFinite(C)?C:K.height,K.bind(0),t=K.target),!rt)j.copyTexImage2D(t,n,o,i,s,w,C,0);else switch(t){case 3553:case 34067:j.copyTexSubImage2D(t,n,c,f,i,s,w,C);break;case 35866:case 32879:qn(j).copyTexSubImage3D(t,n,c,f,_,i,s,w,C);break;default:}return K&&K.unbind(),j.bindFramebuffer(36160,$||null),N&&R.delete(),K}function BV(e){return e instanceof yi?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:FV(e),deleteFramebuffer:!0}}function unt(e,t,r,i,s){if(e)return e;t=t||5121;let n=jA(t,{clamped:!1}),o=OV(r);return new n(i*s*o)}var Pi={WEBGL2:\"WEBGL2\",VERTEX_ARRAY_OBJECT:\"VERTEX_ARRAY_OBJECT\",TIMER_QUERY:\"TIMER_QUERY\",INSTANCED_RENDERING:\"INSTANCED_RENDERING\",MULTIPLE_RENDER_TARGETS:\"MULTIPLE_RENDER_TARGETS\",ELEMENT_INDEX_UINT32:\"ELEMENT_INDEX_UINT32\",BLEND_EQUATION_MINMAX:\"BLEND_EQUATION_MINMAX\",FLOAT_BLEND:\"FLOAT_BLEND\",COLOR_ENCODING_SRGB:\"COLOR_ENCODING_SRGB\",TEXTURE_DEPTH:\"TEXTURE_DEPTH\",TEXTURE_FLOAT:\"TEXTURE_FLOAT\",TEXTURE_HALF_FLOAT:\"TEXTURE_HALF_FLOAT\",TEXTURE_FILTER_LINEAR_FLOAT:\"TEXTURE_FILTER_LINEAR_FLOAT\",TEXTURE_FILTER_LINEAR_HALF_FLOAT:\"TEXTURE_FILTER_LINEAR_HALF_FLOAT\",TEXTURE_FILTER_ANISOTROPIC:\"TEXTURE_FILTER_ANISOTROPIC\",COLOR_ATTACHMENT_RGBA32F:\"COLOR_ATTACHMENT_RGBA32F\",COLOR_ATTACHMENT_FLOAT:\"COLOR_ATTACHMENT_FLOAT\",COLOR_ATTACHMENT_HALF_FLOAT:\"COLOR_ATTACHMENT_HALF_FLOAT\",GLSL_FRAG_DATA:\"GLSL_FRAG_DATA\",GLSL_FRAG_DEPTH:\"GLSL_FRAG_DEPTH\",GLSL_DERIVATIVES:\"GLSL_DERIVATIVES\",GLSL_TEXTURE_LOD:\"GLSL_TEXTURE_LOD\"};function hnt(e){let t=new pi(e,{format:6408,type:5126,dataFormat:6408}),r=new yi(e,{id:\"test-framebuffer\",check:!1,attachments:{36064:t}}),i=r.getStatus();return t.delete(),r.delete(),i===36053}var nR={[Pi.WEBGL2]:[!1,!0],[Pi.VERTEX_ARRAY_OBJECT]:[\"OES_vertex_array_object\",!0],[Pi.TIMER_QUERY]:[\"EXT_disjoint_timer_query\",\"EXT_disjoint_timer_query_webgl2\"],[Pi.INSTANCED_RENDERING]:[\"ANGLE_instanced_arrays\",!0],[Pi.MULTIPLE_RENDER_TARGETS]:[\"WEBGL_draw_buffers\",!0],[Pi.ELEMENT_INDEX_UINT32]:[\"OES_element_index_uint\",!0],[Pi.BLEND_EQUATION_MINMAX]:[\"EXT_blend_minmax\",!0],[Pi.FLOAT_BLEND]:[\"EXT_float_blend\"],[Pi.COLOR_ENCODING_SRGB]:[\"EXT_sRGB\",!0],[Pi.TEXTURE_DEPTH]:[\"WEBGL_depth_texture\",!0],[Pi.TEXTURE_FLOAT]:[\"OES_texture_float\",!0],[Pi.TEXTURE_HALF_FLOAT]:[\"OES_texture_half_float\",!0],[Pi.TEXTURE_FILTER_LINEAR_FLOAT]:[\"OES_texture_float_linear\"],[Pi.TEXTURE_FILTER_LINEAR_HALF_FLOAT]:[\"OES_texture_half_float_linear\"],[Pi.TEXTURE_FILTER_ANISOTROPIC]:[\"EXT_texture_filter_anisotropic\"],[Pi.COLOR_ATTACHMENT_RGBA32F]:[hnt,\"EXT_color_buffer_float\"],[Pi.COLOR_ATTACHMENT_FLOAT]:[!1,\"EXT_color_buffer_float\"],[Pi.COLOR_ATTACHMENT_HALF_FLOAT]:[\"EXT_color_buffer_half_float\"],[Pi.GLSL_FRAG_DATA]:[\"WEBGL_draw_buffers\",!0],[Pi.GLSL_FRAG_DEPTH]:[\"EXT_frag_depth\",!0],[Pi.GLSL_DERIVATIVES]:[\"OES_standard_derivatives\",!0],[Pi.GLSL_TEXTURE_LOD]:[\"EXT_shader_texture_lod\",!0]};var fnt=2;function H0(e,t){return Dh(e,t)}function Dh(e,t){return t=Array.isArray(t)?t:[t],t.every(r=>zV(e,r))}function iE(e){e.luma=e.luma||{},e.luma.caps=e.luma.caps||{};for(let t in nR)e.luma.caps[t]===void 0&&(e.luma.caps[t]=zV(e,t));return e.luma.caps}function zV(e,t){return e.luma=e.luma||{},e.luma.caps=e.luma.caps||{},e.luma.caps[t]===void 0&&(e.luma.caps[t]=dnt(e,t)),e.luma.caps[t]||je.log(fnt,\"Feature: \".concat(t,\" not supported\"))(),e.luma.caps[t]}function dnt(e,t){let r=nR[t];ye(r,t);let i,s=hr(e)&&r[1]||r[0];if(typeof s==\"function\")i=s(e);else if(Array.isArray(s)){i=!0;for(let n of s)i=i&&!!e.getExtension(n)}else typeof s==\"string\"?i=!!e.getExtension(s):typeof s==\"boolean\"?i=s:ye(!1);return i}var NV=\"Multiple render targets not supported\",yi=class e extends Ys{get[Symbol.toStringTag](){return\"Framebuffer\"}static isSupported(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{colorBufferFloat:i,colorBufferHalfFloat:s}=r,n=!0;return i&&(n=!!(t.getExtension(\"EXT_color_buffer_float\")||t.getExtension(\"WEBGL_color_buffer_float\")||t.getExtension(\"OES_texture_float\"))),s&&(n=n&&!!(t.getExtension(\"EXT_color_buffer_float\")||t.getExtension(\"EXT_color_buffer_half_float\"))),n}static getDefaultFramebuffer(t){return t.luma=t.luma||{},t.luma.defaultFramebuffer=t.luma.defaultFramebuffer||new e(t,{id:\"default-framebuffer\",handle:null,attachments:{}}),t.luma.defaultFramebuffer}get MAX_COLOR_ATTACHMENTS(){let t=qn(this.gl);return t.getParameter(t.MAX_COLOR_ATTACHMENTS)}get MAX_DRAW_BUFFERS(){let t=qn(this.gl);return t.getParameter(t.MAX_DRAW_BUFFERS)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.width=null,this.height=null,this.attachments={},this.readBuffer=36064,this.drawBuffers=[36064],this.ownResources=[],this.initialize(r),Object.seal(this)}get color(){return this.attachments[36064]||null}get texture(){return this.attachments[36064]||null}get depth(){return this.attachments[36096]||this.attachments[33306]||null}get stencil(){return this.attachments[36128]||this.attachments[33306]||null}initialize(t){let{width:r=1,height:i=1,attachments:s=null,color:n=!0,depth:o=!0,stencil:c=!1,check:f=!0,readBuffer:_=void 0,drawBuffers:w=void 0}=t;if(ye(r>=0&&i>=0,\"Width and height need to be integers\"),this.width=r,this.height=i,s)for(let C in s){let R=s[C];(Array.isArray(R)?R[0]:R).resize({width:r,height:i})}else s=this._createDefaultAttachments(n,o,c,r,i);this.update({clearAttachments:!0,attachments:s,readBuffer:_,drawBuffers:w}),s&&f&&this.checkStatus()}delete(){for(let t of this.ownResources)t.delete();return super.delete(),this}update(t){let{attachments:r={},readBuffer:i,drawBuffers:s,clearAttachments:n=!1,resizeAttachments:o=!0}=t;this.attach(r,{clearAttachments:n,resizeAttachments:o});let{gl:c}=this,f=c.bindFramebuffer(36160,this.handle);return i&&this._setReadBuffer(i),s&&this._setDrawBuffers(s),c.bindFramebuffer(36160,f||null),this}resize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{width:r,height:i}=t;if(this.handle===null)return ye(r===void 0&&i===void 0),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;r===void 0&&(r=this.gl.drawingBufferWidth),i===void 0&&(i=this.gl.drawingBufferHeight),r!==this.width&&i!==this.height&&je.log(2,\"Resizing framebuffer \".concat(this.id,\" to \").concat(r,\"x\").concat(i))();for(let s in this.attachments)this.attachments[s].resize({width:r,height:i});return this.width=r,this.height=i,this}attach(t){let{clearAttachments:r=!1,resizeAttachments:i=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s={};r&&Object.keys(this.attachments).forEach(o=>{s[o]=null}),Object.assign(s,t);let n=this.gl.bindFramebuffer(36160,this.handle);for(let o in s){ye(o!==void 0,\"Misspelled framebuffer binding point?\");let c=Number(o),f=s[c],_=f;if(!_)this._unattach(c);else if(_ instanceof tl)this._attachRenderbuffer({attachment:c,renderbuffer:_});else if(Array.isArray(f)){let[w,C=0,R=0]=f;_=w,this._attachTexture({attachment:c,texture:w,layer:C,level:R})}else this._attachTexture({attachment:c,texture:_,layer:0,level:0});i&&_&&_.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,n||null),Object.assign(this.attachments,t),Object.keys(this.attachments).filter(o=>!this.attachments[o]).forEach(o=>{delete this.attachments[o]})}checkStatus(){let{gl:t}=this,r=this.getStatus();if(r!==36053)throw new Error(Ant(r));return this}getStatus(){let{gl:t}=this,r=t.bindFramebuffer(36160,this.handle),i=t.checkFramebufferStatus(36160);return t.bindFramebuffer(36160,r||null),i}clear(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{color:r,depth:i,stencil:s,drawBuffers:n=[]}=t,o=this.gl.bindFramebuffer(36160,this.handle);return(r||i||s)&&Gf(this.gl,{color:r,depth:i,stencil:s}),n.forEach((c,f)=>{iR(this.gl,{drawBuffer:f,value:c})}),this.gl.bindFramebuffer(36160,o||null),this}readPixels(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)\")(),null}readPixelsToBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)\")(),null}copyToDataUrl(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)\")(),null}copyToImage(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)\")(),null}copyToTexture(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})\")(),null}blit(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)\")(),null}invalidate(t){let{attachments:r=[],x:i=0,y:s=0,width:n,height:o}=t,c=qn(this.gl),f=c.bindFramebuffer(36008,this.handle);return i===0&&s===0&&n===void 0&&o===void 0?c.invalidateFramebuffer(36008,r):c.invalidateFramebuffer(36008,r,i,s,n,o),c.bindFramebuffer(36008,f),this}getAttachmentParameter(t,r,i){let s=this._getAttachmentParameterFallback(r);return s===null&&(this.gl.bindFramebuffer(36160,this.handle),s=this.gl.getFramebufferAttachmentParameter(36160,t,r),this.gl.bindFramebuffer(36160,null)),i&&s>1e3&&(s=ku(this.gl,s)),s}getAttachmentParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:36064,r=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[],s={};for(let n of i){let o=r?ku(this.gl,n):n;s[o]=this.getAttachmentParameter(t,n,r)}return s}getParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,r=Object.keys(this.attachments),i={};for(let s of r){let n=Number(s),o=t?ku(this.gl,n):n;i[o]=this.getAttachmentParameters(n,t)}return i}show(){return typeof window<\"u\"&&window.open(eE(this),\"luma-debug-texture\"),this}log(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";if(t>je.level||typeof window>\"u\")return this;r=r||\"Framebuffer \".concat(this.id);let i=eE(this,{targetMaxHeight:100});return je.image({logLevel:t,message:r,image:i},r)(),this}bind(){let{target:t=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(t,this.handle),this}unbind(){let{target:t=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(t,null),this}_createDefaultAttachments(t,r,i,s,n){let o=null;return t&&(o=o||{},o[36064]=new pi(this.gl,{id:\"\".concat(this.id,\"-color0\"),pixels:null,format:6408,type:5121,width:s,height:n,mipmaps:!1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.ownResources.push(o[36064])),r&&i?(o=o||{},o[33306]=new tl(this.gl,{id:\"\".concat(this.id,\"-depth-stencil\"),format:35056,width:s,height:111}),this.ownResources.push(o[33306])):r?(o=o||{},o[36096]=new tl(this.gl,{id:\"\".concat(this.id,\"-depth\"),format:33189,width:s,height:n}),this.ownResources.push(o[36096])):i&&ye(!1),o}_unattach(t){let r=this.attachments[t];r&&(r instanceof tl?this.gl.framebufferRenderbuffer(36160,t,36161,null):this.gl.framebufferTexture2D(36160,t,3553,null,0),delete this.attachments[t])}_attachRenderbuffer(t){let{attachment:r=36064,renderbuffer:i}=t,{gl:s}=this;s.framebufferRenderbuffer(36160,r,36161,i.handle),this.attachments[r]=i}_attachTexture(t){let{attachment:r=36064,texture:i,layer:s,level:n}=t,{gl:o}=this;switch(o.bindTexture(i.target,i.handle),i.target){case 35866:case 32879:qn(o).framebufferTextureLayer(36160,r,i.target,n,s);break;case 34067:let f=pnt(s);o.framebufferTexture2D(36160,r,f,i.handle,n);break;case 3553:o.framebufferTexture2D(36160,r,3553,i.handle,n);break;default:ye(!1,\"Illegal texture type\")}o.bindTexture(i.target,null),this.attachments[r]=i}_setReadBuffer(t){let r=V4(this.gl);r?r.readBuffer(t):ye(t===36064||t===1029,NV),this.readBuffer=t}_setDrawBuffers(t){let{gl:r}=this,i=qn(r);if(i)i.drawBuffers(t);else{let s=r.getExtension(\"WEBGL_draw_buffers\");s?s.drawBuffersWEBGL(t):ye(t.length===1&&(t[0]===36064||t[0]===1029),NV)}this.drawBuffers=t}_getAttachmentParameterFallback(t){let r=iE(this.gl);switch(t){case 36052:return r.WEBGL2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return r.WEBGL2?null:8;case 33297:return r.WEBGL2?null:5125;case 33296:return!r.WEBGL2&&!r.EXT_sRGB?9729:null;default:return null}}_createHandle(){return this.gl.createFramebuffer()}_deleteHandle(){this.gl.deleteFramebuffer(this.handle)}_bindHandle(t){return this.gl.bindFramebuffer(36160,t)}};function pnt(e){return e<34069?e+34069:e}function Ant(e){return(yi.STATUS||{})[e]||\"Framebuffer error \".concat(e)}var mnt=[36049,36048,33296,33298,33299,33300,33301,33302,33303];yi.ATTACHMENT_PARAMETERS=mnt;function nE(e,t){ye(e instanceof pi||e instanceof G0||e instanceof my);let r=e.constructor,{gl:i,width:s,height:n,format:o,type:c,dataFormat:f,border:_,mipmaps:w}=e,C=Object.assign({width:s,height:n,format:o,type:c,dataFormat:f,border:_,mipmaps:w},t);return new r(i,C)}function FV(e,t){let{gl:r,width:i,height:s,id:n}=e;return new yi(r,Object.assign({},t,{id:\"framebuffer-for-\".concat(n),width:i,height:s,attachments:{36064:e}}))}function GA(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"unnamed\",r=/#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/,i=e.match(r);return i?i[1]:t}function sR(e){switch(e){case 35632:return\"fragment\";case 35633:return\"vertex\";default:return\"unknown type\"}}function oR(e,t,r,i){let s=e.split(/\\r?\\n/),n={},o={},c=i||GA(t)||\"(unnamed)\",f=\"\".concat(sR(r),\" shader \").concat(c);for(let w=0;w1&&arguments[1]!==void 0?arguments[1]:1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\": \",i=e.split(/\\r?\\n/),s=String(i.length+t-1).length;return i.map((n,o)=>{let c=String(o+t),f=c.length;return VV(c,s-f)+r+n})}function VV(e,t){let r=\"\";for(let i=0;i=2&&r[0]===\"#version\"){let i=parseInt(r[1],10);Number.isFinite(i)&&(t=i)}return t}var _nt=\"Shader: GLSL source code must be a JavaScript string\",sE=class e extends Ys{get[Symbol.toStringTag](){return\"Shader\"}static getTypeName(t){switch(t){case 35633:return\"vertex-shader\";case 35632:return\"fragment-shader\";default:return ye(!1),\"unknown\"}}constructor(t,r){Kd(t),ye(typeof r.source==\"string\",_nt);let i=GA(r.source,null)||r.id||Jo(\"unnamed \".concat(e.getTypeName(r.shaderType)));super(t,{id:i}),this.shaderType=r.shaderType,this.source=r.source,this.initialize(r)}initialize(t){let{source:r}=t,i=GA(r,null);i&&(this.id=Jo(i)),this._compile(r)}getParameter(t){return this.gl.getShaderParameter(this.handle,t)}toString(){return\"\".concat(e.getTypeName(this.shaderType),\":\").concat(this.id)}getName(){return GA(this.source)||\"unnamed-shader\"}getSource(){return this.gl.getShaderSource(this.handle)}getTranslatedSource(){let t=this.gl.getExtension(\"WEBGL_debug_shaders\");return t?t.getTranslatedShaderSource(this.handle):\"No translated source available. WEBGL_debug_shaders not implemented\"}_compile(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.source;if(t.startsWith(\"#version \")||(t=`#version 100\n`.concat(t)),this.source=t,this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){let i=this.gl.getShaderInfoLog(this.handle),{shaderName:s,errors:n,warnings:o}=oR(i,this.source,this.shaderType,this.id);throw je.error(\"GLSL compilation errors in \".concat(s,`\n`).concat(n))(),je.warn(\"GLSL compilation warnings in \".concat(s,`\n`).concat(o))(),new Error(\"GLSL compilation errors in \".concat(s))}}_deleteHandle(){this.gl.deleteShader(this.handle)}_getOptsFromHandle(){return{type:this.getParameter(35663),source:this.getSource()}}},q0=class extends sE{get[Symbol.toStringTag](){return\"VertexShader\"}constructor(t,r){typeof r==\"string\"&&(r={source:r}),super(t,Object.assign({},r,{shaderType:35633}))}_createHandle(){return this.gl.createShader(35633)}},Z0=class extends sE{get[Symbol.toStringTag](){return\"FragmentShader\"}constructor(t,r){typeof r==\"string\"&&(r={source:r}),super(t,Object.assign({},r,{shaderType:35632}))}_createHandle(){return this.gl.createShader(35632)}};var ynt={5126:Zn.bind(null,\"uniform1fv\",Zc,1,el),35664:Zn.bind(null,\"uniform2fv\",Zc,2,el),35665:Zn.bind(null,\"uniform3fv\",Zc,3,el),35666:Zn.bind(null,\"uniform4fv\",Zc,4,el),5124:Zn.bind(null,\"uniform1iv\",WA,1,el),35667:Zn.bind(null,\"uniform2iv\",WA,2,el),35668:Zn.bind(null,\"uniform3iv\",WA,3,el),35669:Zn.bind(null,\"uniform4iv\",WA,4,el),35670:Zn.bind(null,\"uniform1iv\",WA,1,el),35671:Zn.bind(null,\"uniform2iv\",WA,2,el),35672:Zn.bind(null,\"uniform3iv\",WA,3,el),35673:Zn.bind(null,\"uniform4iv\",WA,4,el),35674:Zn.bind(null,\"uniformMatrix2fv\",Zc,4,Jd),35675:Zn.bind(null,\"uniformMatrix3fv\",Zc,9,Jd),35676:Zn.bind(null,\"uniformMatrix4fv\",Zc,16,Jd),35678:_a,35680:_a,5125:Zn.bind(null,\"uniform1uiv\",oE,1,el),36294:Zn.bind(null,\"uniform2uiv\",oE,2,el),36295:Zn.bind(null,\"uniform3uiv\",oE,3,el),36296:Zn.bind(null,\"uniform4uiv\",oE,4,el),35685:Zn.bind(null,\"uniformMatrix2x3fv\",Zc,6,Jd),35686:Zn.bind(null,\"uniformMatrix2x4fv\",Zc,8,Jd),35687:Zn.bind(null,\"uniformMatrix3x2fv\",Zc,6,Jd),35688:Zn.bind(null,\"uniformMatrix3x4fv\",Zc,12,Jd),35689:Zn.bind(null,\"uniformMatrix4x2fv\",Zc,8,Jd),35690:Zn.bind(null,\"uniformMatrix4x3fv\",Zc,12,Jd),35678:_a,35680:_a,35679:_a,35682:_a,36289:_a,36292:_a,36293:_a,36298:_a,36299:_a,36300:_a,36303:_a,36306:_a,36307:_a,36308:_a,36311:_a},vnt={},xnt={},bnt={},jV=[0];function aR(e,t,r,i){t===1&&typeof e==\"boolean\"&&(e=e?1:0),Number.isFinite(e)&&(jV[0]=e,e=jV);let s=e.length;if(s%t&&je.warn(\"Uniform size should be multiples of \".concat(t),e)(),e instanceof r)return e;let n=i[s];n||(n=new r(s),i[s]=n);for(let o=0;o{let s=e!==i;return s&&(t.uniform1i(r,i),e=i),s}}function Zn(e,t,r,i){let s=null,n=null;return(o,c,f)=>{let _=t(f,r),w=_.length,C=!1;if(s===null)s=new Float32Array(w),n=w,C=!0;else{ye(n===w,\"Uniform length cannot change.\");for(let R=0;R=0&&this._addAttribute(f,n,o,c)}this.attributeInfos.sort((s,n)=>s.location-n.location)}_readVaryingsFromProgram(t){let{gl:r}=t;if(!hr(r))return;let i=r.getProgramParameter(t.handle,35971);for(let s=0;ss.location-n.location)}_addAttribute(t,r,i,s){let{type:n,components:o}=uR(i),c={type:n,size:s*o};this._inferProperties(t,r,c);let f={location:t,name:r,accessor:new Tl(c)};this.attributeInfos.push(f),this.attributeInfosByLocation[t]=f,this.attributeInfosByName[f.name]=f}_inferProperties(t,r,i){/instance/i.test(r)&&(i.divisor=1)}_addVarying(t,r,i,s){let{type:n,components:o}=uR(i),c=new Tl({type:n,size:s*o}),f={location:t,name:r,accessor:c};this.varyingInfos.push(f),this.varyingInfosByName[f.name]=f}};var YV=4,est=35981,rst=[\"setVertexArray\",\"setAttributes\",\"setBuffers\",\"unsetBuffers\",\"use\",\"getUniformCount\",\"getUniformInfo\",\"getUniformLocation\",\"getUniformValue\",\"getVarying\",\"getFragDataLocation\",\"getAttachedShaders\",\"getAttributeCount\",\"getAttributeLocation\",\"getAttributeInfo\"],tp=class extends Ys{get[Symbol.toStringTag](){return\"Program\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.stubRemovedMethods(\"Program\",\"v6.0\",rst),this._isCached=!1,this.initialize(r),Object.seal(this),this._setId(r.id)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{hash:r,vs:i,fs:s,varyings:n,bufferMode:o=est}=t;return this.hash=r||\"\",this.vs=typeof i==\"string\"?new q0(this.gl,{id:\"\".concat(t.id,\"-vs\"),source:i}):i,this.fs=typeof s==\"string\"?new Z0(this.gl,{id:\"\".concat(t.id,\"-fs\"),source:s}):s,ye(this.vs instanceof q0),ye(this.fs instanceof Z0),this.uniforms={},this._textureUniforms={},n&&n.length>0&&(qn(this.gl),this.varyings=n,this.gl2.transformFeedbackVaryings(this.handle,n,o)),this._compileAndLink(),this._readUniformLocationsFromLinkedProgram(),this.configuration=new lb(this),this.setProps(t)}delete(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this._isCached?this:super.delete(t)}setProps(t){return\"uniforms\"in t&&this.setUniforms(t.uniforms),this}draw(t){let{logPriority:r,drawMode:i=4,vertexCount:s,offset:n=0,start:o,end:c,isIndexed:f=!1,indexType:_=5123,instanceCount:w=0,isInstanced:C=w>0,vertexArray:R=null,transformFeedback:N,framebuffer:j,parameters:Y={},uniforms:rt,samplers:$}=t;if((rt||$)&&(je.deprecated(\"Program.draw({uniforms})\",\"Program.setUniforms(uniforms)\")(),this.setUniforms(rt||{})),je.priority>=r){let K=j?j.id:\"default\",tt=\"mode=\".concat(ku(this.gl,i),\" verts=\").concat(s,\" \")+\"instances=\".concat(w,\" indexType=\").concat(ku(this.gl,_),\" \")+\"isInstanced=\".concat(C,\" isIndexed=\").concat(f,\" \")+\"Framebuffer=\".concat(K);je.log(r,tt)()}return ye(R),this.gl.useProgram(this.handle),!this._areTexturesRenderable()||s===0||C&&w===0?!1:(R.bindForDraw(s,w,()=>{if(j!==void 0&&(Y=Object.assign({},Y,{framebuffer:j})),N){let K=ZV(i);N.begin(K)}this._bindTextures(),bn(this.gl,Y,()=>{f&&C?this.gl2.drawElementsInstanced(i,s,_,n,w):f&&hr(this.gl)&&!isNaN(o)&&!isNaN(c)?this.gl2.drawRangeElements(i,o,c,s,_,n):f?this.gl.drawElements(i,s,_,n):C?this.gl2.drawArraysInstanced(i,n,s,w):this.gl.drawArrays(i,n,s)}),N&&N.end()}),!0)}setUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};je.priority>=2&&WV(t,this.id,this._uniformSetters),this.gl.useProgram(this.handle);for(let r in t){let i=t[r],s=this._uniformSetters[r];if(s){let n=i,o=!1;if(n instanceof yi&&(n=n.texture),n instanceof Ja)if(o=this.uniforms[r]!==i,o){s.textureIndex===void 0&&(s.textureIndex=this._textureIndexCounter++);let c=n,{textureIndex:f}=s;c.bind(f),n=f,this._textureUniforms[r]=c}else n=s.textureIndex;else this._textureUniforms[r]&&delete this._textureUniforms[r];(s(n)||o)&&HV(this.uniforms,r,i)}}return this}_areTexturesRenderable(){let t=!0;for(let r in this._textureUniforms){let i=this._textureUniforms[r];i.update(),t=t&&i.loaded}return t}_bindTextures(){for(let t in this._textureUniforms){let r=this._uniformSetters[t].textureIndex;this._textureUniforms[t].bind(r)}}_createHandle(){return this.gl.createProgram()}_deleteHandle(){this.gl.deleteProgram(this.handle)}_getOptionsFromHandle(t){let r=this.gl.getAttachedShaders(t),i={};for(let s of r)switch(this.gl.getShaderParameter(this.handle,35663)){case 35633:i.vs=new q0({handle:s});break;case 35632:i.fs=new Z0({handle:s});break;default:}return i}_getParameter(t){return this.gl.getProgramParameter(this.handle,t)}_setId(t){if(!t){let r=this._getName();this.id=Jo(r)}}_getName(){let t=this.vs.getName()||this.fs.getName();return t=t.replace(/shader/i,\"\"),t=t?\"\".concat(t,\"-program\"):\"program\",t}_compileAndLink(){let{gl:t}=this;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),je.time(YV,\"linkProgram for \".concat(this._getName()))(),t.linkProgram(this.handle),je.timeEnd(YV,\"linkProgram for \".concat(this._getName()))(),t.debug||je.level>0){if(!t.getProgramParameter(this.handle,35714))throw new Error(\"Error linking: \".concat(t.getProgramInfoLog(this.handle)));if(t.validateProgram(this.handle),!t.getProgramParameter(this.handle,35715))throw new Error(\"Error validating: \".concat(t.getProgramInfoLog(this.handle)))}}_readUniformLocationsFromLinkedProgram(){let{gl:t}=this;this._uniformSetters={},this._uniformCount=this._getParameter(35718);for(let r=0;r1)for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:[],i=hr(t),s=Dh(t,Pi.TIMER_QUERY),n=i||s;for(let o of r)switch(o){case\"queries\":n=n&&i;break;case\"timers\":n=n&&s;break;default:ye(!1)}return n}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.target=null,this._queryPending=!1,this._pollingPromise=null,Object.seal(this)}beginTimeElapsedQuery(){return this.begin(sst)}beginOcclusionQuery(){let{conservative:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.begin(t?cst:lst)}beginTransformFeedbackQuery(){return this.begin(ast)}begin(t){return this._queryPending?this:(this.target=t,this.gl2.beginQuery(this.target,this.handle),this)}end(){return this._queryPending?this:(this.target&&(this.gl2.endQuery(this.target),this.target=null,this._queryPending=!0),this)}isResultAvailable(){if(!this._queryPending)return!1;let t=this.gl2.getQueryParameter(this.handle,nst);return t&&(this._queryPending=!1),t}isTimerDisjoint(){return this.gl2.getParameter(ost)}getResult(){return this.gl2.getQueryParameter(this.handle,ist)}getTimerMilliseconds(){return this.getResult()/1e6}createPoll(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Number.POSITIVE_INFINITY;if(this._pollingPromise)return this._pollingPromise;let r=0;return this._pollingPromise=new Promise((i,s)=>{let n=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):r++>t?(s(\"Timed out\"),this._pollingPromise=null):requestAnimationFrame(n)};requestAnimationFrame(n)}),this._pollingPromise}_createHandle(){return e.isSupported(this.gl)?this.gl2.createQuery():null}_deleteHandle(){this.gl2.deleteQuery(this.handle)}};var ep=class extends Ys{get[Symbol.toStringTag](){return\"TransformFeedback\"}static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(t),super(t,r),this.initialize(r),this.stubRemovedMethods(\"TransformFeedback\",\"v6.0\",[\"pause\",\"resume\"]),Object.seal(this)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.buffers={},this.unused={},this.configuration=null,this.bindOnUse=!0,jf(this.buffers)||this.bind(()=>this._unbindBuffers()),this.setProps(t),this}setProps(t){\"program\"in t&&(this.configuration=t.program&&t.program.configuration),\"configuration\"in t&&(this.configuration=t.configuration),\"bindOnUse\"in t&&(t=t.bindOnUse),\"buffers\"in t&&this.setBuffers(t.buffers)}setBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.bind(()=>{for(let r in t)this.setBuffer(r,t[r])}),this}setBuffer(t,r){let i=this._getVaryingIndex(t),{buffer:s,byteSize:n,byteOffset:o}=this._getBufferParams(r);return i<0?(this.unused[t]=s,je.warn(\"\".concat(this.id,\" unused varying buffer \").concat(t))(),this):(this.buffers[i]=r,this.bindOnUse||this._bindBuffer(i,s,o,n),this)}begin(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.gl.bindTransformFeedback(36386,this.handle),this._bindBuffers(),this.gl.beginTransformFeedback(t),this}end(){return this.gl.endTransformFeedback(),this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null),this}_getBufferParams(t){let r,i,s;return t instanceof Fr?s=t:(s=t.buffer,i=t.byteSize,r=t.byteOffset),(r!==void 0||i!==void 0)&&(r=r||0,i=i||s.byteLength-r),{buffer:s,byteOffset:r,byteSize:i}}_getVaryingInfo(t){return this.configuration&&this.configuration.getVaryingInfo(t)}_getVaryingIndex(t){if(this.configuration)return this.configuration.getVaryingInfo(t).location;let r=Number(t);return Number.isFinite(r)?r:-1}_bindBuffers(){if(this.bindOnUse)for(let t in this.buffers){let{buffer:r,byteSize:i,byteOffset:s}=this._getBufferParams(this.buffers[t]);this._bindBuffer(t,r,s,i)}}_unbindBuffers(){if(this.bindOnUse)for(let t in this.buffers)this._bindBuffer(t,null)}_bindBuffer(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,s=arguments.length>3?arguments[3]:void 0,n=r&&r.handle;return!n||s===void 0?this.gl.bindBufferBase(35982,t,n):this.gl.bindBufferRange(35982,t,n,i,s),this}_createHandle(){return this.gl.createTransformFeedback()}_deleteHandle(){this.gl.deleteTransformFeedback(this.handle)}_bindHandle(t){this.gl.bindTransformFeedback(36386,this.handle)}};var uE=null;function ust(e){return(!uE||uE.byteLength1&&arguments[1]!==void 0?arguments[1]:{}).constantAttributeZero?hr(t)||cy()===\"Chrome\":!0}static getDefaultArray(t){return t.luma=t.luma||{},t.luma.defaultVertexArray||(t.luma.defaultVertexArray=new e(t,{handle:null,isDefaultArray:!0})),t.luma.defaultVertexArray}static getMaxAttributes(t){return e.MAX_ATTRIBUTES=e.MAX_ATTRIBUTES||t.getParameter(34921),e.MAX_ATTRIBUTES}static setConstant(t,r,i){switch(i.constructor){case Float32Array:e._setConstantFloatArray(t,r,i);break;case Int32Array:e._setConstantIntArray(t,r,i);break;case Uint32Array:e._setConstantUintArray(t,r,i);break;default:ye(!1)}}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.id||r.program&&r.program.id;super(t,Object.assign({},r,{id:i})),this.buffer=null,this.bufferValue=null,this.isDefaultArray=r.isDefaultArray||!1,this.gl2=t,this.initialize(r),Object.seal(this)}delete(){return super.delete(),this.buffer&&this.buffer.delete(),this}get MAX_ATTRIBUTES(){return e.getMaxAttributes(this.gl)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.setProps(t)}setProps(t){return this}setElementBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return ye(!t||t.target===34963,hst),this.bind(()=>{this.gl.bindBuffer(34963,t?t.handle:null)}),this}setBuffer(t,r,i){if(r.target===34963)return this.setElementBuffer(r,i);let{size:s,type:n,stride:o,offset:c,normalized:f,integer:_,divisor:w}=i,{gl:C,gl2:R}=this;return t=Number(t),this.bind(()=>{C.bindBuffer(34962,r.handle),_?(ye(hr(C)),R.vertexAttribIPointer(t,s,n,o,c)):C.vertexAttribPointer(t,s,n,f,o,c),C.enableVertexAttribArray(t),R.vertexAttribDivisor(t,w||0)}),this}enable(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return!r&&t===0&&!e.isSupported(this.gl,{constantAttributeZero:!0})||(t=Number(t),this.bind(()=>r?this.gl.enableVertexAttribArray(t):this.gl.disableVertexAttribArray(t))),this}getConstantBuffer(t,r){let i=this._normalizeConstantArrayValue(r),s=i.byteLength*t,n=i.length*t,o=!this.buffer;if(this.buffer=this.buffer||new Fr(this.gl,s),o=o||this.buffer.reallocate(s),o=o||!this._compareConstantArrayValues(i,this.bufferValue),o){let c=QV(r.constructor,n);$V({target:c,source:i,start:0,count:n}),this.buffer.subData(c),this.bufferValue=r}return this.buffer}_normalizeConstantArrayValue(t){return Array.isArray(t)?new Float32Array(t):t}_compareConstantArrayValues(t,r){if(!t||!r||t.length!==r.length||t.constructor!==r.constructor)return!1;for(let i=0;i{switch(t){case 34373:return this.gl.getVertexAttribOffset(i,t);default:return this.gl.getVertexAttrib(i,t)}})}};var fst=\"VertexArray: attributes must be Buffers or constants (i.e. typed array)\",dst=/^(.+)__LOCATION_([0-9]+)$/,pst=[\"setBuffers\",\"setGeneric\",\"clearBindings\",\"setLocations\",\"setGenericValues\",\"setDivisor\",\"enable\",\"disable\"],_y=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.id||r.program&&r.program.id;this.id=i,this.gl=t,this.configuration=null,this.elements=null,this.elementsAccessor=null,this.values=null,this.accessors=null,this.unused=null,this.drawParams=null,this.buffer=null,this.attributes={},this.vertexArrayObject=new Q0(t),XM(this,\"VertexArray\",\"v6.0\",pst),this.initialize(r),Object.seal(this)}delete(){this.buffer&&this.buffer.delete(),this.vertexArrayObject.delete()}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.reset(),this.configuration=null,this.bindOnUse=!1,this.setProps(t)}reset(){this.elements=null,this.elementsAccessor=null;let{MAX_ATTRIBUTES:t}=this.vertexArrayObject;return this.values=new Array(t).fill(null),this.accessors=new Array(t).fill(null),this.unused={},this.drawParams=null,this}setProps(t){return\"program\"in t&&(this.configuration=t.program&&t.program.configuration),\"configuration\"in t&&(this.configuration=t.configuration),\"attributes\"in t&&this.setAttributes(t.attributes),\"elements\"in t&&this.setElementBuffer(t.elements),\"bindOnUse\"in t&&(t=t.bindOnUse),this}clearDrawParams(){this.drawParams=null}getDrawParams(){return this.drawParams=this.drawParams||this._updateDrawParams(),this.drawParams}setAttributes(t){return Object.assign(this.attributes,t),this.vertexArrayObject.bind(()=>{for(let r in t){let i=t[r];this._setAttribute(r,i)}this.gl.bindBuffer(34962,null)}),this}setElementBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.elements=t,this.elementsAccessor=r,this.clearDrawParams(),this.vertexArrayObject.setElementBuffer(t,r),this}setBuffer(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(r.target===34963)return this.setElementBuffer(r,i);let{location:s,accessor:n}=this._resolveLocationAndAccessor(t,r,r.accessor,i);return s>=0&&(this.values[s]=r,this.accessors[s]=n,this.clearDrawParams(),this.vertexArrayObject.setBuffer(s,r,n)),this}setConstant(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{location:s,accessor:n}=this._resolveLocationAndAccessor(t,r,Object.assign({size:r.length},i));return s>=0&&(r=this.vertexArrayObject._normalizeConstantArrayValue(r),this.values[s]=r,this.accessors[s]=n,this.clearDrawParams(),this.vertexArrayObject.enable(s,!1)),this}unbindBuffers(){return this.vertexArrayObject.bind(()=>{this.elements&&this.vertexArrayObject.setElementBuffer(null),this.buffer=this.buffer||new Fr(this.gl,{accessor:{size:4}});for(let t=0;t{this.elements&&this.setElementBuffer(this.elements);for(let t=0;t{this._setConstantAttributes(t,r),s=i()}),s}_resolveLocationAndAccessor(t,r,i,s){let n={location:-1,accessor:null},{location:o,name:c}=this._getAttributeIndex(t);if(!Number.isFinite(o)||o<0)return this.unused[t]=r,je.once(3,()=>\"unused value \".concat(t,\" in \").concat(this.id))(),n;let f=this._getAttributeInfo(c||o);if(!f)return n;let _=this.accessors[o]||{},w=Tl.resolve(f.accessor,_,i,s),{size:C,type:R}=w;return ye(Number.isFinite(C)&&Number.isFinite(R)),{location:o,accessor:w}}_getAttributeInfo(t){return this.configuration&&this.configuration.getAttributeInfo(t)}_getAttributeIndex(t){let r=Number(t);if(Number.isFinite(r))return{location:r};let i=dst.exec(t),s=i?i[1]:t,n=i?Number(i[2]):0;return this.configuration?{location:this.configuration.getAttributeLocation(s)+n,name:s}:{location:-1}}_setAttribute(t,r){if(r instanceof Fr)this.setBuffer(t,r);else if(Array.isArray(r)&&r.length&&r[0]instanceof Fr){let i=r[0],s=r[1];this.setBuffer(t,i,s)}else if(ArrayBuffer.isView(r)||Array.isArray(r)){let i=r;this.setConstant(t,i)}else if(r.buffer instanceof Fr){let i=r;this.setBuffer(t,i.buffer,i)}else throw new Error(fst)}_setConstantAttributes(t,r){let i=Math.max(t|0,r|0),s=this.values[0];ArrayBuffer.isView(s)&&this._setConstantAttributeZero(s,i);for(let n=1;n0;if(t.isInstanced=t.isInstanced||o,i instanceof Fr){let c=i;if(o){let f=c.getVertexCount(s);t.instanceCount=Math.min(t.instanceCount,f)}else{let f=c.getVertexCount(s);t.vertexCount=Math.min(t.vertexCount,f)}}}setElements(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return je.deprecated(\"setElements\",\"setElementBuffer\")(),this.setElementBuffer(t,r)}};function Ast(e,t){let{maxElts:r=16,size:i=1}=t,s=\"[\";for(let o=0;o0&&(s+=\",\".concat(o%i===0?\" \":\"\")),s+=$0(e[o],t);let n=e.length>r?\"...\":\"]\";return\"\".concat(s).concat(n)}function $0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=1e-16,{isInteger:i=!1}=t;if(Array.isArray(e)||ArrayBuffer.isView(e))return Ast(e,t);if(!Number.isFinite(e))return String(e);if(Math.abs(e)100&&Math.abs(e)<1e4)return e.toFixed(0);let s=e.toPrecision(2);return s.indexOf(\".0\")===s.length-2?s.slice(0,-1):s}function hE(e){let{header:t=\"Uniforms\",program:r,uniforms:i,undefinedOnly:s=!1}=e;ye(r);let n=\".*_.*\",o=\".*Matrix\",c=r._uniformSetters,f={},_=Object.keys(c).sort(),w=0;for(let N of _)!N.match(n)&&!N.match(o)&&hR({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;for(let N of _)N.match(o)&&hR({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;for(let N of _)f[N]||hR({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;let C=0,R={};if(!s)for(let N in i){let j=i[N];f[N]||(C++,R[N]={Type:\"NOT USED: \".concat(j),[t]:$0(j)})}return{table:f,count:w,unusedTable:R,unusedCount:C}}function hR(e){let{table:t,header:r,uniforms:i,uniformName:s,undefinedOnly:n}=e,o=i[s],c=mst(o);return!n||!c?(t[s]={[r]:c?$0(o):\"N/A\",\"Uniform Type\":c?o:\"NOT PROVIDED\"},!0):!1}function mst(e){return e!=null}function fR(e){let{vertexArray:t,header:r=\"Attributes\"}=e;if(!t.configuration)return{};let i={};t.elements&&(i.ELEMENT_ARRAY_BUFFER=XV(t,t.elements,null,r));let s=t.values;for(let n in s){let o=t._getAttributeInfo(n);if(o){let c=\"\".concat(n,\": \").concat(o.name),f=t.accessors[o.location];f&&(c=\"\".concat(n,\": \").concat(gst(o.name,f))),i[c]=XV(t,s[n],f,r)}}return i}function XV(e,t,r,i){let{gl:s}=e;if(!t)return{[i]:\"null\",\"Format \":\"N/A\"};let n=\"NOT PROVIDED\",o=1,c=0,f=0,_,w,C;if(r&&(n=r.type,o=r.size,n=String(n).replace(\"Array\",\"\"),_=n.indexOf(\"nt\")!==-1),t instanceof Fr){let R=t,{data:N,changed:j}=R.getDebugData();w=j?\"*\":\"\",C=N,f=R.byteLength,c=f/N.BYTES_PER_ELEMENT/o;let Y;if(r){let rt=r.divisor>0;Y=\"\".concat(rt?\"I \":\"P \",\" \").concat(c,\" (x\").concat(o,\"=\").concat(f,\" bytes \").concat(ku(s,n),\")\")}else _=!0,Y=\"\".concat(f,\" bytes\");return{[i]:\"\".concat(w).concat($0(C,{size:o,isInteger:_})),\"Format \":Y}}return C=t,o=t.length,n=String(t.constructor.name).replace(\"Array\",\"\"),_=n.indexOf(\"nt\")!==-1,{[i]:\"\".concat($0(C,{size:o,isInteger:_}),\" (constant)\"),\"Format \":\"\".concat(o,\"x\").concat(n,\" (constant)\")}}function gst(e,t){let{type:r,size:i}=t,s=cE(r,i);return s?\"\".concat(e,\" (\").concat(s.name,\")\"):e}function dR(e){let t={},r=\"Accessors for \".concat(e.id);for(let i of e.attributeInfos)if(i){let s=KV(i);t[\"in \".concat(s)]={[r]:JSON.stringify(i.accessor)}}for(let i of e.varyingInfos)if(i){let s=KV(i);t[\"out \".concat(s)]={[r]:JSON.stringify(i.accessor)}}return t}function KV(e){let{type:t,size:r}=e.accessor,i=cE(t,r);return i?\"\".concat(i.name,\" \").concat(e.name):e.name}var JV=wo()&&typeof document<\"u\",yst=0,X0=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{onCreateContext:r=rt=>py(rt),onAddHTML:i=null,onInitialize:s=()=>{},onRender:n=()=>{},onFinalize:o=()=>{},onError:c,gl:f=null,glOptions:_={},debug:w=!1,createFramebuffer:C=!1,autoResizeViewport:R=!0,autoResizeDrawingBuffer:N=!0,stats:j=Lu.get(\"animation-loop-\".concat(yst++))}=t,{useDevicePixels:Y=!0}=t;\"useDevicePixelRatio\"in t&&(je.deprecated(\"useDevicePixelRatio\",\"useDevicePixels\")(),Y=t.useDevicePixelRatio),this.props={onCreateContext:r,onAddHTML:i,onInitialize:s,onRender:n,onFinalize:o,onError:c,gl:f,glOptions:_,debug:w,createFramebuffer:C},this.gl=f,this.needsRedraw=null,this.timeline=null,this.stats=j,this.cpuTime=this.stats.get(\"CPU Time\"),this.gpuTime=this.stats.get(\"GPU Time\"),this.frameRate=this.stats.get(\"Frame Rate\"),this._initialized=!1,this._running=!1,this._animationFrameId=null,this._nextFramePromise=null,this._resolveNextFrame=null,this._cpuStartTime=0,this.setProps({autoResizeViewport:R,autoResizeDrawingBuffer:N,useDevicePixels:Y}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._pageLoadPromise=null,this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}delete(){this.stop(),this._setDisplay(null)}setNeedsRedraw(t){return ye(typeof t==\"string\"),this.needsRedraw=this.needsRedraw||t,this}setProps(t){return\"autoResizeViewport\"in t&&(this.autoResizeViewport=t.autoResizeViewport),\"autoResizeDrawingBuffer\"in t&&(this.autoResizeDrawingBuffer=t.autoResizeDrawingBuffer),\"useDevicePixels\"in t&&(this.useDevicePixels=t.useDevicePixels),this}start(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this._running)return this;this._running=!0;let r=this._getPageLoadPromise().then(()=>!this._running||this._initialized?null:(this._createWebGLContext(t),this._createFramebuffer(),this._startEventHandling(),this._initializeCallbackData(),this._updateCallbackData(),this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._gpuTimeQuery=Y0.isSupported(this.gl,[\"timers\"])?new Y0(this.gl):null,this._initialized=!0,this.onInitialize(this.animationProps))).then(i=>{this._running&&(this._addCallbackData(i||{}),i!==!1&&this._startLoop())});return this.props.onError&&r.catch(this.props.onError),this}redraw(){return this.isContextLost()?this:(this._beginTimers(),this._setupFrame(),this._updateCallbackData(),this._renderFrame(this.animationProps),this._clearNeedsRedraw(),this.offScreen&&this.gl.commit&&this.gl.commit(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endTimers(),this)}stop(){return this._running&&(this._finalizeCallbackData(),this._cancelAnimationFrame(this._animationFrameId),this._nextFramePromise=null,this._resolveNextFrame=null,this._animationFrameId=null,this._running=!1),this}attachTimeline(t){return this.timeline=t,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw(\"waitForRender\"),this._nextFramePromise||(this._nextFramePromise=new Promise(t=>{this._resolveNextFrame=t})),this._nextFramePromise}async toDataURL(){return this.setNeedsRedraw(\"toDataURL\"),await this.waitForRender(),this.gl.canvas.toDataURL()}isContextLost(){return this.gl.isContextLost()}onCreateContext(){return this.props.onCreateContext(...arguments)}onInitialize(){return this.props.onInitialize(...arguments)}onRender(){return this.props.onRender(...arguments)}onFinalize(){return this.props.onFinalize(...arguments)}getHTMLControlValue(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,i=document.getElementById(t);return i?Number(i.value):r}setViewParameters(){return je.removed(\"AnimationLoop.setViewParameters\",\"AnimationLoop.setProps\")(),this}_startLoop(){let t=()=>{this._running&&(this.redraw(),this._animationFrameId=this._requestAnimationFrame(t))};this._cancelAnimationFrame(this._animationFrameId),this._animationFrameId=this._requestAnimationFrame(t)}_getPageLoadPromise(){return this._pageLoadPromise||(this._pageLoadPromise=JV?new Promise((t,r)=>{if(JV&&document.readyState===\"complete\"){t(document);return}window.addEventListener(\"load\",()=>{t(document)})}):Promise.resolve({})),this._pageLoadPromise}_setDisplay(t){this.display&&(this.display.delete(),this.display.animationLoop=null),t&&(t.animationLoop=this),this.display=t}_cancelAnimationFrame(t){return this.display&&this.display.cancelAnimationFrame?this.display.cancelAnimationFrame(t):K4(t)}_requestAnimationFrame(t){if(this._running)return this.display&&this.display.requestAnimationFrame?this.display.requestAnimationFrame(t):X4(t)}_renderFrame(){if(this.display){this.display._renderFrame(...arguments);return}this.onRender(...arguments)}_clearNeedsRedraw(){this.needsRedraw=null}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._resizeFramebuffer()}_initializeCallbackData(){this.animationProps={gl:this.gl,stop:this.stop,canvas:this.gl.canvas,framebuffer:this.framebuffer,useDevicePixels:this.useDevicePixels,needsRedraw:null,startTime:Date.now(),engineTime:0,tick:0,tock:0,time:0,_timeline:this.timeline,_loop:this,_animationLoop:this,_mousePosition:null}}_updateCallbackData(){let{width:t,height:r,aspect:i}=this._getSizeAndAspect();(t!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw(\"drawing buffer resized\"),i!==this.animationProps.aspect&&this.setNeedsRedraw(\"drawing buffer aspect changed\"),this.animationProps.width=t,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime,this.animationProps._offScreen=this.offScreen}_finalizeCallbackData(){this.onFinalize(this.animationProps)}_addCallbackData(t){typeof t==\"object\"&&t!==null&&(this.animationProps=Object.assign({},this.animationProps,t))}_createWebGLContext(t){if(this.offScreen=t.canvas&&typeof OffscreenCanvas<\"u\"&&t.canvas instanceof OffscreenCanvas,t=Object.assign({},t,this.props.glOptions),this.gl=this.props.gl?V0(this.props.gl,t):this.onCreateContext(t),!Xd(this.gl))throw new Error(\"AnimationLoop.onCreateContext - illegal context returned\");QM(this.gl),this._createInfoDiv()}_createInfoDiv(){if(this.gl.canvas&&this.props.onAddHTML){let t=document.createElement(\"div\");document.body.appendChild(t),t.style.position=\"relative\";let r=document.createElement(\"div\");r.style.position=\"absolute\",r.style.left=\"10px\",r.style.bottom=\"10px\",r.style.width=\"300px\",r.style.background=\"white\",t.appendChild(this.gl.canvas),t.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){let t=this.gl.drawingBufferWidth,r=this.gl.drawingBufferHeight,i=1,{canvas:s}=this.gl;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:t>0&&r>0&&(i=t/r),{width:t,height:r,aspect:i}}_resizeViewport(){this.autoResizeViewport&&this.gl.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.autoResizeDrawingBuffer&&Q4(this.gl,{useDevicePixels:this.useDevicePixels})}_createFramebuffer(){this.props.createFramebuffer&&(this.framebuffer=new yi(this.gl))}_resizeFramebuffer(){this.framebuffer&&this.framebuffer.resize({width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight})}_beginTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this._gpuTimeQuery&&this._gpuTimeQuery.isResultAvailable()&&!this._gpuTimeQuery.isTimerDisjoint()&&this.stats.get(\"GPU Time\").addTime(this._gpuTimeQuery.getTimerMilliseconds()),this._gpuTimeQuery&&this._gpuTimeQuery.beginTimeElapsedQuery(),this.cpuTime.timeStart()}_endTimers(){this.cpuTime.timeEnd(),this._gpuTimeQuery&&this._gpuTimeQuery.end()}_startEventHandling(){let{canvas:t}=this.gl;t&&(t.addEventListener(\"mousemove\",this._onMousemove),t.addEventListener(\"mouseleave\",this._onMouseleave))}_onMousemove(t){this.animationProps._mousePosition=[t.offsetX,t.offsetY]}_onMouseleave(t){this.animationProps._mousePosition=null}};var K0=\"vs\",cb=\"fs\";function Qs(e,t){if(!e)throw new Error(t||\"shadertools: assertion failed.\")}var pR={number:{validate(e,t){return Number.isFinite(e)&&(!(\"max\"in t)||e<=t.max)&&(!(\"min\"in t)||e>=t.min)}},array:{validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function ej(e){let t={};for(let r in e){let i=e[r],s=vst(i);t[r]=s}return t}function vst(e){let t=tj(e);return t===\"object\"?e?\"type\"in e?Object.assign({},e,pR[e.type]):\"value\"in e?(t=tj(e.value),Object.assign({type:t},e,pR[t])):{type:\"object\",value:e}:{type:\"object\",value:null}:Object.assign({type:t,value:e},pR[t])}function tj(e){return Array.isArray(e)||ArrayBuffer.isView(e)?\"array\":typeof e}var xst=\"vs\",bst=\"fs\",yy=class{constructor(t){let{name:r,vs:i,fs:s,dependencies:n=[],uniforms:o,getUniforms:c,deprecations:f=[],defines:_={},inject:w={},vertexShader:C,fragmentShader:R}=t;Qs(typeof r==\"string\"),this.name=r,this.vs=i||C,this.fs=s||R,this.getModuleUniforms=c,this.dependencies=n,this.deprecations=this._parseDeprecationDefinitions(f),this.defines=_,this.injections=wst(w),o&&(this.uniforms=ej(o))}getModuleSource(t){let r;switch(t){case xst:r=this.vs||\"\";break;case bst:r=this.fs||\"\";break;default:Qs(!1)}return\"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi,\"_\"),`\n`).concat(r,\"// END MODULE_\").concat(this.name,`\n\n`)}getUniforms(t,r){return this.getModuleUniforms?this.getModuleUniforms(t,r):this.uniforms?this._defaultGetUniforms(t):{}}getDefines(){return this.defines}checkDeprecations(t,r){this.deprecations.forEach(i=>{i.regex.test(t)&&(i.deprecated?r.deprecated(i.old,i.new)():r.removed(i.old,i.new)())})}_parseDeprecationDefinitions(t){return t.forEach(r=>{switch(r.type){case\"function\":r.regex=new RegExp(\"\\\\b\".concat(r.old,\"\\\\(\"));break;default:r.regex=new RegExp(\"\".concat(r.type,\" \").concat(r.old,\";\"))}}),t}_defaultGetUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r={},i=this.uniforms;for(let s in i){let n=i[s];s in t&&!n.private?(n.validate&&Qs(n.validate(t[s],n),\"\".concat(this.name,\": invalid \").concat(s)),r[s]=t[s]):r[s]=n.value}return r}};function wst(e){let t={vs:{},fs:{}};for(let r in e){let i=e[r],s=r.slice(0,2);typeof i==\"string\"&&(i={order:0,injection:i}),t[s][r]=i}return t}function rj(e){return Sst(nj(e))}function Sst(e){let t={},r={};return ij({modules:e,level:0,moduleMap:t,moduleDepth:r}),Object.keys(r).sort((i,s)=>r[s]-r[i]).map(i=>t[i])}function ij(e){let{modules:t,level:r,moduleMap:i,moduleDepth:s}=e;if(r>=5)throw new Error(\"Possible loop in shader dependency graph\");for(let n of t)i[n.name]=n,(s[n.name]===void 0||s[n.name](r instanceof yy||(Qs(typeof r!=\"string\",\"Shader module use by name is deprecated. Import shader module '\".concat(r,\"' and use it directly.\")),Qs(r.name,\"shader module has no name\"),r=new yy(r),r.dependencies=nj(r.dependencies)),r))}function AR(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=typeof window<\"u\"?window.navigator||{}:{},r=e.userAgent||t.userAgent||\"\",i=r.indexOf(\"MSIE \")!==-1,s=r.indexOf(\"Trident/\")!==-1;return i||s}var Tst=7936,Mst=7937,Est=7938,Pst=35724,gR={GLSL_FRAG_DATA:[\"WEBGL_draw_buffers\",!0],GLSL_FRAG_DEPTH:[\"EXT_frag_depth\",!0],GLSL_DERIVATIVES:[\"OES_standard_derivatives\",!0],GLSL_TEXTURE_LOD:[\"EXT_shader_texture_lod\",!0]},HA={};Object.keys(gR).forEach(e=>{HA[e]=e});function Ist(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function sj(e){let t=e.getExtension(\"WEBGL_debug_renderer_info\"),r=e.getParameter(t&&t.UNMASKED_VENDOR_WEBGL||Tst),i=e.getParameter(t&&t.UNMASKED_RENDERER_WEBGL||Mst);return{gpuVendor:Cst(r,i),vendor:r,renderer:i,version:e.getParameter(Est),shadingLanguageVersion:e.getParameter(Pst)}}function Cst(e,t){return e.match(/NVIDIA/i)||t.match(/NVIDIA/i)?\"NVIDIA\":e.match(/INTEL/i)||t.match(/INTEL/i)?\"INTEL\":e.match(/AMD/i)||t.match(/AMD/i)||e.match(/ATI/i)||t.match(/ATI/i)?\"AMD\":\"UNKNOWN GPU\"}var mR={};function _R(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=gR[t];if(Qs(i,t),!AR(r))return!0;if(t in mR)return mR[t];let s=i[0],n=r.behavior||\"enable\",o=\"#extension GL_\".concat(s,\" : \").concat(n,`\nvoid main(void) {}`),c=e.createShader(35633);e.shaderSource(c,o),e.compileShader(c);let f=e.getShaderParameter(c,35713);return e.deleteShader(c),mR[t]=f,f}function Lst(e,t){let r=gR[t];Qs(r,t);let i=Ist(e)&&r[1]||r[0],s=typeof i==\"string\"?!!e.getExtension(i):i;return Qs(s===!1||s===!0),s}function ub(e,t){return t=Array.isArray(t)?t:[t],t.every(r=>Lst(e,r))}function oj(e){switch(sj(e).gpuVendor.toLowerCase()){case\"nvidia\":return`#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;case\"intel\":return`#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;case\"amd\":return`#define AMD_GPU\n`;default:return`#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`}}function aj(e,t,r){let i=`#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;return ub(e,HA.GLSL_FRAG_DEPTH)&&(i+=`\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`),ub(e,HA.GLSL_DERIVATIVES)&&_R(e,HA.GLSL_DERIVATIVES)&&(i+=`\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`),ub(e,HA.GLSL_FRAG_DATA)&&_R(e,HA.GLSL_FRAG_DATA,{behavior:\"require\"})&&(i+=`\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`),ub(e,HA.GLSL_TEXTURE_LOD)&&(i+=`// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`),i}var lj=`#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`,cj=`#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;var kst={[K0]:lj,[cb]:cj},hb=\"__LUMA_INJECT_DECLARATIONS__\",uj=/void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/,hj=/}\\n?[^{}]*$/,yR=[];function fE(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s=t===K0;for(let n in r){let o=r[n];o.sort((f,_)=>f.order-_.order),yR.length=o.length;for(let f=0,_=o.length;f<_;++f)yR[f]=o[f].injection;let c=\"\".concat(yR.join(`\n`),`\n`);switch(n){case\"vs:#decl\":s&&(e=e.replace(hb,c));break;case\"vs:#main-start\":s&&(e=e.replace(uj,f=>f+c));break;case\"vs:#main-end\":s&&(e=e.replace(hj,f=>c+f));break;case\"fs:#decl\":s||(e=e.replace(hb,c));break;case\"fs:#main-start\":s||(e=e.replace(uj,f=>f+c));break;case\"fs:#main-end\":s||(e=e.replace(hj,f=>c+f));break;default:e=e.replace(n,f=>f+c)}}return e=e.replace(hb,\"\"),i&&(e=e.replace(/\\}\\s*$/,n=>n+kst[t])),e}function vy(e){let t={};return Qs(Array.isArray(e)&&e.length>1),e.forEach(r=>{for(let i in r)t[i]=t[i]?\"\".concat(t[i],`\n`).concat(r[i]):r[i]}),t}function xy(e){return new RegExp(\"\\\\b\".concat(e,\"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"),\"g\")}var fj=[[/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/,`#version 300 es\n`],[/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g,\"textureLod(\"],[/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g,\"texture(\"]],Rst=[...fj,[xy(\"attribute\"),\"in $1\"],[xy(\"varying\"),\"out $1\"]],Dst=[...fj,[xy(\"varying\"),\"in $1\"]],dj=[[/^#version[ \\t]+300[ \\t]+es/,\"#version 100\"],[/\\btexture(2D|2DProj|Cube)Lod\\(/g,\"texture$1LodEXT(\"],[/\\btexture\\(/g,\"texture2D(\"],[/\\btextureLod\\(/g,\"texture2DLodEXT(\"]],Ost=[...dj,[xy(\"in\"),\"attribute $1\"],[xy(\"out\"),\"varying $1\"]],Bst=[...dj,[xy(\"in\"),\"varying $1\"]],vR=\"gl_FragColor\",xR=/\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/,Fst=/void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;function bR(e,t,r){switch(t){case 300:return r?dE(e,Rst):zst(e);case 100:return r?dE(e,Ost):Nst(e);default:throw new Error(\"unknown GLSL version \".concat(t))}}function dE(e,t){for(let[r,i]of t)e=e.replace(r,i);return e}function zst(e){e=dE(e,Dst);let t=e.match(xR);if(t){let r=t[1];e=e.replace(new RegExp(\"\\\\b\".concat(vR,\"\\\\b\"),\"g\"),r)}else{let r=\"fragmentColor\";e=e.replace(Fst,i=>\"out vec4 \".concat(r,`;\n`).concat(i)).replace(new RegExp(\"\\\\b\".concat(vR,\"\\\\b\"),\"g\"),r)}return e}function Nst(e){e=dE(e,Bst);let t=e.match(xR);if(t){let r=t[1];e=e.replace(xR,\"\").replace(new RegExp(\"\\\\b\".concat(r,\"\\\\b\"),\"g\"),vR)}return e}var Ust=`\n\n`.concat(hb,`\n\n`),Aj={[K0]:\"vertex\",[cb]:\"fragment\"},Vst=`precision highp float;\n\n`;function wR(e,t){let{vs:r,fs:i}=t,s=rj(t.modules||[]);return{gl:e,vs:pj(e,Object.assign({},t,{source:r,type:K0,modules:s})),fs:pj(e,Object.assign({},t,{source:i,type:cb,modules:s})),getUniforms:jst(s)}}function pj(e,t){let{id:r,source:i,type:s,modules:n,defines:o={},hookFunctions:c=[],inject:f={},transpileToGLSL100:_=!1,prologue:w=!0,log:C}=t;Qs(typeof i==\"string\",\"shader source must be a string\");let R=s===K0,N=i.split(`\n`),j=100,Y=\"\",rt=i;N[0].indexOf(\"#version \")===0?(j=300,Y=N[0],rt=N.slice(1).join(`\n`)):Y=\"#version \".concat(j);let $={};n.forEach(Kt=>{Object.assign($,Kt.getDefines())}),Object.assign($,o);let K=w?\"\".concat(Y,`\n`).concat(Wst({id:r,source:i,type:s}),`\n`).concat(Gst({type:s}),`\n`).concat(oj(e),`\n`).concat(aj(e,j,!R),`\n`).concat(Hst($),`\n`).concat(R?\"\":Vst,`\n`):\"\".concat(Y,`\n`),tt=Zst(c),ut={},Pt={},Ot={};for(let Kt in f){let Zt=typeof f[Kt]==\"string\"?{injection:f[Kt],order:0}:f[Kt],le=Kt.match(/^(v|f)s:(#)?([\\w-]+)$/);if(le){let ue=le[2],Ge=le[3];ue?Ge===\"decl\"?Pt[Kt]=[Zt]:Ot[Kt]=[Zt]:ut[Kt]=[Zt]}else Ot[Kt]=[Zt]}for(let Kt of n){C&&Kt.checkDeprecations(rt,C);let Zt=Kt.getModuleSource(s,j);K+=Zt;let le=Kt.injections[s];for(let ue in le){let Ge=ue.match(/^(v|f)s:#([\\w-]+)$/);if(Ge){let er=Ge[2]===\"decl\"?Pt:Ot;er[ue]=er[ue]||[],er[ue].push(le[ue])}else ut[ue]=ut[ue]||[],ut[ue].push(le[ue])}}return K+=Ust,K=fE(K,s,Pt),K+=qst(tt[s],ut),K+=rt,K=fE(K,s,Ot),K=bR(K,_?100:j,R),K}function jst(e){return function(r){let i={};for(let s of e){let n=s.getUniforms(r,i);Object.assign(i,n)}return i}}function Gst(e){let{type:t}=e;return`\n#define SHADER_TYPE_`.concat(Aj[t].toUpperCase(),`\n`)}function Wst(e){let{id:t,source:r,type:i}=e;return t&&typeof t==\"string\"&&r.indexOf(\"SHADER_NAME\")===-1?`\n#define SHADER_NAME `.concat(t,\"_\").concat(Aj[i],`\n\n`):\"\"}function Hst(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=0,r=\"\";for(let i in e){t===0&&(r+=`\n// APPLICATION DEFINES\n`),t++;let s=e[i];(s||Number.isFinite(s))&&(r+=\"#define \".concat(i.toUpperCase(),\" \").concat(e[i],`\n`))}return t===0&&(r+=`\n`),r}function qst(e,t){let r=\"\";for(let i in e){let s=e[i];if(r+=\"void \".concat(s.signature,` {\n`),s.header&&(r+=\" \".concat(s.header)),t[i]){let n=t[i];n.sort((o,c)=>o.order-c.order);for(let o of n)r+=\" \".concat(o.injection,`\n`)}s.footer&&(r+=\" \".concat(s.footer)),r+=`}\n`}return r}function Zst(e){let t={vs:{},fs:{}};return e.forEach(r=>{let i;typeof r!=\"string\"?(i=r,r=i.hook):i={},r=r.trim();let[s,n]=r.split(\":\"),o=r.replace(/\\(.+/,\"\");t[s][o]=Object.assign(i,{signature:n})}),t}var Yst=\"void main() {gl_FragColor = vec4(0);}\",mj=`out vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`,Qst=`#version 300 es\n`.concat(mj);function pE(e,t){t=Array.isArray(t)?t:[t];let r=e.replace(/^\\s+/,\"\").split(/\\s+/),[i,s,n]=r;if(!t.includes(i)||!s||!n)return null;let o=n.split(\";\")[0];return{qualifier:i,type:s,name:o}}function fb(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{version:t=100,input:r,inputType:i,output:s}=e;if(!r)return t===300?Qst:t>300?\"#version \".concat(t,`\n`).concat(mj):Yst;let n=gj(r,i);return t>=300?\"#version \".concat(t,\" \").concat(t===300?\"es\":\"\",`\nin `).concat(i,\" \").concat(r,`;\nout vec4 `).concat(s,`;\nvoid main() {\n `).concat(s,\" = \").concat(n,`;\n}`):\"varying \".concat(i,\" \").concat(r,`;\nvoid main() {\n gl_FragColor = `).concat(n,`;\n}`)}function SR(e){switch(e){case\"float\":return\"x\";case\"vec2\":return\"xy\";case\"vec3\":return\"xyz\";case\"vec4\":return\"xyzw\";default:return Qs(!1),null}}function TR(e){switch(e){case\"float\":return 1;case\"vec2\":return 2;case\"vec3\":return 3;case\"vec4\":return 4;default:return Qs(!1),null}}function gj(e,t){switch(t){case\"float\":return\"vec4(\".concat(e,\", 0.0, 0.0, 1.0)\");case\"vec2\":return\"vec4(\".concat(e,\", 0.0, 1.0)\");case\"vec3\":return\"vec4(\".concat(e,\", 1.0)\");case\"vec4\":return e;default:return Qs(!1),null}}var $st=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`,AE={name:\"fp32\",vs:$st,fs:null};function Oh(e,t){if(!e)throw new Error(\"math.gl assertion \".concat(t))}var NLt=1/Math.PI*180,ULt=1/180*Math.PI,$s={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function MR(e,{precision:t=$s.precision}={}){return e=Xst(e),\"\".concat(parseFloat(e.toPrecision(t)))}function Bh(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ml(e,t,r){return Jst(e,i=>Math.max(t,Math.min(r,i)))}function tc(e,t,r){return Bh(e)?e.map((i,s)=>tc(i,t[s],r)):r*t+(1-r)*e}function To(e,t,r){let i=$s.EPSILON;r&&($s.EPSILON=r);try{if(e===t)return!0;if(Bh(e)&&Bh(t)){if(e.length!==t.length)return!1;for(let s=0;s0?\", \":\"\")+MR(this[i],t);return\"\".concat(t.printTypes?this.constructor.name:\"\",\"[\").concat(r,\"]\")}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r=0&&t=0&&t0&&(n=1/Math.sqrt(n)),e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function CR(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Ty(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[0],c=r[1],f=r[2];return e[0]=s*f-n*c,e[1]=n*o-i*f,e[2]=i*c-s*o,e}function Tj(e,t,r,i){var s=t[0],n=t[1],o=t[2];return e[0]=s+i*(r[0]-s),e[1]=n+i*(r[1]-n),e[2]=o+i*(r[2]-o),e}function My(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[3]*i+r[7]*s+r[11]*n+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*s+r[8]*n+r[12])/o,e[1]=(r[1]*i+r[5]*s+r[9]*n+r[13])/o,e[2]=(r[2]*i+r[6]*s+r[10]*n+r[14])/o,e}function vE(e,t,r){var i=t[0],s=t[1],n=t[2];return e[0]=i*r[0]+s*r[3]+n*r[6],e[1]=i*r[1]+s*r[4]+n*r[7],e[2]=i*r[2]+s*r[5]+n*r[8],e}function xE(e,t,r){var i=r[0],s=r[1],n=r[2],o=r[3],c=t[0],f=t[1],_=t[2],w=s*_-n*f,C=n*c-i*_,R=i*f-s*c,N=s*R-n*C,j=n*w-i*R,Y=i*C-s*w,rt=o*2;return w*=rt,C*=rt,R*=rt,N*=2,j*=2,Y*=2,e[0]=c+w+N,e[1]=f+C+j,e[2]=_+R+Y,e}function Mj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[0],n[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),n[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Ej(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),n[1]=s[1],n[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Pj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),n[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),n[2]=s[2],e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Ij(e,t){var r=e[0],i=e[1],s=e[2],n=t[0],o=t[1],c=t[2],f=Math.sqrt(r*r+i*i+s*s),_=Math.sqrt(n*n+o*o+c*c),w=f*_,C=w&&CR(e,t)/w;return Math.acos(Math.min(Math.max(C,-1),1))}var bE=not;var wE=iot,SE=sot,JLt=function(){var e=PR();return function(t,r,i,s,n,o){var c,f;for(r||(r=3),i||(i=0),s?f=Math.min(s*r+i,t.length):f=t.length,c=i;c0?this.copy([t,...r]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(oot)}fromObject(t){return this.check()}fromQuaternion(t){return Bj(this,t),this.check()}set(t,r,i,s,n,o,c,f,_){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this[4]=n,this[5]=o,this[6]=c,this[7]=f,this[8]=_,this.check()}setRowMajor(t,r,i,s,n,o,c,f,_){return this[0]=t,this[1]=s,this[2]=c,this[3]=r,this[4]=n,this[5]=f,this[6]=i,this[7]=o,this[8]=_,this.check()}determinant(){return Rj(this)}transpose(){return Lj(this,this),this.check()}invert(){return kj(this,this),this.check()}multiplyLeft(t){return kR(this,t,this),this.check()}multiplyRight(t){return kR(this,this,t),this.check()}rotate(t){return Oj(this,this,t),this.check()}scale(t){return Array.isArray(t)?RR(this,this,t):RR(this,this,[t,t]),this.check()}translate(t){return Dj(this,this,t),this.check()}transform(t,r){let i;switch(t.length){case 2:i=_j(r||[-0,-0],t,this);break;case 3:i=vE(r||[-0,-0,-0],t,this);break;case 4:i=yE(r||[-0,-0,-0,-0],t,this);break;default:throw new Error(\"Illegal vector\")}return qA(i,t.length),i}transformVector(t,r){return this.transform(t,r)}transformVector2(t,r){return this.transform(t,r)}transformVector3(t,r){return this.transform(t,r)}},EE,PE;function aot(){return EE||(EE=new rs([0,0,0,0,0,0,0,0,0]),Object.freeze(EE)),EE}function lot(){return PE||(PE=new rs,Object.freeze(PE)),PE}function cot(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function zj(e,t){if(e===t){var r=t[1],i=t[2],s=t[3],n=t[6],o=t[7],c=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=n,e[11]=t[14],e[12]=s,e[13]=o,e[14]=c}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function pb(e,t){var r=t[0],i=t[1],s=t[2],n=t[3],o=t[4],c=t[5],f=t[6],_=t[7],w=t[8],C=t[9],R=t[10],N=t[11],j=t[12],Y=t[13],rt=t[14],$=t[15],K=r*c-i*o,tt=r*f-s*o,ut=r*_-n*o,Pt=i*f-s*c,Ot=i*_-n*c,Kt=s*_-n*f,Zt=w*Y-C*j,le=w*rt-R*j,ue=w*$-N*j,Ge=C*rt-R*Y,tr=C*$-N*Y,er=R*$-N*rt,Lr=K*er-tt*tr+ut*Ge+Pt*ue-Ot*le+Kt*Zt;return Lr?(Lr=1/Lr,e[0]=(c*er-f*tr+_*Ge)*Lr,e[1]=(s*tr-i*er-n*Ge)*Lr,e[2]=(Y*Kt-rt*Ot+$*Pt)*Lr,e[3]=(R*Ot-C*Kt-N*Pt)*Lr,e[4]=(f*ue-o*er-_*le)*Lr,e[5]=(r*er-s*ue+n*le)*Lr,e[6]=(rt*ut-j*Kt-$*tt)*Lr,e[7]=(w*Kt-R*ut+N*tt)*Lr,e[8]=(o*tr-c*ue+_*Zt)*Lr,e[9]=(i*ue-r*tr-n*Zt)*Lr,e[10]=(j*Ot-Y*ut+$*K)*Lr,e[11]=(C*ut-w*Ot-N*K)*Lr,e[12]=(c*le-o*Ge-f*Zt)*Lr,e[13]=(r*Ge-i*le+s*Zt)*Lr,e[14]=(Y*tt-j*Pt-rt*K)*Lr,e[15]=(w*Pt-C*tt+R*K)*Lr,e):null}function Nj(e){var t=e[0],r=e[1],i=e[2],s=e[3],n=e[4],o=e[5],c=e[6],f=e[7],_=e[8],w=e[9],C=e[10],R=e[11],N=e[12],j=e[13],Y=e[14],rt=e[15],$=t*o-r*n,K=t*c-i*n,tt=t*f-s*n,ut=r*c-i*o,Pt=r*f-s*o,Ot=i*f-s*c,Kt=_*j-w*N,Zt=_*Y-C*N,le=_*rt-R*N,ue=w*Y-C*j,Ge=w*rt-R*j,tr=C*rt-R*Y;return $*tr-K*Ge+tt*ue+ut*le-Pt*Zt+Ot*Kt}function Wf(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3],c=t[4],f=t[5],_=t[6],w=t[7],C=t[8],R=t[9],N=t[10],j=t[11],Y=t[12],rt=t[13],$=t[14],K=t[15],tt=r[0],ut=r[1],Pt=r[2],Ot=r[3];return e[0]=tt*i+ut*c+Pt*C+Ot*Y,e[1]=tt*s+ut*f+Pt*R+Ot*rt,e[2]=tt*n+ut*_+Pt*N+Ot*$,e[3]=tt*o+ut*w+Pt*j+Ot*K,tt=r[4],ut=r[5],Pt=r[6],Ot=r[7],e[4]=tt*i+ut*c+Pt*C+Ot*Y,e[5]=tt*s+ut*f+Pt*R+Ot*rt,e[6]=tt*n+ut*_+Pt*N+Ot*$,e[7]=tt*o+ut*w+Pt*j+Ot*K,tt=r[8],ut=r[9],Pt=r[10],Ot=r[11],e[8]=tt*i+ut*c+Pt*C+Ot*Y,e[9]=tt*s+ut*f+Pt*R+Ot*rt,e[10]=tt*n+ut*_+Pt*N+Ot*$,e[11]=tt*o+ut*w+Pt*j+Ot*K,tt=r[12],ut=r[13],Pt=r[14],Ot=r[15],e[12]=tt*i+ut*c+Pt*C+Ot*Y,e[13]=tt*s+ut*f+Pt*R+Ot*rt,e[14]=tt*n+ut*_+Pt*N+Ot*$,e[15]=tt*o+ut*w+Pt*j+Ot*K,e}function eg(e,t,r){var i=r[0],s=r[1],n=r[2],o,c,f,_,w,C,R,N,j,Y,rt,$;return t===e?(e[12]=t[0]*i+t[4]*s+t[8]*n+t[12],e[13]=t[1]*i+t[5]*s+t[9]*n+t[13],e[14]=t[2]*i+t[6]*s+t[10]*n+t[14],e[15]=t[3]*i+t[7]*s+t[11]*n+t[15]):(o=t[0],c=t[1],f=t[2],_=t[3],w=t[4],C=t[5],R=t[6],N=t[7],j=t[8],Y=t[9],rt=t[10],$=t[11],e[0]=o,e[1]=c,e[2]=f,e[3]=_,e[4]=w,e[5]=C,e[6]=R,e[7]=N,e[8]=j,e[9]=Y,e[10]=rt,e[11]=$,e[12]=o*i+w*s+j*n+t[12],e[13]=c*i+C*s+Y*n+t[13],e[14]=f*i+R*s+rt*n+t[14],e[15]=_*i+N*s+$*n+t[15]),e}function Ey(e,t,r){var i=r[0],s=r[1],n=r[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Uj(e,t,r,i){var s=i[0],n=i[1],o=i[2],c=Math.hypot(s,n,o),f,_,w,C,R,N,j,Y,rt,$,K,tt,ut,Pt,Ot,Kt,Zt,le,ue,Ge,tr,er,Lr,zi;return c0&&(o=1/Math.sqrt(o)),e[0]=r*o,e[1]=i*o,e[2]=s*o,e[3]=n*o,e}function Xj(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function Kj(e,t,r,i){var s=t[0],n=t[1],o=t[2],c=t[3];return e[0]=s+i*(r[0]-s),e[1]=n+i*(r[1]-n),e[2]=o+i*(r[2]-o),e[3]=c+i*(r[3]-c),e}function zh(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3];return e[0]=r[0]*i+r[4]*s+r[8]*n+r[12]*o,e[1]=r[1]*i+r[5]*s+r[9]*n+r[13]*o,e[2]=r[2]*i+r[6]*s+r[10]*n+r[14]*o,e[3]=r[3]*i+r[7]*s+r[11]*n+r[15]*o,e}function Jj(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[0],c=r[1],f=r[2],_=r[3],w=_*i+c*n-f*s,C=_*s+f*i-o*n,R=_*n+o*s-c*i,N=-o*i-c*s-f*n;return e[0]=w*_+N*-o+C*-f-R*-c,e[1]=C*_+N*-c+R*-o-w*-f,e[2]=R*_+N*-f+w*-c-C*-o,e[3]=t[3],e}var _kt=function(){var e=fot();return function(t,r,i,s,n,o){var c,f;for(r||(r=4),i||(i=0),s?f=Math.min(s*r+i,t.length):f=t.length,c=i;cMath.PI*2)throw Error(\"expected radians\")}function _ot(e,t,r,i,s,n){let o=2*n/(r-t),c=2*n/(s-i),f=(r+t)/(r-t),_=(s+i)/(s-i),w=-1,C=-1,R=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=f,e[9]=_,e[10]=w,e[11]=C,e[12]=0,e[13]=0,e[14]=R,e[15]=0,e}function e7(){var e=new ya(4);return ya!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function r7(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function NR(e,t,r){r=r*.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e}function UR(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3],c=r[0],f=r[1],_=r[2],w=r[3];return e[0]=i*w+o*c+s*_-n*f,e[1]=s*w+o*f+n*c-i*_,e[2]=n*w+o*_+i*f-s*c,e[3]=o*w-i*c-s*f-n*_,e}function i7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f+o*c,e[1]=s*f+n*c,e[2]=n*f-s*c,e[3]=o*f-i*c,e}function n7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f-n*c,e[1]=s*f+o*c,e[2]=n*f+i*c,e[3]=o*f-s*c,e}function s7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f+s*c,e[1]=s*f-i*c,e[2]=n*f+o*c,e[3]=o*f-n*c,e}function o7(e,t){var r=t[0],i=t[1],s=t[2];return e[0]=r,e[1]=i,e[2]=s,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-s*s)),e}function mb(e,t,r,i){var s=t[0],n=t[1],o=t[2],c=t[3],f=r[0],_=r[1],w=r[2],C=r[3],R,N,j,Y,rt;return N=s*f+n*_+o*w+c*C,N<0&&(N=-N,f=-f,_=-_,w=-w,C=-C),1-N>Fh?(R=Math.acos(N),j=Math.sin(R),Y=Math.sin((1-i)*R)/j,rt=Math.sin(i*R)/j):(Y=1-i,rt=i),e[0]=Y*s+rt*f,e[1]=Y*n+rt*_,e[2]=Y*o+rt*w,e[3]=Y*c+rt*C,e}function a7(e,t){var r=t[0],i=t[1],s=t[2],n=t[3],o=r*r+i*i+s*s+n*n,c=o?1/o:0;return e[0]=-r*c,e[1]=-i*c,e[2]=-s*c,e[3]=n*c,e}function l7(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function VR(e,t){var r=t[0]+t[4]+t[8],i;if(r>0)i=Math.sqrt(r+1),e[3]=.5*i,i=.5/i,e[0]=(t[5]-t[7])*i,e[1]=(t[6]-t[2])*i,e[2]=(t[1]-t[3])*i;else{var s=0;t[4]>t[0]&&(s=1),t[8]>t[s*3+s]&&(s=2);var n=(s+1)%3,o=(s+2)%3;i=Math.sqrt(t[s*3+s]-t[n*3+n]-t[o*3+o]+1),e[s]=.5*i,i=.5/i,e[3]=(t[n*3+o]-t[o*3+n])*i,e[n]=(t[n*3+s]+t[s*3+n])*i,e[o]=(t[o*3+s]+t[s*3+o])*i}return e}var c7=Zj;var u7=Py,h7=Xj,f7=Kj,d7=Yj;var p7=Qj;var A7=$j;var m7=function(){var e=PR(),t=IR(1,0,0),r=IR(0,1,0);return function(i,s,n){var o=CR(s,n);return o<-.999999?(Ty(e,t,s),wE(e)<1e-6&&Ty(e,r,s),Sj(e,e),NR(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(Ty(e,s,n),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,A7(i,i))}}(),Ikt=function(){var e=e7(),t=e7();return function(r,i,s,n,o,c){return mb(e,i,o,c),mb(t,s,n,c),mb(r,e,t,2*c*(1-c)),r}}(),Ckt=function(){var e=Cj();return function(t,r,i,s){return e[0]=i[0],e[3]=i[1],e[6]=i[2],e[1]=s[0],e[4]=s[1],e[7]=s[2],e[2]=-r[0],e[5]=-r[1],e[8]=-r[2],A7(t,VR(t,e))}}();var vot=[0,0,0,1],rg=class extends rp{constructor(t=0,r=0,i=0,s=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,r,i,s)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,r,i,s){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return VR(this,t),this.check()}fromAxisRotation(t,r){return NR(this,t,r),this.check()}identity(){return r7(this),this.check()}setAxisAngle(t,r){return this.fromAxisRotation(t,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=Hi(t)}get y(){return this[1]}set y(t){this[1]=Hi(t)}get z(){return this[2]}set z(t){this[2]=Hi(t)}get w(){return this[3]}set w(t){this[3]=Hi(t)}len(){return d7(this)}lengthSquared(){return p7(this)}dot(t){return h7(this,t)}rotationTo(t,r){return m7(this,t,r),this.check()}add(t){return c7(this,this,t),this.check()}calculateW(){return o7(this,this),this.check()}conjugate(){return l7(this,this),this.check()}invert(){return a7(this,this),this.check()}lerp(t,r,i){return i===void 0?this.lerp(this,t,r):(f7(this,t,r,i),this.check())}multiplyRight(t){return UR(this,this,t),this.check()}multiplyLeft(t){return UR(this,t,this),this.check()}normalize(){let t=this.len(),r=t>0?1/t:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,t===0&&(this[3]=1),this.check()}rotateX(t){return i7(this,this,t),this.check()}rotateY(t){return n7(this,this,t),this.check()}rotateZ(t){return s7(this,this,t),this.check()}scale(t){return u7(this,this,t),this.check()}slerp(t,r,i){let s,n,o;switch(arguments.length){case 1:({start:s=vot,target:n,ratio:o}=t);break;case 2:s=this,n=t,o=r;break;default:s=t,n=r,o=i}return mb(this,s,n,o),this.check()}transformVector4(t,r=new db){return Jj(r,t,this),qA(r,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,r){return this.setAxisAngle(t,r)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var RE={EPSILON1:.1,EPSILON2:.01,EPSILON3:.001,EPSILON4:1e-4,EPSILON5:1e-5,EPSILON6:1e-6,EPSILON7:1e-7,EPSILON8:1e-8,EPSILON9:1e-9,EPSILON10:1e-10,EPSILON11:1e-11,EPSILON12:1e-12,EPSILON13:1e-13,EPSILON14:1e-14,EPSILON15:1e-15,EPSILON16:1e-16,EPSILON17:1e-17,EPSILON18:1e-18,EPSILON19:1e-19,EPSILON20:1e-20,PI_OVER_TWO:Math.PI/2,PI_OVER_FOUR:Math.PI/4,PI_OVER_SIX:Math.PI/6,TWO_PI:Math.PI*2};var jR=`#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\n\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n vec3 attenuation;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform AmbientLight lighting_uAmbientLight;\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\nuniform int lighting_uPointLightCount;\nuniform int lighting_uDirectionalLightCount;\n\nuniform bool lighting_uEnabled;\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\n#endif\n`;var xot={lightSources:{}};function GR(){let{color:e=[0,0,0],intensity:t=1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.map(r=>r*t/255)}function bot(e){let{ambientLight:t,pointLights:r=[],directionalLights:i=[]}=e,s={};return t?s[\"lighting_uAmbientLight.color\"]=GR(t):s[\"lighting_uAmbientLight.color\"]=[0,0,0],r.forEach((n,o)=>{s[\"lighting_uPointLight[\".concat(o,\"].color\")]=GR(n),s[\"lighting_uPointLight[\".concat(o,\"].position\")]=n.position,s[\"lighting_uPointLight[\".concat(o,\"].attenuation\")]=n.attenuation||[1,0,0]}),s.lighting_uPointLightCount=r.length,i.forEach((n,o)=>{s[\"lighting_uDirectionalLight[\".concat(o,\"].color\")]=GR(n),s[\"lighting_uDirectionalLight[\".concat(o,\"].direction\")]=n.direction}),s.lighting_uDirectionalLightCount=i.length,s}function g7(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:xot;if(\"lightSources\"in e){let{ambientLight:t,pointLights:r,directionalLights:i}=e.lightSources||{};return t||r&&r.length>0||i&&i.length>0?Object.assign({},bot({ambientLight:t,pointLights:r,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if(\"lights\"in e){let t={pointLights:[],directionalLights:[]};for(let r of e.lights||[])switch(r.type){case\"ambient\":t.ambientLight=r;break;case\"directional\":t.directionalLights.push(r);break;case\"point\":t.pointLights.push(r);break;default:}return g7({lightSources:t})}return{}}var WR={name:\"lights\",vs:jR,fs:jR,getUniforms:g7,defines:{MAX_LIGHTS:3}};var wot=new Uint8Array([0,255,255,255]),Sot={pickingSelectedColor:null,pickingHighlightColor:wot,pickingActive:!1,pickingAttribute:!1};function Tot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Sot,t={};if(e.pickingSelectedColor!==void 0)if(!e.pickingSelectedColor)t.picking_uSelectedColorValid=0;else{let r=e.pickingSelectedColor.slice(0,3);t.picking_uSelectedColorValid=1,t.picking_uSelectedColor=r}if(e.pickingHighlightColor){let r=Array.from(e.pickingHighlightColor,i=>i/255);Number.isFinite(r[3])||(r[3]=1),t.picking_uHighlightColor=r}return e.pickingActive!==void 0&&(t.picking_uActive=!!e.pickingActive,t.picking_uAttribute=!!e.pickingAttribute),t}var Mot=`uniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`,Eot=`uniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`,DE={name:\"picking\",vs:Mot,fs:Eot,getUniforms:Tot};var HR=`\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;var Pot={};function Iot(e){let{ambient:t=.35,diffuse:r=.6,shininess:i=32,specularColor:s=[30,30,30]}=e;return{lighting_uAmbient:t,lighting_uDiffuse:r,lighting_uShininess:i,lighting_uSpecularColor:s.map(n=>n/255)}}function _7(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Pot;if(!(\"material\"in e))return{};let{material:t}=e;return t?Iot(t):{lighting_uEnabled:!1}}var YA={name:\"gouraud-lighting\",dependencies:[WR],vs:HR,defines:{LIGHTING_VERTEX:1},getUniforms:_7},Cy={name:\"phong-lighting\",dependencies:[WR],fs:HR,defines:{LIGHTING_FRAGMENT:1},getUniforms:_7};var Cot=`attribute float transform_elementID;\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`,qR={name:\"transform\",vs:Cot,fs:null};var Nh=class e{static getDefaultProgramManager(t){return t.luma=t.luma||{},t.luma.defaultProgramManager=t.luma.defaultProgramManager||new e(t),t.luma.defaultProgramManager}constructor(t){this.gl=t,this._programCache={},this._getUniforms={},this._registeredModules={},this._hookFunctions=[],this._defaultModules=[],this._hashes={},this._hashCounter=0,this.stateHash=0,this._useCounts={}}addDefaultModule(t){this._defaultModules.find(r=>r.name===t.name)||this._defaultModules.push(t),this.stateHash++}removeDefaultModule(t){let r=typeof t==\"string\"?t:t.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==r),this.stateHash++}addShaderHook(t,r){r&&(t=Object.assign(r,{hook:t})),this._hookFunctions.push(t),this.stateHash++}get(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{vs:r=\"\",fs:i=\"\",defines:s={},inject:n={},varyings:o=[],bufferMode:c=35981,transpileToGLSL100:f=!1}=t,_=this._getModuleList(t.modules),w=this._getHash(r),C=this._getHash(i),R=_.map(tt=>this._getHash(tt.name)).sort(),N=o.map(tt=>this._getHash(tt)),j=Object.keys(s).sort(),Y=Object.keys(n).sort(),rt=[],$=[];for(let tt of j)rt.push(this._getHash(tt)),rt.push(this._getHash(s[tt]));for(let tt of Y)$.push(this._getHash(tt)),$.push(this._getHash(n[tt]));let K=\"\".concat(w,\"/\").concat(C,\"D\").concat(rt.join(\"/\"),\"M\").concat(R.join(\"/\"),\"I\").concat($.join(\"/\"),\"V\").concat(N.join(\"/\"),\"H\").concat(this.stateHash,\"B\").concat(c).concat(f?\"T\":\"\");if(!this._programCache[K]){let tt=wR(this.gl,{vs:r,fs:i,modules:_,inject:n,defines:s,hookFunctions:this._hookFunctions,transpileToGLSL100:f});this._programCache[K]=new tp(this.gl,{hash:K,vs:tt.vs,fs:tt.fs,varyings:o,bufferMode:c}),this._getUniforms[K]=tt.getUniforms||(ut=>{}),this._useCounts[K]=0}return this._useCounts[K]++,this._programCache[K]}getUniforms(t){return this._getUniforms[t.hash]||null}release(t){let r=t.hash;this._useCounts[r]--,this._useCounts[r]===0&&(this._programCache[r].delete(),delete this._programCache[r],delete this._getUniforms[r],delete this._useCounts[r])}_getHash(t){return this._hashes[t]===void 0&&(this._hashes[t]=this._hashCounter++),this._hashes[t]}_getModuleList(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=new Array(this._defaultModules.length+t.length),i={},s=0;for(let n=0,o=this._defaultModules.length;n{},Bot={},Sn=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{id:i=Jo(\"model\")}=r;ye(Xd(t)),this.id=i,this.gl=t,this.id=r.id||Jo(\"Model\"),this.lastLogTime=0,this.animated=!1,this.initialize(r)}initialize(t){this.props={},this.programManager=t.programManager||Nh.getDefaultProgramManager(this.gl),this._programManagerState=-1,this._managedProgram=!1;let{program:r=null,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=t;this.programProps={program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w},this.program=null,this.vertexArray=null,this._programDirty=!0,this.userData={},this.needsRedraw=!0,this._attributes={},this.attributes={},this.uniforms={},this.pickable=!0,this._checkProgram(),this.setUniforms(Object.assign({},this.getModuleUniforms(t.moduleSettings))),this.drawMode=t.drawMode!==void 0?t.drawMode:4,this.vertexCount=t.vertexCount||0,this.geometryBuffers={},this.isInstanced=t.isInstanced||t.instanced||t.instanceCount>0,this._setModelProps(t),this.geometry={},ye(this.drawMode!==void 0&&Number.isFinite(this.vertexCount),Oot)}setProps(t){this._setModelProps(t)}delete(){for(let t in this._attributes)this._attributes[t]!==this.attributes[t]&&this._attributes[t].delete();this._managedProgram&&(this.programManager.release(this.program),this._managedProgram=!1),this.vertexArray.delete(),this._deleteGeometryBuffers()}getDrawMode(){return this.drawMode}getVertexCount(){return this.vertexCount}getInstanceCount(){return this.instanceCount}getAttributes(){return this.attributes}getProgram(){return this.program}setProgram(t){let{program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=t;this.programProps={program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w},this._programDirty=!0}getUniforms(){return this.uniforms}setDrawMode(t){return this.drawMode=t,this}setVertexCount(t){return ye(Number.isFinite(t)),this.vertexCount=t,this}setInstanceCount(t){return ye(Number.isFinite(t)),this.instanceCount=t,this}setGeometry(t){return this.drawMode=t.drawMode,this.vertexCount=t.getVertexCount(),this._deleteGeometryBuffers(),this.geometryBuffers=y7(this.gl,t),this.vertexArray.setAttributes(this.geometryBuffers),this}setAttributes(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(jf(t))return this;let r={};for(let i in t){let s=t[i];r[i]=s.getValue?s.getValue():s}return this.vertexArray.setAttributes(r),this}setUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this.uniforms,t),this}getModuleUniforms(t){this._checkProgram();let r=this.programManager.getUniforms(this.program);return r?r(t):{}}updateModuleSettings(t){let r=this.getModuleUniforms(t||{});return this.setUniforms(r)}clear(t){return Gf(this.program.gl,t),this}draw(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._checkProgram();let{moduleSettings:r=null,framebuffer:i,uniforms:s={},attributes:n={},transformFeedback:o=this.transformFeedback,parameters:c={},vertexArray:f=this.vertexArray}=t;this.setAttributes(n),this.updateModuleSettings(r),this.setUniforms(s);let _;je.priority>=Ly&&(_=this._logDrawCallStart(Ly));let w=this.vertexArray.getDrawParams(),{isIndexed:C=w.isIndexed,indexType:R=w.indexType,indexOffset:N=w.indexOffset,vertexArrayInstanced:j=w.isInstanced}=this.props;j&&!this.isInstanced&&je.warn(\"Found instanced attributes on non-instanced model\",this.id)();let{isInstanced:Y,instanceCount:rt}=this,{onBeforeRender:$=v7,onAfterRender:K=v7}=this.props;$(),this.program.setUniforms(this.uniforms);let tt=this.program.draw(Object.assign(Bot,t,{logPriority:_,uniforms:null,framebuffer:i,parameters:c,drawMode:this.getDrawMode(),vertexCount:this.getVertexCount(),vertexArray:f,transformFeedback:o,isIndexed:C,indexType:R,isInstanced:Y,instanceCount:rt,offset:C?N:0}));return K(),je.priority>=Ly&&this._logDrawCallEnd(_,f,i),tt}transform(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{discard:r=!0,feedbackBuffers:i,unbindModels:s=[]}=t,{parameters:n}=t;i&&this._setFeedbackBuffers(i),r&&(n=Object.assign({},n,{35977:r})),s.forEach(o=>o.vertexArray.unbindBuffers());try{this.draw(Object.assign({},t,{parameters:n}))}finally{s.forEach(o=>o.vertexArray.bindBuffers())}return this}render(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.warn(\"Model.render() is deprecated. Use Model.setUniforms() and Model.draw()\")(),this.setUniforms(t).draw()}_setModelProps(t){Object.assign(this.props,t),\"uniforms\"in t&&this.setUniforms(t.uniforms),\"pickable\"in t&&(this.pickable=t.pickable),\"instanceCount\"in t&&(this.instanceCount=t.instanceCount),\"geometry\"in t&&this.setGeometry(t.geometry),\"attributes\"in t&&this.setAttributes(t.attributes),\"_feedbackBuffers\"in t&&this._setFeedbackBuffers(t._feedbackBuffers)}_checkProgram(){if(!(this._programDirty||this.programManager.stateHash!==this._programManagerState))return;let{program:r}=this.programProps;if(r)this._managedProgram=!1;else{let{vs:i,fs:s,modules:n,inject:o,defines:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=this.programProps;r=this.programManager.get({vs:i,fs:s,modules:n,inject:o,defines:c,varyings:f,bufferMode:_,transpileToGLSL100:w}),this.program&&this._managedProgram&&this.programManager.release(this.program),this._programManagerState=this.programManager.stateHash,this._managedProgram=!0}ye(r instanceof tp,\"Model needs a program\"),this._programDirty=!1,r!==this.program&&(this.program=r,this.vertexArray?this.vertexArray.setProps({program:this.program,attributes:this.vertexArray.attributes}):this.vertexArray=new _y(this.gl,{program:this.program}),this.setUniforms(Object.assign({},this.getModuleUniforms())))}_deleteGeometryBuffers(){for(let t in this.geometryBuffers){let r=this.geometryBuffers[t][0]||this.geometryBuffers[t];r instanceof Fr&&r.delete()}}_setAnimationProps(t){this.animated&&ye(t,\"Model.draw(): animated uniforms but no animationProps\")}_setFeedbackBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(jf(t))return this;let{gl:r}=this.program;return this.transformFeedback=this.transformFeedback||new ep(r,{program:this.program}),this.transformFeedback.setBuffers(t),this}_logDrawCallStart(t){let r=t>3?0:Dot;if(!(Date.now()-this.lastLogTime>> DRAWING MODEL \".concat(this.id),{collapsed:je.level<=2})(),t}_logDrawCallEnd(t,r,i,s){if(t===void 0)return;let n=fR({vertexArray:r,header:\"\".concat(this.id,\" attributes\"),attributes:this._attributes}),{table:o,unusedTable:c,unusedCount:f}=hE({header:\"\".concat(this.id,\" uniforms\"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i)}),{table:_,count:w}=hE({header:\"\".concat(this.id,\" uniforms\"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i),undefinedOnly:!0});w>0&&je.log(\"MISSING UNIFORMS\",Object.keys(_))(),f>0&&je.log(\"UNUSED UNIFORMS\",Object.keys(c))();let C=dR(this.vertexArray.configuration);je.table(t,n)(),je.table(t,o)(),je.table(t+1,C)(),s&&s.log({logLevel:Ly,message:\"Rendered to \".concat(s.id)}),je.groupEnd(Ly)()}};var gb=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.currentIndex=0,this.feedbackMap={},this.varyings=null,this.bindings=[],this.resources={},this._initialize(r),Object.seal(this)}setupResources(t){for(let r of this.bindings)this._setupTransformFeedback(r,t)}updateModelProps(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{varyings:r}=this;return r.length>0&&(t=Object.assign({},t,{varyings:r})),t}getDrawOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this.bindings[this.currentIndex],{sourceBuffers:i,transformFeedback:s}=r;return{attributes:Object.assign({},i,t.attributes),transformFeedback:s}}swap(){return this.feedbackMap?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(t)}getBuffer(t){let{feedbackBuffers:r}=this.bindings[this.currentIndex],i=t?r[t]:null;return i?i instanceof Fr?i:i.buffer:null}getData(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{varyingName:r}=t,i=this.getBuffer(r);return i?i.getData():null}delete(){for(let t in this.resources)this.resources[t].delete()}_initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(t),this.varyings=t.varyings||Object.keys(this.bindings[this.currentIndex].feedbackBuffers),this.varyings.length>0&&ye(hr(this.gl))}_getFeedbackBuffers(t){let{sourceBuffers:r={}}=t,i={};if(this.bindings[this.currentIndex]&&Object.assign(i,this.bindings[this.currentIndex].feedbackBuffers),this.feedbackMap)for(let s in this.feedbackMap){let n=this.feedbackMap[s];s in r&&(i[n]=s)}Object.assign(i,t.feedbackBuffers);for(let s in i){let n=i[s];if(typeof n==\"string\"){let o=r[n],{byteLength:c,usage:f,accessor:_}=o;i[s]=this._createNewBuffer(s,{byteLength:c,usage:f,accessor:_})}}return i}_setupBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r=null}=t;Object.assign(this.feedbackMap,t.feedbackMap);let i=this._getFeedbackBuffers(t);this._updateBindings({sourceBuffers:r,feedbackBuffers:i})}_setupTransformFeedback(t,r){let{model:i}=r,{program:s}=i;t.transformFeedback=new ep(this.gl,{program:s,buffers:t.feedbackBuffers})}_updateBindings(t){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t),this.feedbackMap){let{sourceBuffers:r,feedbackBuffers:i}=this._swapBuffers(this.bindings[this.currentIndex]),s=this._getNextIndex();this.bindings[s]=this._updateBinding(this.bindings[s],{sourceBuffers:r,feedbackBuffers:i})}}_updateBinding(t,r){return t?(Object.assign(t.sourceBuffers,r.sourceBuffers),Object.assign(t.feedbackBuffers,r.feedbackBuffers),t.transformFeedback&&t.transformFeedback.setBuffers(t.feedbackBuffers),t):{sourceBuffers:Object.assign({},r.sourceBuffers),feedbackBuffers:Object.assign({},r.feedbackBuffers)}}_swapBuffers(t){if(!this.feedbackMap)return null;let r=Object.assign({},t.sourceBuffers),i=Object.assign({},t.feedbackBuffers);for(let s in this.feedbackMap){let n=this.feedbackMap[s];r[s]=t.feedbackBuffers[n],i[n]=t.sourceBuffers[s],ye(i[n]instanceof Fr)}return{sourceBuffers:r,feedbackBuffers:i}}_createNewBuffer(t,r){let i=new Fr(this.gl,r);return this.resources[t]&&this.resources[t].delete(),this.resources[t]=i,i}_getNextIndex(){return(this.currentIndex+1)%2}};var Fot=\"transform_uSampler_\",OE=\"transform_uSize_\",x7=\"transform_position\";function b7(e){let{vs:t,sourceTextureMap:r,targetTextureVarying:i,targetTexture:s}=e,o=Object.keys(r).length,c=null,f={},_=t,w={};if(o>0||i){let C=_.split(`\n`),R=C.slice();if(C.forEach((N,j,Y)=>{if(o>0){let rt=Vot(N,r);if(rt){let{updatedLine:$,inject:K}=rt;R[j]=$,w=vy([w,K]),Object.assign(f,rt.samplerTextureMap),o--}}i&&!c&&(c=Uot(N,i))}),i){ye(s);let N=\"\".concat(OE).concat(i),j=\"uniform vec2 \".concat(N,`;\n`),Y=\" vec2 \".concat(x7,\" = transform_getPos(\").concat(N,`);\n gl_Position = vec4(`).concat(x7,`, 0, 1.);\n`);w=vy([w,{\"vs:#decl\":j,\"vs:#main-start\":Y}])}_=R.join(`\n`)}return{vs:_,targetTextureType:c,inject:w,samplerTextureMap:f}}function w7(e){let{sourceTextureMap:t,targetTextureVarying:r,targetTexture:i}=e,s={},n,o;r&&({width:n,height:o}=i,s[\"\".concat(OE).concat(r)]=[n,o]);for(let c in t)({width:n,height:o}=t[c]),s[\"\".concat(OE).concat(c)]=[n,o];return s}function zot(e){return pE(e,[\"attribute\",\"in\"])}function Not(e){let t=\"\".concat(Fot).concat(e),r=\"\".concat(OE).concat(e),i=\" uniform sampler2D \".concat(t,`;\n uniform vec2 `).concat(r,\";\");return{samplerName:t,sizeName:r,uniformDeclerations:i}}function Uot(e,t){let r=pE(e,[\"varying\",\"out\"]);return r&&r.name===t?r.type:null}function Vot(e,t){let r={},i=zot(e);if(!i)return null;let{type:s,name:n}=i;if(n&&t[n]){let o=\"// \".concat(e,\" => Replaced by Transform with a sampler\"),{samplerName:c,sizeName:f,uniformDeclerations:_}=Not(n),w=SR(s),C=\" \".concat(s,\" \").concat(n,\" = transform_getInput(\").concat(c,\", \").concat(f,\").\").concat(w,`;\n`);return r[c]=n,{updatedLine:o,inject:{\"vs:#decl\":_,\"vs:#main-start\":C},samplerTextureMap:r}}return null}var jot={10241:9728,10240:9728,10242:33071,10243:33071},Got=\"transform_output\",_b=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.id=this.currentIndex=0,this._swapTexture=null,this.targetTextureVarying=null,this.targetTextureType=null,this.samplerTextureMap=null,this.bindings=[],this.resources={},this._initialize(r),Object.seal(this)}updateModelProps(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this._processVertexShader(t);return Object.assign({},t,r)}getDrawOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r,sourceTextures:i,framebuffer:s,targetTexture:n}=this.bindings[this.currentIndex],o=Object.assign({},r,t.attributes),c=Object.assign({},t.uniforms),f=Object.assign({},t.parameters),_=t.discard;if(this.hasSourceTextures||this.hasTargetTexture){o.transform_elementID=this.elementIDBuffer;for(let C in this.samplerTextureMap){let R=this.samplerTextureMap[C];c[C]=i[R]}this._setSourceTextureParameters();let w=w7({sourceTextureMap:i,targetTextureVarying:this.targetTextureVarying,targetTexture:n});Object.assign(c,w)}return this.hasTargetTexture&&(_=!1,f.viewport=[0,0,s.width,s.height]),{attributes:o,framebuffer:s,uniforms:c,discard:_,parameters:f}}swap(){return this._swapTexture?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupTextures(t)}getTargetTexture(){let{targetTexture:t}=this.bindings[this.currentIndex];return t}getData(){let{packed:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{framebuffer:r}=this.bindings[this.currentIndex],i=Rh(r);if(!t)return i;let s=i.constructor,n=TR(this.targetTextureType),o=new s(i.length*n/4),c=0;for(let f=0;f0&&arguments[0]!==void 0?arguments[0]:{},{_targetTextureVarying:r,_swapTexture:i}=t;this._swapTexture=i,this.targetTextureVarying=r,this.hasTargetTexture=r,this._setupTextures(t)}_createTargetTexture(t){let{sourceTextures:r,textureOrReference:i}=t;if(i instanceof pi)return i;let s=r[i];return s?(this._targetRefTexName=i,this._createNewTexture(s)):null}_setupTextures(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r,_sourceTextures:i={},_targetTexture:s}=t,n=this._createTargetTexture({sourceTextures:i,textureOrReference:s});this.hasSourceTextures=this.hasSourceTextures||i&&Object.keys(i).length>0,this._updateBindings({sourceBuffers:r,sourceTextures:i,targetTexture:n}),\"elementCount\"in t&&this._updateElementIDBuffer(t.elementCount)}_updateElementIDBuffer(t){if(typeof t!=\"number\"||this.elementCount>=t)return;let r=new Float32Array(t);r.forEach((i,s,n)=>{n[s]=s}),this.elementIDBuffer?this.elementIDBuffer.setData({data:r}):this.elementIDBuffer=new Fr(this.gl,{data:r,accessor:{size:1}}),this.elementCount=t}_updateBindings(t){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t),this._swapTexture){let{sourceTextures:r,targetTexture:i}=this._swapTextures(this.bindings[this.currentIndex]),s=this._getNextIndex();this.bindings[s]=this._updateBinding(this.bindings[s],{sourceTextures:r,targetTexture:i})}}_updateBinding(t,r){let{sourceBuffers:i,sourceTextures:s,targetTexture:n}=r;if(t||(t={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(t.sourceTextures,s),Object.assign(t.sourceBuffers,i),n){t.targetTexture=n;let{width:o,height:c}=n,{framebuffer:f}=t;f?(f.update({attachments:{36064:n},resizeAttachments:!1}),f.resize({width:o,height:c})):t.framebuffer=new yi(this.gl,{id:\"transform-framebuffer\",width:o,height:c,attachments:{36064:n}})}return t}_setSourceTextureParameters(){let t=this.currentIndex,{sourceTextures:r}=this.bindings[t];for(let i in r)r[i].setParameters(jot)}_swapTextures(t){if(!this._swapTexture)return null;let r=Object.assign({},t.sourceTextures);r[this._swapTexture]=t.targetTexture;let i=t.sourceTextures[this._swapTexture];return{sourceTextures:r,targetTexture:i}}_createNewTexture(t){let r=nE(t,{parameters:{10241:9728,10240:9728,10242:33071,10243:33071},pixelStore:{37440:!1}});return this.ownTexture&&this.ownTexture.delete(),this.ownTexture=r,r}_getNextIndex(){return(this.currentIndex+1)%2}_processVertexShader(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceTextures:r,targetTexture:i}=this.bindings[this.currentIndex],{vs:s,uniforms:n,targetTextureType:o,inject:c,samplerTextureMap:f}=b7({vs:t.vs,sourceTextureMap:r,targetTextureVarying:this.targetTextureVarying,targetTexture:i}),_=vy([t.inject||{},c]);this.targetTextureType=o,this.samplerTextureMap=f;let w=t._fs||fb({version:gy(s),input:this.targetTextureVarying,inputType:o,output:Got}),C=this.hasSourceTextures||this.targetTextureVarying?[qR].concat(t.modules||[]):t.modules;return{vs:s,fs:w,modules:C,uniforms:n,inject:_}}};var ec=class{static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.model=null,this.elementCount=0,this.bufferTransform=null,this.textureTransform=null,this.elementIDBuffer=null,this._initialize(r),Object.seal(this)}delete(){let{model:t,bufferTransform:r,textureTransform:i}=this;t&&t.delete(),r&&r.delete(),i&&i.delete()}run(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{clearRenderTarget:r=!0}=t,i=this._updateDrawOptions(t);r&&i.framebuffer&&i.framebuffer.clear({color:!0}),this.model.transform(i)}swap(){let t=!1,r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r)t=t||i.swap();ye(t,\"Nothing to swap\")}getBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.bufferTransform&&this.bufferTransform.getBuffer(t)}getData(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r){let s=i.getData(t);if(s)return s}return null}getFramebuffer(){return this.textureTransform&&this.textureTransform.getFramebuffer()}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};\"elementCount\"in t&&this.model.setVertexCount(t.elementCount);let r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r)i.update(t)}_initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{gl:r}=this;this._buildResourceTransforms(r,t),t=this._updateModelProps(t),this.model=new Sn(r,Object.assign({},t,{fs:t.fs||fb({version:gy(t.vs)}),id:t.id||\"transform-model\",drawMode:t.drawMode||0,vertexCount:t.elementCount})),this.bufferTransform&&this.bufferTransform.setupResources({model:this.model})}_updateModelProps(t){let r=Object.assign({},t),i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let s of i)r=s.updateModelProps(r);return r}_buildResourceTransforms(t,r){Wot(r)&&(this.bufferTransform=new gb(t,r)),Hot(r)&&(this.textureTransform=new _b(t,r)),ye(this.bufferTransform||this.textureTransform,\"must provide source/feedback buffers or source/target textures\")}_updateDrawOptions(t){let r=Object.assign({},t),i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let s of i)r=Object.assign(r,s.getDrawOptions(r));return r}};function Wot(e){return!!(!jf(e.feedbackBuffers)||!jf(e.feedbackMap)||e.varyings&&e.varyings.length>0)}function Hot(e){return!!(!jf(e._sourceTextures)||e._targetTexture||e._targetTextureVarying)}var S7={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},As=class{static get DRAW_MODE(){return S7}constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{id:r=Jo(\"geometry\"),drawMode:i=S7.TRIANGLES,attributes:s={},indices:n=null,vertexCount:o=null}=t;this.id=r,this.drawMode=i|0,this.attributes={},this.userData={},this._setAttributes(s,n),this.vertexCount=o||this._calculateVertexCount(this.attributes,this.indices)}get mode(){return this.drawMode}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(t){return\"Geometry \".concat(this.id,\" attribute \").concat(t)}_setAttributes(t,r){r&&(this.indices=ArrayBuffer.isView(r)?{value:r,size:1}:r);for(let i in t){let s=t[i];s=ArrayBuffer.isView(s)?{value:s}:s,ye(ArrayBuffer.isView(s.value),\"\".concat(this._print(i),\": must be typed array or object with value as typed array\")),(i===\"POSITION\"||i===\"positions\")&&!s.size&&(s.size=3),i===\"indices\"?(ye(!this.indices),this.indices=s):this.attributes[i]=s}return this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this}_calculateVertexCount(t,r){if(r)return r.value.length;let i=1/0;for(let s in t){let n=t[s],{value:o,size:c,constant:f}=n;!f&&o&&c>=1&&(i=Math.min(i,o.length/c))}return ye(Number.isFinite(i)),i}};var qot=1,Zot=1,QA=class{constructor(){this.time=0,this.channels=new Map,this.animations=new Map,this.playing=!1,this.lastEngineTime=-1}addChannel(t){let{delay:r=0,duration:i=Number.POSITIVE_INFINITY,rate:s=1,repeat:n=1}=t,o=qot++,c={time:0,delay:r,duration:i,rate:s,repeat:n};return this._setChannelTime(c,this.time),this.channels.set(o,c),o}removeChannel(t){this.channels.delete(t);for(let[r,i]of this.animations)i.channel===t&&this.detachAnimation(r)}isFinished(t){let r=this.channels.get(t);return r===void 0?!1:this.time>=r.delay+r.duration*r.repeat}getTime(t){if(t===void 0)return this.time;let r=this.channels.get(t);return r===void 0?-1:r.time}setTime(t){this.time=Math.max(0,t);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:n,channel:o}=s;n.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(t,r){let i=Zot++;return this.animations.set(i,{animation:t,channel:r}),t.setTime(this.getTime(r)),i}detachAnimation(t){this.animations.delete(t)}update(t){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=t),this.setTime(this.time+(t-this.lastEngineTime)),this.lastEngineTime=t)}_setChannelTime(t,r){let i=r-t.delay,s=t.duration*t.repeat;i>=s?t.time=t.duration*t.rate:(t.time=Math.max(0,i)%t.duration,t.time*=t.rate)}};var Yot=[255,255,255],Qot=1,$ot=0,BE=class{constructor(t={}){G(this,\"id\",void 0),G(this,\"color\",void 0),G(this,\"intensity\",void 0),G(this,\"type\",\"ambient\");let{color:r=Yot}=t,{intensity:i=Qot}=t;this.id=t.id||\"ambient-\".concat($ot++),this.color=r,this.intensity=i}};var Xot=[255,255,255],Kot=1,Jot=[0,0,-1],tat=0,yb=class{constructor(t={}){G(this,\"id\",void 0),G(this,\"color\",void 0),G(this,\"intensity\",void 0),G(this,\"type\",\"directional\"),G(this,\"direction\",void 0),G(this,\"shadow\",void 0);let{color:r=Xot}=t,{intensity:i=Kot}=t,{direction:s=Jot}=t,{_shadow:n=!1}=t;this.id=t.id||\"directional-\".concat(tat++),this.color=r,this.intensity=i,this.type=\"directional\",this.direction=new Fe(s).normalize().toArray(),this.shadow=n}getProjectedLight(t){return this}};var vb=class{constructor(t,r={id:\"pass\"}){G(this,\"id\",void 0),G(this,\"gl\",void 0),G(this,\"props\",void 0);let{id:i}=r;this.id=i,this.gl=t,this.props={...r}}setProps(t){Object.assign(this.props,t)}render(t){}cleanup(){}};var rc=class extends vb{constructor(...t){super(...t),G(this,\"_lastRenderIndex\",-1)}render(t){let r=this.gl;return wl(r,{framebuffer:t.target}),this._drawLayers(t)}_drawLayers(t){let{target:r,moduleParameters:i,viewports:s,views:n,onViewportActive:o,clearStack:c=!0,clearCanvas:f=!0}=t;t.pass=t.pass||\"unknown\";let _=this.gl;f&&rat(_,r),c&&(this._lastRenderIndex=-1);let w=[];for(let C of s){let R=n&&n[C.id];o?.(C);let N=this._getDrawLayerParams(C,t),j=C.subViewports||[C];for(let Y of j){let rt=this._drawLayersInViewport(_,{target:r,moduleParameters:i,viewport:Y,view:R,pass:t.pass,layers:t.layers},N);w.push(rt)}}return w}_getDrawLayerParams(t,{layers:r,pass:i,isPicking:s=!1,layerFilter:n,cullRect:o,effects:c,moduleParameters:f},_=!1){let w=[],C=T7(this._lastRenderIndex+1),R={layer:r[0],viewport:t,isPicking:s,renderPass:i,cullRect:o},N={};for(let j=0;jGf(t,C))}let w={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};wl(t,{viewport:_});for(let C=0;C{let o=s.props._offset,c=s.id,f=s.parent&&s.parent.id,_;if(f&&!(f in t)&&i(s.parent,!1),f in r){let w=r[f]=r[f]||T7(t[f],t);_=w(s,n),r[c]=w}else Number.isFinite(o)?(_=o+(t[f]||0),r[c]=null):_=e;return n&&_>=e&&(e=_+1),t[c]=_,_};return i}function eat(e,{moduleParameters:t,target:r,viewport:i}){let s=r&&r.id!==\"default-framebuffer\",n=t&&t.devicePixelRatio||Sl(e),o=s?r.height:e.drawingBufferHeight,c=i;return[c.x*n,o-(c.y+c.height)*n,c.width*n,c.height*n]}function rat(e,t){let r=t?t.width:e.drawingBufferWidth,i=t?t.height:e.drawingBufferHeight;wl(e,{viewport:[0,0,r,i]}),e.clear(16640)}var xb=class extends rc{constructor(t,r){super(t,r),G(this,\"shadowMap\",void 0),G(this,\"depthBuffer\",void 0),G(this,\"fbo\",void 0),this.shadowMap=new pi(t,{width:1,height:1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.depthBuffer=new tl(t,{format:33189,width:1,height:1}),this.fbo=new yi(t,{id:\"shadowmap\",width:1,height:1,attachments:{36064:this.shadowMap,36096:this.depthBuffer}})}render(t){let r=this.fbo;bn(this.gl,{depthRange:[0,1],depthTest:!0,blend:!1,clearColor:[1,1,1,1]},()=>{let i=t.viewports[0],s=Sl(this.gl),n=i.width*s,o=i.height*s;(n!==r.width||o!==r.height)&&r.resize({width:n,height:o}),super.render({...t,target:r,pass:\"shadow\"})})}shouldDrawLayer(t){return t.props.shadowEnabled!==!1}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.delete(),this.fbo=null),this.shadowMap&&(this.shadowMap.delete(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.delete(),this.depthBuffer=null)}};var M7=\"#define SMOOTH_EDGE_RADIUS 0.5\",iat=`\n`.concat(M7,`\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n`),nat=`\n`.concat(M7,`\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`),E7={name:\"geometry\",vs:iat,fs:nat};var sat=Object.keys(Yr).map(e=>\"const int COORDINATE_SYSTEM_\".concat(e,\" = \").concat(Yr[e],\";\")).join(\"\"),oat=Object.keys(Ka).map(e=>\"const int PROJECTION_MODE_\".concat(e,\" = \").concat(Ka[e],\";\")).join(\"\"),aat=Object.keys(Ko).map(e=>\"const int UNIT_\".concat(e.toUpperCase(),\" = \").concat(Ko[e],\";\")).join(\"\"),P7=\"\".concat(sat,`\n`).concat(oat,`\n`).concat(aat,`\n\nuniform int project_uCoordinateSystem;\nuniform int project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\nuniform vec3 project_uCommonOrigin;\nuniform bool project_uPseudoMeters;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\nconst float EARTH_RADIUS = 6370972.0;\nconst float GLOBE_RADIUS = 256.0;\nfloat project_size_at_latitude(float lat) {\n float y = clamp(lat, -89.9, 89.9);\n return 1.0 / cos(radians(y));\n}\n\nfloat project_size() {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\n project_uPseudoMeters == false) {\n \n if (geometry.position.w == 0.0) {\n return project_size_at_latitude(geometry.worldPosition.y);\n }\n \n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\n float y2 = y * y;\n float y4 = y2 * y2;\n float y6 = y4 * y2;\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n }\n return 1.0;\n}\n\nfloat project_size_at_latitude(float meters, float lat) {\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\n}\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z * project_size();\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter * project_size();\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\nmat3 project_get_orientation_matrix(vec3 up) {\n vec3 uz = normalize(up);\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\n vec3 uy = cross(uz, ux);\n return mat3(ux, uy, uz);\n}\n\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n transform = project_get_orientation_matrix(commonPosition);\n return true;\n }\n return false;\n}\nvec3 project_normal(vec3 vector) {\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n mat3 rotation;\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\n n = rotation * n;\n }\n return n;\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x + 180., 360.0) - 180.;\n }\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\nvec3 project_globe_(vec3 lnglatz) {\n float lambda = radians(lnglatz.x);\n float phi = radians(lnglatz.y);\n float cosPhi = cos(phi);\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\n\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\nvec4 project_position(vec4 position, vec3 position64Low) {\n vec4 position_world = project_uModelMatrix * position;\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy),\n project_size_at_latitude(position_world.z, position_world.y),\n position_world.w\n );\n }\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\n position_world.xyz += project_uCoordinateOrigin;\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_globe_(position_world.xyz),\n position_world.w\n );\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\n return vec4(\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\n project_size(position_world.z),\n position_world.w\n );\n }\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\n position_world.xyz -= project_uCoordinateOrigin;\n }\n return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n return viewProjectionMatrix * position + center;\n}\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_size_to_pixel(float size, int unit) {\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\n if (unit == UNIT_COMMON) return size * project_uScale;\n return size;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`);function lat(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i{for(let s in i)if(!lat(i[s],t[s])){r=e(i),t=i;break}return r}}var I7=[0,0,0,0],cat=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],C7=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],uat=[0,0,0],L7=[0,0,0],hat=Hf(dat);function ZR(e,t,r=L7){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,n=!0;switch(t===Yr.LNGLAT_OFFSETS||t===Yr.METER_OFFSETS?s=r:s=e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case Ka.WEB_MERCATOR:(t===Yr.LNGLAT||t===Yr.CARTESIAN)&&(s=[0,0,0],n=!1);break;case Ka.WEB_MERCATOR_AUTO_OFFSET:t===Yr.LNGLAT?i=s:t===Yr.CARTESIAN&&(i=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],s=e.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case Ka.IDENTITY:i=e.position.map(Math.fround),i[2]=i[2]||0;break;case Ka.GLOBE:n=!1,s=null;break;default:n=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:n}}function fat(e,t,r){let{viewMatrixUncentered:i,projectionMatrix:s}=e,{viewMatrix:n,viewProjectionMatrix:o}=e,c=I7,f=I7,_=e.cameraPosition,{geospatialOrigin:w,shaderCoordinateOrigin:C,offsetMode:R}=ZR(e,t,r);return R&&(f=e.projectPosition(w||C),_=[_[0]-f[0],_[1]-f[1],_[2]-f[2]],f[3]=1,c=zh([],f,o),n=i||n,o=Wf([],s,n),o=Wf([],o,cat)),{viewMatrix:n,viewProjectionMatrix:o,projectionCenter:c,originCommon:f,cameraPosCommon:_,shaderCoordinateOrigin:C,geospatialOrigin:w}}function k7({viewport:e,devicePixelRatio:t=1,modelMatrix:r=null,coordinateSystem:i=Yr.DEFAULT,coordinateOrigin:s=L7,autoWrapLongitude:n=!1}){i===Yr.DEFAULT&&(i=e.isGeospatial?Yr.LNGLAT:Yr.CARTESIAN);let o=hat({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:s});return o.project_uWrapLongitude=n,o.project_uModelMatrix=r||C7,o}function dat({viewport:e,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:n,originCommon:o,cameraPosCommon:c,shaderCoordinateOrigin:f,geospatialOrigin:_}=fat(e,r,i),w=e.getDistanceScales(),C=[e.width*t,e.height*t],R=zh([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,N={project_uCoordinateSystem:r,project_uProjectionMode:e.projectionMode,project_uCoordinateOrigin:f,project_uCommonOrigin:o.slice(0,3),project_uCenter:s,project_uPseudoMeters:!!e._pseudoMeters,project_uViewportSize:C,project_uDevicePixelRatio:t,project_uFocalDistance:R,project_uCommonUnitsPerMeter:w.unitsPerMeter,project_uCommonUnitsPerWorldUnit:w.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:uat,project_uScale:e.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:n,project_uModelMatrix:C7,project_uCameraPosition:c};if(_){let j=e.getDistanceScales(_);switch(r){case Yr.METER_OFFSETS:N.project_uCommonUnitsPerWorldUnit=j.unitsPerMeter,N.project_uCommonUnitsPerWorldUnit2=j.unitsPerMeter2;break;case Yr.LNGLAT:case Yr.LNGLAT_OFFSETS:e._pseudoMeters||(N.project_uCommonUnitsPerMeter=j.unitsPerMeter),N.project_uCommonUnitsPerWorldUnit=j.unitsPerDegree,N.project_uCommonUnitsPerWorldUnit2=j.unitsPerDegree2;break;case Yr.CARTESIAN:N.project_uCommonUnitsPerWorldUnit=[1,1,j.unitsPerMeter[2]],N.project_uCommonUnitsPerWorldUnit2=[0,0,j.unitsPerMeter2[2]];break;default:break}}return N}var pat={};function Aat(e=pat){return\"viewport\"in e?k7(e):{}}var Uh={name:\"project\",dependencies:[AE,E7],vs:P7,getUniforms:Aat};function YR(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function $A(e,t){let r=zh([],t,e);return Py(r,r,1/r[3]),r}function QR(e,t){let r=e%t;return r<0?t+r:r}function bb(e,t,r){return er?r:e}function mat(e){return Math.log(e)*Math.LOG2E}var ky=Math.log2||mat;function Ru(e,t){if(!e)throw new Error(t||\"@math.gl/web-mercator: assertion failed.\")}var Vh=Math.PI,R7=Vh/4,Du=Vh/180,$R=180/Vh,Ry=512,FE=4003e4,Dy=85.051129,D7=1.5;function XR(e){return ky(e)}function El(e){let[t,r]=e;Ru(Number.isFinite(t)),Ru(Number.isFinite(r)&&r>=-90&&r<=90,\"invalid latitude\");let i=t*Du,s=r*Du,n=Ry*(i+Vh)/(2*Vh),o=Ry*(Vh+Math.log(Math.tan(R7+s*.5)))/(2*Vh);return[n,o]}function Yc(e){let[t,r]=e,i=t/Ry*(2*Vh)-Vh,s=2*(Math.atan(Math.exp(r/Ry*(2*Vh)-Vh))-R7);return[i*$R,s*$R]}function KR(e){let{latitude:t}=e;Ru(Number.isFinite(t));let r=Math.cos(t*Du);return XR(FE*r)-9}function wb(e){let t=Math.cos(e*Du);return Ry/FE/t}function Oy(e){let{latitude:t,longitude:r,highPrecision:i=!1}=e;Ru(Number.isFinite(t)&&Number.isFinite(r));let s=Ry,n=Math.cos(t*Du),o=s/360,c=o/n,f=s/FE/n,_={unitsPerMeter:[f,f,f],metersPerUnit:[1/f,1/f,1/f],unitsPerDegree:[o,c,f],degreesPerUnit:[1/o,1/c,1/f]};if(i){let w=Du*Math.tan(t*Du)/n,C=o*w/2,R=s/FE*w,N=R/c*f;_.unitsPerDegree2=[0,C,R],_.unitsPerMeter2=[N,0,N]}return _}function Sb(e,t){let[r,i,s]=e,[n,o,c]=t,{unitsPerMeter:f,unitsPerMeter2:_}=Oy({longitude:r,latitude:i,highPrecision:!0}),w=El(e);w[0]+=n*(f[0]+_[0]*o),w[1]+=o*(f[1]+_[1]*o);let C=Yc(w),R=(s||0)+(c||0);return Number.isFinite(s)||Number.isFinite(c)?[C[0],C[1],R]:C}function zE(e){let{height:t,pitch:r,bearing:i,altitude:s,scale:n,center:o}=e,c=YR();eg(c,c,[0,0,-s]),IE(c,c,-r*Du),CE(c,c,i*Du);let f=n/t;return Ey(c,c,[f,f,f]),o&&eg(c,c,wj([],o)),c}function JR(e){let{width:t,height:r,altitude:i,pitch:s=0,offset:n,center:o,scale:c,nearZMultiplier:f=1,farZMultiplier:_=1}=e,{fovy:w=ig(D7)}=e;i!==void 0&&(w=ig(i));let C=w*Du,R=s*Du,N=Tb(w),j=N;o&&(j+=o[2]*c/Math.cos(R)/r);let Y=C*(.5+(n?n[1]:0)/r),rt=Math.sin(Y)*j/Math.sin(bb(Math.PI/2-R-Y,.01,Math.PI-.01)),$=Math.sin(R)*rt+j,K=j*10,tt=Math.min($*_,K);return{fov:C,aspect:t/r,focalDistance:N,near:f,far:tt}}function ig(e){return 2*Math.atan(.5/e)*$R}function Tb(e){return .5/Math.tan(.5*e*Du)}function By(e,t){let[r,i,s=0]=e;return Ru(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),$A(t,[r,i,s,1])}function qf(e,t,r=0){let[i,s,n]=e;if(Ru(Number.isFinite(i)&&Number.isFinite(s),\"invalid pixel coordinate\"),Number.isFinite(n))return $A(t,[i,s,n,1]);let o=$A(t,[i,s,0,1]),c=$A(t,[i,s,1,1]),f=o[2],_=c[2],w=f===_?0:((r||0)-f)/(_-f);return gE([],o,c,w)}function Mb(e){let{width:t,height:r,bounds:i,minExtent:s=0,maxZoom:n=24,offset:o=[0,0]}=e,[[c,f],[_,w]]=i,C=gat(e.padding),R=El([c,bb(w,-Dy,Dy)]),N=El([_,bb(f,-Dy,Dy)]),j=[Math.max(Math.abs(N[0]-R[0]),s),Math.max(Math.abs(N[1]-R[1]),s)],Y=[t-C.left-C.right-Math.abs(o[0])*2,r-C.top-C.bottom-Math.abs(o[1])*2];Ru(Y[0]>0&&Y[1]>0);let rt=Y[0]/j[0],$=Y[1]/j[1],K=(C.right-C.left)/2/rt,tt=(C.top-C.bottom)/2/$,ut=[(N[0]+R[0])/2+K,(N[1]+R[1])/2+tt],Pt=Yc(ut),Ot=Math.min(n,ky(Math.abs(Math.min(rt,$))));return Ru(Number.isFinite(Ot)),{longitude:Pt[0],latitude:Pt[1],zoom:Ot}}function gat(e=0){return typeof e==\"number\"?{top:e,bottom:e,left:e,right:e}:(Ru(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var O7=Math.PI/180;function Eb(e,t=0){let{width:r,height:i,unproject:s}=e,n={targetZ:t},o=s([0,i],n),c=s([r,i],n),f,_,w=e.fovy?.5*e.fovy*O7:Math.atan(.5/e.altitude),C=(90-e.pitch)*O7;return w>C-.01?(f=B7(e,0,t),_=B7(e,r,t)):(f=s([0,0],n),_=s([r,0],n)),[o,c,_,f]}function B7(e,t,r){let{pixelUnprojectionMatrix:i}=e,s=$A(i,[t,0,1,1]),n=$A(i,[t,e.height,1,1]),c=(r*e.distanceScales.unitsPerMeter[2]-s[2])/(n[2]-s[2]),f=gE([],s,n,c),_=Yc(f);return _.push(r),_}var z7=512;function NE(e){let{width:t,height:r,pitch:i=0}=e,{longitude:s,latitude:n,zoom:o,bearing:c=0}=e;(s<-180||s>180)&&(s=QR(s+180,360)-180),(c<-180||c>180)&&(c=QR(c+180,360)-180);let f=ky(r/z7);if(o<=f)o=f,n=0;else{let _=r/2/Math.pow(2,o),w=Yc([0,_])[1];if(nC&&(n=C)}}return{width:t,height:r,longitude:s,latitude:n,zoom:o,pitch:i,bearing:c}}var vat=`\nconst int max_lights = 2;\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\nuniform vec4 shadow_uProjectCenters[max_lights];\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform int shadow_uLightId;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\n if (shadow_uDrawShadowMap) {\n return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\n }\n if (shadow_uUseShadowMap) {\n for (int i = 0; i < max_lights; i++) {\n if(i < int(shadow_uLightCount)) {\n vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\n shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\n }\n }\n }\n return gl_Position;\n}\n`,xat=`\nconst int max_lights = 2;\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform sampler2D shadow_uShadowMap0;\nuniform sampler2D shadow_uShadowMap1;\nuniform vec4 shadow_uColor;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\n vec4 rgbaDepth = texture2D(shadowMap, position.xy);\n\n float z = dot(rgbaDepth, bitUnpackShift);\n return smoothstep(0.001, 0.01, position.z - z);\n}\n\nvec4 shadow_filterShadowColor(vec4 color) {\n if (shadow_uDrawShadowMap) {\n vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\n rgbaDepth -= rgbaDepth.gbaa * bitMask;\n return rgbaDepth;\n }\n if (shadow_uUseShadowMap) {\n float shadowAlpha = 0.0;\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\n if(shadow_uLightCount > 1.0) {\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\n }\n shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\n float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\n\n return vec4(\n mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\n blendedAlpha\n );\n }\n return color;\n}\n`,bat=Hf(Eat),wat=Hf(Pat),Sat=[0,0,0,1],Tat=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function Mat(e,t){let[r,i,s]=e,n=qf([r,i,s],t);return Number.isFinite(s)?n:[n[0],n[1],0]}function Eat({viewport:e,center:t}){return new wn(e.viewProjectionMatrix).invert().transform(t)}function Pat({viewport:e,shadowMatrices:t}){let r=[],i=e.pixelUnprojectionMatrix,s=e.isGeospatial?void 0:1,n=[[0,0,s],[e.width,0,s],[0,e.height,s],[e.width,e.height,s],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(o=>Mat(o,i));for(let o of t){let c=o.clone().translate(new Fe(e.center).negate()),f=n.map(w=>c.transform(w)),_=new wn().ortho({left:Math.min(...f.map(w=>w[0])),right:Math.max(...f.map(w=>w[0])),bottom:Math.min(...f.map(w=>w[1])),top:Math.max(...f.map(w=>w[1])),near:Math.min(...f.map(w=>-w[2])),far:Math.max(...f.map(w=>-w[2]))});r.push(_.multiplyRight(o))}return r}function Iat(e,t){let{shadowEnabled:r=!0}=e;if(!r||!e.shadowMatrices||!e.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1};let i={shadow_uDrawShadowMap:!!e.drawToShadowMap,shadow_uUseShadowMap:e.shadowMaps?e.shadowMaps.length>0:!1,shadow_uColor:e.shadowColor||Sat,shadow_uLightId:e.shadowLightId||0,shadow_uLightCount:e.shadowMatrices.length},s=bat({viewport:e.viewport,center:t.project_uCenter}),n=[],o=wat({shadowMatrices:e.shadowMatrices,viewport:e.viewport}).slice();for(let c=0;c0?i[\"shadow_uShadowMap\".concat(c)]=e.shadowMaps[c]:i[\"shadow_uShadowMap\".concat(c)]=e.dummyShadowMap;return i}var Pb={name:\"shadow\",dependencies:[Uh],vs:vat,fs:xat,inject:{\"vs:DECKGL_FILTER_GL_POSITION\":`\n position = shadow_setVertexPosition(geometry.position);\n `,\"fs:DECKGL_FILTER_COLOR\":`\n color = shadow_filterShadowColor(color);\n `},getUniforms:(e={},t={})=>\"viewport\"in e&&(e.drawToShadowMap||e.shadowMaps&&e.shadowMaps.length>0)?Iat(e,t):{}};var Cat={color:[255,255,255],intensity:1},N7=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],Lat=[0,0,0,200/255],Fy=class{constructor(t={}){G(this,\"id\",\"lighting-effect\"),G(this,\"props\",void 0),G(this,\"shadowColor\",Lat),G(this,\"shadow\",void 0),G(this,\"ambientLight\",void 0),G(this,\"directionalLights\",void 0),G(this,\"pointLights\",void 0),G(this,\"shadowPasses\",[]),G(this,\"shadowMaps\",[]),G(this,\"dummyShadowMap\",null),G(this,\"programManager\",void 0),G(this,\"shadowMatrices\",void 0),this.setProps(t)}setProps(t){this.ambientLight=null,this.directionalLights=[],this.pointLights=[];for(let r in t){let i=t[r];switch(i.type){case\"ambient\":this.ambientLight=i;break;case\"directional\":this.directionalLights.push(i);break;case\"point\":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.props=t}preRender(t,{layers:r,layerFilter:i,viewports:s,onViewportActive:n,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices(),this.shadowPasses.length===0&&this._createShadowPasses(t),this.programManager||(this.programManager=Nh.getDefaultProgramManager(t),Pb&&this.programManager.addDefaultModule(Pb)),this.dummyShadowMap||(this.dummyShadowMap=new pi(t,{width:1,height:1}));for(let c=0;ci.getProjectedLight({layer:t})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:t}))},r}cleanup(){for(let t of this.shadowPasses)t.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.delete(),this.dummyShadowMap=null),this.shadow&&this.programManager&&(this.programManager.removeDefaultModule(Pb),this.programManager=null)}_calculateMatrices(){let t=[];for(let r of this.directionalLights){let i=new wn().lookAt({eye:new Fe(r.direction).negate()});t.push(i)}return t}_createShadowPasses(t){for(let r=0;rs&&(n=s);let o=this._pool,c=t.BYTES_PER_ELEMENT*n,f=o.findIndex(_=>_.byteLength>=c);if(f>=0){let _=new t(o.splice(f,1)[0],0,n);return i&&_.fill(0),_}return new t(n)}_release(t){if(!ArrayBuffer.isView(t))return;let r=this._pool,{buffer:i}=t,{byteLength:s}=i,n=r.findIndex(o=>o.byteLength>=s);n<0?r.push(i):(n>0||r.lengththis.opts.poolSize&&r.shift()}},jh=new tD;function Ny(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function V7(e){return[e[12],e[13],e[14]]}function j7(e){return{left:zy(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:zy(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:zy(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:zy(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:zy(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:zy(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}var U7=new Fe;function zy(e,t,r,i){U7.set(e,t,r);let s=U7.len();return{distance:i/s,normal:new Fe(-e/s,-t/s,-r/s)}}function kat(e){return e-Math.fround(e)}var Ib;function UE(e,t){let{size:r=1,startIndex:i=0}=t,s=t.endIndex!==void 0?t.endIndex:e.length,n=(s-i)/r;Ib=jh.allocate(Ib,n,{type:Float32Array,size:r*2});let o=i,c=0;for(;osuper.render({target:o,layers:t,layerFilter:r,views:i,viewports:s,onViewportActive:n,cullRect:C,effects:R?.filter(ut=>ut.useInPicking),pass:N,isPicking:!0,moduleParameters:Y}));return this._colorEncoderState=null,{decodePickingColor:$&&Nat.bind(null,$),stats:K}}shouldDrawLayer(t){let{pickable:r,operation:i}=t.props;return r&&i.includes(\"draw\")||i.includes(\"terrain\")||i.includes(\"mask\")}getModuleParameters(){return{pickingActive:1,pickingAttribute:this.pickZ,lightSources:{}}}getLayerParameters(t,r,i){let s={...t.props.parameters},{pickable:n,operation:o}=t.props;return this._colorEncoderState?n&&o.includes(\"draw\")&&(Object.assign(s,Z7),s.blend=!0,s.blendColor=zat(this._colorEncoderState,t,i)):s.blend=!1,o.includes(\"terrain\")&&(s.blend=!1),s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function zat(e,t,r){let{byLayer:i,byAlpha:s}=e,n,o=i.get(t);return o?(o.viewports.push(r),n=o.a):(n=i.size+1,n<=255?(o={a:n,layer:t,viewports:[r]},i.set(t,o),s[n]=o):(nr.warn(\"Too many pickable layers, only picking the first 255\")(),n=0)),[0,0,0,n/255]}function Nat(e,t){let r=e.byAlpha[t[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(t)}}var XA={NO_STATE:\"Awaiting state\",MATCHED:\"Matched. State transferred from previous layer\",INITIALIZED:\"Initialized\",AWAITING_GC:\"Discarded. Awaiting garbage collection\",AWAITING_FINALIZATION:\"No longer matched. Awaiting garbage collection\",FINALIZED:\"Finalized! Awaiting garbage collection\"},Uy=Symbol.for(\"component\"),Ou=Symbol.for(\"propTypes\"),VE=Symbol.for(\"deprecatedProps\"),ip=Symbol.for(\"asyncPropDefaults\"),Zf=Symbol.for(\"asyncPropOriginal\"),Gh=Symbol.for(\"asyncPropResolved\");function np(e,t=()=>!0){return Array.isArray(e)?Y7(e,t,[]):t(e)?[e]:[]}function Y7(e,t,r){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(t,r){if(t===this._data&&!r)return;this._data=t;let i=++this._loadCount,s=t;typeof t==\"string\"&&(s=NA(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let n of this._subscribers)n.onChange(this.getData())}};var Lb=class{constructor({gl:t,protocol:r}){G(this,\"protocol\",void 0),G(this,\"_context\",void 0),G(this,\"_resources\",void 0),G(this,\"_consumers\",void 0),G(this,\"_pruneRequest\",void 0),this.protocol=r||\"resource://\",this._context={gl:t,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:r,forceUpdate:i=!1,persistent:s=!0}){let n=this._resources[t];n?n.setData(r,i):(n=new Cb(t,r,this._context),this._resources[t]=n),n.persistent=s}remove(t){let r=this._resources[t];r&&(r.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let r=this._consumers[t];if(r){for(let i in r){let s=r[i],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:r,consumerId:i,requestId:s=\"default\"}){let{_resources:n,protocol:o}=this;t.startsWith(o)&&(t=t.replace(o,\"\"),n[t]||this.add({resourceId:t,data:null,persistent:!1}));let c=n[t];if(this._track(i,s,c,r),c)return c.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let t in this._resources)this._resources[t].delete()}_track(t,r,i,s){let n=this._consumers,o=n[t]=n[t]||{},c=o[r]||{},f=c.resourceId&&this._resources[c.resourceId];f&&(f.unsubscribe(c),this.prune()),i&&(o[r]=c,c.onChange=s,c.resourceId=i.id,i.subscribe(c))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let r=this._resources[t];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[t])}}};var Uat=`\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n mat3 rotation;\n if (project_needs_rotation(projectedPosition, rotation)) {\n // offset is specified as ENU\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\n offset = rotation * offset;\n }\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`,oo={name:\"project32\",dependencies:[Uh],vs:Uat};var ta={inject:{\"vs:DECKGL_FILTER_GL_POSITION\":`\n // for picking depth values\n picking_setPickingAttribute(position.z / position.w);\n `,\"vs:DECKGL_FILTER_COLOR\":`\n picking_setPickingColor(geometry.pickingColor);\n `,\"fs:#decl\":`\nuniform bool picking_uAttribute;\n `,\"fs:DECKGL_FILTER_COLOR\":{order:99,injection:`\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `}},...DE};var Vat=[Uh],jat=[\"vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)\",\"vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)\",\"vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)\",\"fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)\"];function Q7(e){let t=Nh.getDefaultProgramManager(e);for(let r of Vat)t.addDefaultModule(r);for(let r of jat)t.addShaderHook(r);return t}var Gat=\"layerManager.setLayers\",Wat=\"layerManager.activateViewport\",kb=class{constructor(t,{deck:r,stats:i,viewport:s,timeline:n}={}){G(this,\"layers\",void 0),G(this,\"context\",void 0),G(this,\"resourceManager\",void 0),G(this,\"_lastRenderedLayers\",[]),G(this,\"_needsRedraw\",!1),G(this,\"_needsUpdate\",!1),G(this,\"_nextLayers\",null),G(this,\"_debug\",!1),G(this,\"activateViewport\",o=>{Cs(Wat,this,o),o&&(this.context.viewport=o)}),this.layers=[],this.resourceManager=new Lb({gl:t,protocol:\"deck://\"}),this.context={mousePosition:null,userData:{},layerManager:this,gl:t,deck:r,programManager:t&&Q7(t),stats:i||new Vf({id:\"deck.gl\"}),viewport:s||new ic({id:\"DEFAULT-INITIAL-VIEWPORT\"}),timeline:n||new QA,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(t);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?\"layers changed\":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(r=>t.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(t){\"debug\"in t&&(this._debug=t.debug),\"userData\"in t&&(this.context.userData=t.userData),\"layers\"in t&&(this._nextLayers=t.layers),\"onError\"in t&&(this.context.onError=t.onError)}setLayers(t,r){Cs(Gat,this,r,t),this._lastRenderedLayers=t;let i=np(t,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let t=this.needsUpdate();t&&(this.setNeedsRedraw(\"updating layers: \".concat(t)),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}_handleError(t,r,i){i.raiseError(r,\"\".concat(t,\" of \").concat(i))}_updateLayers(t,r){let i={};for(let o of t)i[o.id]?nr.warn(\"Multiple old layers with same id \".concat(o.id))():i[o.id]=o;let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let n=!1;for(let o of s)if(o.hasUniformTransition()){n=\"Uniform transition in \".concat(o);break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(t,r,i){for(let s of t){s.context=this.context;let n=r[s.id];n===null&&nr.warn(\"Multiple new layers with same id \".concat(s.id))(),r[s.id]=null;let o=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),o=s.isComposite?s.getSubLayers():null}catch(c){this._handleError(\"matching\",c,s)}o&&this._updateSublayersRecursively(o,r,i)}}_finalizeOldLayers(t){for(let r in t){let i=t[r];i&&this._finalizeLayer(i)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=XA.INITIALIZED}catch(r){this._handleError(\"initialization\",r,t)}}_transferLayerState(t,r){r._transferState(t),r.lifecycle=XA.MATCHED,r!==t&&(t.lifecycle=XA.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(r){this._handleError(\"update\",r,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||\"finalized \".concat(t),t.lifecycle=XA.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=XA.FINALIZED}catch(r){this._handleError(\"finalization\",r,t)}}};function ao(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;ir.containsPixel(t)):this._viewports}getViews(){let t={};return this.views.forEach(r=>{t[r.id]=r}),t}getView(t){return this.views.find(r=>r.id===t)}getViewState(t){let r=typeof t==\"string\"?this.getView(t):t,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(t){return this._viewportMap[t]}unproject(t,r){let i=this.getViewports(),s={x:t[0],y:t[1]};for(let n=i.length-1;n>=0;--n){let o=i[n];if(o.containsPixel(s)){let c=t.slice();return c[0]-=o.x,c[1]-=o.y,o.unproject(c,r)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),(\"width\"in t||\"height\"in t)&&this._setSize(t.width,t.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(t,r){(t!==this.width||r!==this.height)&&(this.width=t,this.height=r,this.setNeedsUpdate(\"Size changed\"))}_setViews(t){t=np(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate(\"views changed\"),this.views=t}_setViewState(t){t?(!ao(t,this.viewState,3)&&this.setNeedsUpdate(\"viewState changed\"),this.viewState=t):nr.warn(\"missing `viewState` or `initialViewState`\")()}_onViewStateChange(t,r){this._eventCallbacks.onViewStateChange&&this._eventCallbacks.onViewStateChange({...r,viewId:t})}_createController(t,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._onViewStateChange.bind(this,r.id),onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:n=>{var o;return(o=this.getView(t.id))===null||o===void 0?void 0:o.makeViewport({viewState:n,width:this.width,height:this.height})}})}_updateController(t,r,i,s){let n=t.controller;if(n&&i){let o={...r,...n,id:t.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==n.type)&&(s=this._createController(t,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:t}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=t.length;s--;){let n=t[s],o=this.getViewState(n),c=n.makeViewport({viewState:o,width:this.width,height:this.height}),f=r[n.id],_=!!n.controller;_&&!f&&(i=!0),(i||!_)&&f&&(f.finalize(),f=null),this.controllers[n.id]=this._updateController(n,o,c,f),c&&this._viewports.unshift(c)}for(let s in r){let n=r[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,r){return t.length!==r.length?!0:t.some((i,s)=>!t[s].equals(r[s]))}};var Hat=/([0-9]+\\.?[0-9]*)(%|px)/;function sp(e){switch(typeof e){case\"number\":return{position:e,relative:!1};case\"string\":let t=Hat.exec(e);if(t&&t.length>=3){let r=t[2]===\"%\",i=parseFloat(t[1]);return{position:r?i/100:i,relative:r}}default:throw new Error(\"Could not parse position string \".concat(e))}}function op(e,t){return e.relative?Math.round(e.position*t):e.position}function br(e,t){if(!e)throw new Error(t||\"deck.gl: assertion failed.\")}var Qc=class{constructor(t){G(this,\"id\",void 0),G(this,\"viewportInstance\",void 0),G(this,\"_x\",void 0),G(this,\"_y\",void 0),G(this,\"_width\",void 0),G(this,\"_height\",void 0),G(this,\"_padding\",void 0),G(this,\"props\",void 0);let{id:r,x:i=0,y:s=0,width:n=\"100%\",height:o=\"100%\",padding:c=null,viewportInstance:f}=t||{};br(!f||f instanceof ic),this.viewportInstance=f,this.id=r||this.constructor.displayName||\"view\",this.props={...t,id:this.id},this._x=sp(i),this._y=sp(s),this._width=sp(n),this._height=sp(o),this._padding=c&&{left:sp(c.left||0),right:sp(c.right||0),top:sp(c.top||0),bottom:sp(c.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.viewportInstance?t.viewportInstance?this.viewportInstance.equals(t.viewportInstance):!1:this.ViewportType===t.ViewportType&&ao(this.props,t.props,2)}makeViewport({width:t,height:r,viewState:i}){if(this.viewportInstance)return this.viewportInstance;i=this.filterViewState(i);let s=this.getDimensions({width:t,height:r});return!s.height||!s.width?null:new this.ViewportType({...i,...this.props,...s})}getViewStateId(){let{viewState:t}=this.props;return typeof t==\"string\"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState==\"object\"){if(!this.props.viewState.id)return this.props.viewState;let r={...t};for(let i in this.props.viewState)i!==\"id\"&&(r[i]=this.props.viewState[i]);return r}return t}getDimensions({width:t,height:r}){let i={x:op(this._x,t),y:op(this._y,r),width:op(this._width,t),height:op(this._height,r)};return this._padding&&(i.padding={left:op(this._padding.left,t),top:op(this._padding.top,r),right:op(this._padding.right,t),bottom:op(this._padding.bottom,r)}),i}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t==\"function\"?{type:t}:{type:this.ControllerType,...t}:null}};var $c=class{constructor(t){G(this,\"_inProgress\",void 0),G(this,\"_handle\",void 0),G(this,\"_timeline\",void 0),G(this,\"time\",void 0),G(this,\"settings\",void 0),this._inProgress=!1,this._handle=null,this._timeline=t,this.time=0,this.settings={duration:0}}get inProgress(){return this._inProgress}start(t){var r,i;this.cancel(),this.settings=t,this._inProgress=!0,(r=(i=this.settings).onStart)===null||r===void 0||r.call(i,this)}end(){if(this._inProgress){var t,r;this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,(t=(r=this.settings).onEnd)===null||t===void 0||t.call(r,this)}}cancel(){if(this._inProgress){var t,r;(t=(r=this.settings).onInterrupt)===null||t===void 0||t.call(r,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1}}update(){var t,r;if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:i,settings:s}=this;this._handle=i.addChannel({delay:i.getTime(),duration:s.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),(t=(r=this.settings).onUpdate)===null||t===void 0||t.call(r,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var $7=()=>{},nD={BREAK:1,SNAP_TO_END:2,IGNORE:3},qat=e=>e,Zat=nD.BREAK,Db=class{constructor(t){G(this,\"getControllerState\",void 0),G(this,\"props\",void 0),G(this,\"propsInTransition\",void 0),G(this,\"transition\",void 0),G(this,\"onViewStateChange\",void 0),G(this,\"onStateChange\",void 0),G(this,\"_onTransitionUpdate\",r=>{let{time:i,settings:{interpolator:s,startProps:n,endProps:o,duration:c,easing:f}}=r,_=f(i/c),w=s.interpolateProps(n,o,_);this.propsInTransition=this.getControllerState({...this.props,...w}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})}),this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new $c(t.timeline),this.onViewStateChange=t.onViewStateChange||$7,this.onStateChange=t.onStateChange||$7}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let r=!1,i=this.props;if(this.props=t,!i||this._shouldIgnoreViewportChange(i,t))return!1;if(this._isTransitionEnabled(t)){let s=i;if(this.transition.inProgress){let{interruption:n,endProps:o}=this.transition.settings;s={...i,...n===nD.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(s,t),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:r,transitionInterpolator:i}=t;return(r>0||r===\"auto\")&&!!i}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,r){return this.transition.inProgress?this.transition.settings.interruption===nD.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(t,r):!0}_triggerTransition(t,r){let i=this.getControllerState(t),s=this.getControllerState(r).shortestPathFrom(i),n=r.transitionInterpolator,o=n.getDuration?n.getDuration(t,r):r.transitionDuration;if(o===0)return;let c=n.initializeProps(t,s);this.propsInTransition={};let f={duration:o,easing:r.transitionEasing||qat,interpolator:n,interruption:r.transitionInterruption||Zat,startProps:c.start,endProps:c.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(f),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(r)}}};var Ob=class{constructor(t){G(this,\"_propsToCompare\",void 0),G(this,\"_propsToExtract\",void 0),G(this,\"_requiredProps\",void 0);let{compare:r,extract:i,required:s}=t;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(t,r){for(let i of this._propsToCompare)if(!(i in t)||!(i in r)||!To(t[i],r[i]))return!1;return!0}initializeProps(t,r){let i={},s={};for(let n of this._propsToExtract)(n in t||n in r)&&(i[n]=t[n],s[n]=r[n]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(t,r){return r.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(r=>{let i=t[r];br(Number.isFinite(i)||Array.isArray(i),\"\".concat(r,\" is required for transition\"))})}};var Yat=[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\"],Qat=[\"longitude\",\"latitude\",\"zoom\"],sg=class extends Ob{constructor(t={}){let r=Array.isArray(t)?t:t.transitionProps,i=Array.isArray(t)?{}:t;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:Yat,required:Qat},super(i.transitionProps),G(this,\"opts\",void 0),this.opts=i}initializeProps(t,r){let i=super.initializeProps(t,r),{makeViewport:s,around:n}=this.opts;if(s&&n){let o=s(t),c=s(r),f=o.unproject(n);i.start.around=n,Object.assign(i.end,{around:c.project(f),aroundPosition:f,width:r.width,height:r.height})}return i}interpolateProps(t,r,i){let s={};for(let n of this._propsToExtract)s[n]=tc(t[n]||0,r[n]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...r,...s});Object.assign(s,n.panByPosition(r.aroundPosition,tc(t.around,r.around,i)))}return s}};var KA={transitionDuration:0},$at=300,jE=e=>1-(1-e)*(1-e),Vy={WHEEL:[\"wheel\"],PAN:[\"panstart\",\"panmove\",\"panend\"],PINCH:[\"pinchstart\",\"pinchmove\",\"pinchend\"],TRIPLE_PAN:[\"tripanstart\",\"tripanmove\",\"tripanend\"],DOUBLE_TAP:[\"doubletap\"],KEYBOARD:[\"keydown\"]},og={},Bb=class{constructor(t){G(this,\"props\",void 0),G(this,\"state\",{}),G(this,\"transitionManager\",void 0),G(this,\"eventManager\",void 0),G(this,\"onViewStateChange\",void 0),G(this,\"onStateChange\",void 0),G(this,\"makeViewport\",void 0),G(this,\"_controllerState\",void 0),G(this,\"_events\",{}),G(this,\"_interactionState\",{isDragging:!1}),G(this,\"_customEvents\",[]),G(this,\"_eventStartBlocked\",null),G(this,\"_panMove\",!1),G(this,\"invertPan\",!1),G(this,\"dragMode\",\"rotate\"),G(this,\"inertia\",0),G(this,\"scrollZoom\",!0),G(this,\"dragPan\",!0),G(this,\"dragRotate\",!0),G(this,\"doubleClickZoom\",!0),G(this,\"touchZoom\",!0),G(this,\"touchRotate\",!1),G(this,\"keyboard\",!0),this.transitionManager=new Db({...t,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(let r in this._events)if(this._events[r]){var t;(t=this.eventManager)===null||t===void 0||t.off(r,this.handleEvent)}this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;let r=this._eventStartBlocked;switch(t.type){case\"panstart\":return r?!1:this._onPanStart(t);case\"panmove\":return this._onPan(t);case\"panend\":return this._onPanEnd(t);case\"pinchstart\":return r?!1:this._onPinchStart(t);case\"pinchmove\":return this._onPinch(t);case\"pinchend\":return this._onPinchEnd(t);case\"tripanstart\":return r?!1:this._onTriplePanStart(t);case\"tripanmove\":return this._onTriplePan(t);case\"tripanend\":return this._onTriplePanEnd(t);case\"doubletap\":return this._onDoubleTap(t);case\"wheel\":return this._onWheel(t);case\"keydown\":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){let{x:r,y:i}=this.props,{offsetCenter:s}=t;return[s.x-r,s.y-i]}isPointInBounds(t,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let n=t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=s;return n&&r&&r.stopPropagation(),n}isFunctionKeyPressed(t){let{srcEvent:r}=t;return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=r}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,\"transitionInterpolator\"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r}=t;this.inertia=Number.isFinite(r)?r:r===!0?$at:0;let{scrollZoom:i=!0,dragPan:s=!0,dragRotate:n=!0,doubleClickZoom:o=!0,touchZoom:c=!0,touchRotate:f=!1,keyboard:_=!0}=t,w=!!this.onViewStateChange;this.toggleEvents(Vy.WHEEL,w&&i),this.toggleEvents(Vy.PAN,w),this.toggleEvents(Vy.PINCH,w&&(c||f)),this.toggleEvents(Vy.TRIPLE_PAN,w&&f),this.toggleEvents(Vy.DOUBLE_TAP,w&&o),this.toggleEvents(Vy.KEYBOARD,w&&_),this.scrollZoom=i,this.dragPan=s,this.dragRotate=n,this.doubleClickZoom=o,this.touchZoom=c,this.touchRotate=f,this.keyboard=_}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,r){this.eventManager&&t.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(t,r=null,i={}){let s={...t.getViewportProps(),...r},n=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(i),n){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode===\"pan\")&&(i=!i);let s=this.controllerState[i?\"panStart\":\"rotateStart\"]({pos:r});return this._panMove=i,this.updateViewport(s,KA,{isDragging:!0}),!0}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;let r=this.getCenter(t),i=this.controllerState.pan({pos:r});return this.updateViewport(i,KA,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:r}=this;if(this.dragPan&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],n=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let r=this.getCenter(t),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,KA,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:r}=this;if(this.dragRotate&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],n=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;t.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=t,o=2/(1+Math.exp(-Math.abs(n*i)));n<0&&o!==0&&(o=1/o);let c=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(c,{...this._getTransitionProps({around:r}),transitionDuration:s?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,KA,{isDragging:!0}),!0}_onTriplePan(t){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(t);r[0]-=t.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,KA,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&t.velocityY){let i=this.getCenter(t),s=[i[0],i[1]+=t.velocityY*r/2],n=this.controllerState.rotate({pos:s});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return og._startPinchRotation=t.rotation,og._lastPinchEvent=t,this.updateViewport(i,KA,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=t,s=this.getCenter(t);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=t;r=r.rotate({deltaAngleX:og._startPinchRotation-i})}return this.updateViewport(r,KA,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),og._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=og;if(this.touchZoom&&r&&i&&t.scale!==i.scale){let s=this.getCenter(t),n=this.controllerState.rotateEnd(),o=Math.log2(t.scale),c=(o-Math.log2(i.scale))/(t.deltaTime-i.deltaTime),f=Math.pow(2,o+c*r/2);n=n.zoom({pos:s,scale:f}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:jE},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return og._startPinchRotation=null,og._lastPinchEvent=null,!0}_onDoubleTap(t){if(!this.doubleClickZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(t),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:c}=this,f,_={};switch(t.srcEvent.code){case\"Minus\":f=r?c.zoomOut(i).zoomOut(i):c.zoomOut(i),_.isZooming=!0;break;case\"Equal\":f=r?c.zoomIn(i).zoomIn(i):c.zoomIn(i),_.isZooming=!0;break;case\"ArrowLeft\":r?(f=c.rotateLeft(n),_.isRotating=!0):(f=c.moveLeft(s),_.isPanning=!0);break;case\"ArrowRight\":r?(f=c.rotateRight(n),_.isRotating=!0):(f=c.moveRight(s),_.isPanning=!0);break;case\"ArrowUp\":r?(f=c.rotateUp(o),_.isRotating=!0):(f=c.moveUp(s),_.isPanning=!0);break;case\"ArrowDown\":r?(f=c.rotateDown(o),_.isRotating=!0):(f=c.moveDown(s),_.isPanning=!0);break;default:return!1}return this.updateViewport(f,this._getTransitionProps(),_),!0}_getTransitionProps(t){let{transition:r}=this;return!r||!r.transitionInterpolator?KA:t?{...r,transitionInterpolator:new sg({...t,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Fb=class{constructor(t,r){G(this,\"_viewportProps\",void 0),G(this,\"_state\",void 0),this._viewportProps=this.applyConstraints(t),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var X7=5,Xat=1.2,sD=class extends Fb{constructor(t){let{width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:c=0,pitch:f=0,altitude:_=1.5,position:w=[0,0,0],maxZoom:C=20,minZoom:R=0,maxPitch:N=60,minPitch:j=0,startPanLngLat:Y,startZoomLngLat:rt,startRotatePos:$,startBearing:K,startPitch:tt,startZoom:ut,normalize:Pt=!0}=t;br(Number.isFinite(n)),br(Number.isFinite(s)),br(Number.isFinite(o)),super({width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:c,pitch:f,altitude:_,maxZoom:C,minZoom:R,maxPitch:N,minPitch:j,normalize:Pt,position:w},{startPanLngLat:Y,startZoomLngLat:rt,startRotatePos:$,startBearing:K,startPitch:tt,startZoom:ut}),G(this,\"makeViewport\",void 0),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:n,startPitch:o}=this.getState();if(!s||n===void 0||o===void 0)return this;let c;return t?c=this._getNewRotation(t,s,o,n):c={bearing:n+r,pitch:o+i},this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:n}=this.getState();if(n||(s=this.getViewportProps().zoom,n=this._unproject(r)||this._unproject(t)),!n)return this;let{maxZoom:o,minZoom:c}=this.getViewportProps(),f=s+Math.log2(i);f=Ml(f,c,o);let _=this.makeViewport({...this.getViewportProps(),zoom:f});return this._getUpdatedState({zoom:f,..._.panByPosition(n,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){let r=t.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:n}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(t){let{maxZoom:r,minZoom:i,zoom:s}=t;t.zoom=Ml(s,i,r);let{maxPitch:n,minPitch:o,pitch:c}=t;t.pitch=Ml(c,o,n);let{normalize:f=!0}=t;return f&&Object.assign(t,NE(t)),t}_zoomFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:t})}_panFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+t[0],i/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){let r=this.makeViewport(this.getViewportProps());return t&&r.unproject(t)}_getNewRotation(t,r,i,s){let n=t[0]-r[0],o=t[1]-r[1],c=t[1],f=r[1],{width:_,height:w}=this.getViewportProps(),C=n/_,R=0;o>0?Math.abs(w-f)>X7&&(R=o/(f-w)*Xat):o<0&&f>X7&&(R=1-c/f),R=Ml(R,-1,1);let{minPitch:N,maxPitch:j}=this.getViewportProps(),Y=s+180*C,rt=i;return R>0?rt=i+R*(j-i):R<0&&(rt=i-R*(N-i)),{pitch:rt,bearing:Y}}},zb=class extends Bb{constructor(...t){super(...t),G(this,\"ControllerState\",sD),G(this,\"transition\",{transitionDuration:300,transitionInterpolator:new sg({transitionProps:{compare:[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\",\"position\"],required:[\"longitude\",\"latitude\",\"zoom\"]}})}),G(this,\"dragMode\",\"pan\")}setProps(t){t.position=t.position||[0,0,0];let r=this.props;super.setProps(t),(!r||r.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}};var jy=class extends Qc{get ViewportType(){return nc}get ControllerType(){return zb}};G(jy,\"displayName\",\"MapView\");var Kat=new Fy;function Jat(e,t){var r,i;let s=(r=e.order)!==null&&r!==void 0?r:1/0,n=(i=t.order)!==null&&i!==void 0?i:1/0;return s-n}var Nb=class{constructor(){G(this,\"effects\",void 0),G(this,\"_resolvedEffects\",[]),G(this,\"_defaultEffects\",[]),G(this,\"_needsRedraw\",void 0),this.effects=[],this._needsRedraw=\"Initial render\",this._setEffects([])}addDefaultEffect(t){let r=this._defaultEffects;if(!r.find(i=>i.id===t.id)){let i=r.findIndex(s=>Jat(s,t)>0);i<0?r.push(t):r.splice(i,0,t),this._setEffects(this.effects)}}setProps(t){\"effects\"in t&&(ao(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(t){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of t){let n=r[s.id];n&&n!==s?n.setProps?(n.setProps(s.props),i.push(n)):(n.cleanup(),i.push(s)):i.push(s),delete r[s.id]}for(let s in r)r[s].cleanup();this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),t.some(s=>s instanceof Fy)||this._resolvedEffects.push(Kat),this._needsRedraw=\"effects changed\"}finalize(){for(let t of this._resolvedEffects)t.cleanup();this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Ub=class extends rc{shouldDrawLayer(t){let{operation:r}=t.props;return r.includes(\"draw\")||r.includes(\"terrain\")}};var tlt=\"deckRenderer.renderLayers\",Vb=class{constructor(t){G(this,\"gl\",void 0),G(this,\"layerFilter\",void 0),G(this,\"drawPickingColors\",void 0),G(this,\"drawLayersPass\",void 0),G(this,\"pickLayersPass\",void 0),G(this,\"renderCount\",void 0),G(this,\"_needsRedraw\",void 0),G(this,\"renderBuffers\",void 0),G(this,\"lastPostProcessEffect\",void 0),this.gl=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Ub(t),this.pickLayersPass=new ng(t),this.renderCount=0,this._needsRedraw=\"Initial render\",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw=\"layerFilter changed\"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw=\"drawPickingColors changed\")}renderLayers(t){if(!t.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t,target:t.target||yi.getDefaultFramebuffer(this.gl)};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target,n=r.render({...i,target:s});i.effects&&this._postRender(i.effects,i),this.renderCount++,Cs(tlt,this,n,t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:t}=this;for(let r of t)r.delete();t.length=0}_preRender(t,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of t)r.preRenderStats[i.id]=i.preRender(this.gl,r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:t}=this;t.length===0&&t.push(new yi(this.gl),new yi(this.gl));for(let r of t)r.resize()}_postRender(t,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1],target:null};for(let n of t)if(n.postRender){if(n.id===this.lastPostProcessEffect){s.target=r.target,n.postRender(this.gl,s);break}let o=n.postRender(this.gl,s);s.inputBuffer=o,s.swapBuffer=o===i[0]?i[1]:i[0]}}};var elt={pickedColor:null,pickedObjectIndex:-1};function K7({pickedColors:e,decodePickingColor:t,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:n}){let{x:o,y:c,width:f,height:_}=n,w=s*s,C=-1,R=0;for(let N=0;N<_;N++){let j=N+c-i,Y=j*j;if(Y>w)R+=4*f;else for(let rt=0;rt=0){let K=rt+o-r,tt=K*K+Y;tt<=w&&(w=tt,C=R)}R+=4}}if(C>=0){let N=e.slice(C,C+4),j=t(N);if(j){let Y=Math.floor(C/4/f),rt=C/4-Y*f;return{...j,pickedColor:N,pickedX:o+rt,pickedY:c+Y}}nr.error(\"Picked non-existent layer. Is picking buffer corrupt?\")()}return elt}function J7({pickedColors:e,decodePickingColor:t}){let r=new Map;if(e){for(let i=0;i=0){let n=e.slice(i,i+4),o=n.join(\",\");if(!r.has(o)){let c=t(n);c?r.set(o,{...c,color:n}):nr.error(\"Picked non-existent layer. Is picking buffer corrupt?\")()}}}return Array.from(r.values())}function oD({pickInfo:e,viewports:t,pixelRatio:r,x:i,y:s,z:n}){let o=t[0];t.length>1&&(o=rlt(e?.pickedViewports||t,{x:i,y:s}));let c;if(o){let f=[i-o.x,s-o.y];n!==void 0&&(f[2]=n),c=o.unproject(f)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:c,devicePixel:e&&\"pickedX\"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:r}}function tG(e){let{pickInfo:t,lastPickedInfo:r,mode:i,layers:s}=e,{pickedColor:n,pickedLayer:o,pickedObjectIndex:c}=t,f=o?[o]:[];if(i===\"hover\"){let C=r.index,R=r.layerId,N=o?o.props.id:null;if(N!==R||c!==C){if(N!==R){let j=s.find(Y=>Y.props.id===R);j&&f.unshift(j)}r.layerId=N,r.index=c,r.info=null}}let _=oD(e),w=new Map;return w.set(null,_),f.forEach(C=>{let R={..._};C===o&&(R.color=n,R.index=c,R.picked=!0),R=aD({layer:C,info:R,mode:i});let N=R.layer;C===o&&i===\"hover\"&&(r.info=R),w.set(N.id,R),i===\"hover\"&&N.updateAutoHighlight(R)}),w}function aD({layer:e,info:t,mode:r}){for(;e&&t;){let i=t.layer||null;t.sourceLayer=i,t.layer=e,t=e.getPickingInfo({info:t,mode:r,sourceLayer:i}),e=e.parent}return t}function rlt(e,t){for(let r=e.length-1;r>=0;r--){let i=e[r];if(i.containsPixel(t))return i}return e[0]}var jb=class{constructor(t){G(this,\"gl\",void 0),G(this,\"pickingFBO\",void 0),G(this,\"depthFBO\",void 0),G(this,\"pickLayersPass\",void 0),G(this,\"layerFilter\",void 0),G(this,\"lastPickedInfo\",void 0),G(this,\"_pickable\",!0),this.gl=t,this.pickLayersPass=new ng(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){\"layerFilter\"in t&&(this.layerFilter=t.layerFilter),\"_pickable\"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.delete(),this.depthFBO&&(this.depthFBO.color.delete(),this.depthFBO.delete())}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:r,layers:i,viewports:s},n=this.lastPickedInfo.info){let o=n&&n.layer&&n.layer.id,c=n&&n.viewport&&n.viewport.id,f=o?i.find(R=>R.id===o):null,_=c&&s.find(R=>R.id===c)||s[0],w=_&&_.unproject([t-_.x,r-_.y]);return{...n,...{x:t,y:r,viewport:_,coordinate:w,layer:f}}}_resizeBuffer(){var t,r;let{gl:i}=this;if(!this.pickingFBO&&(this.pickingFBO=new yi(i),yi.isSupported(i,{colorBufferFloat:!0}))){let s=new yi(i);s.attach({36064:new pi(i,{format:hr(i)?34836:6408,type:5126})}),this.depthFBO=s}(t=this.pickingFBO)===null||t===void 0||t.resize({width:i.canvas.width,height:i.canvas.height}),(r=this.depthFBO)===null||r===void 0||r.resize({width:i.canvas.width,height:i.canvas.height})}_getPickable(t){if(this._pickable===!1)return null;let r=t.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}_pickClosestObject({layers:t,views:r,viewports:i,x:s,y:n,radius:o=0,depth:c=1,mode:f=\"query\",unproject3D:_,onViewportActive:w,effects:C}){let R=this._getPickable(t),N=Sl(this.gl);if(!R)return{result:[],emptyInfo:oD({viewports:i,x:s,y:n,pixelRatio:N})};this._resizeBuffer();let j=dy(this.gl,[s,n],!0),Y=[j.x+Math.floor(j.width/2),j.y+Math.floor(j.height/2)],rt=Math.round(o*N),{width:$,height:K}=this.pickingFBO,tt=this._getPickingRect({deviceX:Y[0],deviceY:Y[1],deviceRadius:rt,deviceWidth:$,deviceHeight:K}),ut={x:s-o,y:n-o,width:o*2+1,height:o*2+1},Pt,Ot=[],Kt=new Set;for(let Zt=0;Zt=_)break;let Ge=Ot[ue],tr={color:Ge.pickedColor,layer:null,index:Ge.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:N};tr=aD({layer:Ge.pickedLayer,info:tr,mode:f});let er=(le=tr.object)!==null&&le!==void 0?le:\"\".concat(tr.layer.id,\"[\").concat(tr.index,\"]\");Kt.has(er)||Kt.set(er,tr)}return Array.from(Kt.values())}_drawAndSample({layers:t,views:r,viewports:i,onViewportActive:s,deviceRect:n,cullRect:o,effects:c,pass:f},_=!1){let w=_?this.depthFBO:this.pickingFBO,C={layers:t,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:w,deviceRect:n,cullRect:o,effects:c,pass:f,pickZ:_,preRenderStats:{}};for(let K of c)K.useInPicking&&(C.preRenderStats[K.id]=K.preRender(this.gl,C));let{decodePickingColor:R}=this.pickLayersPass.render(C),{x:N,y:j,width:Y,height:rt}=n,$=new(_?Float32Array:Uint8Array)(Y*rt*4);return Rh(w,{sourceX:N,sourceY:j,sourceWidth:Y,sourceHeight:rt,target:$}),{pickedColors:$,decodePickingColor:R}}_getPickingRect({deviceX:t,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:n}){let o=Math.max(0,t-i),c=Math.max(0,r-i),f=Math.min(s,t+i+1)-o,_=Math.min(n,r+i+1)-c;return f<=0||_<=0?null:{x:o,y:c,width:f,height:_}}};var ilt={zIndex:\"1\",position:\"absolute\",pointerEvents:\"none\",color:\"#a0a7b4\",backgroundColor:\"#29323c\",padding:\"10px\",top:\"0\",left:\"0\",display:\"none\"},Gb=class{constructor(t){G(this,\"el\",null),G(this,\"isVisible\",!1);let r=t.parentElement;r&&(this.el=document.createElement(\"div\"),this.el.className=\"deck-tooltip\",Object.assign(this.el.style,ilt),r.appendChild(this.el))}setTooltip(t,r,i){let s=this.el;if(s){if(typeof t==\"string\")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display=\"none\";return}this.isVisible=!0,s.style.display=\"block\",s.style.transform=\"translate(\".concat(r,\"px, \").concat(i,\"px)\"),t&&typeof t==\"object\"&&\"style\"in t&&Object.assign(s.style,t.style)}}remove(){this.el&&(this.el.remove(),this.el=null)}};var ag=ki(eG());var nlt={mousedown:1,mousemove:2,mouseup:4};function slt(e,t){for(let r=0;r0&&i.type===\"pointerdown\"&&(slt(s,n=>n.pointerId===i.pointerId)||s.push(i)),t.call(this,i)}}function iG(e){e.prototype.handler=function(r){let i=nlt[r.type];i&1&&r.button>=0&&(this.pressed=!0),i&2&&r.which===0&&(i=4),this.pressed&&(i&4&&(this.pressed=!1),this.callback(this.manager,i,{pointers:[r],changedPointers:[r],pointerType:\"mouse\",srcEvent:r}))}}rG(ag.PointerEventInput);iG(ag.MouseInput);var nG=ag.Manager,Wh=ag;var Hh=class{constructor(t,r,i){this.element=t,this.callback=r,this.options={enable:!0,...i}}};var sG=Wh?[[Wh.Pan,{event:\"tripan\",pointers:3,threshold:0,enable:!1}],[Wh.Rotate,{enable:!1}],[Wh.Pinch,{enable:!1}],[Wh.Swipe,{enable:!1}],[Wh.Pan,{threshold:0,enable:!1}],[Wh.Press,{enable:!1}],[Wh.Tap,{event:\"doubletap\",taps:2,enable:!1}],[Wh.Tap,{event:\"anytap\",enable:!1}],[Wh.Tap,{enable:!1}]]:null,lD={tripan:[\"rotate\",\"pinch\",\"pan\"],rotate:[\"pinch\"],pinch:[\"pan\"],pan:[\"press\",\"doubletap\",\"anytap\",\"tap\"],doubletap:[\"anytap\"],anytap:[\"tap\"]},oG={doubletap:[\"tap\"]},aG={pointerdown:\"pointerdown\",pointermove:\"pointermove\",pointerup:\"pointerup\",touchstart:\"pointerdown\",touchmove:\"pointermove\",touchend:\"pointerup\",mousedown:\"pointerdown\",mousemove:\"pointermove\",mouseup:\"pointerup\"},Gy={KEY_EVENTS:[\"keydown\",\"keyup\"],MOUSE_EVENTS:[\"mousedown\",\"mousemove\",\"mouseup\",\"mouseover\",\"mouseout\",\"mouseleave\"],WHEEL_EVENTS:[\"wheel\",\"mousewheel\"]},lG={tap:\"tap\",anytap:\"anytap\",doubletap:\"doubletap\",press:\"press\",pinch:\"pinch\",pinchin:\"pinch\",pinchout:\"pinch\",pinchstart:\"pinch\",pinchmove:\"pinch\",pinchend:\"pinch\",pinchcancel:\"pinch\",rotate:\"rotate\",rotatestart:\"rotate\",rotatemove:\"rotate\",rotateend:\"rotate\",rotatecancel:\"rotate\",tripan:\"tripan\",tripanstart:\"tripan\",tripanmove:\"tripan\",tripanup:\"tripan\",tripandown:\"tripan\",tripanleft:\"tripan\",tripanright:\"tripan\",tripanend:\"tripan\",tripancancel:\"tripan\",pan:\"pan\",panstart:\"pan\",panmove:\"pan\",panup:\"pan\",pandown:\"pan\",panleft:\"pan\",panright:\"pan\",panend:\"pan\",pancancel:\"pan\",swipe:\"swipe\",swipeleft:\"swipe\",swiperight:\"swipe\",swipeup:\"swipe\",swipedown:\"swipe\"},cD={click:\"tap\",anyclick:\"anytap\",dblclick:\"doubletap\",mousedown:\"pointerdown\",mousemove:\"pointermove\",mouseup:\"pointerup\",mouseover:\"pointerover\",mouseout:\"pointerout\",mouseleave:\"pointerleave\"};var cG=typeof navigator<\"u\"&&navigator.userAgent?navigator.userAgent.toLowerCase():\"\",lg=typeof window<\"u\"?window:global;var WE=!1;try{let e={get passive(){return WE=!0,!0}};lg.addEventListener(\"test\",null,e),lg.removeEventListener(\"test\",null)}catch{WE=!1}var olt=cG.indexOf(\"firefox\")!==-1,{WHEEL_EVENTS:alt}=Gy,uG=\"wheel\",hG=4.000244140625,llt=40,clt=.25,Wb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{if(!this.options.enable)return;let n=s.deltaY;lg.WheelEvent&&(olt&&s.deltaMode===lg.WheelEvent.DOM_DELTA_PIXEL&&(n/=lg.devicePixelRatio),s.deltaMode===lg.WheelEvent.DOM_DELTA_LINE&&(n*=llt)),n!==0&&n%hG===0&&(n=Math.floor(n/hG)),s.shiftKey&&n&&(n=n*clt),this.callback({type:uG,center:{x:s.clientX,y:s.clientY},delta:-n,srcEvent:s,pointerType:\"mouse\",target:s.target})},this.events=(this.options.events||[]).concat(alt),this.events.forEach(s=>t.addEventListener(s,this.handleEvent,WE?{passive:!1}:!1))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===uG&&(this.options.enable=r)}};var{MOUSE_EVENTS:ult}=Gy,fG=\"pointermove\",dG=\"pointerover\",pG=\"pointerout\",AG=\"pointerenter\",mG=\"pointerleave\",Hb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;let{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,this.events=(this.options.events||[]).concat(ult),this.events.forEach(n=>t.addEventListener(n,this.handleEvent))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===fG&&(this.enableMoveEvent=r),t===dG&&(this.enableOverEvent=r),t===pG&&(this.enableOutEvent=r),t===AG&&(this.enableEnterEvent=r),t===mG&&(this.enableLeaveEvent=r)}handleOverEvent(t){this.enableOverEvent&&t.type===\"mouseover\"&&this._emit(dG,t)}handleOutEvent(t){this.enableOutEvent&&t.type===\"mouseout\"&&this._emit(pG,t)}handleEnterEvent(t){this.enableEnterEvent&&t.type===\"mouseenter\"&&this._emit(AG,t)}handleLeaveEvent(t){this.enableLeaveEvent&&t.type===\"mouseleave\"&&this._emit(mG,t)}handleMoveEvent(t){if(this.enableMoveEvent)switch(t.type){case\"mousedown\":t.button>=0&&(this.pressed=!0);break;case\"mousemove\":t.which===0&&(this.pressed=!1),this.pressed||this._emit(fG,t);break;case\"mouseup\":this.pressed=!1;break;default:}}_emit(t,r){this.callback({type:t,center:{x:r.clientX,y:r.clientY},srcEvent:r,pointerType:\"mouse\",target:r.target})}};var{KEY_EVENTS:hlt}=Gy,gG=\"keydown\",_G=\"keyup\",qb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{let n=s.target||s.srcElement;n.tagName===\"INPUT\"&&n.type===\"text\"||n.tagName===\"TEXTAREA\"||(this.enableDownEvent&&s.type===\"keydown\"&&this.callback({type:gG,srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type===\"keyup\"&&this.callback({type:_G,srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(hlt),t.tabIndex=this.options.tabIndex||0,t.style.outline=\"none\",this.events.forEach(s=>t.addEventListener(s,this.handleEvent))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===gG&&(this.enableDownEvent=r),t===_G&&(this.enableUpEvent=r)}};var yG=\"contextmenu\",Zb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:yG,center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:\"mouse\",target:s.target})},t.addEventListener(\"contextmenu\",this.handleEvent)}destroy(){this.element.removeEventListener(\"contextmenu\",this.handleEvent)}enableEventType(t,r){t===yG&&(this.options.enable=r)}};var flt={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},dlt=1,plt=2,Alt=3,mlt=0,glt=1,_lt=2,ylt=1,vlt=2,xlt=4;function vG(e){let t=flt[e.srcEvent.type];if(!t)return null;let{buttons:r,button:i,which:s}=e.srcEvent,n=!1,o=!1,c=!1;return t===4||t===2&&!Number.isFinite(r)?(n=s===dlt,o=s===plt,c=s===Alt):t===2?(n=!!(r&ylt),o=!!(r&xlt),c=!!(r&vlt)):t===1&&(n=i===mlt,o=i===glt,c=i===_lt),{leftButton:n,middleButton:o,rightButton:c}}function xG(e,t){let r=e.center;if(!r)return null;let i=t.getBoundingClientRect(),s=i.width/t.offsetWidth||1,n=i.height/t.offsetHeight||1,o={x:(r.x-i.left-t.clientLeft)/s,y:(r.y-i.top-t.clientTop)/n};return{center:r,offsetCenter:o}}var uD={srcElement:\"root\",priority:0},Yb=class{constructor(t){this.handleEvent=r=>{if(this.isEmpty())return;let i=this._normalizeEvent(r),s=r.srcEvent.target;for(;s&&s!==i.rootElement;){if(this._emit(i,s),i.handled)return;s=s.parentNode}this._emit(i,\"root\")},this.eventManager=t,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,r,i,s=!1,n=!1){let{handlers:o,handlersByElement:c}=this,f=uD;typeof i==\"string\"||i&&i.addEventListener?f={...uD,srcElement:i}:i&&(f={...uD,...i});let _=c.get(f.srcElement);_||(_=[],c.set(f.srcElement,_));let w={type:t,handler:r,srcElement:f.srcElement,priority:f.priority};s&&(w.once=!0),n&&(w.passive=!0),o.push(w),this._active=this._active||!w.passive;let C=_.length-1;for(;C>=0&&!(_[C].priority>=w.priority);)C--;_.splice(C+1,0,w)}remove(t,r){let{handlers:i,handlersByElement:s}=this;for(let n=i.length-1;n>=0;n--){let o=i[n];if(o.type===t&&o.handler===r){i.splice(n,1);let c=s.get(o.srcElement);c.splice(c.indexOf(o),1),c.length===0&&s.delete(o.srcElement)}}this._active=i.some(n=>!n.passive)}_emit(t,r){let i=this.handlersByElement.get(r);if(i){let s=!1,n=()=>{t.handled=!0},o=()=>{t.handled=!0,s=!0},c=[];for(let f=0;f{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};var blt={events:null,recognizers:null,recognizerOptions:{},Manager:nG,touchAction:\"none\",tabIndex:0},Wy=class{constructor(t=null,r){this._onBasicInput=s=>{let{srcEvent:n}=s,o=aG[n.type];o&&this.manager.emit(o,s)},this._onOtherEvent=s=>{this.manager.emit(s.type,s)},this.options={...blt,...r},this.events=new Map,this.setElement(t);let{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}setElement(t){if(this.element&&this.destroy(),this.element=t,!t)return;let{options:r}=this,i=r.Manager;this.manager=new i(t,{touchAction:r.touchAction,recognizers:r.recognizers||sG}).on(\"hammer.input\",this._onBasicInput),r.recognizers||Object.keys(lD).forEach(s=>{let n=this.manager.get(s);n&&lD[s].forEach(o=>{n.recognizeWith(o)})});for(let s in r.recognizerOptions){let n=this.manager.get(s);if(n){let o=r.recognizerOptions[s];delete o.enable,n.set(o)}}this.wheelInput=new Wb(t,this._onOtherEvent,{enable:!1}),this.moveInput=new Hb(t,this._onOtherEvent,{enable:!1}),this.keyInput=new qb(t,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new Zb(t,this._onOtherEvent,{enable:!1});for(let[s,n]of this.events)n.isEmpty()||(this._toggleRecognizer(n.recognizerName,!0),this.manager.on(s,n.handleEvent))}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy(),this.wheelInput=null,this.moveInput=null,this.keyInput=null,this.contextmenuInput=null,this.manager=null,this.element=null)}on(t,r,i){this._addEventHandler(t,r,i,!1)}once(t,r,i){this._addEventHandler(t,r,i,!0)}watch(t,r,i){this._addEventHandler(t,r,i,!1,!0)}off(t,r){this._removeEventHandler(t,r)}_toggleRecognizer(t,r){let{manager:i}=this;if(!i)return;let s=i.get(t);if(s&&s.options.enable!==r){s.set({enable:r});let n=oG[t];n&&!this.options.recognizers&&n.forEach(o=>{let c=i.get(o);r?(c.requireFailure(t),s.dropRequireFailure(o)):c.dropRequireFailure(t)})}this.wheelInput.enableEventType(t,r),this.moveInput.enableEventType(t,r),this.keyInput.enableEventType(t,r),this.contextmenuInput.enableEventType(t,r)}_addEventHandler(t,r,i,s,n){if(typeof t!=\"string\"){i=r;for(let w in t)this._addEventHandler(w,t[w],i,s,n);return}let{manager:o,events:c}=this,f=cD[t]||t,_=c.get(f);_||(_=new Yb(this),c.set(f,_),_.recognizerName=lG[f]||f,o&&o.on(f,_.handleEvent)),_.add(t,r,i,s,n),_.isEmpty()||this._toggleRecognizer(_.recognizerName,!0)}_removeEventHandler(t,r){if(typeof t!=\"string\"){for(let o in t)this._removeEventHandler(o,t[o]);return}let{events:i}=this,s=cD[t]||t,n=i.get(s);if(n&&(n.remove(t,r),n.isEmpty())){let{recognizerName:o}=n,c=!1;for(let f of i.values())if(f.recognizerName===o&&!f.isEmpty()){c=!0;break}c||this._toggleRecognizer(o,!1)}}};function cg(){}var wlt=({isDragging:e})=>e?\"grabbing\":\"grab\",bG={id:\"\",width:\"100%\",height:\"100%\",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,glOptions:{},parameters:{},parent:null,gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:\"none\",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,onWebGLInitialized:cg,onResize:cg,onViewStateChange:cg,onInteractionStateChange:cg,onBeforeRender:cg,onAfterRender:cg,onLoad:cg,onError:e=>nr.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:wlt,getTooltip:null,debug:!1,drawPickingColors:!1},ap=class{constructor(t){G(this,\"props\",void 0),G(this,\"width\",0),G(this,\"height\",0),G(this,\"userData\",{}),G(this,\"canvas\",null),G(this,\"viewManager\",null),G(this,\"layerManager\",null),G(this,\"effectManager\",null),G(this,\"deckRenderer\",null),G(this,\"deckPicker\",null),G(this,\"eventManager\",null),G(this,\"tooltip\",null),G(this,\"metrics\",void 0),G(this,\"animationLoop\",void 0),G(this,\"stats\",void 0),G(this,\"viewState\",void 0),G(this,\"cursorState\",void 0),G(this,\"_needsRedraw\",void 0),G(this,\"_pickRequest\",void 0),G(this,\"_lastPointerDownInfo\",null),G(this,\"_metricsCounter\",void 0),G(this,\"_onPointerMove\",r=>{let{_pickRequest:i}=this;if(r.type===\"pointerleave\")i.x=-1,i.y=-1,i.radius=0;else{if(r.leftButton||r.rightButton)return;{let s=r.offsetCenter;if(!s)return;i.x=s.x,i.y=s.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=r}),G(this,\"_onEvent\",r=>{let i=U4[r.type],s=r.offsetCenter;if(!i||!s||!this.layerManager)return;let n=this.layerManager.getLayers(),o=this.deckPicker.getLastPickedObject({x:s.x,y:s.y,layers:n,viewports:this.getViewports(s)},this._lastPointerDownInfo),{layer:c}=o,f=c&&(c[i.handler]||c.props[i.handler]),_=this.props[i.handler],w=!1;f&&(w=f.call(c,o,r)),!w&&_&&_(o,r)}),G(this,\"_onPointerDown\",r=>{let i=r.offsetCenter,s=this._pick(\"pickObject\",\"pickObject Time\",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=s.result[0]||s.emptyInfo}),this.props={...bG,...t},t=this.props,this._needsRedraw=\"Initial render\",this._pickRequest={mode:\"hover\",x:-1,y:-1,radius:0,event:null},this.cursorState={isHovering:!1,isDragging:!1},t.viewState&&t.initialViewState&&nr.warn(\"View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.\")(),cy()===\"IE\"&&nr.warn(\"IE 11 is not supported\")(),this.viewState=t.initialViewState,t.gl||typeof document<\"u\"&&(this.canvas=this._createCanvas(t)),this.animationLoop=this._createAnimationLoop(t),this.stats=new Vf({id:\"deck.gl\"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this.setProps(t),t._typedArrayManagerProps&&jh.setOptions(t._typedArrayManagerProps),this.animationLoop.start()}finalize(){var t,r,i,s,n,o,c,f;if((t=this.animationLoop)===null||t===void 0||t.stop(),this.animationLoop=null,this._lastPointerDownInfo=null,(r=this.layerManager)===null||r===void 0||r.finalize(),this.layerManager=null,(i=this.viewManager)===null||i===void 0||i.finalize(),this.viewManager=null,(s=this.effectManager)===null||s===void 0||s.finalize(),this.effectManager=null,(n=this.deckRenderer)===null||n===void 0||n.finalize(),this.deckRenderer=null,(o=this.deckPicker)===null||o===void 0||o.finalize(),this.deckPicker=null,(c=this.eventManager)===null||c===void 0||c.destroy(),this.eventManager=null,(f=this.tooltip)===null||f===void 0||f.remove(),this.tooltip=null,!this.props.canvas&&!this.props.gl&&this.canvas){var _;(_=this.canvas.parentElement)===null||_===void 0||_.removeChild(this.canvas),this.canvas=null}}setProps(t){this.stats.get(\"setProps Time\").timeStart(),\"onLayerHover\"in t&&nr.removed(\"onLayerHover\",\"onHover\")(),\"onLayerClick\"in t&&nr.removed(\"onLayerClick\",\"onClick\")(),t.initialViewState&&!ao(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop.setProps(r),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r)),this.stats.get(\"setProps Time\").timeEnd()}needsRedraw(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return\"Deck._animate\";let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),n=this.effectManager.needsRedraw(t),o=this.deckRenderer.needsRedraw(t);return r=r||i||s||n||o,r}redraw(t){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=t||r,r&&(this.stats.get(\"Redraw Count\").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return br(this.viewManager),this.viewManager.views}getViewports(t){return br(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){let r=this._pick(\"pickObject\",\"pickObject Time\",t).result;return r.length?r[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick(\"pickObject\",\"pickMultipleObjects Time\",t).result}pickObjects(t){return this._pick(\"pickObjects\",\"pickObjects Time\",t)}_addResources(t,r=!1){for(let i in t)this.layerManager.resourceManager.add({resourceId:i,data:t[i],forceUpdate:r})}_removeResources(t){for(let r of t)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_pick(t,r,i){br(this.deckPicker);let{stats:s}=this;s.get(\"Pick Count\").incrementCount(),s.get(r).timeStart();let n=this.deckPicker[t]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(r).timeEnd(),n}_createCanvas(t){let r=t.canvas;return typeof r==\"string\"&&(r=document.getElementById(r),br(r)),r||(r=document.createElement(\"canvas\"),r.id=t.id||\"deckgl-overlay\",(t.parent||document.body).appendChild(r)),Object.assign(r.style,t.style),r}_setCanvasSize(t){if(!this.canvas)return;let{width:r,height:i}=t;if(r||r===0){let n=Number.isFinite(r)?\"\".concat(r,\"px\"):r;this.canvas.style.width=n}if(i||i===0){var s;let n=Number.isFinite(i)?\"\".concat(i,\"px\"):i;this.canvas.style.position=((s=t.style)===null||s===void 0?void 0:s.position)||\"absolute\",this.canvas.style.height=n}}_updateCanvasSize(){var t,r;let{canvas:i}=this;if(!i)return;let s=(t=i.clientWidth)!==null&&t!==void 0?t:i.width,n=(r=i.clientHeight)!==null&&r!==void 0?r:i.height;if(s!==this.width||n!==this.height){var o,c;this.width=s,this.height=n,(o=this.viewManager)===null||o===void 0||o.setProps({width:s,height:n}),(c=this.layerManager)===null||c===void 0||c.activateViewport(this.getViewports()[0]),this.props.onResize({width:s,height:n})}}_createAnimationLoop(t){let{width:r,height:i,gl:s,glOptions:n,debug:o,onError:c,onBeforeRender:f,onAfterRender:_,useDevicePixels:w}=t;return new X0({width:r,height:i,useDevicePixels:w,autoResizeDrawingBuffer:!s,autoResizeViewport:!1,gl:s,onCreateContext:C=>py({...n,...C,canvas:this.canvas,debug:o,onContextLost:()=>this._onContextLost()}),onInitialize:C=>this._setGLContext(C.gl),onRender:this._onRenderFrame.bind(this),onBeforeRender:f,onAfterRender:_,onError:c})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let t=this.props.views||[new jy({id:\"default-view\"})];return t=Array.isArray(t)?t:[t],t.length&&this.props.controller&&(t[0].props.controller=this.props.controller),t}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error(\"WebGL context is lost\"))}_pickAndCallback(){let{_pickRequest:t}=this;if(t.event){let{result:i,emptyInfo:s}=this._pick(\"pickObject\",\"pickObject Time\",t);this.cursorState.isHovering=i.length>0;let n=s,o=!1;for(let c of i){var r;n=c,o=((r=c.layer)===null||r===void 0?void 0:r.onHover(c,t.event))||o}if(!o&&this.props.onHover&&this.props.onHover(n,t.event),this.props.getTooltip&&this.tooltip){let c=this.props.getTooltip(n);this.tooltip.setTooltip(c,n.x,n.y)}t.event=null}}_updateCursor(){let t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setGLContext(t){if(this.layerManager)return;this.canvas||(this.canvas=t.canvas,V0(t,{enable:!0,copyState:!0})),this.tooltip=new Gb(this.canvas),wl(t,{blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onWebGLInitialized(t);let r=new QA;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new Wy(this.props.parent||t.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in U4)this.eventManager.on(s,this._onEvent);this.viewManager=new Rb({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new kb(t,{deck:this,stats:this.stats,viewport:i,timeline:r}),this.effectManager=new Nb,this.deckRenderer=new Vb(t),this.deckPicker=new jb(t),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,r){let{gl:i}=this.layerManager.context;wl(i,this.props.parameters),this.props.onBeforeRender({gl:i}),this.deckRenderer.renderLayers({target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:\"screen\",effects:this.effectManager.getEffects(),...r}),this.props.onAfterRender({gl:i})}_onRenderFrame(t){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),nr.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.tooltip.isVisible&&this.viewManager.needsRedraw()&&this.tooltip.setTooltip(null),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(t){let r=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get(\"frameRate\").timeEnd(),t.get(\"frameRate\").timeStart();let r=this.animationLoop.stats;t.get(\"GPU Time\").addTime(r.get(\"GPU Time\").lastTiming),t.get(\"CPU Time\").addTime(r.get(\"CPU Time\").lastTiming)}_getMetrics(){let{metrics:t,stats:r}=this;t.fps=r.get(\"frameRate\").getHz(),t.setPropsTime=r.get(\"setProps Time\").time,t.updateAttributesTime=r.get(\"Update Attributes\").time,t.framesRedrawn=r.get(\"Redraw Count\").count,t.pickTime=r.get(\"pickObject Time\").time+r.get(\"pickMultipleObjects Time\").time+r.get(\"pickObjects Time\").time,t.pickCount=r.get(\"Pick Count\").count,t.gpuTime=r.get(\"GPU Time\").time,t.cpuTime=r.get(\"CPU Time\").time,t.gpuTimePerFrame=r.get(\"GPU Time\").getAverageTime(),t.cpuTimePerFrame=r.get(\"CPU Time\").getAverageTime();let i=Lu.get(\"Memory Usage\");t.bufferMemory=i.get(\"Buffer Memory\").count,t.textureMemory=i.get(\"Texture Memory\").count,t.renderbufferMemory=i.get(\"Renderbuffer Memory\").count,t.gpuMemory=i.get(\"GPU Memory\").count}};G(ap,\"defaultProps\",bG);G(ap,\"VERSION\",nV);var ug=class{constructor(t,r){G(this,\"opts\",void 0),G(this,\"source\",void 0),this.opts=r,this.source=t}get value(){return this.source.value}getValue(){let t=this.source.getBuffer(),r=this.getAccessor();if(t)return[t,r];let{value:i}=this.source,{size:s}=r,n=i;if(i&&i.length!==s){n=new Float32Array(s);let o=r.elementOffset||0;for(let c=0;c=n){let o=new Array(s).fill(1/0),c=new Array(s).fill(-1/0);for(let f=0;fc[_]&&(c[_]=w)}t=[o,c]}}return this.state.bounds=t,t}setData(t){let{state:r}=this,i;ArrayBuffer.isView(t)?i={value:t}:t instanceof Fr?i={buffer:t}:i=t;let s={...this.settings,...i};if(r.bufferAccessor=s,r.bounds=null,i.constant){let n=i.value;if(n=this._normalizeValue(n,[],0),this.settings.normalized&&(n=this.normalizeConstant(n)),!(!r.constant||!this._areValuesEqual(n,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=n}else if(i.buffer){let n=i.buffer;r.externalBuffer=n,r.constant=!1,this.value=i.value||null;let o=i.value instanceof Float64Array;s.type=i.type||n.accessor.type,s.bytesPerElement=n.accessor.BYTES_PER_ELEMENT*(o?2:1),s.stride=HE(s)}else if(i.value){this._checkExternalBuffer(i);let n=i.value;r.externalBuffer=null,r.constant=!1,this.value=n,s.bytesPerElement=n.BYTES_PER_ELEMENT,s.stride=HE(s);let{buffer:o,byteOffset:c}=this;this.doublePrecision&&n instanceof Float64Array&&(n=UE(n,s));let f=n.byteLength+c+s.stride*2;o.byteLength(r+128)/255*2-1);case 5122:return new Float32Array(t).map(r=>(r+32768)/65535*2-1);case 5121:return new Float32Array(t).map(r=>r/255);case 5123:return new Float32Array(t).map(r=>r/65535);default:return t}}_normalizeValue(t,r,i){let{defaultValue:s,size:n}=this.settings;if(Number.isFinite(t))return r[i]=t,r;if(!t){let o=n;for(;--o>=0;)r[i+o]=s[o];return r}switch(n){case 4:r[i+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:r[i+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:r[i+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:r[i+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let o=n;for(;--o>=0;)r[i+o]=Number.isFinite(t[o])?t[o]:s[o]}return r}_areValuesEqual(t,r){if(!t||!r)return!1;let{size:i}=this;for(let s=0;s0&&(MG.length=e.length,i=MG):i=TG,(t>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(t,r),s.index=t-1),{iterable:i,objectInfo:s}}function qE(e){return e&&e[Symbol.asyncIterator]}function ZE(e,t){let{size:r,stride:i,offset:s,startIndices:n,nested:o}=t,c=e.BYTES_PER_ELEMENT,f=i?i/c:r,_=s?s/c:0,w=Math.floor((e.length-_)/f);return(C,{index:R,target:N})=>{if(!n){let $=R*f+_;for(let K=0;K=t[1]))return e;let r=[],i=e.length,s=0;for(let n=0;nt[1]?r.push(o):t=[Math.min(o[0],t[0]),Math.max(o[1],t[1])]}return r.splice(s,0,t),r}function hD(e){let{source:t,target:r,start:i=0,size:s,getData:n}=e,o=e.end||r.length,c=t.length,f=o-i;if(c>f){r.set(t.subarray(0,f),i);return}if(r.set(t,i),!n)return;let _=c;for(;_i(w+c,C)),_=Math.min(s.length,n.length);for(let w=1;w<_;w++){let C=s[w]*r,R=n[w]*r;hD({source:e.subarray(o,C),target:t,start:c,end:R,size:r,getData:f}),o=C,c=R}return ce},spring:{stiffness:.05,damping:.5}};function YE(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:\"interpolation\",duration:e});let r=e.type||\"interpolation\";return{...Mlt[r],...t,...e,type:r}}function QE(e,t){let r=t.getBuffer();return r?[r,{divisor:0,size:t.size,normalized:t.settings.normalized}]:t.value}function $E(e){switch(e){case 1:return\"float\";case 2:return\"vec2\";case 3:return\"vec3\";case 4:return\"vec4\";default:throw new Error('No defined attribute type for size \"'.concat(e,'\"'))}}function XE(e){e.push(e.shift())}function Xb(e,t){let{doublePrecision:r,settings:i,value:s,size:n}=e,o=r&&s instanceof Float64Array?2:1;return(i.noAlloc?s.length:t*n)*o}function KE({buffer:e,numInstances:t,attribute:r,fromLength:i,fromStartIndices:s,getData:n=o=>o}){let o=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*o,f=r.byteOffset,_=r.startIndices,w=s&&_,C=Xb(r,t),R=r.isConstant;if(!w&&i>=C)return;let N=R?r.value:r.getBuffer().getData({srcByteOffset:f});if(r.settings.normalized&&!R){let $=n;n=(K,tt)=>r.normalizeConstant($(K,tt))}let j=R?($,K)=>n(N,K):($,K)=>n(N.subarray($,$+c),K),Y=e.getData({length:i}),rt=new Float32Array(C);IG({source:Y,target:rt,sourceStartIndices:s,targetStartIndices:_,size:c,getData:j}),e.byteLengtht[n])]:t[r];return YE(s,i)}setNeedsUpdate(t=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),r){let{startRow:i=0,endRow:s=1/0}=r;this.state.updateRanges=PG(this.state.updateRanges,[i,s])}else this.state.updateRanges=$b}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=EG}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:r,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(t,r.updateRanges!==$b),!0):!1}updateBuffer({numInstances:t,data:r,props:i,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:o,noAlloc:c}}=this,f=!0;if(o){for(let[_,w]of n)o.call(s,this,{data:r,startRow:_,endRow:w,props:i,numInstances:t});if(this.value)if(this.constant||this.buffer.byteLengthw?_.set(tt,Y):(t._normalizeValue(tt,$.target,0),iD({target:_,source:$.target,start:Y,count:ut}));Y+=ut*w}else t._normalizeValue(tt,_,Y),Y+=w}}_validateAttributeUpdaters(){let{settings:t}=this;if(!(t.noAlloc||typeof t.update==\"function\"))throw new Error(\"Attribute \".concat(this.id,\" missing update or accessor\"))}_checkAttributeArray(){let{value:t}=this,r=Math.min(4,this.size);if(t&&t.length>=r){let i=!0;switch(r){case 4:i=i&&Number.isFinite(t[3]);case 3:i=i&&Number.isFinite(t[2]);case 2:i=i&&Number.isFinite(t[1]);case 1:i=i&&Number.isFinite(t[0]);break;default:i=!1}if(!i)throw new Error(\"Illegal attribute generated for \".concat(this.id))}}};var Kb=class{constructor({gl:t,attribute:r,timeline:i}){G(this,\"gl\",void 0),G(this,\"type\",\"interpolation\"),G(this,\"attributeInTransition\",void 0),G(this,\"settings\",void 0),G(this,\"attribute\",void 0),G(this,\"transition\",void 0),G(this,\"currentStartIndices\",void 0),G(this,\"currentLength\",void 0),G(this,\"transform\",void 0),G(this,\"buffers\",void 0),this.gl=t,this.transition=new $c(i),this.attribute=r,this.attributeInTransition=new lp(t,r.settings),this.currentStartIndices=r.startIndices,this.currentLength=0,this.transform=Plt(t,r);let s={byteLength:0,usage:35050};this.buffers=[new Fr(t,s),new Fr(t,s)]}get inProgress(){return this.transition.inProgress}start(t,r){if(t.duration<=0){this.transition.cancel();return}this.settings=t;let{gl:i,buffers:s,attribute:n}=this;XE(s);let o={numInstances:r,attribute:n,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:t.enter};for(let c of s)KE({buffer:c,...o});this.currentStartIndices=n.startIndices,this.currentLength=Xb(n,r),this.attributeInTransition.setData({buffer:s[1],value:n.value}),this.transition.start(t),this.transform.update({elementCount:Math.floor(this.currentLength/n.size),sourceBuffers:{aFrom:s[0],aTo:QE(i,n)},feedbackBuffers:{vCurrent:s[1]}})}update(){let t=this.transition.update();if(t){let{duration:r,easing:i}=this.settings,{time:s}=this.transition,n=s/r;i&&(n=i(n)),this.transform.run({uniforms:{time:n}})}return t}cancel(){this.transition.cancel(),this.transform.delete();for(let t of this.buffers)t.delete();this.buffers.length=0}},Elt=`\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;function Plt(e,t){let r=$E(t.size);return new ec(e,{vs:Elt,defines:{ATTRIBUTE_TYPE:r},varyings:[\"vCurrent\"]})}var Jb=class{constructor({gl:t,attribute:r,timeline:i}){G(this,\"gl\",void 0),G(this,\"type\",\"spring\"),G(this,\"attributeInTransition\",void 0),G(this,\"settings\",void 0),G(this,\"attribute\",void 0),G(this,\"transition\",void 0),G(this,\"currentStartIndices\",void 0),G(this,\"currentLength\",void 0),G(this,\"texture\",void 0),G(this,\"framebuffer\",void 0),G(this,\"transform\",void 0),G(this,\"buffers\",void 0),this.gl=t,this.type=\"spring\",this.transition=new $c(i),this.attribute=r,this.attributeInTransition=new lp(t,{...r.settings,normalized:!1}),this.currentStartIndices=r.startIndices,this.currentLength=0,this.texture=Clt(t),this.framebuffer=Llt(t,this.texture),this.transform=Ilt(t,r,this.framebuffer);let s={byteLength:0,usage:35050};this.buffers=[new Fr(t,s),new Fr(t,s),new Fr(t,s)]}get inProgress(){return this.transition.inProgress}start(t,r){let{gl:i,buffers:s,attribute:n}=this,o={numInstances:r,attribute:n,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:t.enter};for(let c of s)KE({buffer:c,...o});this.settings=t,this.currentStartIndices=n.startIndices,this.currentLength=Xb(n,r),this.attributeInTransition.setData({buffer:s[1],value:n.value}),this.transition.start({...t,duration:1/0}),this.transform.update({elementCount:Math.floor(this.currentLength/n.size),sourceBuffers:{aTo:QE(i,n)}})}update(){let{buffers:t,transform:r,framebuffer:i,transition:s}=this;if(!s.update())return!1;let o=this.settings;return r.update({sourceBuffers:{aPrev:t[0],aCur:t[1]},feedbackBuffers:{vNext:t[2]}}),r.run({framebuffer:i,discard:!1,clearRenderTarget:!0,uniforms:{stiffness:o.stiffness,damping:o.damping},parameters:{depthTest:!1,blend:!0,viewport:[0,0,1,1],blendFunc:[1,1],blendEquation:[32776,32776]}}),XE(t),this.attributeInTransition.setData({buffer:t[1],value:this.attribute.value}),Rh(i)[0]>0||s.end(),!0}cancel(){this.transition.cancel(),this.transform.delete();for(let t of this.buffers)t.delete();this.buffers.length=0,this.texture.delete(),this.framebuffer.delete()}};function Ilt(e,t,r){let i=$E(t.size);return new ec(e,{framebuffer:r,vs:`\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,fs:`\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,defines:{ATTRIBUTE_TYPE:i},varyings:[\"vNext\"]})}function Clt(e){return new pi(e,{data:new Uint8Array(4),format:6408,type:5121,border:0,mipmaps:!1,dataFormat:6408,width:1,height:1})}function Llt(e,t){return new yi(e,{id:\"spring-transition-is-transitioning-framebuffer\",width:1,height:1,attachments:{36064:t}})}var klt={interpolation:Kb,spring:Jb},tw=class{constructor(t,{id:r,timeline:i}){G(this,\"id\",void 0),G(this,\"isSupported\",void 0),G(this,\"gl\",void 0),G(this,\"timeline\",void 0),G(this,\"transitions\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"numInstances\",void 0),this.id=r,this.gl=t,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1,this.isSupported=ec.isSupported(t)}finalize(){for(let t in this.transitions)this._removeTransition(t)}update({attributes:t,transitions:r,numInstances:i}){this.numInstances=i||1;for(let s in t){let n=t[s],o=n.getTransitionSetting(r);o&&this._updateAttribute(s,n,o)}for(let s in this.transitions){let n=t[s];(!n||!n.getTransitionSetting(r))&&this._removeTransition(s)}}hasAttribute(t){let r=this.transitions[t];return r&&r.inProgress}getAttributes(){let t={};for(let r in this.transitions){let i=this.transitions[r];i.inProgress&&(t[r]=i.attributeInTransition)}return t}run(){if(!this.isSupported||this.numInstances===0)return!1;for(let r in this.transitions)this.transitions[r].update()&&(this.needsRedraw=!0);let t=this.needsRedraw;return this.needsRedraw=!1,t}_removeTransition(t){this.transitions[t].cancel(),delete this.transitions[t]}_updateAttribute(t,r,i){let s=this.transitions[t],n=!s||s.type!==i.type;if(n){if(!this.isSupported){nr.warn(\"WebGL2 not supported by this browser. Transition for \".concat(t,\" is disabled.\"))();return}s&&this._removeTransition(t);let o=klt[i.type];o?this.transitions[t]=new o({attribute:r,timeline:this.timeline,gl:this.gl}):(nr.error(\"unsupported transition type '\".concat(i.type,\"'\"))(),n=!1)}(n||r.needsRedraw())&&(this.needsRedraw=!0,this.transitions[t].start(i,this.numInstances))}};var CG=\"attributeManager.invalidate\",Rlt=\"attributeManager.updateStart\",Dlt=\"attributeManager.updateEnd\",Olt=\"attribute.updateStart\",Blt=\"attribute.allocate\",Flt=\"attribute.updateEnd\",Yf=class{constructor(t,{id:r=\"attribute-manager\",stats:i,timeline:s}={}){G(this,\"id\",void 0),G(this,\"gl\",void 0),G(this,\"attributes\",void 0),G(this,\"updateTriggers\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"userData\",void 0),G(this,\"stats\",void 0),G(this,\"attributeTransitionManager\",void 0),G(this,\"mergeBoundsMemoized\",Hf(G7)),this.id=r,this.gl=t,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new tw(t,{id:\"\".concat(r,\"-transitions\"),timeline:s}),Object.seal(this)}finalize(){for(let t in this.attributes)this.attributes[t].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(t={clearRedrawFlags:!1}){let r=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!t.clearRedrawFlags,r&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(t){this._add(t)}addInstanced(t){this._add(t,{instanced:1})}remove(t){for(let r of t)this.attributes[r]!==void 0&&(this.attributes[r].delete(),delete this.attributes[r])}invalidate(t,r){let i=this._invalidateTrigger(t,r);Cs(CG,this,t,i)}invalidateAll(t){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,t);Cs(CG,this,\"all\")}update({data:t,numInstances:r,startIndices:i=null,transitions:s,props:n={},buffers:o={},context:c={}}){let f=!1;Cs(Rlt,this),this.stats&&this.stats.get(\"Update Attributes\").timeStart();for(let _ in this.attributes){let w=this.attributes[_],C=w.settings.accessor;w.startIndices=i,w.numInstances=r,n[_]&&nr.removed(\"props.\".concat(_),\"data.attributes.\".concat(_))(),w.setExternalBuffer(o[_])||w.setBinaryValue(typeof C==\"string\"?o[C]:void 0,t.startIndices)||typeof C==\"string\"&&!o[C]&&w.setConstantValue(n[C])||w.needsUpdate()&&(f=!0,this._updateAttribute({attribute:w,numInstances:r,data:t,props:n,context:c})),this.needsRedraw=this.needsRedraw||w.needsRedraw()}f&&Cs(Dlt,this,r),this.stats&&this.stats.get(\"Update Attributes\").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:r,transitions:s})}updateTransition(){let{attributeTransitionManager:t}=this,r=t.run();return this.needsRedraw=this.needsRedraw||r,r}getAttributes(){return this.attributes}getBounds(t){let r=t.map(i=>{var s;return(s=this.attributes[i])===null||s===void 0?void 0:s.getBounds()});return this.mergeBoundsMemoized(r)}getChangedAttributes(t={clearChangedFlags:!1}){let{attributes:r,attributeTransitionManager:i}=this,s={...i.getAttributes()};for(let n in r){let o=r[n];o.needsRedraw(t)&&!i.hasAttribute(n)&&(s[n]=o)}return s}getShaderAttributes(t,r={}){t||(t=this.getAttributes());let i={};for(let s in t)r[s]||Object.assign(i,t[s].getShaderAttributes());return i}_add(t,r={}){for(let i in t){let s=t[i];this.attributes[i]=this._createAttribute(i,s,r)}this._mapUpdateTriggersToAttributes()}_createAttribute(t,r,i){let s={...r,id:t,size:r.isIndexed&&1||r.size||1,divisor:i.instanced?1:r.divisor||0};return new lp(this.gl,s)}_mapUpdateTriggersToAttributes(){let t={};for(let r in this.attributes)this.attributes[r].getUpdateTriggers().forEach(s=>{t[s]||(t[s]=[]),t[s].push(r)});this.updateTriggers=t}_invalidateTrigger(t,r){let{attributes:i,updateTriggers:s}=this,n=s[t];return n&&n.forEach(o=>{let c=i[o];c&&c.setNeedsUpdate(c.id,r)}),n}_updateAttribute(t){let{attribute:r,numInstances:i}=t;if(Cs(Olt,r),r.constant){r.setConstantValue(r.value);return}r.allocate(i)&&Cs(Blt,r,i),r.updateBuffer(t)&&(this.needsRedraw=!0,Cs(Flt,r,i))}};var ew=class extends $c{get value(){return this._value}_onUpdate(){let{time:t,settings:{fromValue:r,toValue:i,duration:s,easing:n}}=this,o=n(t/s);this._value=tc(r,i,o)}};var LG=1e-5;function kG(e,t,r,i,s){let n=t-e,c=(r-t)*s,f=-n*i;return c+f+n+t}function zlt(e,t,r,i,s){if(Array.isArray(r)){let n=[];for(let o=0;o0}add(t,r,i,s){let{transitions:n}=this;if(n.has(t)){let f=n.get(t),{value:_=f.settings.fromValue}=f;r=_,this.remove(t)}if(s=YE(s),!s)return;let o=Nlt[s.type];if(!o){nr.error(\"unsupported transition type '\".concat(s.type,\"'\"))();return}let c=new o(this.timeline);c.start({...s,fromValue:r,toValue:i}),n.set(t,c)}remove(t){let{transitions:r}=this;r.has(t)&&(r.get(t).cancel(),r.delete(t))}update(){let t={};for(let[r,i]of this.transitions)i.update(),t[r]=i.value,i.inProgress||this.remove(r);return t}clear(){for(let t of this.transitions.keys())this.remove(t)}};function OG(e){let t=e[Ou];for(let r in t){let i=t[r],{validate:s}=i;if(s&&!s(e[r],i))throw new Error(\"Invalid prop \".concat(r,\": \").concat(e[r]))}}function BG(e,t){let r=nw({newProps:e,oldProps:t,propTypes:e[Ou],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=Vlt(e,t),s=!1;return i||(s=jlt(e,t)),{dataChanged:i,propsChanged:r,updateTriggersChanged:s,extensionsChanged:Glt(e,t),transitionsChanged:Ult(e,t)}}function Ult(e,t){if(!e.transitions)return!1;let r={},i=e[Ou],s=!1;for(let n in e.transitions){let o=i[n],c=o&&o.type;(c===\"number\"||c===\"color\"||c===\"array\")&&fD(e[n],t[n],o)&&(r[n]=!0,s=!0)}return s?r:!1}function nw({newProps:e,oldProps:t,ignoreProps:r={},propTypes:i={},triggerName:s=\"props\"}){if(t===e)return!1;if(typeof e!=\"object\"||e===null||typeof t!=\"object\"||t===null)return\"\".concat(s,\" changed shallowly\");for(let n of Object.keys(e))if(!(n in r)){if(!(n in t))return\"\".concat(s,\".\").concat(n,\" added\");let o=fD(e[n],t[n],i[n]);if(o)return\"\".concat(s,\".\").concat(n,\" \").concat(o)}for(let n of Object.keys(t))if(!(n in r)){if(!(n in e))return\"\".concat(s,\".\").concat(n,\" dropped\");if(!Object.hasOwnProperty.call(e,n)){let o=fD(e[n],t[n],i[n]);if(o)return\"\".concat(s,\".\").concat(n,\" \").concat(o)}}return!1}function fD(e,t,r){let i=r&&r.equal;return i&&!i(e,t,r)||!i&&(i=e&&t&&e.equals,i&&!i.call(e,t))?\"changed deeply\":!i&&t!==e?\"changed shallowly\":null}function Vlt(e,t){if(t===null)return\"oldProps is null, initial diff\";let r=!1,{dataComparator:i,_dataDiff:s}=e;return i?i(e.data,t.data)||(r=\"Data comparator detected a change\"):e.data!==t.data&&(r=\"A new data container was supplied\"),r&&s&&(r=s(e.data,t.data)||r),r}function jlt(e,t){if(t===null)return{all:!0};if(\"all\"in e.updateTriggers&&DG(e,t,\"all\"))return{all:!0};let r={},i=!1;for(let s in e.updateTriggers)s!==\"all\"&&DG(e,t,s)&&(r[s]=!0,i=!0);return i?r:!1}function Glt(e,t){if(t===null)return!0;let r=t.extensions,{extensions:i}=e;if(i===r)return!1;if(!r||!i||i.length!==r.length)return!0;for(let s=0;si.name===\"project64\"))){let i=r.modules.findIndex(s=>s.name===\"project32\");i>=0&&r.modules.splice(i,1)}if(\"inject\"in t)if(!e.inject)r.inject=t.inject;else{let i={...e.inject};for(let s in t.inject)i[s]=(i[s]||\"\")+t.inject[s];r.inject=i}return r}var Ylt={10241:9987,10240:9729,10242:33071,10243:33071},dD={};function NG(e,t,r,i){if(r instanceof pi)return r;r.constructor&&r.constructor.name!==\"Object\"&&(r={data:r});let s=null;r.compressed&&(s={10241:r.data.length>1?9985:9729});let n=new pi(t,{...r,parameters:{...Ylt,...s,...i}});return dD[n.id]=e,n}function UG(e,t){!t||!(t instanceof pi)||dD[t.id]===e&&(t.delete(),delete dD[t.id])}var Qlt={boolean:{validate(e,t){return!0},equal(e,t,r){return!!e==!!t}},number:{validate(e,t){return Number.isFinite(e)&&(!(\"max\"in t)||e<=t.max)&&(!(\"min\"in t)||e>=t.min)}},color:{validate(e,t){return t.optional&&!e||pD(e)&&(e.length===3||e.length===4)},equal(e,t,r){return ao(e,t,1)}},accessor:{validate(e,t){let r=JE(e);return r===\"function\"||r===JE(t.value)},equal(e,t,r){return typeof t==\"function\"?!0:ao(e,t,1)}},array:{validate(e,t){return t.optional&&!e||pD(e)},equal(e,t,r){let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?ao(e,t,s):e===t}},object:{equal(e,t,r){if(r.ignore)return!0;let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?ao(e,t,s):e===t}},function:{validate(e,t){return t.optional&&!e||typeof e==\"function\"},equal(e,t,r){return!r.compare&&r.ignore!==!1||e===t}},data:{transform:(e,t,r)=>{let{dataTransform:i}=r.props;return i&&e?i(e):e}},image:{transform:(e,t,r)=>{let i=r.context;return!i||!i.gl?null:NG(r.id,i.gl,e,{...t.parameters,...r.props.textureParameters})},release:(e,t,r)=>{UG(r.id,e)}}};function VG(e){let t={},r={},i={};for(let[s,n]of Object.entries(e)){let o=n?.deprecatedFor;if(o)i[s]=Array.isArray(o)?o:[o];else{let c=$lt(s,n);t[s]=c,r[s]=c.value}}return{propTypes:t,defaultProps:r,deprecatedProps:i}}function $lt(e,t){switch(JE(t)){case\"object\":return sw(e,t);case\"array\":return sw(e,{type:\"array\",value:t,compare:!1});case\"boolean\":return sw(e,{type:\"boolean\",value:t});case\"number\":return sw(e,{type:\"number\",value:t});case\"function\":return sw(e,{type:\"function\",value:t,compare:!0});default:return{name:e,type:\"unknown\",value:t}}}function sw(e,t){return\"type\"in t?{name:e,...Qlt[t.type],...t}:\"value\"in t?{name:e,type:JE(t.value),...t}:{name:e,type:\"object\",value:t}}function pD(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function JE(e){return pD(e)?\"array\":e===null?\"null\":typeof e}function jG(e,t){let r;for(let n=t.length-1;n>=0;n--){let o=t[n];\"extensions\"in o&&(r=o.extensions)}let i=AD(e.constructor,r),s=Object.create(i);s[Uy]=e,s[Zf]={},s[Gh]={};for(let n=0;n{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let t in this.asyncProps){let r=this.asyncProps[t];r&&r.type&&r.type.release&&r.type.release(r.resolvedValue,r.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||sct}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(t){return t in this.asyncProps}getAsyncProp(t){let r=this.asyncProps[t];return r&&r.resolvedValue}isAsyncPropLoading(t){if(t){let r=this.asyncProps[t];return!!(r&&r.pendingLoadCount>0&&r.pendingLoadCount!==r.resolvedLoadCount)}for(let r in this.asyncProps)if(this.isAsyncPropLoading(r))return!0;return!1}reloadAsyncProp(t,r){this._watchPromise(t,Promise.resolve(r))}setAsyncProps(t){this.component=t[Uy]||this.component;let r=t[Gh]||{},i=t[Zf]||t,s=t[ip]||{};for(let n in r){let o=r[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o),r[n]=this.getAsyncProp(n)}for(let n in i){let o=i[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o)}}_fetch(t,r){return null}_onResolve(t,r){}_onError(t,r){}_updateAsyncProp(t,r){if(this._didAsyncInputValueChange(t,r)){if(typeof r==\"string\"&&(r=this._fetch(t,r)),r instanceof Promise){this._watchPromise(t,r);return}if(qE(r)){this._resolveAsyncIterable(t,r);return}this._setPropValue(t,r)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(let t in this.asyncProps)Object.defineProperty(this.oldAsyncProps,t,{enumerable:!0,value:this.oldProps[t]})}}_didAsyncInputValueChange(t,r){let i=this.asyncProps[t];return r===i.resolvedValue||r===i.lastValue?!1:(i.lastValue=r,!0)}_setPropValue(t,r){this._freezeAsyncOldProps();let i=this.asyncProps[t];i&&(r=this._postProcessValue(i,r),i.resolvedValue=r,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(t,r,i){let s=this.asyncProps[t];s&&i>=s.resolvedLoadCount&&r!==void 0&&(this._freezeAsyncOldProps(),s.resolvedValue=r,s.resolvedLoadCount=i,this.onAsyncPropUpdated(t,r))}_watchPromise(t,r){let i=this.asyncProps[t];if(i){i.pendingLoadCount++;let s=i.pendingLoadCount;r.then(n=>{this.component&&(n=this._postProcessValue(i,n),this._setAsyncPropValue(t,n,s),this._onResolve(t,n))}).catch(n=>{this._onError(t,n)})}}async _resolveAsyncIterable(t,r){if(t!==\"data\"){this._setPropValue(t,r);return}let i=this.asyncProps[t];if(!i)return;i.pendingLoadCount++;let s=i.pendingLoadCount,n=[],o=0;for await(let c of r){if(!this.component)return;let{dataTransform:f}=this.component.props;f?n=f(c,n):n=n.concat(c),Object.defineProperty(n,\"__diff\",{enumerable:!1,value:[{startRow:o,endRow:n.length}]}),o=n.length,this._setAsyncPropValue(t,n,s)}this._onResolve(t,n)}_postProcessValue(t,r){let i=t.type;return i&&this.component&&(i.release&&i.release(t.resolvedValue,i,this.component),i.transform)?i.transform(r,i,this.component):r}_createAsyncPropData(t,r){if(!this.asyncProps[t]){let s=this.component&&this.component.props[Ou];this.asyncProps[t]={type:s&&s[t],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var aw=class extends ow{constructor({attributeManager:t,layer:r}){super(r),G(this,\"attributeManager\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"needsUpdate\",void 0),G(this,\"subLayers\",void 0),G(this,\"usesPickingColorCache\",void 0),G(this,\"hasPickingBuffer\",void 0),G(this,\"changeFlags\",void 0),G(this,\"viewport\",void 0),G(this,\"uniformTransitions\",void 0),G(this,\"propsInTransition\",void 0),this.attributeManager=t,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}_fetch(t,r){let i=this.layer,s=i?.props.fetch;return s?s(r,{propName:t,layer:i}):super._fetch(t,r)}_onResolve(t,r){let i=this.layer;if(i){let s=i.props.onDataLoad;t===\"data\"&&s&&s(r,{propName:t,layer:i})}}_onError(t,r){let i=this.layer;i&&i.raiseError(r,\"loading \".concat(t,\" of \").concat(this.layer))}};var oct=\"layer.changeFlag\",act=\"layer.initialize\",lct=\"layer.update\",cct=\"layer.finalize\",uct=\"layer.matched\",WG=2**24-1,hct=Object.freeze([]),fct=Hf(({oldViewport:e,viewport:t})=>e.equals(t)),Qf=new Uint8ClampedArray(0),dct={data:{type:\"data\",value:hct,async:!0},dataComparator:{type:\"function\",value:null,optional:!0},_dataDiff:{type:\"function\",value:e=>e&&e.__diff,optional:!0},dataTransform:{type:\"function\",value:null,optional:!0},onDataLoad:{type:\"function\",value:null,optional:!0},onError:{type:\"function\",value:null,optional:!0},fetch:{type:\"function\",value:(e,{propName:t,layer:r,loaders:i,loadOptions:s,signal:n})=>{let{resourceManager:o}=r.context;if(s=s||r.getLoadOptions(),i=i||r.props.loaders,n){var c;s={...s,fetch:{...(c=s)===null||c===void 0?void 0:c.fetch,signal:n}}}let f=o.contains(e);return!f&&!s&&(o.add({resourceId:e,data:NA(e,i),persistent:!1}),f=!0),f?o.subscribe({resourceId:e,onChange:_=>{var w;return(w=r.internalState)===null||w===void 0?void 0:w.reloadAsyncProp(t,_)},consumerId:r.id,requestId:t}):NA(e,i,s)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:\"number\",min:0,max:1,value:1},operation:\"draw\",onHover:{type:\"function\",value:null,optional:!0},onClick:{type:\"function\",value:null,optional:!0},onDragStart:{type:\"function\",value:null,optional:!0},onDrag:{type:\"function\",value:null,optional:!0},onDragEnd:{type:\"function\",value:null,optional:!0},coordinateSystem:Yr.DEFAULT,coordinateOrigin:{type:\"array\",value:[0,0,0],compare:!0},modelMatrix:{type:\"array\",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:\"XYZ\",colorFormat:\"RGBA\",parameters:{type:\"object\",value:{},optional:!0,compare:2},loadOptions:{type:\"object\",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:\"array\",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:\"function\",value:({layerIndex:e})=>[0,-e*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:\"accessor\",value:[0,0,128,128]}},Tn=class extends hg{constructor(...t){super(...t),G(this,\"internalState\",null),G(this,\"lifecycle\",XA.NO_STATE),G(this,\"context\",void 0),G(this,\"state\",void 0),G(this,\"parent\",null)}static get componentName(){return Object.prototype.hasOwnProperty.call(this,\"layerName\")?this.layerName:\"\"}get root(){let t=this;for(;t.parent;)t=t.parent;return t}toString(){let t=this.constructor.layerName||this.constructor.name;return\"\".concat(t,\"({id: '\").concat(this.props.id,\"'})\")}project(t){br(this.internalState);let r=this.internalState.viewport||this.context.viewport,i=rD(t,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[s,n,o]=By(i,r.pixelProjectionMatrix);return t.length===2?[s,n]:[s,n,o]}unproject(t){return br(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(t)}projectPosition(t,r){br(this.internalState);let i=this.internalState.viewport||this.context.viewport;return q7(t,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...r})}get isComposite(){return!1}setState(t){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,t),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){return this.state&&(this.state.models||this.state.model&&[this.state.model])||[]}setModuleParameters(t){for(let r of this.getModels())r.updateModuleSettings(t)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:t}=this.props;return t===Yr.DEFAULT||t===Yr.LNGLAT||t===Yr.CARTESIAN}onHover(t,r){return this.props.onHover&&this.props.onHover(t,r)||!1}onClick(t,r){return this.props.onClick&&this.props.onClick(t,r)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(t,r=[]){return r[0]=t+1&255,r[1]=t+1>>8&255,r[2]=t+1>>8>>8&255,r}decodePickingColor(t){br(t instanceof Uint8Array);let[r,i,s]=t;return r+i*256+s*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:FG(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){var t;return(t=this.getAttributeManager())===null||t===void 0?void 0:t.getBounds([\"positions\",\"instancePositions\"])}getShaders(t){for(let r of this.props.extensions)t=zG(t,r.getShaders.call(this,r));return t}shouldUpdateState(t){return t.changeFlags.propsOrDataChanged}updateState(t){let r=this.getAttributeManager(),{dataChanged:i}=t.changeFlags;if(i&&r)if(Array.isArray(i))for(let s of i)r.invalidateAll(s);else r.invalidateAll();if(r){let{props:s}=t,n=this.internalState.hasPickingBuffer,o=Number.isInteger(s.highlightedObjectIndex)||s.pickable||s.extensions.some(c=>c.getNeedsPickingBuffer.call(this,c));if(n!==o){this.internalState.hasPickingBuffer=o;let{pickingColors:c,instancePickingColors:f}=r.attributes,_=c||f;_&&(o&&_.constant&&(_.constant=!1,r.invalidate(_.id)),!_.value&&!o&&(_.constant=!0,_.value=[0,0,0]))}}}finalizeState(t){for(let i of this.getModels())i.delete();let r=this.getAttributeManager();r&&r.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(t){for(let r of this.getModels())r.draw(t)}getPickingInfo({info:t,mode:r,sourceLayer:i}){let{index:s}=t;return s>=0&&Array.isArray(this.props.data)&&(t.object=this.props.data[s]),t}raiseError(t,r){var i,s;if(r&&(t=new Error(\"\".concat(r,\": \").concat(t.message),{cause:t})),!((i=(s=this.props).onError)!==null&&i!==void 0&&i.call(s,t))){var n,o;(n=this.context)===null||n===void 0||(o=n.onError)===null||o===void 0||o.call(n,t,this)}}getNeedsRedraw(t={clearRedrawFlags:!1}){return this._getNeedsRedraw(t)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){var t;return((t=this.internalState)===null||t===void 0?void 0:t.uniformTransitions.active)||!1}activateViewport(t){if(!this.internalState)return;let r=this.internalState.viewport;this.internalState.viewport=t,(!r||!fct({oldViewport:r,viewport:t}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(t=\"all\"){let r=this.getAttributeManager();r&&(t===\"all\"?r.invalidateAll():r.invalidate(t))}updateAttributes(t){for(let r of this.getModels())this._setModelAttributes(r,t)}_updateAttributes(){let t=this.getAttributeManager();if(!t)return;let r=this.props,i=this.getNumInstances(),s=this.getStartIndices();t.update({data:r.data,numInstances:i,startIndices:s,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let n=t.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_updateAttributeTransition(){let t=this.getAttributeManager();t&&t.updateTransition()}_updateUniformTransition(){let{uniformTransitions:t}=this.internalState;if(t.active){let r=t.update(),i=Object.create(this.props);for(let s in r)Object.defineProperty(i,s,{value:r[s]});return i}return this.props}calculateInstancePickingColors(t,{numInstances:r}){if(t.constant)return;let i=Math.floor(Qf.length/3);if(this.internalState.usesPickingColorCache=!0,iWG&&nr.warn(\"Layer has too many data objects. Picking might not be able to distinguish all objects.\")(),Qf=jh.allocate(Qf,r,{size:3,copy:!0,maxCount:Math.max(r,WG)});let s=Math.floor(Qf.length/3),n=[];for(let o=i;o(nr.deprecated(\"layer.state.attributeManager\",\"layer.getAttributeManager()\")(),t)}),this.internalState.uniformTransitions=new iw(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let r of this.props.extensions)r.initializeState.call(this,this.context,r);this.setChangeFlags({dataChanged:\"init\",propsChanged:\"init\",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(t){Cs(uct,this,this===t);let{state:r,internalState:i}=t;this!==t&&(this.internalState=i,this.state=r,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let t=this.needsUpdate();if(Cs(lct,this,t),!t)return;let r=this.props,i=this.context,s=this.internalState,n=i.viewport,o=this._updateUniformTransition();s.propsInTransition=o,i.viewport=s.viewport||n,this.props=o;try{let c=this._getUpdateParams(),f=this.getModels();if(i.gl)this.updateState(c);else try{this.updateState(c)}catch{}for(let w of this.props.extensions)w.updateState.call(this,c,w);let _=this.getModels()[0]!==f[0];this._postUpdate(c,_)}finally{i.viewport=n,this.props=r,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){Cs(cct,this),this.finalizeState(this.context);for(let t of this.props.extensions)t.finalizeState.call(this,this.context,t)}_drawLayer({moduleParameters:t=null,uniforms:r={},parameters:i={}}){this._updateAttributeTransition();let s=this.props,n=this.context;this.props=this.internalState.propsInTransition||s;let o=this.props.opacity;r.opacity=Math.pow(o,1/2.2);try{t&&this.setModuleParameters(t);let{getPolygonOffset:c}=this.props,f=c&&c(r)||[0,0];wl(n.gl,{polygonOffset:f}),bn(n.gl,i,()=>{let _={moduleParameters:t,uniforms:r,parameters:i,context:n};for(let w of this.props.extensions)w.draw.call(this,_,w);this.draw(_)})}finally{this.props=s}}getChangeFlags(){var t;return(t=this.internalState)===null||t===void 0?void 0:t.changeFlags}setChangeFlags(t){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let s in t)if(t[s]){let n=!1;switch(s){case\"dataChanged\":let o=t[s],c=r[s];o&&Array.isArray(c)&&(r.dataChanged=Array.isArray(o)?c.concat(o):o,n=!0);default:r[s]||(r[s]=t[s],n=!0)}n&&Cs(oct,this,s,t)}let i=!!(r.dataChanged||r.updateTriggersChanged||r.propsChanged||r.extensionsChanged);r.propsOrDataChanged=i,r.somethingChanged=i||r.viewportChanged||r.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(t,r){let i=BG(t,r);if(i.updateTriggersChanged)for(let n in i.updateTriggersChanged)i.updateTriggersChanged[n]&&this.invalidateAttribute(n);if(i.transitionsChanged)for(let n in i.transitionsChanged){var s;this.internalState.uniformTransitions.add(n,r[n],t[n],(s=t.transitions)===null||s===void 0?void 0:s[n])}return this.setChangeFlags(i)}validateProps(){OG(this.props)}updateAutoHighlight(t){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(t)}_updateAutoHighlight(t){let r={pickingSelectedColor:t.picked?t.color:null},{highlightColor:i}=this.props;t.picked&&typeof i==\"function\"&&(r.pickingHighlightColor=i(t)),this.setModuleParameters(r),this.setNeedsRedraw()}_getAttributeManager(){let t=this.context;return new Yf(t.gl,{id:this.props.id,stats:t.stats,timeline:t.timeline})}_postUpdate(t,r){let{props:i,oldProps:s}=t;this.setNeedsRedraw(),this._updateAttributes();let{model:n}=this.state;n?.setInstanceCount(this.getNumInstances());let{autoHighlight:o,highlightedObjectIndex:c,highlightColor:f}=i;if(r||s.autoHighlight!==o||s.highlightedObjectIndex!==c||s.highlightColor!==f){let _={};o||(_.pickingSelectedColor=null),Array.isArray(f)&&(_.pickingHighlightColor=f),(r||c!==s.highlightedObjectIndex)&&(_.pickingSelectedColor=Number.isFinite(c)&&c>=0?this.encodePickingColor(c):null),this.setModuleParameters(_)}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(t){if(!this.internalState)return!1;let r=!1;r=r||this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),s=i?i.getNeedsRedraw(t):!1;if(r=r||s,r)for(let n of this.props.extensions)n.onNeedsRedraw.call(this,n);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!t.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};G(Tn,\"defaultProps\",dct);G(Tn,\"layerName\",\"Layer\");var pct=\"compositeLayer.renderLayers\",tn=class extends Tn{get isComposite(){return!0}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(t=>t.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(t){}setState(t){super.setState(t),this.setNeedsUpdate()}getPickingInfo({info:t}){let{object:r}=t;return r&&r.__source&&r.__source.parent&&r.__source.parent.id===this.id&&(t.object=r.__source.object,t.index=r.__source.index),t}filterSubLayer(t){return!0}shouldRenderSubLayer(t,r){return r&&r.length}getSubLayerClass(t,r){let{_subLayerProps:i}=this.props;return i&&i[t]&&i[t].type||r}getSubLayerRow(t,r,i){return t.__source={parent:this,object:r,index:i},t}getSubLayerAccessor(t){if(typeof t==\"function\"){let r={index:-1,data:this.props.data,target:[]};return(i,s)=>i&&i.__source?(r.index=i.__source.index,t(i.__source.object,r)):t(i,s)}return t}getSubLayerProps(t={}){var r;let{opacity:i,pickable:s,visible:n,parameters:o,getPolygonOffset:c,highlightedObjectIndex:f,autoHighlight:_,highlightColor:w,coordinateSystem:C,coordinateOrigin:R,wrapLongitude:N,positionFormat:j,modelMatrix:Y,extensions:rt,fetch:$,operation:K,_subLayerProps:tt}=this.props,ut={id:\"\",updateTriggers:{},opacity:i,pickable:s,visible:n,parameters:o,getPolygonOffset:c,highlightedObjectIndex:f,autoHighlight:_,highlightColor:w,coordinateSystem:C,coordinateOrigin:R,wrapLongitude:N,positionFormat:j,modelMatrix:Y,extensions:rt,fetch:$,operation:K},Pt=tt&&t.id&&tt[t.id],Ot=Pt&&Pt.updateTriggers,Kt=t.id||\"sublayer\";if(Pt){let Zt=this.props[Ou],le=t.type?t.type._propTypes:{};for(let ue in Pt){let Ge=le[ue]||Zt[ue];Ge&&Ge.type===\"accessor\"&&(Pt[ue]=this.getSubLayerAccessor(Pt[ue]))}}Object.assign(ut,t,Pt),ut.id=\"\".concat(this.props.id,\"-\").concat(Kt),ut.updateTriggers={all:(r=this.props.updateTriggers)===null||r===void 0?void 0:r.all,...t.updateTriggers,...Ot};for(let Zt of rt){let le=Zt.getSubLayerProps.call(this,Zt);le&&Object.assign(ut,le,{updateTriggers:Object.assign(ut.updateTriggers,le.updateTriggers)})}return ut}_updateAutoHighlight(t){for(let r of this.getSubLayers())r.updateAutoHighlight(t)}_getAttributeManager(){return null}_postUpdate(t,r){let i=this.internalState.subLayers,s=!i||this.needsUpdate();if(s){let n=this.renderLayers();i=np(n,Boolean),this.internalState.subLayers=i}Cs(pct,this,s,i);for(let n of i)n.parent=this}};G(tn,\"layerName\",\"CompositeLayer\");var tP=Math.PI/180,HG=180/Math.PI,eP=6370972,Hy=256;function Act(){let e=Hy/eP,t=Math.PI/180*Hy;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[1/e,1/e,1/e],unitsPerDegree:[t,t,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,1/e]}}var qy=class extends ic{constructor(t={}){let{latitude:r=0,longitude:i=0,zoom:s=0,nearZMultiplier:n=.1,farZMultiplier:o=2,resolution:c=10}=t,{height:f,altitude:_=1.5}=t;f=f||1,_=Math.max(.75,_);let w=new wn().lookAt({eye:[0,-_,0],up:[0,0,1]}),C=Math.pow(2,s);w.rotateX(r*tP),w.rotateZ(-i*tP),w.scale(C/f);let R=Math.atan(.5/_),N=Hy*2*C/f;super({...t,height:f,viewMatrix:w,longitude:i,latitude:r,zoom:s,distanceScales:Act(),fovyRadians:R*2,focalDistance:_,near:n,far:Math.min(2,1/N+1)*_*o}),G(this,\"longitude\",void 0),G(this,\"latitude\",void 0),G(this,\"resolution\",void 0),this.latitude=r,this.longitude=i,this.resolution=c}get projectionMode(){return Ka.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){let r={targetZ:t.z||0},i=this.unproject([0,this.height/2],r),s=this.unproject([this.width/2,0],r),n=this.unproject([this.width,this.height/2],r),o=this.unproject([this.width/2,this.height],r);return n[0]this.longitude&&(i[0]-=360),[Math.min(i[0],n[0],s[0],o[0]),Math.min(i[1],n[1],s[1],o[1]),Math.max(i[0],n[0],s[0],o[0]),Math.max(i[1],n[1],s[1],o[1])]}unproject(t,{topLeft:r=!0,targetZ:i}={}){let[s,n,o]=t,c=r?n:this.height-n,{pixelUnprojectionMatrix:f}=this,_;if(Number.isFinite(o))_=gD(f,[s,c,o,1]);else{let N=gD(f,[s,c,-1,1]),j=gD(f,[s,c,1,1]),Y=((i||0)/eP+1)*Hy,rt=SE(bE([],N,j)),$=SE(N),K=SE(j),ut=4*((4*$*K-(rt-$-K)**2)/16)/rt,Pt=Math.sqrt($-ut),Ot=Math.sqrt(Math.max(0,Y*Y-ut)),Kt=(Pt-Ot)/Math.sqrt(rt);_=Tj([],N,j,Kt)}let[w,C,R]=this.unprojectPosition(_);return Number.isFinite(o)?[w,C,R]:Number.isFinite(i)?[w,C,i]:[w,C]}projectPosition(t){let[r,i,s=0]=t,n=r*tP,o=i*tP,c=Math.cos(o),f=(s/eP+1)*Hy;return[Math.sin(n)*c*f,-Math.cos(n)*c*f,Math.sin(o)*f]}unprojectPosition(t){let[r,i,s]=t,n=wE(t),o=Math.asin(s/n),f=Math.atan2(r,-i)*HG,_=o*HG,w=(n/Hy-1)*eP;return[f,_,w]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition(t,r){let i=this.unproject(r);return{longitude:t[0]-i[0]+this.longitude,latitude:t[1]-i[1]+this.latitude}}};function gD(e,t){let r=zh([],t,e);return Py(r,r,1/r[3]),r}var mct=new wn().lookAt({eye:[0,0,1]});function gct({width:e,height:t,near:r,far:i,padding:s}){let n=-e/2,o=e/2,c=-t/2,f=t/2;if(s){let{left:_=0,right:w=0,top:C=0,bottom:R=0}=s,N=Ml((_+e-w)/2,0,e)-e/2,j=Ml((C+t-R)/2,0,t)-t/2;n-=N,o-=N,c+=j,f+=j}return new wn().ortho({left:n,right:o,bottom:c,top:f,near:r,far:i})}var Zy=class extends ic{constructor(t){let{width:r,height:i,near:s=.1,far:n=1e3,zoom:o=0,target:c=[0,0,0],padding:f=null,flipY:_=!0}=t,w=Array.isArray(o)?o[0]:o,C=Array.isArray(o)?o[1]:o,R=Math.min(w,C),N=Math.pow(2,R),j;if(w!==C){let Y=Math.pow(2,w),rt=Math.pow(2,C);j={unitsPerMeter:[Y/N,rt/N,1],metersPerUnit:[N/Y,N/rt,1]}}super({...t,longitude:void 0,position:c,viewMatrix:mct.clone().scale([N,N*(_?-1:1),N]),projectionMatrix:gct({width:r||1,height:i||1,padding:f,near:s,far:n}),zoom:R,distanceScales:j})}projectFlat([t,r]){let{unitsPerMeter:i}=this.distanceScales;return[t*i[0],r*i[1]]}unprojectFlat([t,r]){let{metersPerUnit:i}=this.distanceScales;return[t*i[0],r*i[1]]}panByPosition(t,r){let i=qf(r,this.pixelUnprojectionMatrix),s=this.projectFlat(t),n=wy([],s,mE([],i)),o=wy([],this.center,n);return{target:this.unprojectFlat(o)}}};var Bu=class{static get componentName(){return Object.prototype.hasOwnProperty.call(this,\"extensionName\")?this.extensionName:\"\"}constructor(t){G(this,\"opts\",void 0),t&&(this.opts=t)}equals(t){return this===t?!0:this.constructor===t.constructor&&ao(this.opts,t.opts,1)}getShaders(t){return null}getSubLayerProps(t){let{defaultProps:r}=t.constructor,i={updateTriggers:{}};for(let s in r)if(s in this.props){let n=r[s],o=this.props[s];i[s]=o,n&&n.type===\"accessor\"&&(i.updateTriggers[s]=this.props.updateTriggers[s],typeof o==\"function\"&&(i[s]=this.getSubLayerAccessor(o)))}return i}initializeState(t,r){}updateState(t,r){}onNeedsRedraw(t){}getNeedsPickingBuffer(t){return!1}draw(t,r){}finalizeState(t,r){}};G(Bu,\"defaultProps\",{});G(Bu,\"extensionName\",\"LayerExtension\");var JA=class{constructor(t){G(this,\"opts\",void 0),G(this,\"typedArrayManager\",void 0),G(this,\"indexStarts\",[0]),G(this,\"vertexStarts\",[0]),G(this,\"vertexCount\",0),G(this,\"instanceCount\",0),G(this,\"attributes\",void 0),G(this,\"_attributeDefs\",void 0),G(this,\"data\",void 0),G(this,\"getGeometry\",void 0),G(this,\"geometryBuffer\",void 0),G(this,\"buffers\",void 0),G(this,\"positionSize\",void 0),G(this,\"normalize\",void 0);let{attributes:r={}}=t;this.typedArrayManager=jh,this.attributes={},this._attributeDefs=r,this.opts=t,this.updateGeometry(t)}updateGeometry(t){Object.assign(this.opts,t);let{data:r,buffers:i={},getGeometry:s,geometryBuffer:n,positionFormat:o,dataChanged:c,normalize:f=!0}=this.opts;if(this.data=r,this.getGeometry=s,this.positionSize=n&&n.size||(o===\"XY\"?2:3),this.buffers=i,this.normalize=f,n&&(br(r.startIndices),this.getGeometry=this.getGeometryFromBuffer(n),f||(i.positions=n)),this.geometryBuffer=i.positions,Array.isArray(c))for(let _ of c)this._rebuildGeometry(_);else this._rebuildGeometry()}updatePartialGeometry({startRow:t,endRow:r}){this._rebuildGeometry({startRow:t,endRow:r})}getGeometryFromBuffer(t){let r=t.value||t;return ArrayBuffer.isView(r)?ZE(r,{size:this.positionSize,offset:t.offset,stride:t.stride,startIndices:this.data.startIndices}):null}_allocate(t,r){let{attributes:i,buffers:s,_attributeDefs:n,typedArrayManager:o}=this;for(let c in n)if(c in s)o.release(i[c]),i[c]=null;else{let f=n[c];f.copy=r,i[c]=o.allocate(i[c],t,f)}}_forEachGeometry(t,r,i){let{data:s,getGeometry:n}=this,{iterable:o,objectInfo:c}=Xc(s,r,i);for(let f of o){c.index++;let _=n?n(f,c):null;t(_,c.index)}}_rebuildGeometry(t){if(!this.data)return;let{indexStarts:r,vertexStarts:i,instanceCount:s}=this,{data:n,geometryBuffer:o}=this,{startRow:c=0,endRow:f=1/0}=t||{},_={};if(t||(r=[0],i=[0]),this.normalize||!o)this._forEachGeometry((C,R)=>{let N=C&&this.normalizeGeometry(C);_[R]=N,i[R+1]=i[R]+(N?this.getGeometrySize(N):0)},c,f),s=i[i.length-1];else if(i=n.startIndices,s=i[n.length]||0,ArrayBuffer.isView(o))s=s||o.length/this.positionSize;else if(o instanceof Fr){let C=o.accessor.stride||this.positionSize*4;s=s||o.byteLength/C}else if(o.buffer){let C=o.stride||this.positionSize*4;s=s||o.buffer.byteLength/C}else if(o.value){let C=o.value,R=o.stride/C.BYTES_PER_ELEMENT||this.positionSize;s=s||C.length/R}this._allocate(s,!!t),this.indexStarts=r,this.vertexStarts=i,this.instanceCount=s;let w={};this._forEachGeometry((C,R)=>{let N=_[R]||C;w.vertexStart=i[R],w.indexStart=r[R];let j=RiP(r,t));if(Qy(e)){if(vct(e))return t.style=yct,(0,_D.cloneElement)(e,t);if(xct(e))return(0,_D.cloneElement)(e,t)}return e}function Qy(e){return e&&typeof e==\"object\"&&\"type\"in e||!1}function vct(e){var t;return(t=e.props)===null||t===void 0?void 0:t.mapStyle}function xct(e){let t=e.type;return t&&t.deckGLViewProps}function yD(e){if(typeof e==\"function\")return(0,ZG.createElement)(Qc,{},e);if(Array.isArray(e))return e.map(yD);if(Qy(e)){if(e.type===nP.Fragment)return yD(e.props.children);if(Yy(e.type,Qc))return e}return e}function vD({children:e,layers:t=[],views:r=null}){let i=[],s=[],n={};return nP.Children.forEach(yD(e),o=>{if(Qy(o)){let c=o.type;if(Yy(c,Tn)){let f=bct(c,o.props);s.push(f)}else i.push(o);if(Yy(c,Qc)&&c!==Qc&&o.props.id){let f=new c(o.props);n[f.id]=f}}else o&&i.push(o)}),Object.keys(n).length>0&&(Array.isArray(r)?r.forEach(o=>{n[o.id]=o}):r&&(n[r.id]=r),r=Object.values(n)),t=s.length>0?[...s,...t]:t,{layers:t,children:i,views:r}}function bct(e,t){let r={},i=e.defaultProps||{};for(let s in t)i[s]!==t[s]&&(r[s]=t[s]);return new e(r)}var xD=ki(Ji());function bD({children:e,deck:t,ContextProvider:r}){let{viewManager:i}=t||{};if(!i||!i.views.length)return[];let s={},n=i.views[0].id;for(let o of e){let c=n,f=o;Qy(o)&&Yy(o.type,Qc)&&(c=o.props.id||n,f=o.props.children);let _=i.getViewport(c),w=i.getViewState(c);if(_){w.padding=_.padding;let{x:C,y:R,width:N,height:j}=_;f=iP(f,{x:C,y:R,width:N,height:j,viewport:_,viewState:w}),s[c]||(s[c]={viewport:_,children:[]}),s[c].children.push(f)}}return Object.keys(s).map(o=>{let{viewport:c,children:f}=s[o],{x:_,y:w,width:C,height:R}=c,N={position:\"absolute\",left:_,top:w,width:C,height:R},j=\"view-\".concat(o),Y=(0,xD.createElement)(\"div\",{key:j,id:j,style:N},...f);if(r){let rt={viewport:c,container:t.canvas.offsetParent,eventManager:t.eventManager,onViewStateChange:$=>{$.viewId=o,t._onViewStateChange($)}};return(0,xD.createElement)(r,{key:j,value:rt},Y)}return Y})}var wct={mixBlendMode:null};function wD({width:e,height:t,style:r}){let i={position:\"absolute\",zIndex:0,left:0,top:0,width:e,height:t},s={left:0,top:0};if(r)for(let n in r)n in wct?s[n]=r[n]:i[n]=r[n];return{containerStyle:i,canvasStyle:s}}function Sct(e){return{get deck(){return e.deck},pickObject:t=>e.deck.pickObject(t),pickMultipleObjects:t=>e.deck.pickMultipleObjects(t),pickObjects:t=>e.deck.pickObjects(t)}}function YG(e){e.redrawReason&&(e.deck._drawLayers(e.redrawReason),e.redrawReason=null)}function Tct(e,t,r){let i=new t({...r,_customRender:s=>{e.redrawReason=s;let n=i.getViewports();e.lastRenderedViewports!==n?e.forceUpdate():YG(e)}});return i}var QG=(0,Mo.forwardRef)((e,t)=>{let[r,i]=(0,Mo.useState)(0),n=(0,Mo.useRef)({control:null,version:r,forceUpdate:()=>i(Pt=>Pt+1)}).current,o=(0,Mo.useRef)(null),c=(0,Mo.useRef)(null),f=(0,Mo.useMemo)(()=>vD(e),[e.layers,e.views,e.children]),_=!0,w=Pt=>{var Ot;return _&&e.viewState?(n.viewStateUpdateRequested=Pt,null):(n.viewStateUpdateRequested=null,(Ot=e.onViewStateChange)===null||Ot===void 0?void 0:Ot.call(e,Pt))},C=Pt=>{if(_)n.interactionStateUpdateRequested=Pt;else{var Ot;n.interactionStateUpdateRequested=null,(Ot=e.onInteractionStateChange)===null||Ot===void 0||Ot.call(e,Pt)}},R=(0,Mo.useMemo)(()=>{let Pt={...e,style:null,width:\"100%\",height:\"100%\",parent:o.current,canvas:c.current,layers:f.layers,views:f.views,onViewStateChange:w,onInteractionStateChange:C};return delete Pt._customRender,n.deck&&n.deck.setProps(Pt),Pt},[e]);(0,Mo.useEffect)(()=>{let Pt=e.Deck||ap;return n.deck=Tct(n,Pt,{...R,parent:o.current,canvas:c.current}),()=>{var Ot;return(Ot=n.deck)===null||Ot===void 0?void 0:Ot.finalize()}},[]),qG(()=>{YG(n);let{viewStateUpdateRequested:Pt,interactionStateUpdateRequested:Ot}=n;Pt&&w(Pt),Ot&&C(Ot)}),(0,Mo.useImperativeHandle)(t,()=>Sct(n),[]);let N=n.deck&&n.deck.isInitialized?n.deck.getViewports():void 0,{ContextProvider:j,width:Y,height:rt,id:$,style:K}=e,{containerStyle:tt,canvasStyle:ut}=(0,Mo.useMemo)(()=>wD({width:Y,height:rt,style:K}),[Y,rt,K]);if(!n.viewStateUpdateRequested&&n.lastRenderedViewports===N||n.version!==r){n.lastRenderedViewports=N,n.version=r;let Pt=bD({children:f.children,deck:n.deck,ContextProvider:j}),Ot=(0,Mo.createElement)(\"canvas\",{key:\"canvas\",id:$||\"deckgl-overlay\",ref:c,style:ut});n.control=(0,Mo.createElement)(\"div\",{id:\"\".concat($||\"deckgl\",\"-wrapper\"),ref:o,style:tt},[Ot,Pt])}return _=!1,n.control});QG.defaultProps=ap.defaultProps;var SD=QG;var Xt,XG=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(\"TextDecoder not available\")}};typeof TextDecoder<\"u\"&&XG.decode();var lw=null;function $y(){return(lw===null||lw.byteLength===0)&&(lw=new Uint8Array(Xt.memory.buffer)),lw}function Fu(e,t){return e=e>>>0,XG.decode($y().subarray(e,e+t))}var cp=new Array(128).fill(void 0);cp.push(void 0,null,!0,!1);var dw=cp.length;function gr(e){dw===cp.length&&cp.push(cp.length+1);let t=dw;return dw=cp[t],cp[t]=e,t}function Qe(e){return cp[e]}function Mct(e){e<132||(cp[e]=dw,dw=e)}function Yn(e){let t=Qe(e);return Mct(e),t}var qh=0,sP=typeof TextEncoder<\"u\"?new TextEncoder(\"utf-8\"):{encode:()=>{throw Error(\"TextEncoder not available\")}},Ect=typeof sP.encodeInto==\"function\"?function(e,t){return sP.encodeInto(e,t)}:function(e,t){let r=sP.encode(e);return t.set(r),{read:e.length,written:r.length}};function cw(e,t,r){if(r===void 0){let c=sP.encode(e),f=t(c.length,1)>>>0;return $y().subarray(f,f+c.length).set(c),qh=c.length,f}let i=e.length,s=t(i,1)>>>0,n=$y(),o=0;for(;o127)break;n[s+o]=c}if(o!==i){o!==0&&(e=e.slice(o)),s=r(s,i,i=o+e.length*3,1)>>>0;let c=$y().subarray(s+o,s+i),f=Ect(e,c);o+=f.written}return qh=o,s}function TD(e){return e==null}var uw=null;function or(){return(uw===null||uw.byteLength===0)&&(uw=new Int32Array(Xt.memory.buffer)),uw}function MD(e){let t=typeof e;if(t==\"number\"||t==\"boolean\"||e==null)return`${e}`;if(t==\"string\")return`\"${e}\"`;if(t==\"symbol\"){let s=e.description;return s==null?\"Symbol\":`Symbol(${s})`}if(t==\"function\"){let s=e.name;return typeof s==\"string\"&&s.length>0?`Function(${s})`:\"Function\"}if(Array.isArray(e)){let s=e.length,n=\"[\";s>0&&(n+=MD(e[0]));for(let o=1;o1)i=r[1];else return toString.call(e);if(i==\"Object\")try{return\"Object(\"+JSON.stringify(e)+\")\"}catch{return\"Object\"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:i}function Pct(e,t,r,i){let s={a:e,b:t,cnt:1,dtor:r},n=(...o)=>{s.cnt++;let c=s.a;s.a=0;try{return i(c,s.b,...o)}finally{--s.cnt===0?Xt.__wbindgen_export_2.get(s.dtor)(c,s.b):s.a=c}};return n.original=s,n}function Ict(e,t,r){Xt._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h896648893be04d51(e,t,gr(r))}function ED(e,t){let r=t(e.length*1,1)>>>0;return $y().set(e,r/1),qh=e.length,r}function KG(e){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16),n=ED(e,Xt.__wbindgen_malloc),o=qh;Xt.readParquet(s,n,o);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return BD.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}function JG(e,t){return e=e>>>0,$y().subarray(e/1,e/1+t)}var hw=null;function $G(){return(hw===null||hw.byteLength===0)&&(hw=new BigInt64Array(Xt.memory.buffer)),hw}var fw=null;function Cct(){return(fw===null||fw.byteLength===0)&&(fw=new BigUint64Array(Xt.memory.buffer)),fw}function Lct(e,t){return e=e>>>0,Cct().subarray(e/8,e/8+t)}function Eo(e,t){try{return e.apply(this,t)}catch(r){Xt.__wbindgen_exn_store(gr(r))}}function kct(e,t,r,i){Xt.wasm_bindgen__convert__closures__invoke2_mut__h02232cd008ae4dfe(e,t,gr(r),gr(i))}var yNt=Object.freeze({UNCOMPRESSED:0,0:\"UNCOMPRESSED\",SNAPPY:1,1:\"SNAPPY\",GZIP:2,2:\"GZIP\",BROTLI:3,3:\"BROTLI\",LZ4:4,4:\"LZ4\",ZSTD:5,5:\"ZSTD\",LZ4_RAW:6,6:\"LZ4_RAW\"}),vNt=Object.freeze({PLAIN:0,0:\"PLAIN\",PLAIN_DICTIONARY:1,1:\"PLAIN_DICTIONARY\",RLE:2,2:\"RLE\",BIT_PACKED:3,3:\"BIT_PACKED\",DELTA_BINARY_PACKED:4,4:\"DELTA_BINARY_PACKED\",DELTA_LENGTH_BYTE_ARRAY:5,5:\"DELTA_LENGTH_BYTE_ARRAY\",DELTA_BYTE_ARRAY:6,6:\"DELTA_BYTE_ARRAY\",RLE_DICTIONARY:7,7:\"RLE_DICTIONARY\",BYTE_STREAM_SPLIT:8,8:\"BYTE_STREAM_SPLIT\"}),xNt=Object.freeze({V1:0,0:\"V1\",V2:1,1:\"V2\"}),PD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_arrowschema_free(t)}copy(){let t=Xt.arrowschema_copy(this.__wbg_ptr);return e.__wrap(t)}},ID=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_columnchunkmetadata_free(t)}filePath(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_filePath(i,this.__wbg_ptr);var t=or()[i/4+0],r=or()[i/4+1];let s;return t!==0&&(s=Fu(t,r).slice(),Xt.__wbindgen_free(t,r*1)),s}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}fileOffset(){return Xt.columnchunkmetadata_fileOffset(this.__wbg_ptr)}pathInSchema(){let t,r;try{let n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_pathInSchema(n,this.__wbg_ptr);var i=or()[n/4+0],s=or()[n/4+1];return t=i,r=s,Fu(i,s)}finally{Xt.__wbindgen_add_to_stack_pointer(16),Xt.__wbindgen_free(t,r,1)}}statistics_exist(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_statistics_exist(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return t!==0}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsMinValue(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsMinValue(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsMaxValue(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsMaxValue(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsNullCount(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsNullCount(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numValues(){return Xt.columnchunkmetadata_numValues(this.__wbg_ptr)}compressedSize(){return Xt.columnchunkmetadata_compressedSize(this.__wbg_ptr)}uncompressedSize(){return Xt.columnchunkmetadata_uncompressedSize(this.__wbg_ptr)}dataPageOffset(){return Xt.columnchunkmetadata_dataPageOffset(this.__wbg_ptr)}hasIndexPage(){return Xt.columnchunkmetadata_hasIndexPage(this.__wbg_ptr)!==0}indexPageOffset(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_indexPageOffset(i,this.__wbg_ptr);var t=or()[i/4+0],r=$G()[i/8+1];return t===0?void 0:r}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}dictionaryPageOffset(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_dictionaryPageOffset(i,this.__wbg_ptr);var t=or()[i/4+0],r=$G()[i/8+1];return t===0?void 0:r}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numColumnEncodings(){return Xt.columnchunkmetadata_numColumnEncodings(this.__wbg_ptr)>>>0}byteRange(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_byteRange(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=Lct(t,r).slice();return Xt.__wbindgen_free(t,r*8),i}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},CD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_datatype_free(t)}},oP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_ffirecordbatch_free(t)}arrayAddr(){return Xt.ffirecordbatch_arrayAddr(this.__wbg_ptr)}schemaAddr(){return Xt.ffirecordbatch_schemaAddr(this.__wbg_ptr)}},aP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_ffitable_free(t)}numBatches(){return Xt.ffitable_numBatches(this.__wbg_ptr)>>>0}schemaAddr(){return Xt.ffitable_schemaAddr(this.__wbg_ptr)}arrayAddr(t){return Xt.ffitable_arrayAddr(this.__wbg_ptr,t)}drop(){let t=this.__destroy_into_raw();Xt.ffitable_drop(t)}};var LD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_filemetadata_free(t)}copy(){let t=Xt.filemetadata_copy(this.__wbg_ptr);return e.__wrap(t)}version(){return Xt.filemetadata_version(this.__wbg_ptr)}numRows(){return Xt.filemetadata_numRows(this.__wbg_ptr)>>>0}createdBy(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_createdBy(i,this.__wbg_ptr);var t=or()[i/4+0],r=or()[i/4+1];let s;return t!==0&&(s=Fu(t,r).slice(),Xt.__wbindgen_free(t,r*1)),s}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numRowGroups(){return Xt.filemetadata_numRowGroups(this.__wbg_ptr)>>>0}rowGroup(t){let r=Xt.filemetadata_rowGroup(this.__wbg_ptr,t);return DD.__wrap(r)}schema(){let t=Xt.filemetadata_schema(this.__wbg_ptr);return OD.__wrap(t)}keyValueMetadata(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_keyValueMetadata(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return Yn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}arrowSchema(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_arrowSchema(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return PD.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}};var kD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_intounderlyingsource_free(t)}pull(t){let r=Xt.intounderlyingsource_pull(this.__wbg_ptr,gr(t));return Yn(r)}cancel(){let t=this.__destroy_into_raw();Xt.intounderlyingsource_cancel(t)}};var RD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_queuingstrategy_free(t)}get highWaterMark(){return Xt.queuingstrategy_highWaterMark(this.__wbg_ptr)}};var lP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_recordbatch_free(t)}get numRows(){return Xt.recordbatch_numRows(this.__wbg_ptr)>>>0}get numColumns(){return Xt.recordbatch_numColumns(this.__wbg_ptr)>>>0}get schema(){let t=Xt.recordbatch_schema(this.__wbg_ptr);return cP.__wrap(t)}column(t){let r=Xt.recordbatch_column(this.__wbg_ptr,t);return r===0?void 0:uP.__wrap(r)}column_by_name(t){let r=cw(t,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),i=qh,s=Xt.recordbatch_column_by_name(this.__wbg_ptr,r,i);return s===0?void 0:uP.__wrap(s)}toFFI(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_toFFI(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return oP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoFFI(){try{let s=this.__destroy_into_raw(),n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_intoFFI(n,s);var t=or()[n/4+0],r=or()[n/4+1],i=or()[n/4+2];if(i)throw Yn(r);return oP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoIPCStream(){try{let o=this.__destroy_into_raw(),c=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_intoIPCStream(c,o);var t=or()[c/4+0],r=or()[c/4+1],i=or()[c/4+2],s=or()[c/4+3];if(s)throw Yn(i);var n=JG(t,r).slice();return Xt.__wbindgen_free(t,r*1),n}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},DD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_rowgroupmetadata_free(t)}numRows(){return Xt.rowgroupmetadata_numRows(this.__wbg_ptr)>>>0}numColumns(){return Xt.rowgroupmetadata_numColumns(this.__wbg_ptr)>>>0}column(t){let r=Xt.rowgroupmetadata_column(this.__wbg_ptr,t);return ID.__wrap(r)}totalByteSize(){return Xt.rowgroupmetadata_totalByteSize(this.__wbg_ptr)>>>0}compressedSize(){return Xt.rowgroupmetadata_compressedSize(this.__wbg_ptr)>>>0}},cP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_schema_free(t)}},OD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_schemadescriptor_free(t)}name(){let t,r;try{let n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.schemadescriptor_name(n,this.__wbg_ptr);var i=or()[n/4+0],s=or()[n/4+1];return t=i,r=s,Fu(i,s)}finally{Xt.__wbindgen_add_to_stack_pointer(16),Xt.__wbindgen_free(t,r,1)}}numColumns(){return Xt.schemadescriptor_numColumns(this.__wbg_ptr)>>>0}numFields(){return Xt.schemadescriptor_numFields(this.__wbg_ptr)>>>0}},BD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_table_free(t)}get schema(){let t=Xt.table_schema(this.__wbg_ptr);return cP.__wrap(t)}recordBatch(t){let r=Xt.table_recordBatch(this.__wbg_ptr,t);return r===0?void 0:lP.__wrap(r)}get numBatches(){return Xt.table_numBatches(this.__wbg_ptr)>>>0}toFFI(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_toFFI(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Yn(r);return aP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoFFI(){try{let s=this.__destroy_into_raw(),n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_intoFFI(n,s);var t=or()[n/4+0],r=or()[n/4+1],i=or()[n/4+2];if(i)throw Yn(r);return aP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoIPCStream(){try{let o=this.__destroy_into_raw(),c=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_intoIPCStream(c,o);var t=or()[c/4+0],r=or()[c/4+1],i=or()[c/4+2],s=or()[c/4+3];if(s)throw Yn(i);var n=JG(t,r).slice();return Xt.__wbindgen_free(t,r*1),n}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}static fromIPCFile(t){try{let n=Xt.__wbindgen_add_to_stack_pointer(-16),o=ED(t,Xt.__wbindgen_malloc),c=qh;Xt.table_fromIPCFile(n,o,c);var r=or()[n/4+0],i=or()[n/4+1],s=or()[n/4+2];if(s)throw Yn(i);return e.__wrap(r)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}static fromIPCStream(t){try{let n=Xt.__wbindgen_add_to_stack_pointer(-16),o=ED(t,Xt.__wbindgen_malloc),c=qh;Xt.table_fromIPCStream(n,o,c);var r=or()[n/4+0],i=or()[n/4+1],s=or()[n/4+2];if(s)throw Yn(i);return e.__wrap(r)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},uP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_vector_free(t)}data_type(){let t=Xt.vector_data_type(this.__wbg_ptr);return CD.__wrap(t)}};async function Rct(e,t){if(typeof Response==\"function\"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==\"function\")try{return await WebAssembly.instantiateStreaming(e,t)}catch(i){if(e.headers.get(\"Content-Type\")!=\"application/wasm\")console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",i);else throw i}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{let r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function Dct(){let e={};return e.wbg={},e.wbg.__wbg_filemetadata_new=function(t){let r=LD.__wrap(t);return gr(r)},e.wbg.__wbindgen_error_new=function(t,r){let i=new Error(Fu(t,r));return gr(i)},e.wbg.__wbindgen_object_drop_ref=function(t){Yn(t)},e.wbg.__wbindgen_string_new=function(t,r){let i=Fu(t,r);return gr(i)},e.wbg.__wbindgen_bigint_from_i64=function(t){return gr(t)},e.wbg.__wbindgen_number_new=function(t){return gr(t)},e.wbg.__wbindgen_object_clone_ref=function(t){let r=Qe(t);return gr(r)},e.wbg.__wbg_fetch_b5d6bebed1e6c2d2=function(t){let r=fetch(Qe(t));return gr(r)},e.wbg.__wbg_newwithsource_620c192b0682807b=function(t,r){let i=new ReadableStream(kD.__wrap(t),RD.__wrap(r));return gr(i)},e.wbg.__wbg_close_e9110ca16e2567db=function(t){Qe(t).close()},e.wbg.__wbg_enqueue_d71a1a518e21f5c3=function(t,r){Qe(t).enqueue(Qe(r))},e.wbg.__wbg_byobRequest_08c18cee35def1f4=function(t){let r=Qe(t).byobRequest;return TD(r)?0:gr(r)},e.wbg.__wbg_close_da7e6fb9d9851e5a=function(t){Qe(t).close()},e.wbg.__wbg_view_231340b0dd8a2484=function(t){let r=Qe(t).view;return TD(r)?0:gr(r)},e.wbg.__wbg_respond_8fadc5f5c9d95422=function(t,r){Qe(t).respond(r>>>0)},e.wbg.__wbg_buffer_4e79326814bdd393=function(t){let r=Qe(t).buffer;return gr(r)},e.wbg.__wbg_byteOffset_b69b0a07afccce19=function(t){return Qe(t).byteOffset},e.wbg.__wbg_byteLength_5299848ed3264181=function(t){return Qe(t).byteLength},e.wbg.__wbindgen_string_get=function(t,r){let i=Qe(r),s=typeof i==\"string\"?i:void 0;var n=TD(s)?0:cw(s,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),o=qh;or()[t/4+1]=o,or()[t/4+0]=n},e.wbg.__wbg_set_bd72c078edfa51ad=function(t,r,i){Qe(t)[Yn(r)]=Yn(i)},e.wbg.__wbg_String_4370c5505c674d30=function(t,r){let i=String(Qe(r)),s=cw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbindgen_cb_drop=function(t){let r=Yn(t).original;return r.cnt--==1?(r.a=0,!0):!1},e.wbg.__wbg_recordbatch_new=function(t){let r=lP.__wrap(t);return gr(r)},e.wbg.__wbg_randomFillSync_dc1e9a60c158336d=function(){return Eo(function(t,r){Qe(t).randomFillSync(Yn(r))},arguments)},e.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab=function(){return Eo(function(t,r){Qe(t).getRandomValues(Qe(r))},arguments)},e.wbg.__wbg_crypto_c48a774b022d20ac=function(t){let r=Qe(t).crypto;return gr(r)},e.wbg.__wbindgen_is_object=function(t){let r=Qe(t);return typeof r==\"object\"&&r!==null},e.wbg.__wbg_process_298734cf255a885d=function(t){let r=Qe(t).process;return gr(r)},e.wbg.__wbg_versions_e2e78e134e3e5d01=function(t){let r=Qe(t).versions;return gr(r)},e.wbg.__wbg_node_1cd7a5d853dbea79=function(t){let r=Qe(t).node;return gr(r)},e.wbg.__wbindgen_is_string=function(t){return typeof Qe(t)==\"string\"},e.wbg.__wbg_require_8f08ceecec0f4fee=function(){return Eo(function(){let t=module.require;return gr(t)},arguments)},e.wbg.__wbg_msCrypto_bcb970640f50a1e8=function(t){let r=Qe(t).msCrypto;return gr(r)},e.wbg.__wbg_signal_4bd18fb489af2d4c=function(t){let r=Qe(t).signal;return gr(r)},e.wbg.__wbg_new_55c9955722952374=function(){return Eo(function(){let t=new AbortController;return gr(t)},arguments)},e.wbg.__wbg_abort_654b796176d117aa=function(t){Qe(t).abort()},e.wbg.__wbg_new_1eead62f64ca15ce=function(){return Eo(function(){let t=new Headers;return gr(t)},arguments)},e.wbg.__wbg_append_fda9e3432e3e88da=function(){return Eo(function(t,r,i,s,n){Qe(t).append(Fu(r,i),Fu(s,n))},arguments)},e.wbg.__wbg_fetch_8eaf01857a5bb21f=function(t,r){let i=Qe(t).fetch(Qe(r));return gr(i)},e.wbg.__wbg_instanceof_Response_fc4327dbfcdf5ced=function(t){let r;try{r=Qe(t)instanceof Response}catch{r=!1}return r},e.wbg.__wbg_url_8503de97f69da463=function(t,r){let i=Qe(r).url,s=cw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbg_status_ac85a3142a84caa2=function(t){return Qe(t).status},e.wbg.__wbg_headers_b70de86b8e989bc0=function(t){let r=Qe(t).headers;return gr(r)},e.wbg.__wbg_arrayBuffer_288fb3538806e85c=function(){return Eo(function(t){let r=Qe(t).arrayBuffer();return gr(r)},arguments)},e.wbg.__wbg_newwithstrandinit_cad5cd6038c7ff5d=function(){return Eo(function(t,r,i){let s=new Request(Fu(t,r),Qe(i));return gr(s)},arguments)},e.wbg.__wbindgen_is_function=function(t){return typeof Qe(t)==\"function\"},e.wbg.__wbg_newnoargs_581967eacc0e2604=function(t,r){let i=new Function(Fu(t,r));return gr(i)},e.wbg.__wbg_new_56693dbed0c32988=function(){return gr(new Map)},e.wbg.__wbg_next_526fc47e980da008=function(t){let r=Qe(t).next;return gr(r)},e.wbg.__wbg_next_ddb3312ca1c4e32a=function(){return Eo(function(t){let r=Qe(t).next();return gr(r)},arguments)},e.wbg.__wbg_done_5c1f01fb660d73b5=function(t){return Qe(t).done},e.wbg.__wbg_value_1695675138684bd5=function(t){let r=Qe(t).value;return gr(r)},e.wbg.__wbg_iterator_97f0c81209c6c35a=function(){return gr(Symbol.iterator)},e.wbg.__wbg_get_97b561fb56f034b5=function(){return Eo(function(t,r){let i=Reflect.get(Qe(t),Qe(r));return gr(i)},arguments)},e.wbg.__wbg_call_cb65541d95d71282=function(){return Eo(function(t,r){let i=Qe(t).call(Qe(r));return gr(i)},arguments)},e.wbg.__wbg_new_b51585de1b234aff=function(){let t=new Object;return gr(t)},e.wbg.__wbg_self_1ff1d729e9aae938=function(){return Eo(function(){let t=self.self;return gr(t)},arguments)},e.wbg.__wbg_window_5f4faef6c12b79ec=function(){return Eo(function(){let t=window.window;return gr(t)},arguments)},e.wbg.__wbg_globalThis_1d39714405582d3c=function(){return Eo(function(){let t=globalThis.globalThis;return gr(t)},arguments)},e.wbg.__wbg_global_651f05c6a0944d1c=function(){return Eo(function(){let t=global.global;return gr(t)},arguments)},e.wbg.__wbindgen_is_undefined=function(t){return Qe(t)===void 0},e.wbg.__wbg_new_d258248ed531ff54=function(t,r){let i=new Error(Fu(t,r));return gr(i)},e.wbg.__wbg_call_01734de55d61e11d=function(){return Eo(function(t,r,i){let s=Qe(t).call(Qe(r),Qe(i));return gr(s)},arguments)},e.wbg.__wbg_set_bedc3d02d0f05eb0=function(t,r,i){let s=Qe(t).set(Qe(r),Qe(i));return gr(s)},e.wbg.__wbg_new_43f1b47c28813cbd=function(t,r){try{var i={a:t,b:r},s=(o,c)=>{let f=i.a;i.a=0;try{return kct(f,i.b,o,c)}finally{i.a=f}};let n=new Promise(s);return gr(n)}finally{i.a=i.b=0}},e.wbg.__wbg_resolve_53698b95aaf7fcf8=function(t){let r=Promise.resolve(Qe(t));return gr(r)},e.wbg.__wbg_then_f7e06ee3c11698eb=function(t,r){let i=Qe(t).then(Qe(r));return gr(i)},e.wbg.__wbg_then_b2267541e2a73865=function(t,r,i){let s=Qe(t).then(Qe(r),Qe(i));return gr(s)},e.wbg.__wbg_buffer_085ec1f694018c4f=function(t){let r=Qe(t).buffer;return gr(r)},e.wbg.__wbg_newwithbyteoffsetandlength_6da8e527659b86aa=function(t,r,i){let s=new Uint8Array(Qe(t),r>>>0,i>>>0);return gr(s)},e.wbg.__wbg_new_8125e318e6245eed=function(t){let r=new Uint8Array(Qe(t));return gr(r)},e.wbg.__wbg_set_5cf90238115182c3=function(t,r,i){Qe(t).set(Qe(r),i>>>0)},e.wbg.__wbg_length_72e2208bbc0efc61=function(t){return Qe(t).length},e.wbg.__wbg_newwithlength_e5d69174d6984cd7=function(t){let r=new Uint8Array(t>>>0);return gr(r)},e.wbg.__wbg_subarray_13db269f57aa838d=function(t,r,i){let s=Qe(t).subarray(r>>>0,i>>>0);return gr(s)},e.wbg.__wbg_stringify_e25465938f3f611f=function(){return Eo(function(t){let r=JSON.stringify(Qe(t));return gr(r)},arguments)},e.wbg.__wbg_has_c5fcd020291e56b8=function(){return Eo(function(t,r){return Reflect.has(Qe(t),Qe(r))},arguments)},e.wbg.__wbg_set_092e06b0f9d71865=function(){return Eo(function(t,r,i){return Reflect.set(Qe(t),Qe(r),Qe(i))},arguments)},e.wbg.__wbindgen_debug_string=function(t,r){let i=MD(Qe(r)),s=cw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbindgen_throw=function(t,r){throw new Error(Fu(t,r))},e.wbg.__wbindgen_memory=function(){let t=Xt.memory;return gr(t)},e.wbg.__wbindgen_function_table=function(){let t=Xt.__wbindgen_export_2;return gr(t)},e.wbg.__wbindgen_closure_wrapper1527=function(t,r,i){let s=Pct(t,r,304,Ict);return gr(s)},e}function Oct(e,t){return Xt=e.exports,t9.__wbindgen_wasm_module=t,hw=null,fw=null,uw=null,lw=null,Xt}async function t9(e){if(Xt!==void 0)return Xt;typeof e>\"u\"&&(e=new URL(\"arrow2_bg.wasm\",import.meta.url));let t=Dct();(typeof e==\"string\"||typeof Request==\"function\"&&e instanceof Request||typeof URL==\"function\"&&e instanceof URL)&&(e=fetch(e));let{instance:r,module:i}=await Rct(await e,t);return Oct(r,i)}var e9=t9;function i9(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var s=0,i=Object.getOwnPropertySymbols(e);s=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function ii(e){return this instanceof ii?(this.v=e,this):new ii(e)}function Kc(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var i=r.apply(e,t||[]),s,n=[];return s={},o(\"next\"),o(\"throw\"),o(\"return\"),s[Symbol.asyncIterator]=function(){return this},s;function o(R){i[R]&&(s[R]=function(N){return new Promise(function(j,Y){n.push([R,N,j,Y])>1||c(R,N)})})}function c(R,N){try{f(i[R](N))}catch(j){C(n[0][3],j)}}function f(R){R.value instanceof ii?Promise.resolve(R.value.v).then(_,w):C(n[0][2],R)}function _(R){c(\"next\",R)}function w(R){c(\"throw\",R)}function C(R,N){R(N),n.shift(),n.length&&c(n[0][0],n[0][1])}}function Xy(e){var t,r;return t={},i(\"next\"),i(\"throw\",function(s){throw s}),i(\"return\"),t[Symbol.iterator]=function(){return this},t;function i(s,n){t[s]=e[s]?function(o){return(r=!r)?{value:ii(e[s](o)),done:!1}:n?n(o):o}:n}}function Zh(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof r9==\"function\"?r9(e):e[Symbol.iterator](),r={},i(\"next\"),i(\"throw\"),i(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=e[n]&&function(o){return new Promise(function(c,f){o=e[n](o),s(c,f,o.done,o.value)})}}function s(n,o,c,f){Promise.resolve(f).then(function(_){n({value:_,done:c})},o)}}var jD={};dA(jD,{compareArrayLike:()=>VD,joinUint8Arrays:()=>tu,memcpy:()=>mw,rebaseValueOffsets:()=>_P,toArrayBufferView:()=>Ai,toArrayBufferViewAsyncIterator:()=>Qh,toArrayBufferViewIterator:()=>Xf,toBigInt64Array:()=>gP,toBigUint64Array:()=>Wct,toFloat32Array:()=>Hct,toFloat32ArrayAsyncIterator:()=>aut,toFloat32ArrayIterator:()=>Jct,toFloat64Array:()=>qct,toFloat64ArrayAsyncIterator:()=>lut,toFloat64ArrayIterator:()=>tut,toInt16Array:()=>Vct,toInt16ArrayAsyncIterator:()=>iut,toInt16ArrayIterator:()=>Qct,toInt32Array:()=>fg,toInt32ArrayAsyncIterator:()=>nut,toInt32ArrayIterator:()=>$ct,toInt8Array:()=>Uct,toInt8ArrayAsyncIterator:()=>rut,toInt8ArrayIterator:()=>Yct,toUint16Array:()=>jct,toUint16ArrayAsyncIterator:()=>sut,toUint16ArrayIterator:()=>Xct,toUint32Array:()=>Gct,toUint32ArrayAsyncIterator:()=>out,toUint32ArrayIterator:()=>Kct,toUint8Array:()=>Rr,toUint8ArrayAsyncIterator:()=>UD,toUint8ArrayIterator:()=>ND,toUint8ClampedArray:()=>Zct,toUint8ClampedArrayAsyncIterator:()=>cut,toUint8ClampedArrayIterator:()=>eut});var Bct=new TextDecoder(\"utf-8\"),pw=e=>Bct.decode(e),Fct=new TextEncoder,$f=e=>Fct.encode(e);var zct=e=>typeof e==\"number\",n9=e=>typeof e==\"boolean\",Po=e=>typeof e==\"function\",Pl=e=>e!=null&&Object(e)===e,Jc=e=>Pl(e)&&Po(e.then);var Yh=e=>Pl(e)&&Po(e[Symbol.iterator]),zu=e=>Pl(e)&&Po(e[Symbol.asyncIterator]),hP=e=>Pl(e)&&Pl(e.schema);var fP=e=>Pl(e)&&\"done\"in e&&\"value\"in e;var dP=e=>Pl(e)&&Po(e.stat)&&zct(e.fd);var pP=e=>Pl(e)&&Aw(e.body),AP=e=>\"_getDOMStream\"in e&&\"_getNodeStream\"in e,s9=e=>Pl(e)&&Po(e.abort)&&Po(e.getWriter)&&!AP(e),Aw=e=>Pl(e)&&Po(e.cancel)&&Po(e.getReader)&&!AP(e),o9=e=>Pl(e)&&Po(e.end)&&Po(e.write)&&n9(e.writable)&&!AP(e),mP=e=>Pl(e)&&Po(e.read)&&Po(e.pipe)&&n9(e.readable)&&!AP(e),a9=e=>Pl(e)&&Po(e.clear)&&Po(e.bytes)&&Po(e.position)&&Po(e.setPosition)&&Po(e.capacity)&&Po(e.getBufferIdentifier)&&Po(e.createLong);var zD=typeof SharedArrayBuffer<\"u\"?SharedArrayBuffer:ArrayBuffer;function Nct(e){let t=e[0]?[e[0]]:[],r,i,s,n;for(let o,c,f=0,_=0,w=e.length;++fw+C.byteLength,0),s,n,o,c=0,f=-1,_=Math.min(t||Number.POSITIVE_INFINITY,i);for(let w=r.length;++fAi(Int8Array,e),Vct=e=>Ai(Int16Array,e),fg=e=>Ai(Int32Array,e),gP=e=>Ai(BigInt64Array,e),Rr=e=>Ai(Uint8Array,e),jct=e=>Ai(Uint16Array,e),Gct=e=>Ai(Uint32Array,e),Wct=e=>Ai(BigUint64Array,e),Hct=e=>Ai(Float32Array,e),qct=e=>Ai(Float64Array,e),Zct=e=>Ai(Uint8ClampedArray,e),FD=e=>(e.next(),e);function*Xf(e,t){let r=function*(s){yield s},i=typeof t==\"string\"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof zD?r(t):Yh(t)?t:r(t);return yield*FD(function*(s){let n=null;do n=s.next(yield Ai(e,n));while(!n.done)}(i[Symbol.iterator]())),new e}var Yct=e=>Xf(Int8Array,e),Qct=e=>Xf(Int16Array,e),$ct=e=>Xf(Int32Array,e),ND=e=>Xf(Uint8Array,e),Xct=e=>Xf(Uint16Array,e),Kct=e=>Xf(Uint32Array,e),Jct=e=>Xf(Float32Array,e),tut=e=>Xf(Float64Array,e),eut=e=>Xf(Uint8ClampedArray,e);function Qh(e,t){return Kc(this,arguments,function*(){if(Jc(t))return yield ii(yield ii(yield*Xy(Zh(Qh(e,yield ii(t))))));let i=function(o){return Kc(this,arguments,function*(){yield yield ii(yield ii(o))})},s=function(o){return Kc(this,arguments,function*(){yield ii(yield*Xy(Zh(FD(function*(c){let f=null;do f=c.next(yield f?.value);while(!f.done)}(o[Symbol.iterator]())))))})},n=typeof t==\"string\"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof zD?i(t):Yh(t)?s(t):zu(t)?t:i(t);return yield ii(yield*Xy(Zh(FD(function(o){return Kc(this,arguments,function*(){let c=null;do c=yield ii(o.next(yield yield ii(Ai(e,c))));while(!c.done)})}(n[Symbol.asyncIterator]()))))),yield ii(new e)})}var rut=e=>Qh(Int8Array,e),iut=e=>Qh(Int16Array,e),nut=e=>Qh(Int32Array,e),UD=e=>Qh(Uint8Array,e),sut=e=>Qh(Uint16Array,e),out=e=>Qh(Uint32Array,e),aut=e=>Qh(Float32Array,e),lut=e=>Qh(Float64Array,e),cut=e=>Qh(Uint8ClampedArray,e);function _P(e,t,r){if(e!==0){r=r.slice(0,t);for(let i=-1,s=r.length;++i0)do if(e[r]!==t[r])return!1;while(++r(e.next(),e);function*uut(e){let t,r=!1,i=[],s,n,o,c=0;function f(){return n===\"peek\"?tu(i,o)[0]:([s,i,c]=tu(i,o),s)}({cmd:n,size:o}=(yield null)||{cmd:\"read\",size:0});let _=ND(e)[Symbol.iterator]();try{do if({done:t,value:s}=Number.isNaN(o-c)?_.next():_.next(o-c),!t&&s.byteLength>0&&(i.push(s),c+=s.byteLength),t||o<=c)do({cmd:n,size:o}=yield f());while(o0&&(s.push(n),f+=n.byteLength),r||c<=f)do({cmd:o,size:c}=yield yield ii(_()));while(c0&&(s.push(Rr(n)),f+=n.byteLength),r||c<=f)do({cmd:o,size:c}=yield yield ii(_()));while(c{})}get closed(){return this.reader?this.reader.closed.catch(()=>{}):Promise.resolve()}releaseLock(){this.reader&&this.reader.releaseLock(),this.reader=null}cancel(t){return sr(this,void 0,void 0,function*(){let{reader:r,source:i}=this;r&&(yield r.cancel(t).catch(()=>{})),i&&i.locked&&this.releaseLock()})}read(t){return sr(this,void 0,void 0,function*(){if(t===0)return{done:this.reader==null,value:new Uint8Array(0)};let r=yield this.reader.read();return!r.done&&(r.value=Rr(r)),r})}},GD=(e,t)=>{let r=s=>i([t,s]),i;return[t,r,new Promise(s=>(i=s)&&e.once(t,r))]};function dut(e){return Kc(this,arguments,function*(){let r=[],i=\"error\",s=!1,n=null,o,c,f=0,_=[],w;function C(){return o===\"peek\"?tu(_,c)[0]:([w,_,f]=tu(_,c),w)}if({cmd:o,size:c}=(yield yield ii(null))||{cmd:\"read\",size:0},e.isTTY)return yield yield ii(new Uint8Array(0)),yield ii(null);try{r[0]=GD(e,\"end\"),r[1]=GD(e,\"error\");do{if(r[2]=GD(e,\"readable\"),[i,n]=yield ii(Promise.race(r.map(N=>N[2]))),i===\"error\")break;if((s=i===\"end\")||(Number.isFinite(c-f)?(w=Rr(e.read(c-f)),w.byteLength0&&(_.push(w),f+=w.byteLength)),s||c<=f)do({cmd:o,size:c}=yield yield ii(C()));while(c{for(let[$,K]of N)e.off($,K);try{let $=e.destroy;$&&$.call(e,j),j=void 0}catch($){j=$||j}finally{j!=null?rt(j):Y()}})}})}var en;(function(e){e[e.V1=0]=\"V1\",e[e.V2=1]=\"V2\",e[e.V3=2]=\"V3\",e[e.V4=3]=\"V4\",e[e.V5=4]=\"V5\"})(en||(en={}));var Mn;(function(e){e[e.Sparse=0]=\"Sparse\",e[e.Dense=1]=\"Dense\"})(Mn||(Mn={}));var qi;(function(e){e[e.HALF=0]=\"HALF\",e[e.SINGLE=1]=\"SINGLE\",e[e.DOUBLE=2]=\"DOUBLE\"})(qi||(qi={}));var Xs;(function(e){e[e.DAY=0]=\"DAY\",e[e.MILLISECOND=1]=\"MILLISECOND\"})(Xs||(Xs={}));var pr;(function(e){e[e.SECOND=0]=\"SECOND\",e[e.MILLISECOND=1]=\"MILLISECOND\",e[e.MICROSECOND=2]=\"MICROSECOND\",e[e.NANOSECOND=3]=\"NANOSECOND\"})(pr||(pr={}));var Io;(function(e){e[e.YEAR_MONTH=0]=\"YEAR_MONTH\",e[e.DAY_TIME=1]=\"DAY_TIME\",e[e.MONTH_DAY_NANO=2]=\"MONTH_DAY_NANO\"})(Io||(Io={}));var Kf=new Int32Array(2),vP=new Float32Array(Kf.buffer),xP=new Float64Array(Kf.buffer),Ky=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var gw;(function(e){e[e.UTF8_BYTES=1]=\"UTF8_BYTES\",e[e.UTF16_STRING=2]=\"UTF16_STRING\"})(gw||(gw={}));var eu=class e{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new e(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8}writeInt32(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8,this.bytes_[t+2]=r>>16,this.bytes_[t+3]=r>>24}writeUint32(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8,this.bytes_[t+2]=r>>16,this.bytes_[t+3]=r>>24}writeInt64(t,r){this.writeInt32(t,Number(BigInt.asIntN(32,r))),this.writeInt32(t+4,Number(BigInt.asIntN(32,r>>BigInt(32))))}writeUint64(t,r){this.writeUint32(t,Number(BigInt.asUintN(32,r))),this.writeUint32(t+4,Number(BigInt.asUintN(32,r>>BigInt(32))))}writeFloat32(t,r){vP[0]=r,this.writeInt32(t,Kf[0])}writeFloat64(t,r){xP[0]=r,this.writeInt32(t,Kf[Ky?0:1]),this.writeInt32(t+4,Kf[Ky?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let i=~(this.bb.capacity()-this.space+r)+1&t-1;for(;this.space=0&&this.vtable[r]==0;r--);let i=r+1;for(;r>=0;r--)this.addInt16(this.vtable[r]!=0?t-this.vtable[r]:0);let s=2;this.addInt16(t-this.object_start);let n=(i+s)*2;this.addInt16(n);let o=0,c=this.space;t:for(r=0;r=0;o--)this.writeInt8(n.charCodeAt(o))}this.prep(this.minalign,4+s),this.addOffset(t),s&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,r){this.finish(t,r,!0)}requiredField(t,r){let i=this.bb.capacity()-t,s=i-this.bb.readInt32(i);if(!(r=0;i--)t.addInt32(r[i]);return t.endVector()}static startTypeIdsVector(t,r){t.startVector(4,r,4)}static endUnion(t){return t.endObject()}static createUnion(t,r,i){return e.startUnion(t),e.addMode(t,r),e.addTypeIds(t,i),e.endUnion(t)}};var Pw=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsUtf8(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsUtf8(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static startUtf8(t){t.startObject(0)}static endUtf8(t){return t.endObject()}static createUtf8(t){return e.startUtf8(t),e.endUtf8(t)}};var En;(function(e){e[e.NONE=0]=\"NONE\",e[e.Null=1]=\"Null\",e[e.Int=2]=\"Int\",e[e.FloatingPoint=3]=\"FloatingPoint\",e[e.Binary=4]=\"Binary\",e[e.Utf8=5]=\"Utf8\",e[e.Bool=6]=\"Bool\",e[e.Decimal=7]=\"Decimal\",e[e.Date=8]=\"Date\",e[e.Time=9]=\"Time\",e[e.Timestamp=10]=\"Timestamp\",e[e.Interval=11]=\"Interval\",e[e.List=12]=\"List\",e[e.Struct_=13]=\"Struct_\",e[e.Union=14]=\"Union\",e[e.FixedSizeBinary=15]=\"FixedSizeBinary\",e[e.FixedSizeList=16]=\"FixedSizeList\",e[e.Map=17]=\"Map\",e[e.Duration=18]=\"Duration\",e[e.LargeBinary=19]=\"LargeBinary\",e[e.LargeUtf8=20]=\"LargeUtf8\",e[e.LargeList=21]=\"LargeList\",e[e.RunEndEncoded=22]=\"RunEndEncoded\"})(En||(En={}));var rl=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsField(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsField(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}name(t){let r=this.bb.__offset(this.bb_pos,4);return r?this.bb.__string(this.bb_pos+r,t):null}nullable(){let t=this.bb.__offset(this.bb_pos,6);return t?!!this.bb.readInt8(this.bb_pos+t):!1}typeType(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint8(this.bb_pos+t):En.NONE}type(t){let r=this.bb.__offset(this.bb_pos,10);return r?this.bb.__union(t,this.bb_pos+r):null}dictionary(t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new Jf).__init(this.bb.__indirect(this.bb_pos+r),this.bb):null}children(t,r){let i=this.bb.__offset(this.bb_pos,14);return i?(r||new e).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}childrenLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,16);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.__vector_len(this.bb_pos+t):0}static startField(t){t.startObject(7)}static addName(t,r){t.addFieldOffset(0,r,0)}static addNullable(t,r){t.addFieldInt8(1,+r,0)}static addTypeType(t,r){t.addFieldInt8(2,r,En.NONE)}static addType(t,r){t.addFieldOffset(3,r,0)}static addDictionary(t,r){t.addFieldOffset(4,r,0)}static addChildren(t,r){t.addFieldOffset(5,r,0)}static createChildrenVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startChildrenVector(t,r){t.startVector(4,r,4)}static addCustomMetadata(t,r){t.addFieldOffset(6,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endField(t){return t.endObject()}};var sc=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsSchema(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSchema(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}endianness(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):tm.Little}fields(t,r){let i=this.bb.__offset(this.bb_pos,6);return i?(r||new rl).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}fieldsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,8);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}features(t){let r=this.bb.__offset(this.bb_pos,10);return r?this.bb.readInt64(this.bb.__vector(this.bb_pos+r)+t*8):BigInt(0)}featuresLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}static startSchema(t){t.startObject(4)}static addEndianness(t,r){t.addFieldInt16(0,r,tm.Little)}static addFields(t,r){t.addFieldOffset(1,r,0)}static createFieldsVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startFieldsVector(t,r){t.startVector(4,r,4)}static addCustomMetadata(t,r){t.addFieldOffset(2,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static addFeatures(t,r){t.addFieldOffset(3,r,0)}static createFeaturesVector(t,r){t.startVector(8,r.length,8);for(let i=r.length-1;i>=0;i--)t.addInt64(r[i]);return t.endVector()}static startFeaturesVector(t,r){t.startVector(8,r,8)}static endSchema(t){return t.endObject()}static finishSchemaBuffer(t,r){t.finish(r)}static finishSizePrefixedSchemaBuffer(t,r){t.finish(r,void 0,!0)}static createSchema(t,r,i,s,n){return e.startSchema(t),e.addEndianness(t,r),e.addFields(t,i),e.addCustomMetadata(t,s),e.addFeatures(t,n),e.endSchema(t)}};var bi;(function(e){e[e.NONE=0]=\"NONE\",e[e.Schema=1]=\"Schema\",e[e.DictionaryBatch=2]=\"DictionaryBatch\",e[e.RecordBatch=3]=\"RecordBatch\",e[e.Tensor=4]=\"Tensor\",e[e.SparseTensor=5]=\"SparseTensor\"})(bi||(bi={}));var Rt;(function(e){e[e.NONE=0]=\"NONE\",e[e.Null=1]=\"Null\",e[e.Int=2]=\"Int\",e[e.Float=3]=\"Float\",e[e.Binary=4]=\"Binary\",e[e.Utf8=5]=\"Utf8\",e[e.Bool=6]=\"Bool\",e[e.Decimal=7]=\"Decimal\",e[e.Date=8]=\"Date\",e[e.Time=9]=\"Time\",e[e.Timestamp=10]=\"Timestamp\",e[e.Interval=11]=\"Interval\",e[e.List=12]=\"List\",e[e.Struct=13]=\"Struct\",e[e.Union=14]=\"Union\",e[e.FixedSizeBinary=15]=\"FixedSizeBinary\",e[e.FixedSizeList=16]=\"FixedSizeList\",e[e.Map=17]=\"Map\",e[e.Duration=18]=\"Duration\",e[e.LargeBinary=19]=\"LargeBinary\",e[e.LargeUtf8=20]=\"LargeUtf8\",e[e.Dictionary=-1]=\"Dictionary\",e[e.Int8=-2]=\"Int8\",e[e.Int16=-3]=\"Int16\",e[e.Int32=-4]=\"Int32\",e[e.Int64=-5]=\"Int64\",e[e.Uint8=-6]=\"Uint8\",e[e.Uint16=-7]=\"Uint16\",e[e.Uint32=-8]=\"Uint32\",e[e.Uint64=-9]=\"Uint64\",e[e.Float16=-10]=\"Float16\",e[e.Float32=-11]=\"Float32\",e[e.Float64=-12]=\"Float64\",e[e.DateDay=-13]=\"DateDay\",e[e.DateMillisecond=-14]=\"DateMillisecond\",e[e.TimestampSecond=-15]=\"TimestampSecond\",e[e.TimestampMillisecond=-16]=\"TimestampMillisecond\",e[e.TimestampMicrosecond=-17]=\"TimestampMicrosecond\",e[e.TimestampNanosecond=-18]=\"TimestampNanosecond\",e[e.TimeSecond=-19]=\"TimeSecond\",e[e.TimeMillisecond=-20]=\"TimeMillisecond\",e[e.TimeMicrosecond=-21]=\"TimeMicrosecond\",e[e.TimeNanosecond=-22]=\"TimeNanosecond\",e[e.DenseUnion=-23]=\"DenseUnion\",e[e.SparseUnion=-24]=\"SparseUnion\",e[e.IntervalDayTime=-25]=\"IntervalDayTime\",e[e.IntervalYearMonth=-26]=\"IntervalYearMonth\",e[e.DurationSecond=-27]=\"DurationSecond\",e[e.DurationMillisecond=-28]=\"DurationMillisecond\",e[e.DurationMicrosecond=-29]=\"DurationMicrosecond\",e[e.DurationNanosecond=-30]=\"DurationNanosecond\"})(Rt||(Rt={}));var Ci;(function(e){e[e.OFFSET=0]=\"OFFSET\",e[e.DATA=1]=\"DATA\",e[e.VALIDITY=2]=\"VALIDITY\",e[e.TYPE=3]=\"TYPE\"})(Ci||(Ci={}));var cO={};dA(cO,{clampIndex:()=>tht,clampRange:()=>Vw,createElementComparator:()=>um});var HD={};dA(HD,{valueToString:()=>Jh});function Jh(e){if(e===null)return\"null\";if(e===void 0)return\"undefined\";switch(typeof e){case\"number\":return`${e}`;case\"bigint\":return`${e}`;case\"string\":return`\"${e}\"`}return typeof e[Symbol.toPrimitive]==\"function\"?e[Symbol.toPrimitive](\"string\"):ArrayBuffer.isView(e)?e instanceof BigInt64Array||e instanceof BigUint64Array?`[${[...e].map(t=>Jh(t))}]`:`[${e}]`:ArrayBuffer.isView(e)?`[${e}]`:JSON.stringify(e,(t,r)=>typeof r==\"bigint\"?`${r}`:r)}var ZD={};dA(ZD,{BN:()=>Cw,bigNumToBigInt:()=>u9,bigNumToString:()=>iv,isArrowBigNumSymbol:()=>l9});var l9=Symbol.for(\"isArrowBigNum\");function tf(e,...t){return t.length===0?Object.setPrototypeOf(Ai(this.TypedArray,e),this.constructor.prototype):Object.setPrototypeOf(new this.TypedArray(e,...t),this.constructor.prototype)}tf.prototype[l9]=!0;tf.prototype.toJSON=function(){return`\"${iv(this)}\"`};tf.prototype.valueOf=function(){return c9(this)};tf.prototype.toString=function(){return iv(this)};tf.prototype[Symbol.toPrimitive]=function(e=\"default\"){switch(e){case\"number\":return c9(this);case\"string\":return iv(this);case\"default\":return u9(this)}return iv(this)};function ev(...e){return tf.apply(this,e)}function rv(...e){return tf.apply(this,e)}function Iw(...e){return tf.apply(this,e)}Object.setPrototypeOf(ev.prototype,Object.create(Int32Array.prototype));Object.setPrototypeOf(rv.prototype,Object.create(Uint32Array.prototype));Object.setPrototypeOf(Iw.prototype,Object.create(Uint32Array.prototype));Object.assign(ev.prototype,tf.prototype,{constructor:ev,signed:!0,TypedArray:Int32Array,BigIntArray:BigInt64Array});Object.assign(rv.prototype,tf.prototype,{constructor:rv,signed:!1,TypedArray:Uint32Array,BigIntArray:BigUint64Array});Object.assign(Iw.prototype,tf.prototype,{constructor:Iw,signed:!0,TypedArray:Uint32Array,BigIntArray:BigUint64Array});function c9(e){let{buffer:t,byteOffset:r,length:i,signed:s}=e,n=new BigUint64Array(t,r,i),o=s&&n.at(-1)&BigInt(1)<{if(e.byteLength===8)return`${new e.BigIntArray(e.buffer,e.byteOffset,1)[0]}`;if(!e.signed)return qD(e);let t=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);if(new Int16Array([t.at(-1)])[0]>=0)return qD(e);t=t.slice();let i=1;for(let n=0;ne.byteLength===8?new e.BigIntArray(e.buffer,e.byteOffset,1)[0]:iv(e);function qD(e){let t=\"\",r=new Uint32Array(2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),s=new Uint32Array((i=new Uint16Array(i).reverse()).buffer),n=-1,o=i.length-1;do{for(r[0]=i[n=0];nNumber.MAX_SAFE_INTEGER))throw new TypeError(`${e} is not safe to convert to a number.`);return Number(e)}var h9,f9,d9,p9,A9,m9,g9,_9,y9,v9,x9,b9,w9,S9,T9,M9,E9,P9,I9,C9,L9,k9,Ne=class e{static isNull(t){return t?.typeId===Rt.Null}static isInt(t){return t?.typeId===Rt.Int}static isFloat(t){return t?.typeId===Rt.Float}static isBinary(t){return t?.typeId===Rt.Binary}static isLargeBinary(t){return t?.typeId===Rt.LargeBinary}static isUtf8(t){return t?.typeId===Rt.Utf8}static isLargeUtf8(t){return t?.typeId===Rt.LargeUtf8}static isBool(t){return t?.typeId===Rt.Bool}static isDecimal(t){return t?.typeId===Rt.Decimal}static isDate(t){return t?.typeId===Rt.Date}static isTime(t){return t?.typeId===Rt.Time}static isTimestamp(t){return t?.typeId===Rt.Timestamp}static isInterval(t){return t?.typeId===Rt.Interval}static isDuration(t){return t?.typeId===Rt.Duration}static isList(t){return t?.typeId===Rt.List}static isStruct(t){return t?.typeId===Rt.Struct}static isUnion(t){return t?.typeId===Rt.Union}static isFixedSizeBinary(t){return t?.typeId===Rt.FixedSizeBinary}static isFixedSizeList(t){return t?.typeId===Rt.FixedSizeList}static isMap(t){return t?.typeId===Rt.Map}static isDictionary(t){return t?.typeId===Rt.Dictionary}static isDenseUnion(t){return e.isUnion(t)&&t.mode===Mn.Dense}static isSparseUnion(t){return e.isUnion(t)&&t.mode===Mn.Sparse}constructor(t){this.typeId=t}};h9=Symbol.toStringTag;Ne[h9]=(e=>(e.children=null,e.ArrayType=Array,e.OffsetArrayType=Int32Array,e[Symbol.toStringTag]=\"DataType\"))(Ne.prototype);var ea=class extends Ne{constructor(){super(Rt.Null)}toString(){return\"Null\"}};f9=Symbol.toStringTag;ea[f9]=(e=>e[Symbol.toStringTag]=\"Null\")(ea.prototype);var is=class extends Ne{constructor(t,r){super(Rt.Int),this.isSigned=t,this.bitWidth=r}get ArrayType(){switch(this.bitWidth){case 8:return this.isSigned?Int8Array:Uint8Array;case 16:return this.isSigned?Int16Array:Uint16Array;case 32:return this.isSigned?Int32Array:Uint32Array;case 64:return this.isSigned?BigInt64Array:BigUint64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`${this.isSigned?\"I\":\"Ui\"}nt${this.bitWidth}`}};d9=Symbol.toStringTag;is[d9]=(e=>(e.isSigned=null,e.bitWidth=null,e[Symbol.toStringTag]=\"Int\"))(is.prototype);var Lw=class extends is{constructor(){super(!0,8)}get ArrayType(){return Int8Array}},kw=class extends is{constructor(){super(!0,16)}get ArrayType(){return Int16Array}},ef=class extends is{constructor(){super(!0,32)}get ArrayType(){return Int32Array}},Rw=class extends is{constructor(){super(!0,64)}get ArrayType(){return BigInt64Array}},Dw=class extends is{constructor(){super(!1,8)}get ArrayType(){return Uint8Array}},Ow=class extends is{constructor(){super(!1,16)}get ArrayType(){return Uint16Array}},Bw=class extends is{constructor(){super(!1,32)}get ArrayType(){return Uint32Array}},Fw=class extends is{constructor(){super(!1,64)}get ArrayType(){return BigUint64Array}};Object.defineProperty(Lw.prototype,\"ArrayType\",{value:Int8Array});Object.defineProperty(kw.prototype,\"ArrayType\",{value:Int16Array});Object.defineProperty(ef.prototype,\"ArrayType\",{value:Int32Array});Object.defineProperty(Rw.prototype,\"ArrayType\",{value:BigInt64Array});Object.defineProperty(Dw.prototype,\"ArrayType\",{value:Uint8Array});Object.defineProperty(Ow.prototype,\"ArrayType\",{value:Uint16Array});Object.defineProperty(Bw.prototype,\"ArrayType\",{value:Uint32Array});Object.defineProperty(Fw.prototype,\"ArrayType\",{value:BigUint64Array});var lo=class extends Ne{constructor(t){super(Rt.Float),this.precision=t}get ArrayType(){switch(this.precision){case qi.HALF:return Uint16Array;case qi.SINGLE:return Float32Array;case qi.DOUBLE:return Float64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`Float${this.precision<<5||16}`}};p9=Symbol.toStringTag;lo[p9]=(e=>(e.precision=null,e[Symbol.toStringTag]=\"Float\"))(lo.prototype);var zw=class extends lo{constructor(){super(qi.HALF)}},Nw=class extends lo{constructor(){super(qi.SINGLE)}},nv=class extends lo{constructor(){super(qi.DOUBLE)}};Object.defineProperty(zw.prototype,\"ArrayType\",{value:Uint16Array});Object.defineProperty(Nw.prototype,\"ArrayType\",{value:Float32Array});Object.defineProperty(nv.prototype,\"ArrayType\",{value:Float64Array});var Uu=class extends Ne{constructor(){super(Rt.Binary)}toString(){return\"Binary\"}};A9=Symbol.toStringTag;Uu[A9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Binary\"))(Uu.prototype);var ed=class extends Ne{constructor(){super(Rt.LargeBinary)}toString(){return\"LargeBinary\"}};m9=Symbol.toStringTag;ed[m9]=(e=>(e.ArrayType=Uint8Array,e.OffsetArrayType=BigInt64Array,e[Symbol.toStringTag]=\"LargeBinary\"))(ed.prototype);var Vu=class extends Ne{constructor(){super(Rt.Utf8)}toString(){return\"Utf8\"}};g9=Symbol.toStringTag;Vu[g9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Utf8\"))(Vu.prototype);var rd=class extends Ne{constructor(){super(Rt.LargeUtf8)}toString(){return\"LargeUtf8\"}};_9=Symbol.toStringTag;rd[_9]=(e=>(e.ArrayType=Uint8Array,e.OffsetArrayType=BigInt64Array,e[Symbol.toStringTag]=\"LargeUtf8\"))(rd.prototype);var oc=class extends Ne{constructor(){super(Rt.Bool)}toString(){return\"Bool\"}};y9=Symbol.toStringTag;oc[y9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Bool\"))(oc.prototype);var ju=class extends Ne{constructor(t,r,i=128){super(Rt.Decimal),this.scale=t,this.precision=r,this.bitWidth=i}toString(){return`Decimal[${this.precision}e${this.scale>0?\"+\":\"\"}${this.scale}]`}};v9=Symbol.toStringTag;ju[v9]=(e=>(e.scale=null,e.precision=null,e.ArrayType=Uint32Array,e[Symbol.toStringTag]=\"Decimal\"))(ju.prototype);var Gu=class extends Ne{constructor(t){super(Rt.Date),this.unit=t}toString(){return`Date${(this.unit+1)*32}<${Xs[this.unit]}>`}};x9=Symbol.toStringTag;Gu[x9]=(e=>(e.unit=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Date\"))(Gu.prototype);var ac=class extends Ne{constructor(t,r){super(Rt.Time),this.unit=t,this.bitWidth=r}toString(){return`Time${this.bitWidth}<${pr[this.unit]}>`}get ArrayType(){switch(this.bitWidth){case 32:return Int32Array;case 64:return BigInt64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}};b9=Symbol.toStringTag;ac[b9]=(e=>(e.unit=null,e.bitWidth=null,e[Symbol.toStringTag]=\"Time\"))(ac.prototype);var Wu=class extends Ne{constructor(t,r){super(Rt.Timestamp),this.unit=t,this.timezone=r}toString(){return`Timestamp<${pr[this.unit]}${this.timezone?`, ${this.timezone}`:\"\"}>`}};w9=Symbol.toStringTag;Wu[w9]=(e=>(e.unit=null,e.timezone=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Timestamp\"))(Wu.prototype);var Hu=class extends Ne{constructor(t){super(Rt.Interval),this.unit=t}toString(){return`Interval<${Io[this.unit]}>`}};S9=Symbol.toStringTag;Hu[S9]=(e=>(e.unit=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Interval\"))(Hu.prototype);var qu=class extends Ne{constructor(t){super(Rt.Duration),this.unit=t}toString(){return`Duration<${pr[this.unit]}>`}};T9=Symbol.toStringTag;qu[T9]=(e=>(e.unit=null,e.ArrayType=BigInt64Array,e[Symbol.toStringTag]=\"Duration\"))(qu.prototype);var lc=class extends Ne{constructor(t){super(Rt.List),this.children=[t]}toString(){return`List<${this.valueType}>`}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}};M9=Symbol.toStringTag;lc[M9]=(e=>(e.children=null,e[Symbol.toStringTag]=\"List\"))(lc.prototype);var un=class extends Ne{constructor(t){super(Rt.Struct),this.children=t}toString(){return`Struct<{${this.children.map(t=>`${t.name}:${t.type}`).join(\", \")}}>`}};E9=Symbol.toStringTag;un[E9]=(e=>(e.children=null,e[Symbol.toStringTag]=\"Struct\"))(un.prototype);var cc=class extends Ne{constructor(t,r,i){super(Rt.Union),this.mode=t,this.children=i,this.typeIds=r=Int32Array.from(r),this.typeIdToChildIndex=r.reduce((s,n,o)=>(s[n]=o)&&s||s,Object.create(null))}toString(){return`${this[Symbol.toStringTag]}<${this.children.map(t=>`${t.type}`).join(\" | \")}>`}};P9=Symbol.toStringTag;cc[P9]=(e=>(e.mode=null,e.typeIds=null,e.children=null,e.typeIdToChildIndex=null,e.ArrayType=Int8Array,e[Symbol.toStringTag]=\"Union\"))(cc.prototype);var Zu=class extends Ne{constructor(t){super(Rt.FixedSizeBinary),this.byteWidth=t}toString(){return`FixedSizeBinary[${this.byteWidth}]`}};I9=Symbol.toStringTag;Zu[I9]=(e=>(e.byteWidth=null,e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"FixedSizeBinary\"))(Zu.prototype);var Il=class extends Ne{constructor(t,r){super(Rt.FixedSizeList),this.listSize=t,this.children=[r]}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}toString(){return`FixedSizeList[${this.listSize}]<${this.valueType}>`}};C9=Symbol.toStringTag;Il[C9]=(e=>(e.children=null,e.listSize=null,e[Symbol.toStringTag]=\"FixedSizeList\"))(Il.prototype);var uc=class extends Ne{constructor(t,r=!1){var i,s,n;if(super(Rt.Map),this.children=[t],this.keysSorted=r,t&&(t.name=\"entries\",!((i=t?.type)===null||i===void 0)&&i.children)){let o=(s=t?.type)===null||s===void 0?void 0:s.children[0];o&&(o.name=\"key\");let c=(n=t?.type)===null||n===void 0?void 0:n.children[1];c&&(c.name=\"value\")}}get keyType(){return this.children[0].type.children[0].type}get valueType(){return this.children[0].type.children[1].type}get childType(){return this.children[0].type}toString(){return`Map<{${this.children[0].type.children.map(t=>`${t.name}:${t.type}`).join(\", \")}}>`}};L9=Symbol.toStringTag;uc[L9]=(e=>(e.children=null,e.keysSorted=null,e[Symbol.toStringTag]=\"Map_\"))(uc.prototype);var put=(e=>()=>++e)(-1),hc=class extends Ne{constructor(t,r,i,s){super(Rt.Dictionary),this.indices=r,this.dictionary=t,this.isOrdered=s||!1,this.id=i==null?put():ms(i)}get children(){return this.dictionary.children}get valueType(){return this.dictionary}get ArrayType(){return this.dictionary.ArrayType}toString(){return`Dictionary<${this.indices}, ${this.dictionary}>`}};k9=Symbol.toStringTag;hc[k9]=(e=>(e.id=null,e.indices=null,e.isOrdered=null,e.dictionary=null,e[Symbol.toStringTag]=\"Dictionary\"))(hc.prototype);function iu(e){let t=e;switch(e.typeId){case Rt.Decimal:return e.bitWidth/32;case Rt.Timestamp:return 2;case Rt.Date:return 1+t.unit;case Rt.Interval:return 1+t.unit;case Rt.FixedSizeList:return t.listSize;case Rt.FixedSizeBinary:return t.byteWidth;default:return 1}}var Mr=class{visitMany(t,...r){return t.map((i,s)=>this.visit(i,...r.map(n=>n[s])))}visit(...t){return this.getVisitFn(t[0],!1).apply(this,t)}getVisitFn(t,r=!0){return Aut(this,t,r)}getVisitFnByTypeId(t,r=!0){return sv(this,t,r)}visitNull(t,...r){return null}visitBool(t,...r){return null}visitInt(t,...r){return null}visitFloat(t,...r){return null}visitUtf8(t,...r){return null}visitLargeUtf8(t,...r){return null}visitBinary(t,...r){return null}visitLargeBinary(t,...r){return null}visitFixedSizeBinary(t,...r){return null}visitDate(t,...r){return null}visitTimestamp(t,...r){return null}visitTime(t,...r){return null}visitDecimal(t,...r){return null}visitList(t,...r){return null}visitStruct(t,...r){return null}visitUnion(t,...r){return null}visitDictionary(t,...r){return null}visitInterval(t,...r){return null}visitDuration(t,...r){return null}visitFixedSizeList(t,...r){return null}visitMap(t,...r){return null}};function Aut(e,t,r=!0){return typeof t==\"number\"?sv(e,t,r):typeof t==\"string\"&&t in Rt?sv(e,Rt[t],r):t&&t instanceof Ne?sv(e,R9(t),r):t?.type&&t.type instanceof Ne?sv(e,R9(t.type),r):sv(e,Rt.NONE,r)}function sv(e,t,r=!0){let i=null;switch(t){case Rt.Null:i=e.visitNull;break;case Rt.Bool:i=e.visitBool;break;case Rt.Int:i=e.visitInt;break;case Rt.Int8:i=e.visitInt8||e.visitInt;break;case Rt.Int16:i=e.visitInt16||e.visitInt;break;case Rt.Int32:i=e.visitInt32||e.visitInt;break;case Rt.Int64:i=e.visitInt64||e.visitInt;break;case Rt.Uint8:i=e.visitUint8||e.visitInt;break;case Rt.Uint16:i=e.visitUint16||e.visitInt;break;case Rt.Uint32:i=e.visitUint32||e.visitInt;break;case Rt.Uint64:i=e.visitUint64||e.visitInt;break;case Rt.Float:i=e.visitFloat;break;case Rt.Float16:i=e.visitFloat16||e.visitFloat;break;case Rt.Float32:i=e.visitFloat32||e.visitFloat;break;case Rt.Float64:i=e.visitFloat64||e.visitFloat;break;case Rt.Utf8:i=e.visitUtf8;break;case Rt.LargeUtf8:i=e.visitLargeUtf8;break;case Rt.Binary:i=e.visitBinary;break;case Rt.LargeBinary:i=e.visitLargeBinary;break;case Rt.FixedSizeBinary:i=e.visitFixedSizeBinary;break;case Rt.Date:i=e.visitDate;break;case Rt.DateDay:i=e.visitDateDay||e.visitDate;break;case Rt.DateMillisecond:i=e.visitDateMillisecond||e.visitDate;break;case Rt.Timestamp:i=e.visitTimestamp;break;case Rt.TimestampSecond:i=e.visitTimestampSecond||e.visitTimestamp;break;case Rt.TimestampMillisecond:i=e.visitTimestampMillisecond||e.visitTimestamp;break;case Rt.TimestampMicrosecond:i=e.visitTimestampMicrosecond||e.visitTimestamp;break;case Rt.TimestampNanosecond:i=e.visitTimestampNanosecond||e.visitTimestamp;break;case Rt.Time:i=e.visitTime;break;case Rt.TimeSecond:i=e.visitTimeSecond||e.visitTime;break;case Rt.TimeMillisecond:i=e.visitTimeMillisecond||e.visitTime;break;case Rt.TimeMicrosecond:i=e.visitTimeMicrosecond||e.visitTime;break;case Rt.TimeNanosecond:i=e.visitTimeNanosecond||e.visitTime;break;case Rt.Decimal:i=e.visitDecimal;break;case Rt.List:i=e.visitList;break;case Rt.Struct:i=e.visitStruct;break;case Rt.Union:i=e.visitUnion;break;case Rt.DenseUnion:i=e.visitDenseUnion||e.visitUnion;break;case Rt.SparseUnion:i=e.visitSparseUnion||e.visitUnion;break;case Rt.Dictionary:i=e.visitDictionary;break;case Rt.Interval:i=e.visitInterval;break;case Rt.IntervalDayTime:i=e.visitIntervalDayTime||e.visitInterval;break;case Rt.IntervalYearMonth:i=e.visitIntervalYearMonth||e.visitInterval;break;case Rt.Duration:i=e.visitDuration;break;case Rt.DurationSecond:i=e.visitDurationSecond||e.visitDuration;break;case Rt.DurationMillisecond:i=e.visitDurationMillisecond||e.visitDuration;break;case Rt.DurationMicrosecond:i=e.visitDurationMicrosecond||e.visitDuration;break;case Rt.DurationNanosecond:i=e.visitDurationNanosecond||e.visitDuration;break;case Rt.FixedSizeList:i=e.visitFixedSizeList;break;case Rt.Map:i=e.visitMap;break}if(typeof i==\"function\")return i;if(!r)return()=>null;throw new Error(`Unrecognized type '${Rt[t]}'`)}function R9(e){switch(e.typeId){case Rt.Null:return Rt.Null;case Rt.Int:{let{bitWidth:t,isSigned:r}=e;switch(t){case 8:return r?Rt.Int8:Rt.Uint8;case 16:return r?Rt.Int16:Rt.Uint16;case 32:return r?Rt.Int32:Rt.Uint32;case 64:return r?Rt.Int64:Rt.Uint64}return Rt.Int}case Rt.Float:switch(e.precision){case qi.HALF:return Rt.Float16;case qi.SINGLE:return Rt.Float32;case qi.DOUBLE:return Rt.Float64}return Rt.Float;case Rt.Binary:return Rt.Binary;case Rt.LargeBinary:return Rt.LargeBinary;case Rt.Utf8:return Rt.Utf8;case Rt.LargeUtf8:return Rt.LargeUtf8;case Rt.Bool:return Rt.Bool;case Rt.Decimal:return Rt.Decimal;case Rt.Time:switch(e.unit){case pr.SECOND:return Rt.TimeSecond;case pr.MILLISECOND:return Rt.TimeMillisecond;case pr.MICROSECOND:return Rt.TimeMicrosecond;case pr.NANOSECOND:return Rt.TimeNanosecond}return Rt.Time;case Rt.Timestamp:switch(e.unit){case pr.SECOND:return Rt.TimestampSecond;case pr.MILLISECOND:return Rt.TimestampMillisecond;case pr.MICROSECOND:return Rt.TimestampMicrosecond;case pr.NANOSECOND:return Rt.TimestampNanosecond}return Rt.Timestamp;case Rt.Date:switch(e.unit){case Xs.DAY:return Rt.DateDay;case Xs.MILLISECOND:return Rt.DateMillisecond}return Rt.Date;case Rt.Interval:switch(e.unit){case Io.DAY_TIME:return Rt.IntervalDayTime;case Io.YEAR_MONTH:return Rt.IntervalYearMonth}return Rt.Interval;case Rt.Duration:switch(e.unit){case pr.SECOND:return Rt.DurationSecond;case pr.MILLISECOND:return Rt.DurationMillisecond;case pr.MICROSECOND:return Rt.DurationMicrosecond;case pr.NANOSECOND:return Rt.DurationNanosecond}return Rt.Duration;case Rt.Map:return Rt.Map;case Rt.List:return Rt.List;case Rt.Struct:return Rt.Struct;case Rt.Union:switch(e.mode){case Mn.Dense:return Rt.DenseUnion;case Mn.Sparse:return Rt.SparseUnion}return Rt.Union;case Rt.FixedSizeBinary:return Rt.FixedSizeBinary;case Rt.FixedSizeList:return Rt.FixedSizeList;case Rt.Dictionary:return Rt.Dictionary}throw new Error(`Unrecognized type '${Rt[e.typeId]}'`)}Mr.prototype.visitInt8=null;Mr.prototype.visitInt16=null;Mr.prototype.visitInt32=null;Mr.prototype.visitInt64=null;Mr.prototype.visitUint8=null;Mr.prototype.visitUint16=null;Mr.prototype.visitUint32=null;Mr.prototype.visitUint64=null;Mr.prototype.visitFloat16=null;Mr.prototype.visitFloat32=null;Mr.prototype.visitFloat64=null;Mr.prototype.visitDateDay=null;Mr.prototype.visitDateMillisecond=null;Mr.prototype.visitTimestampSecond=null;Mr.prototype.visitTimestampMillisecond=null;Mr.prototype.visitTimestampMicrosecond=null;Mr.prototype.visitTimestampNanosecond=null;Mr.prototype.visitTimeSecond=null;Mr.prototype.visitTimeMillisecond=null;Mr.prototype.visitTimeMicrosecond=null;Mr.prototype.visitTimeNanosecond=null;Mr.prototype.visitDenseUnion=null;Mr.prototype.visitSparseUnion=null;Mr.prototype.visitIntervalDayTime=null;Mr.prototype.visitIntervalYearMonth=null;Mr.prototype.visitDuration=null;Mr.prototype.visitDurationSecond=null;Mr.prototype.visitDurationMillisecond=null;Mr.prototype.visitDurationMicrosecond=null;Mr.prototype.visitDurationNanosecond=null;var YD={};dA(YD,{float64ToUint16:()=>Uw,uint16ToFloat64:()=>SP});var D9=new Float64Array(1),ov=new Uint32Array(D9.buffer);function SP(e){let t=(e&31744)>>10,r=(e&1023)/1024,i=Math.pow(-1,(e&32768)>>15);switch(t){case 31:return i*(r?Number.NaN:1/0);case 0:return i*(r?6103515625e-14*r:0)}return i*Math.pow(2,t-15)*(1+r)}function Uw(e){if(e!==e)return 32256;D9[0]=e;let t=(ov[1]&2147483648)>>16&65535,r=ov[1]&2146435072,i=0;return r>=1089470464?ov[0]>0?r=31744:(r=(r&2080374784)>>16,i=(ov[1]&1048575)>>10):r<=1056964608?(i=1048576+(ov[1]&1048575),i=1048576+(i<<(r>>20)-998)>>21,r=0):(r=r-1056964608>>10,i=(ov[1]&1048575)+512>>10),t|r|i&65535}var kr=class extends Mr{};function Wr(e){return(t,r,i)=>{if(t.setValid(r,i!=null))return e(t,r,i)}}var mut=(e,t,r)=>{e[t]=Math.trunc(r/864e5)},QD=(e,t,r)=>{e[t]=Math.trunc(r%4294967296),e[t+1]=Math.trunc(r/4294967296)},gut=(e,t,r)=>{e[t]=Math.trunc(r*1e3%4294967296),e[t+1]=Math.trunc(r*1e3/4294967296)},_ut=(e,t,r)=>{e[t]=Math.trunc(r*1e6%4294967296),e[t+1]=Math.trunc(r*1e6/4294967296)},O9=(e,t,r,i)=>{if(r+1{let s=e+r;i?t[s>>3]|=1<>3]&=~(1<{e[t]=r},$D=({values:e},t,r)=>{e[t]=r},B9=({values:e},t,r)=>{e[t]=Uw(r)},vut=(e,t,r)=>{switch(e.type.precision){case qi.HALF:return B9(e,t,r);case qi.SINGLE:case qi.DOUBLE:return $D(e,t,r)}},TP=({values:e},t,r)=>{mut(e,t,r.valueOf())},MP=({values:e},t,r)=>{QD(e,t*2,r.valueOf())},XD=({stride:e,values:t},r,i)=>{t.set(i.subarray(0,e),e*r)},F9=({values:e,valueOffsets:t},r,i)=>O9(e,t,r,i),z9=({values:e,valueOffsets:t},r,i)=>O9(e,t,r,$f(i)),KD=(e,t,r)=>{e.type.unit===Xs.DAY?TP(e,t,r):MP(e,t,r)},EP=({values:e},t,r)=>QD(e,t*2,r/1e3),PP=({values:e},t,r)=>QD(e,t*2,r),IP=({values:e},t,r)=>gut(e,t*2,r),CP=({values:e},t,r)=>_ut(e,t*2,r),JD=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return EP(e,t,r);case pr.MILLISECOND:return PP(e,t,r);case pr.MICROSECOND:return IP(e,t,r);case pr.NANOSECOND:return CP(e,t,r)}},LP=({values:e},t,r)=>{e[t]=r},kP=({values:e},t,r)=>{e[t]=r},RP=({values:e},t,r)=>{e[t]=r},DP=({values:e},t,r)=>{e[t]=r},tO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return LP(e,t,r);case pr.MILLISECOND:return kP(e,t,r);case pr.MICROSECOND:return RP(e,t,r);case pr.NANOSECOND:return DP(e,t,r)}},eO=({values:e,stride:t},r,i)=>{e.set(i.subarray(0,t),t*r)},xut=(e,t,r)=>{let i=e.children[0],s=e.valueOffsets,n=xa.getVisitFn(i);if(Array.isArray(r))for(let o=-1,c=s[t],f=s[t+1];c{let i=e.children[0],{valueOffsets:s}=e,n=xa.getVisitFn(i),{[t]:o,[t+1]:c}=s,f=r instanceof Map?r.entries():Object.entries(r);for(let _ of f)if(n(i,o,_),++o>=c)break},wut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t[n]),Sut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t.get(n)),Tut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t.get(s.name)),Mut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t[s.name]),Eut=(e,t,r)=>{let i=e.type.children.map(n=>xa.getVisitFn(n.type)),s=r instanceof Map?Tut(t,r):r instanceof wr?Sut(t,r):Array.isArray(r)?wut(t,r):Mut(t,r);e.type.children.forEach((n,o)=>s(i[o],e.children[o],n,o))},Put=(e,t,r)=>{e.type.mode===Mn.Dense?N9(e,t,r):U9(e,t,r)},N9=(e,t,r)=>{let i=e.type.typeIdToChildIndex[e.typeIds[t]],s=e.children[i];xa.visit(s,e.valueOffsets[t],r)},U9=(e,t,r)=>{let i=e.type.typeIdToChildIndex[e.typeIds[t]],s=e.children[i];xa.visit(s,t,r)},Iut=(e,t,r)=>{var i;(i=e.dictionary)===null||i===void 0||i.set(e.values[t],r)},rO=(e,t,r)=>{e.type.unit===Io.DAY_TIME?OP(e,t,r):BP(e,t,r)},OP=({values:e},t,r)=>{e.set(r.subarray(0,2),2*t)},BP=({values:e},t,r)=>{e[t]=r[0]*12+r[1]%12},FP=({values:e},t,r)=>{e[t]=r},zP=({values:e},t,r)=>{e[t]=r},NP=({values:e},t,r)=>{e[t]=r},UP=({values:e},t,r)=>{e[t]=r},iO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return FP(e,t,r);case pr.MILLISECOND:return zP(e,t,r);case pr.MICROSECOND:return NP(e,t,r);case pr.NANOSECOND:return UP(e,t,r)}},Cut=(e,t,r)=>{let{stride:i}=e,s=e.children[0],n=xa.getVisitFn(s);if(Array.isArray(r))for(let o=-1,c=t*i;++o`${Jh(t)}: ${Jh(r)}`).join(\", \")}}`}[Symbol.for(\"nodejs.util.inspect.custom\")](){return this.toString()}[Symbol.iterator](){return new nO(this[rf],this[av])}},nO=class{constructor(t,r){this.childIndex=0,this.children=t.children,this.rowIndex=r,this.childFields=t.type.children,this.numChildren=this.childFields.length}[Symbol.iterator](){return this}next(){let t=this.childIndex;return tr.name)}has(t,r){return t[rf].type.children.findIndex(i=>i.name===r)!==-1}getOwnPropertyDescriptor(t,r){if(t[rf].type.children.findIndex(i=>i.name===r)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(t,r){if(Reflect.has(t,r))return t[r];let i=t[rf].type.children.findIndex(s=>s.name===r);if(i!==-1){let s=co.visit(t[rf].children[i],t[av]);return Reflect.set(t,r,s),s}}set(t,r,i){let s=t[rf].type.children.findIndex(n=>n.name===r);return s!==-1?(xa.visit(t[rf].children[s],t[av],i),Reflect.set(t,r,i)):Reflect.has(t,r)||typeof r==\"symbol\"?Reflect.set(t,r,i):!1}};var Er=class extends Mr{};function zr(e){return(t,r)=>t.getValid(r)?e(t,r):null}var Lut=(e,t)=>864e5*e[t],oO=(e,t)=>4294967296*e[t+1]+(e[t]>>>0),kut=(e,t)=>4294967296*(e[t+1]/1e3)+(e[t]>>>0)/1e3,Rut=(e,t)=>4294967296*(e[t+1]/1e6)+(e[t]>>>0)/1e6,V9=e=>new Date(e),Dut=(e,t)=>V9(Lut(e,t)),Out=(e,t)=>V9(oO(e,t)),But=(e,t)=>null,j9=(e,t,r)=>{if(r+1>=t.length)return null;let i=ms(t[r]),s=ms(t[r+1]);return e.subarray(i,s)},Fut=({offset:e,values:t},r)=>{let i=e+r;return(t[i>>3]&1<Dut(e,t),W9=({values:e},t)=>Out(e,t*2),cm=({stride:e,values:t},r)=>t[e*r],zut=({stride:e,values:t},r)=>SP(t[e*r]),H9=({values:e},t)=>e[t],Nut=({stride:e,values:t},r)=>t.subarray(e*r,e*(r+1)),q9=({values:e,valueOffsets:t},r)=>j9(e,t,r),Z9=({values:e,valueOffsets:t},r)=>{let i=j9(e,t,r);return i!==null?pw(i):null},Uut=({values:e},t)=>e[t],Vut=({type:e,values:t},r)=>e.precision!==qi.HALF?t[r]:SP(t[r]),jut=(e,t)=>e.type.unit===Xs.DAY?G9(e,t):W9(e,t),Y9=({values:e},t)=>1e3*oO(e,t*2),Q9=({values:e},t)=>oO(e,t*2),$9=({values:e},t)=>kut(e,t*2),X9=({values:e},t)=>Rut(e,t*2),Gut=(e,t)=>{switch(e.type.unit){case pr.SECOND:return Y9(e,t);case pr.MILLISECOND:return Q9(e,t);case pr.MICROSECOND:return $9(e,t);case pr.NANOSECOND:return X9(e,t)}},K9=({values:e},t)=>e[t],J9=({values:e},t)=>e[t],tW=({values:e},t)=>e[t],eW=({values:e},t)=>e[t],Wut=(e,t)=>{switch(e.type.unit){case pr.SECOND:return K9(e,t);case pr.MILLISECOND:return J9(e,t);case pr.MICROSECOND:return tW(e,t);case pr.NANOSECOND:return eW(e,t)}},Hut=({values:e,stride:t},r)=>Cw.decimal(e.subarray(t*r,t*(r+1))),qut=(e,t)=>{let{valueOffsets:r,stride:i,children:s}=e,{[t*i]:n,[t*i+1]:o}=r,f=s[0].slice(n,o-n);return new wr([f])},Zut=(e,t)=>{let{valueOffsets:r,children:i}=e,{[t]:s,[t+1]:n}=r,o=i[0];return new id(o.slice(s,n-s))},Yut=(e,t)=>new lm(e,t),Qut=(e,t)=>e.type.mode===Mn.Dense?rW(e,t):iW(e,t),rW=(e,t)=>{let r=e.type.typeIdToChildIndex[e.typeIds[t]],i=e.children[r];return co.visit(i,e.valueOffsets[t])},iW=(e,t)=>{let r=e.type.typeIdToChildIndex[e.typeIds[t]],i=e.children[r];return co.visit(i,t)},$ut=(e,t)=>{var r;return(r=e.dictionary)===null||r===void 0?void 0:r.get(e.values[t])},Xut=(e,t)=>e.type.unit===Io.DAY_TIME?nW(e,t):sW(e,t),nW=({values:e},t)=>e.subarray(2*t,2*(t+1)),sW=({values:e},t)=>{let r=e[t],i=new Int32Array(2);return i[0]=Math.trunc(r/12),i[1]=Math.trunc(r%12),i},oW=({values:e},t)=>e[t],aW=({values:e},t)=>e[t],lW=({values:e},t)=>e[t],cW=({values:e},t)=>e[t],Kut=(e,t)=>{switch(e.type.unit){case pr.SECOND:return oW(e,t);case pr.MILLISECOND:return aW(e,t);case pr.MICROSECOND:return lW(e,t);case pr.NANOSECOND:return cW(e,t)}},Jut=(e,t)=>{let{stride:r,children:i}=e,n=i[0].slice(t*r,r);return new wr([n])};Er.prototype.visitNull=zr(But);Er.prototype.visitBool=zr(Fut);Er.prototype.visitInt=zr(Uut);Er.prototype.visitInt8=zr(cm);Er.prototype.visitInt16=zr(cm);Er.prototype.visitInt32=zr(cm);Er.prototype.visitInt64=zr(H9);Er.prototype.visitUint8=zr(cm);Er.prototype.visitUint16=zr(cm);Er.prototype.visitUint32=zr(cm);Er.prototype.visitUint64=zr(H9);Er.prototype.visitFloat=zr(Vut);Er.prototype.visitFloat16=zr(zut);Er.prototype.visitFloat32=zr(cm);Er.prototype.visitFloat64=zr(cm);Er.prototype.visitUtf8=zr(Z9);Er.prototype.visitLargeUtf8=zr(Z9);Er.prototype.visitBinary=zr(q9);Er.prototype.visitLargeBinary=zr(q9);Er.prototype.visitFixedSizeBinary=zr(Nut);Er.prototype.visitDate=zr(jut);Er.prototype.visitDateDay=zr(G9);Er.prototype.visitDateMillisecond=zr(W9);Er.prototype.visitTimestamp=zr(Gut);Er.prototype.visitTimestampSecond=zr(Y9);Er.prototype.visitTimestampMillisecond=zr(Q9);Er.prototype.visitTimestampMicrosecond=zr($9);Er.prototype.visitTimestampNanosecond=zr(X9);Er.prototype.visitTime=zr(Wut);Er.prototype.visitTimeSecond=zr(K9);Er.prototype.visitTimeMillisecond=zr(J9);Er.prototype.visitTimeMicrosecond=zr(tW);Er.prototype.visitTimeNanosecond=zr(eW);Er.prototype.visitDecimal=zr(Hut);Er.prototype.visitList=zr(qut);Er.prototype.visitStruct=zr(Yut);Er.prototype.visitUnion=zr(Qut);Er.prototype.visitDenseUnion=zr(rW);Er.prototype.visitSparseUnion=zr(iW);Er.prototype.visitDictionary=zr($ut);Er.prototype.visitInterval=zr(Xut);Er.prototype.visitIntervalDayTime=zr(nW);Er.prototype.visitIntervalYearMonth=zr(sW);Er.prototype.visitDuration=zr(Kut);Er.prototype.visitDurationSecond=zr(oW);Er.prototype.visitDurationMillisecond=zr(aW);Er.prototype.visitDurationMicrosecond=zr(lW);Er.prototype.visitDurationNanosecond=zr(cW);Er.prototype.visitFixedSizeList=zr(Jut);Er.prototype.visitMap=zr(Zut);var co=new Er;var Yu=Symbol.for(\"keys\"),lv=Symbol.for(\"vals\"),id=class{constructor(t){return this[Yu]=new wr([t.children[0]]).memoize(),this[lv]=t.children[1],new Proxy(this,new lO)}[Symbol.iterator](){return new aO(this[Yu],this[lv])}get size(){return this[Yu].length}toArray(){return Object.values(this.toJSON())}toJSON(){let t=this[Yu],r=this[lv],i={};for(let s=-1,n=t.length;++s`${Jh(t)}: ${Jh(r)}`).join(\", \")}}`}[Symbol.for(\"nodejs.util.inspect.custom\")](){return this.toString()}},aO=class{constructor(t,r){this.keys=t,this.vals=r,this.keyIndex=0,this.numKeys=t.length}[Symbol.iterator](){return this}next(){let t=this.keyIndex;return t===this.numKeys?{done:!0,value:null}:(this.keyIndex++,{done:!1,value:[this.keys.get(t),co.visit(this.vals,t)]})}},lO=class{isExtensible(){return!1}deleteProperty(){return!1}preventExtensions(){return!0}ownKeys(t){return t[Yu].toArray().map(String)}has(t,r){return t[Yu].includes(r)}getOwnPropertyDescriptor(t,r){if(t[Yu].indexOf(r)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(t,r){if(Reflect.has(t,r))return t[r];let i=t[Yu].indexOf(r);if(i!==-1){let s=co.visit(Reflect.get(t,lv),i);return Reflect.set(t,r,s),s}}set(t,r,i){let s=t[Yu].indexOf(r);return s!==-1?(xa.visit(Reflect.get(t,lv),s,i),Reflect.set(t,r,i)):Reflect.has(t,r)?Reflect.set(t,r,i):!1}};Object.defineProperties(id.prototype,{[Symbol.toStringTag]:{enumerable:!1,configurable:!1,value:\"Row\"},[Yu]:{writable:!0,enumerable:!1,configurable:!1,value:null},[lv]:{writable:!0,enumerable:!1,configurable:!1,value:null}});function tht(e,t,r){let i=e.length,s=t>-1?t:i+t%i;return r?r(e,s):s}var uW;function Vw(e,t,r,i){let{length:s=0}=e,n=typeof t!=\"number\"?0:t,o=typeof r!=\"number\"?s:r;return n<0&&(n=(n%s+s)%s),o<0&&(o=(o%s+s)%s),os&&(o=s),i?i(e,n,o):[n,o]}var hW=e=>e!==e;function um(e){if(typeof e!==\"object\"||e===null)return hW(e)?hW:r=>r===e;if(e instanceof Date){let r=e.valueOf();return i=>i instanceof Date?i.valueOf()===r:!1}return ArrayBuffer.isView(e)?r=>r?VD(e,r):!1:e instanceof Map?rht(e):Array.isArray(e)?eht(e):e instanceof wr?iht(e):nht(e,!0)}function eht(e){let t=[];for(let r=-1,i=e.length;++r!1;let i=[];for(let s=-1,n=r.length;++s{if(!r||typeof r!=\"object\")return!1;switch(r.constructor){case Array:return sht(e,r);case Map:return fW(e,r,r.keys());case id:case lm:case Object:case void 0:return fW(e,r,t||Object.keys(r))}return r instanceof wr?oht(e,r):!1}}function sht(e,t){let r=e.length;if(t.length!==r)return!1;for(let i=-1;++ipg,getBit:()=>dW,getBool:()=>GP,packBools:()=>mg,popcnt_array:()=>pW,popcnt_bit_range:()=>jw,popcnt_uint32:()=>jP,setBool:()=>aht,truncateBitmap:()=>Ag});function GP(e,t,r,i){return(r&1<>i}function aht(e,t,r){return r?!!(e[t>>3]|=1<>3]&=~(1<0||r.byteLength>3):mg(new pg(r,e,t,null,GP)).subarray(0,i)),s}return r}function mg(e){let t=[],r=0,i=0,s=0;for(let o of e)o&&(s|=1<0)&&(t[r++]=s);let n=new Uint8Array(t.length+7&-8);return n.set(t),n}var pg=class{constructor(t,r,i,s,n){this.bytes=t,this.length=i,this.context=s,this.get=n,this.bit=r%8,this.byteIndex=r>>3,this.byte=t[this.byteIndex++],this.index=0}next(){return this.index>3<<3,s=t+(t%8===0?0:8-t%8);return jw(e,t,s)+jw(e,i,r)+pW(e,s>>3,i-s>>3)}function pW(e,t,r){let i=0,s=Math.trunc(t),n=new DataView(e.buffer,e.byteOffset,e.byteLength),o=r===void 0?e.byteLength:s+r;for(;o-s>=4;)i+=jP(n.getUint32(s)),s+=4;for(;o-s>=2;)i+=jP(n.getUint16(s)),s+=2;for(;o-s>=1;)i+=jP(n.getUint8(s)),s+=1;return i}function jP(e){let t=Math.trunc(e);return t=t-(t>>>1&1431655765),t=(t&858993459)+(t>>>2&858993459),(t+(t>>>4)&252645135)*16843009>>>24}var lht=-1,Di=class e{get typeId(){return this.type.typeId}get ArrayType(){return this.type.ArrayType}get buffers(){return[this.valueOffsets,this.values,this.nullBitmap,this.typeIds]}get nullable(){if(this._nullCount!==0){let{type:t}=this;return Ne.isSparseUnion(t)?this.children.some(r=>r.nullable):Ne.isDenseUnion(t)?this.children.some(r=>r.nullable):this.nullBitmap&&this.nullBitmap.byteLength>0}return!0}get byteLength(){let t=0,{valueOffsets:r,values:i,nullBitmap:s,typeIds:n}=this;return r&&(t+=r.byteLength),i&&(t+=i.byteLength),s&&(t+=s.byteLength),n&&(t+=n.byteLength),this.children.reduce((o,c)=>o+c.byteLength,t)}get nullCount(){if(Ne.isUnion(this.type))return this.children.reduce((i,s)=>i+s.nullCount,0);let t=this._nullCount,r;return t<=lht&&(r=this.nullBitmap)&&(this._nullCount=t=this.length-jw(r,this.offset,this.offset+this.length)),t}constructor(t,r,i,s,n,o=[],c){this.type=t,this.children=o,this.dictionary=c,this.offset=Math.floor(Math.max(r||0,0)),this.length=Math.floor(Math.max(i||0,0)),this._nullCount=Math.floor(Math.max(s||0,-1));let f;n instanceof e?(this.stride=n.stride,this.values=n.values,this.typeIds=n.typeIds,this.nullBitmap=n.nullBitmap,this.valueOffsets=n.valueOffsets):(this.stride=iu(t),n&&((f=n[0])&&(this.valueOffsets=f),(f=n[1])&&(this.values=f),(f=n[2])&&(this.nullBitmap=f),(f=n[3])&&(this.typeIds=f)))}getValid(t){let{type:r}=this;if(Ne.isUnion(r)){let i=r,s=this.children[i.typeIdToChildIndex[this.typeIds[t]]],n=i.mode===Mn.Dense?this.valueOffsets[t]:t;return s.getValid(n)}if(this.nullable&&this.nullCount>0){let i=this.offset+t;return(this.nullBitmap[i>>3]&1<>3;(!n||n.byteLength<=w)&&(n=new Uint8Array((o+c+63&-64)>>3).fill(255),this.nullCount>0&&n.set(Ag(o,c,this.nullBitmap),0),Object.assign(this,{nullBitmap:n,_nullCount:-1}));let C=n[w];i=(C&_)!==0,r?n[w]=C|_:n[w]=C&~_}return i!==!!r&&(this._nullCount=this.nullCount+(r?-1:1)),r}clone(t=this.type,r=this.offset,i=this.length,s=this._nullCount,n=this,o=this.children){return new e(t,r,i,s,n,o,this.dictionary)}slice(t,r){let{stride:i,typeId:s,children:n}=this,o=+(this._nullCount===0)-1,c=s===16?i:1,f=this._sliceBuffers(t,r,i,s);return this.clone(this.type,this.offset+t,r,o,f,n.length===0||this.valueOffsets?n:this._sliceChildren(n,c*t,c*r))}_changeLengthAndBackfillNullBitmap(t){if(this.typeId===Rt.Null)return this.clone(this.type,0,t,0);let{length:r,nullCount:i}=this,s=new Uint8Array((t+63&-64)>>3).fill(255,0,r>>3);s[r>>3]=(1<0&&s.set(Ag(this.offset,r,this.nullBitmap),0);let n=this.buffers;return n[Ci.VALIDITY]=s,this.clone(this.type,0,t,i+(t-r),n)}_sliceBuffers(t,r,i,s){let n,{buffers:o}=this;return(n=o[Ci.TYPE])&&(o[Ci.TYPE]=n.subarray(t,t+r)),(n=o[Ci.OFFSET])&&(o[Ci.OFFSET]=n.subarray(t,t+r+1))||(n=o[Ci.DATA])&&(o[Ci.DATA]=s===6?n:n.subarray(i*t,i*(t+r))),o}_sliceChildren(t,r,i){return t.map(s=>s.slice(r,i))}};Di.prototype.children=Object.freeze([]);var hO=class e extends Mr{visit(t){return this.getVisitFn(t.type).call(this,t)}visitNull(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"length\"]:s=0}=t;return new Di(r,i,s,s)}visitBool(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length>>3,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitInt(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitFloat(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitUtf8(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitLargeUtf8(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=gP(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitLargeBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=gP(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,s,n])}visitFixedSizeBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitDate(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitTimestamp(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitTime(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitDecimal(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitList(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s}=t,n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,void 0,n],[s])}visitStruct(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"children\"]:s=[]}=t,n=Rr(t.nullBitmap),{length:o=s.reduce((f,{length:_})=>Math.max(f,_),0),nullCount:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,void 0,n],s)}visitUnion(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"children\"]:s=[]}=t,n=Ai(r.ArrayType,t.typeIds),{[\"length\"]:o=n.length,[\"nullCount\"]:c=-1}=t;if(Ne.isSparseUnion(r))return new Di(r,i,o,c,[void 0,void 0,void 0,n],s);let f=fg(t.valueOffsets);return new Di(r,i,o,c,[f,void 0,void 0,n],s)}visitDictionary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.indices.ArrayType,t.data),{[\"dictionary\"]:o=new wr([new e().visit({type:r.dictionary})])}=t,{[\"length\"]:c=n.length,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[void 0,n,s],[],o)}visitInterval(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitDuration(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,n,s])}visitFixedSizeList(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s=new e().visit({type:r.valueType})}=t,n=Rr(t.nullBitmap),{[\"length\"]:o=s.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Di(r,i,o,c,[void 0,void 0,n],[s])}visitMap(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s=new e().visit({type:r.childType})}=t,n=Rr(t.nullBitmap),o=fg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Di(r,i,c,f,[o,void 0,n],[s])}},cht=new hO;function yr(e){return cht.visit(e)}var Gw=class{constructor(t=0,r){this.numChunks=t,this.getChunkIterator=r,this.chunkIndex=0,this.chunkIterator=this.getChunkIterator(0)}next(){for(;this.chunkIndext.nullable)}function WP(e){return e.reduce((t,r)=>t+r.nullCount,0)}function HP(e){return e.reduce((t,r,i)=>(t[i+1]=t[i]+r.length,t),new Uint32Array(e.length+1))}function qP(e,t,r,i){let s=[];for(let n=-1,o=e.length;++n=i)break;if(r>=f+_)continue;if(f>=r&&f+_<=i){s.push(c);continue}let w=Math.max(0,r-f),C=Math.min(i-f,_);s.push(c.slice(w,C-w))}return s.length===0&&s.push(e[0].slice(0,0)),s}function fO(e,t,r,i){let s=0,n=0,o=t.length-1;do{if(s>=o-1)return r0?0:-1}function hht(e,t){let{nullBitmap:r}=e;if(!r||e.nullCount<=0)return-1;let i=0;for(let s of new pg(r,e.offset+(t||0),e.length,r,GP)){if(!s)return i;++i}return-1}function Qr(e,t,r){if(t===void 0)return-1;if(t===null)switch(e.typeId){case Rt.Union:break;case Rt.Dictionary:break;default:return hht(e,r)}let i=co.getVisitFn(e),s=um(t);for(let n=(r||0)-1,o=e.length;++n{let s=e.data[i];return s.values.subarray(0,s.length)[Symbol.iterator]()});let r=0;return new Gw(e.data.length,i=>{let n=e.data[i].length,o=e.slice(r,r+n);return r+=n,new dO(o)})}var dO=class{constructor(t){this.vector=t,this.index=0}next(){return this.indexc.data):t;if(n.length===0||n.some(c=>!(c instanceof Di)))throw new TypeError(\"Vector constructor expects an Array of Data instances.\");let o=(r=n[0])===null||r===void 0?void 0:r.type;switch(n.length){case 0:this._offsets=[0];break;case 1:{let{get:c,set:f,indexOf:_}=_W[o.typeId],w=n[0];this.isValid=C=>Ww(w,C),this.get=C=>c(w,C),this.set=(C,R)=>f(w,C,R),this.indexOf=C=>_(w,C),this._offsets=[0,w.length];break}default:Object.setPrototypeOf(this,yW[o.typeId]),this._offsets=HP(n);break}this.data=n,this.type=o,this.stride=iu(o),this.numChildren=(s=(i=o.children)===null||i===void 0?void 0:i.length)!==null&&s!==void 0?s:0,this.length=this._offsets.at(-1)}get byteLength(){return this.data.reduce((t,r)=>t+r.byteLength,0)}get nullable(){return AW(this.data)}get nullCount(){return WP(this.data)}get ArrayType(){return this.type.ArrayType}get[Symbol.toStringTag](){return`${this.VectorName}<${this.type[Symbol.toStringTag]}>`}get VectorName(){return`${Rt[this.type.typeId]}Vector`}isValid(t){return!1}get(t){return null}set(t,r){}indexOf(t,r){return-1}includes(t,r){return this.indexOf(t,r)>-1}[Symbol.iterator](){return uv.visit(this)}concat(...t){return new e(this.data.concat(t.flatMap(r=>r.data).flat(Number.POSITIVE_INFINITY)))}slice(t,r){return new e(Vw(this,t,r,({data:i,_offsets:s},n,o)=>qP(i,s,n,o)))}toJSON(){return[...this]}toArray(){let{type:t,data:r,length:i,stride:s,ArrayType:n}=this;switch(t.typeId){case Rt.Int:case Rt.Float:case Rt.Decimal:case Rt.Time:case Rt.Timestamp:switch(r.length){case 0:return new n;case 1:return r[0].values.subarray(0,i*s);default:return r.reduce((o,{values:c,length:f})=>(o.array.set(c.subarray(0,f*s),o.offset),o.offset+=f*s,o),{array:new n(i*s),offset:0}).array}}return[...this]}toString(){return`[${[...this].join(\",\")}]`}getChild(t){var r;return this.getChildAt((r=this.type.children)===null||r===void 0?void 0:r.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&tr[t])):null}get isMemoized(){return Ne.isDictionary(this.type)?this.data[0].dictionary.isMemoized:!1}memoize(){if(Ne.isDictionary(this.type)){let t=new QP(this.data[0].dictionary),r=this.data.map(i=>{let s=i.clone();return s.dictionary=t,s});return new e(r)}return new QP(this)}unmemoize(){if(Ne.isDictionary(this.type)&&this.isMemoized){let t=this.data[0].dictionary.unmemoize(),r=this.data.map(i=>{let s=i.clone();return s.dictionary=t,s});return new e(r)}return this}};gW=Symbol.toStringTag;wr[gW]=(e=>{e.type=Ne.prototype,e.data=[],e.length=0,e.stride=1,e.numChildren=0,e._offsets=new Uint32Array([0]),e[Symbol.isConcatSpreadable]=!0;let t=Object.keys(Rt).map(r=>Rt[r]).filter(r=>typeof r==\"number\"&&r!==Rt.NONE);for(let r of t){let i=co.getVisitFnByTypeId(r),s=xa.getVisitFnByTypeId(r),n=gg.getVisitFnByTypeId(r);_W[r]={get:i,set:s,indexOf:n},yW[r]=Object.create(e,{isValid:{value:cv(Ww)},get:{value:cv(co.getVisitFnByTypeId(r))},set:{value:ZP(xa.getVisitFnByTypeId(r))},indexOf:{value:YP(gg.getVisitFnByTypeId(r))}})}return\"Vector\"})(wr.prototype);var QP=class e extends wr{constructor(t){super(t.data);let r=this.get,i=this.set,s=this.slice,n=new Array(this.length);Object.defineProperty(this,\"get\",{value(o){let c=n[o];if(c!==void 0)return c;let f=r.call(this,o);return n[o]=f,f}}),Object.defineProperty(this,\"set\",{value(o,c){i.call(this,o,c),n[o]=c}}),Object.defineProperty(this,\"slice\",{value:(o,c)=>new e(s.call(this,o,c))}),Object.defineProperty(this,\"isMemoized\",{value:!0}),Object.defineProperty(this,\"unmemoize\",{value:()=>new wr(this.data)}),Object.defineProperty(this,\"memoize\",{value:()=>this})}};function vW(e){if(!e||e.length<=0)return function(s){return!0};let t=\"\",r=e.filter(i=>i===i);return r.length>0&&(t=`\n switch (x) {${r.map(i=>`\n case ${fht(i)}:`).join(\"\")}\n return false;\n }`),e.length!==r.length&&(t=`if (x !== x) return false;\n${t}`),new Function(\"x\",`${t}\nreturn true;`)}function fht(e){return typeof e!=\"bigint\"?Jh(e):`${Jh(e)}n`}function pO(e,t){let r=Math.ceil(e)*t-1;return(r-r%64+64||64)/t}function xW(e,t=0){return e.length>=t?e.subarray(0,t):mw(new e.constructor(t),e,0)}var nf=class{constructor(t,r=0,i=1){this.length=Math.ceil(r/i),this.buffer=new t(this.length),this.stride=i,this.BYTES_PER_ELEMENT=t.BYTES_PER_ELEMENT,this.ArrayType=t}get byteLength(){return Math.ceil(this.length*this.stride)*this.BYTES_PER_ELEMENT}get reservedLength(){return this.buffer.length/this.stride}get reservedByteLength(){return this.buffer.byteLength}set(t,r){return this}append(t){return this.set(this.length,t)}reserve(t){if(t>0){this.length+=t;let r=this.stride,i=this.length*r,s=this.buffer.length;i>=s&&this._resize(s===0?pO(i*1,this.BYTES_PER_ELEMENT):pO(i*2,this.BYTES_PER_ELEMENT))}return this}flush(t=this.length){t=pO(t*this.stride,this.BYTES_PER_ELEMENT);let r=xW(this.buffer,t);return this.clear(),r}clear(){return this.length=0,this.buffer=new this.ArrayType,this}_resize(t){return this.buffer=xW(this.buffer,t)}},pp=class extends nf{last(){return this.get(this.length-1)}get(t){return this.buffer[t]}set(t,r){return this.reserve(t-this.length+1),this.buffer[t*this.stride]=r,this}},hv=class extends pp{constructor(){super(Uint8Array,0,1/8),this.numValid=0}get numInvalid(){return this.length-this.numValid}get(t){return this.buffer[t>>3]>>t%8&1}set(t,r){let{buffer:i}=this.reserve(t-this.length+1),s=t>>3,n=t%8,o=i[s]>>n&1;return r?o===0&&(i[s]|=1<=0&&s.fill(s[i],i,t),s[t]=s[t-1]+r,this}flush(t=this.length-1){return t>this.length&&this.set(t-1,this.BYTES_PER_ELEMENT>4?BigInt(0):0),super.flush(t+1)}};var Qn=class{static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t){throw new Error('\"throughDOM\" not available in this environment')}constructor({type:t,nullValues:r}){this.length=0,this.finished=!1,this.type=t,this.children=[],this.nullValues=r,this.stride=iu(t),this._nulls=new hv,r&&r.length>0&&(this._isValid=vW(r))}toVector(){return new wr([this.flush()])}get ArrayType(){return this.type.ArrayType}get nullCount(){return this._nulls.numInvalid}get numChildren(){return this.children.length}get byteLength(){let t=0,{_offsets:r,_values:i,_nulls:s,_typeIds:n,children:o}=this;return r&&(t+=r.byteLength),i&&(t+=i.byteLength),s&&(t+=s.byteLength),n&&(t+=n.byteLength),o.reduce((c,f)=>c+f.byteLength,t)}get reservedLength(){return this._nulls.reservedLength}get reservedByteLength(){let t=0;return this._offsets&&(t+=this._offsets.reservedByteLength),this._values&&(t+=this._values.reservedByteLength),this._nulls&&(t+=this._nulls.reservedByteLength),this._typeIds&&(t+=this._typeIds.reservedByteLength),this.children.reduce((r,i)=>r+i.reservedByteLength,t)}get valueOffsets(){return this._offsets?this._offsets.buffer:null}get values(){return this._values?this._values.buffer:null}get nullBitmap(){return this._nulls?this._nulls.buffer:null}get typeIds(){return this._typeIds?this._typeIds.buffer:null}append(t){return this.set(this.length,t)}isValid(t){return this._isValid(t)}set(t,r){return this.setValid(t,this.isValid(r))&&this.setValue(t,r),this}setValue(t,r){this._setValue(this,t,r)}setValid(t,r){return this.length=this._nulls.set(t,+r).length,r}addChild(t,r=`${this.numChildren}`){throw new Error(`Cannot append children to non-nested type \"${this.type}\"`)}getChildAt(t){return this.children[t]||null}flush(){let t,r,i,s,{type:n,length:o,nullCount:c,_typeIds:f,_offsets:_,_values:w,_nulls:C}=this;(r=f?.flush(o))?s=_?.flush(o):(s=_?.flush(o))?t=w?.flush(_.last()):t=w?.flush(o),c>0&&(i=C?.flush(o));let R=this.children.map(N=>N.flush());return this.clear(),yr({type:n,length:o,nullCount:c,children:R,child:R[0],data:t,typeIds:r,nullBitmap:i,valueOffsets:s})}finish(){this.finished=!0;for(let t of this.children)t.finish();return this}clear(){var t,r,i,s;this.length=0,(t=this._nulls)===null||t===void 0||t.clear(),(r=this._values)===null||r===void 0||r.clear(),(i=this._offsets)===null||i===void 0||i.clear(),(s=this._typeIds)===null||s===void 0||s.clear();for(let n of this.children)n.clear();return this}};Qn.prototype.length=1;Qn.prototype.stride=1;Qn.prototype.children=null;Qn.prototype.finished=!1;Qn.prototype.nullValues=null;Qn.prototype._isValid=()=>!0;var uo=class extends Qn{constructor(t){super(t),this._values=new pp(this.ArrayType,0,this.stride)}setValue(t,r){let i=this._values;return i.reserve(t-i.length+1),super.setValue(t,r)}},fc=class extends Qn{constructor(t){super(t),this._pendingLength=0,this._offsets=new fv(t.type)}setValue(t,r){let i=this._pending||(this._pending=new Map),s=i.get(t);s&&(this._pendingLength-=s.length),this._pendingLength+=r instanceof id?r[Yu].length:r.length,i.set(t,r)}setValid(t,r){return super.setValid(t,r)?!0:((this._pending||(this._pending=new Map)).set(t,void 0),!1)}clear(){return this._pendingLength=0,this._pending=void 0,super.clear()}flush(){return this._flush(),super.flush()}finish(){return this._flush(),super.finish()}_flush(){let t=this._pending,r=this._pendingLength;return this._pendingLength=0,this._pending=void 0,t&&t.size>0&&this._flushPending(t,r),this}};var _g=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}offset(){return this.bb.readInt64(this.bb_pos)}metaDataLength(){return this.bb.readInt32(this.bb_pos+8)}bodyLength(){return this.bb.readInt64(this.bb_pos+16)}static sizeOf(){return 24}static createBlock(t,r,i,s){return t.prep(8,24),t.writeInt64(BigInt(s??0)),t.pad(4),t.writeInt32(i),t.writeInt64(BigInt(r??0)),t.offset()}};var nu=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsFooter(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsFooter(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):en.V1}schema(t){let r=this.bb.__offset(this.bb_pos,6);return r?(t||new sc).__init(this.bb.__indirect(this.bb_pos+r),this.bb):null}dictionaries(t,r){let i=this.bb.__offset(this.bb_pos,8);return i?(r||new _g).__init(this.bb.__vector(this.bb_pos+i)+t*24,this.bb):null}dictionariesLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}recordBatches(t,r){let i=this.bb.__offset(this.bb_pos,10);return i?(r||new _g).__init(this.bb.__vector(this.bb_pos+i)+t*24,this.bb):null}recordBatchesLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,12);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startFooter(t){t.startObject(5)}static addVersion(t,r){t.addFieldInt16(0,r,en.V1)}static addSchema(t,r){t.addFieldOffset(1,r,0)}static addDictionaries(t,r){t.addFieldOffset(2,r,0)}static startDictionariesVector(t,r){t.startVector(24,r,8)}static addRecordBatches(t,r){t.addFieldOffset(3,r,0)}static startRecordBatchesVector(t,r){t.startVector(24,r,8)}static addCustomMetadata(t,r){t.addFieldOffset(4,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endFooter(t){return t.endObject()}static finishFooterBuffer(t,r){t.finish(r)}static finishSizePrefixedFooterBuffer(t,r){t.finish(r,void 0,!0)}};var nn=class e{constructor(t=[],r,i,s=en.V5){this.fields=t||[],this.metadata=r||new Map,i||(i=AO(t)),this.dictionaries=i,this.metadataVersion=s}get[Symbol.toStringTag](){return\"Schema\"}get names(){return this.fields.map(t=>t.name)}toString(){return`Schema<{ ${this.fields.map((t,r)=>`${r}: ${t}`).join(\", \")} }>`}select(t){let r=new Set(t),i=this.fields.filter(s=>r.has(s.name));return new e(i,this.metadata)}selectAt(t){let r=t.map(i=>this.fields[i]).filter(Boolean);return new e(r,this.metadata)}assign(...t){let r=t[0]instanceof e?t[0]:Array.isArray(t[0])?new e(t[0]):new e(t),i=[...this.fields],s=$P($P(new Map,this.metadata),r.metadata),n=r.fields.filter(c=>{let f=i.findIndex(_=>_.name===c.name);return~f?(i[f]=c.clone({metadata:$P($P(new Map,i[f].metadata),c.metadata)}))&&!1:!0}),o=AO(n,new Map);return new e([...i,...n],s,new Map([...this.dictionaries,...o]))}};nn.prototype.fields=null;nn.prototype.metadata=null;nn.prototype.dictionaries=null;var si=class e{static new(...t){let[r,i,s,n]=t;return t[0]&&typeof t[0]==\"object\"&&({name:r}=t[0],i===void 0&&(i=t[0].type),s===void 0&&(s=t[0].nullable),n===void 0&&(n=t[0].metadata)),new e(`${r}`,i,s,n)}constructor(t,r,i=!1,s){this.name=t,this.type=r,this.nullable=i,this.metadata=s||new Map}get typeId(){return this.type.typeId}get[Symbol.toStringTag](){return\"Field\"}toString(){return`${this.name}: ${this.type}`}clone(...t){let[r,i,s,n]=t;return!t[0]||typeof t[0]!=\"object\"?[r=this.name,i=this.type,s=this.nullable,n=this.metadata]=t:{name:r=this.name,type:i=this.type,nullable:s=this.nullable,metadata:n=this.metadata}=t[0],e.new(r,i,s,n)}};si.prototype.type=null;si.prototype.name=null;si.prototype.nullable=null;si.prototype.metadata=null;function $P(e,t){return new Map([...e||new Map,...t||new Map])}function AO(e,t=new Map){for(let r=-1,i=e.length;++r0&&AO(n.children,t)}return t}var dht=dg,pht=eu,Ap=class{static decode(t){t=new pht(Rr(t));let r=nu.getRootAsFooter(t),i=nn.decode(r.schema(),new Map,r.version());return new mO(i,r)}static encode(t){let r=new dht,i=nn.encode(r,t.schema);nu.startRecordBatchesVector(r,t.numRecordBatches);for(let o of[...t.recordBatches()].slice().reverse())mp.encode(r,o);let s=r.endVector();nu.startDictionariesVector(r,t.numDictionaries);for(let o of[...t.dictionaryBatches()].slice().reverse())mp.encode(r,o);let n=r.endVector();return nu.startFooter(r),nu.addSchema(r,i),nu.addVersion(r,en.V5),nu.addRecordBatches(r,s),nu.addDictionaries(r,n),nu.finishFooterBuffer(r,nu.endFooter(r)),r.asUint8Array()}get numRecordBatches(){return this._recordBatches.length}get numDictionaries(){return this._dictionaryBatches.length}constructor(t,r=en.V5,i,s){this.schema=t,this.version=r,i&&(this._recordBatches=i),s&&(this._dictionaryBatches=s)}*recordBatches(){for(let t,r=-1,i=this.numRecordBatches;++r=0&&t=0&&t=0&&t=0&&tthis._closedPromiseResolve=t)}get closed(){return this._closedPromise}cancel(t){return sr(this,void 0,void 0,function*(){yield this.return(t)})}write(t){this._ensureOpen()&&(this.resolvers.length<=0?this._values.push(t):this.resolvers.shift().resolve({done:!1,value:t}))}abort(t){this._closedPromiseResolve&&(this.resolvers.length<=0?this._error={error:t}:this.resolvers.shift().reject({done:!0,value:t}))}close(){if(this._closedPromiseResolve){let{resolvers:t}=this;for(;t.length>0;)t.shift().resolve(Nn);this._closedPromiseResolve(),this._closedPromiseResolve=void 0}}[Symbol.asyncIterator](){return this}toDOMStream(t){return va.toDOMStream(this._closedPromiseResolve||this._error?this:this._values,t)}toNodeStream(t){return va.toNodeStream(this._closedPromiseResolve||this._error?this:this._values,t)}throw(t){return sr(this,void 0,void 0,function*(){return yield this.abort(t),Nn})}return(t){return sr(this,void 0,void 0,function*(){return yield this.close(),Nn})}read(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"read\")).value})}peek(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"peek\")).value})}next(...t){return this._values.length>0?Promise.resolve({done:!1,value:this._values.shift()}):this._error?Promise.reject({done:!0,value:this._error.error}):this._closedPromiseResolve?new Promise((r,i)=>{this.resolvers.push({resolve:r,reject:i})}):Promise.resolve(Nn)}_ensureOpen(){if(this._closedPromiseResolve)return!0;throw new Error(\"AsyncQueue is closed\")}};var nd=class extends XP{write(t){if((t=Rr(t)).byteLength>0)return super.write(t)}toString(t=!1){return t?pw(this.toUint8Array(!0)):this.toUint8Array(!1).then(pw)}toUint8Array(t=!1){return t?tu(this._values)[0]:sr(this,void 0,void 0,function*(){var r,i,s,n;let o=[],c=0;try{for(var f=!0,_=Zh(this),w;w=yield _.next(),r=w.done,!r;f=!0){n=w.value,f=!1;let C=n;o.push(C),c+=C.byteLength}}catch(C){i={error:C}}finally{try{!f&&!r&&(s=_.return)&&(yield s.call(_))}finally{if(i)throw i.error}}return tu(o,c)[0]})}},sd=class{constructor(t){t&&(this.source=new gO(va.fromIterable(t)))}[Symbol.iterator](){return this}next(t){return this.source.next(t)}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}peek(t){return this.source.peek(t)}read(t){return this.source.read(t)}},Qu=class e{constructor(t){t instanceof e?this.source=t.source:t instanceof nd?this.source=new gp(va.fromAsyncIterable(t)):mP(t)?this.source=new gp(va.fromNodeStream(t)):Aw(t)?this.source=new gp(va.fromDOMStream(t)):pP(t)?this.source=new gp(va.fromDOMStream(t.body)):Yh(t)?this.source=new gp(va.fromIterable(t)):Jc(t)?this.source=new gp(va.fromAsyncIterable(t)):zu(t)&&(this.source=new gp(va.fromAsyncIterable(t)))}[Symbol.asyncIterator](){return this}next(t){return this.source.next(t)}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}get closed(){return this.source.closed}cancel(t){return this.source.cancel(t)}peek(t){return this.source.peek(t)}read(t){return this.source.read(t)}},gO=class{constructor(t){this.source=t}cancel(t){this.return(t)}peek(t){return this.next(t,\"peek\").value}read(t){return this.next(t,\"read\").value}next(t,r=\"read\"){return this.source.next({cmd:r,size:t})}throw(t){return Object.create(this.source.throw&&this.source.throw(t)||Nn)}return(t){return Object.create(this.source.return&&this.source.return(t)||Nn)}},gp=class{constructor(t){this.source=t,this._closedPromise=new Promise(r=>this._closedPromiseResolve=r)}cancel(t){return sr(this,void 0,void 0,function*(){yield this.return(t)})}get closed(){return this._closedPromise}read(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"read\")).value})}peek(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"peek\")).value})}next(t,r=\"read\"){return sr(this,void 0,void 0,function*(){return yield this.source.next({cmd:r,size:t})})}throw(t){return sr(this,void 0,void 0,function*(){let r=this.source.throw&&(yield this.source.throw(t))||Nn;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(r)})}return(t){return sr(this,void 0,void 0,function*(){let r=this.source.return&&(yield this.source.return(t))||Nn;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(r)})}};var qw=class extends sd{constructor(t,r){super(),this.position=0,this.buffer=Rr(t),this.size=r===void 0?this.buffer.byteLength:r}readInt32(t){let{buffer:r,byteOffset:i}=this.readAt(t,4);return new DataView(r,i).getInt32(0,!0)}seek(t){return this.position=Math.min(t,this.size),tZw,Int128:()=>Yw,Int64:()=>_p,Uint64:()=>gs});function dv(e){return e<0&&(e=4294967295+e+1),`0x${e.toString(16)}`}var pv=8,_O=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8],Zw=class{constructor(t){this.buffer=t}high(){return this.buffer[1]}low(){return this.buffer[0]}_times(t){let r=new Uint32Array([this.buffer[1]>>>16,this.buffer[1]&65535,this.buffer[0]>>>16,this.buffer[0]&65535]),i=new Uint32Array([t.buffer[1]>>>16,t.buffer[1]&65535,t.buffer[0]>>>16,t.buffer[0]&65535]),s=r[3]*i[3];this.buffer[0]=s&65535;let n=s>>>16;return s=r[2]*i[3],n+=s,s=r[3]*i[2]>>>0,n+=s,this.buffer[0]+=n<<16,this.buffer[1]=n>>>0>>16,this.buffer[1]+=r[1]*i[3]+r[2]*i[2]+r[3]*i[1],this.buffer[1]+=r[0]*i[3]+r[1]*i[2]+r[2]*i[1]+r[3]*i[0]<<16,this}_plus(t){let r=this.buffer[0]+t.buffer[0]>>>0;this.buffer[1]+=t.buffer[1],r>>0&&++this.buffer[1],this.buffer[0]=r}lessThan(t){return this.buffer[1]>>0,r[2]=this.buffer[2]+t.buffer[2]>>>0,r[1]=this.buffer[1]+t.buffer[1]>>>0,r[0]=this.buffer[0]+t.buffer[0]>>>0,r[0]>>0&&++r[1],r[1]>>0&&++r[2],r[2]>>0&&++r[3],this.buffer[3]=r[3],this.buffer[2]=r[2],this.buffer[1]=r[1],this.buffer[0]=r[0],this}hex(){return`${dv(this.buffer[3])} ${dv(this.buffer[2])} ${dv(this.buffer[1])} ${dv(this.buffer[0])}`}static multiply(t,r){return new e(new Uint32Array(t.buffer)).times(r)}static add(t,r){return new e(new Uint32Array(t.buffer)).plus(r)}static from(t,r=new Uint32Array(4)){return e.fromString(typeof t==\"string\"?t:t.toString(),r)}static fromNumber(t,r=new Uint32Array(4)){return e.fromString(t.toString(),r)}static fromString(t,r=new Uint32Array(4)){let i=t.startsWith(\"-\"),s=t.length,n=new e(r);for(let o=i?1:0;o0&&this.readData(t,i)||new Uint8Array(0)}readOffsets(t,r){return this.readData(t,r)}readTypeIds(t,r){return this.readData(t,r)}readData(t,{length:r,offset:i}=this.nextBufferRange()){return this.bytes.subarray(i,i+r)}readDictionary(t){return this.dictionaries.get(t.id)}},KP=class extends Qw{constructor(t,r,i,s,n){super(new Uint8Array(0),r,i,s,n),this.sources=t}readNullBitmap(t,r,{offset:i}=this.nextBufferRange()){return r<=0?new Uint8Array(0):mg(this.sources[i])}readOffsets(t,{offset:r}=this.nextBufferRange()){return Ai(Uint8Array,Ai(t.OffsetArrayType,this.sources[r]))}readTypeIds(t,{offset:r}=this.nextBufferRange()){return Ai(Uint8Array,Ai(t.ArrayType,this.sources[r]))}readData(t,{offset:r}=this.nextBufferRange()){let{sources:i}=this;return Ne.isTimestamp(t)?Ai(Uint8Array,_p.convertArray(i[r])):(Ne.isInt(t)||Ne.isTime(t))&&t.bitWidth===64||Ne.isDuration(t)?Ai(Uint8Array,_p.convertArray(i[r])):Ne.isDate(t)&&t.unit===Xs.MILLISECOND?Ai(Uint8Array,_p.convertArray(i[r])):Ne.isDecimal(t)?Ai(Uint8Array,Yw.convertArray(i[r])):Ne.isBinary(t)||Ne.isLargeBinary(t)||Ne.isFixedSizeBinary(t)?Aht(i[r]):Ne.isBool(t)?mg(i[r]):Ne.isUtf8(t)||Ne.isLargeUtf8(t)?$f(i[r].join(\"\")):Ai(Uint8Array,Ai(t.ArrayType,i[r].map(s=>+s)))}};function Aht(e){let t=e.join(\"\"),r=new Uint8Array(t.length/2);for(let i=0;i>1]=Number.parseInt(t.slice(i,i+2),16);return r}var vg=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Rr(r))}_flushPending(t,r){let i=this._offsets,s=this._values.reserve(r).buffer,n=0;for(let[o,c]of t)if(c===void 0)i.set(o,0);else{let f=c.length;s.set(c,n),i.set(o,f),n+=f}}};var xg=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Rr(r))}_flushPending(t,r){let i=this._offsets,s=this._values.reserve(r).buffer,n=0;for(let[o,c]of t)if(c===void 0)i.set(o,BigInt(0));else{let f=c.length;s.set(c,n),i.set(o,BigInt(f)),n+=f}}};var fm=class extends Qn{constructor(t){super(t),this._values=new hv}setValue(t,r){this._values.set(t,+r)}};var dm=class extends uo{};dm.prototype._setValue=KD;var Av=class extends dm{};Av.prototype._setValue=TP;var mv=class extends dm{};mv.prototype._setValue=MP;var gv=class extends uo{};gv.prototype._setValue=eO;var $w=class extends Qn{constructor({type:t,nullValues:r,dictionaryHashFunction:i}){super({type:new hc(t.dictionary,t.indices,t.id,t.isOrdered)}),this._nulls=null,this._dictionaryOffset=0,this._keysToIndices=Object.create(null),this.indices=bg({type:this.type.indices,nullValues:r}),this.dictionary=bg({type:this.type.dictionary,nullValues:null}),typeof i==\"function\"&&(this.valueToKey=i)}get values(){return this.indices.values}get nullCount(){return this.indices.nullCount}get nullBitmap(){return this.indices.nullBitmap}get byteLength(){return this.indices.byteLength+this.dictionary.byteLength}get reservedLength(){return this.indices.reservedLength+this.dictionary.reservedLength}get reservedByteLength(){return this.indices.reservedByteLength+this.dictionary.reservedByteLength}isValid(t){return this.indices.isValid(t)}setValid(t,r){let i=this.indices;return r=i.setValid(t,r),this.length=i.length,r}setValue(t,r){let i=this._keysToIndices,s=this.valueToKey(r),n=i[s];return n===void 0&&(i[s]=n=this._dictionaryOffset+this.dictionary.append(r).length-1),this.indices.setValue(t,n)}flush(){let t=this.type,r=this._dictionary,i=this.dictionary.toVector(),s=this.indices.flush().clone(t);return s.dictionary=r?r.concat(i):i,this.finished||(this._dictionaryOffset+=i.length),this._dictionary=s.dictionary,this.clear(),s}finish(){return this.indices.finish(),this.dictionary.finish(),this._dictionaryOffset=0,this._keysToIndices=Object.create(null),super.finish()}clear(){return this.indices.clear(),this.dictionary.clear(),super.clear()}valueToKey(t){return typeof t==\"string\"?t:`${t}`}};var _v=class extends uo{};_v.prototype._setValue=XD;var Xw=class extends Qn{setValue(t,r){let[i]=this.children,s=t*this.stride;for(let n=-1,o=r.length;++n0)throw new Error(\"FixedSizeListBuilder can only have one child.\");let i=this.children.push(t);return this.type=new Il(this.type.listSize,new si(r,t.type,!0)),i}};var pm=class extends uo{setValue(t,r){this._values.set(t,r)}},Kw=class extends pm{setValue(t,r){super.setValue(t,Uw(r))}},Jw=class extends pm{},t2=class extends pm{};var Am=class extends uo{};Am.prototype._setValue=rO;var yv=class extends Am{};yv.prototype._setValue=OP;var vv=class extends Am{};vv.prototype._setValue=BP;var od=class extends uo{};od.prototype._setValue=iO;var xv=class extends od{};xv.prototype._setValue=FP;var bv=class extends od{};bv.prototype._setValue=zP;var wv=class extends od{};wv.prototype._setValue=NP;var Sv=class extends od{};Sv.prototype._setValue=UP;var su=class extends uo{setValue(t,r){this._values.set(t,r)}},e2=class extends su{},r2=class extends su{},i2=class extends su{},n2=class extends su{},s2=class extends su{},o2=class extends su{},a2=class extends su{},l2=class extends su{};var c2=class extends fc{constructor(t){super(t),this._offsets=new fv(t.type)}addChild(t,r=\"0\"){if(this.numChildren>0)throw new Error(\"ListBuilder can only have one child.\");return this.children[this.numChildren]=t,this.type=new lc(new si(r,t.type,!0)),this.numChildren-1}_flushPending(t){let r=this._offsets,[i]=this.children;for(let[s,n]of t)if(typeof n>\"u\")r.set(s,0);else{let o=n,c=o.length,f=r.set(s,c).buffer[s];for(let _=-1;++_0)throw new Error(\"ListBuilder can only have one child.\");return this.children[this.numChildren]=t,this.type=new uc(new si(r,t.type,!0),this.type.keysSorted),this.numChildren-1}_flushPending(t){let r=this._offsets,[i]=this.children;for(let[s,n]of t)if(n===void 0)r.set(s,0);else{let{[s]:o,[s+1]:c}=r.set(s,n.size).buffer;for(let f of n.entries())if(i.set(o,f),++o>=c)break}}};var h2=class extends Qn{setValue(t,r){}setValid(t,r){return this.length=Math.max(t+1,this.length),r}};var f2=class extends Qn{setValue(t,r){let{children:i,type:s}=this;switch(Array.isArray(r)||r.constructor){case!0:return s.children.forEach((n,o)=>i[o].set(t,r[o]));case Map:return s.children.forEach((n,o)=>i[o].set(t,r.get(n.name)));default:return s.children.forEach((n,o)=>i[o].set(t,r[n.name]))}}setValid(t,r){return super.setValid(t,r)||this.children.forEach(i=>i.setValid(t,r)),r}addChild(t,r=`${this.numChildren}`){let i=this.children.push(t);return this.type=new un([...this.type.children,new si(r,t.type,!0)]),i}};var ad=class extends uo{};ad.prototype._setValue=JD;var Tv=class extends ad{};Tv.prototype._setValue=EP;var Mv=class extends ad{};Mv.prototype._setValue=PP;var Ev=class extends ad{};Ev.prototype._setValue=IP;var Pv=class extends ad{};Pv.prototype._setValue=CP;var ld=class extends uo{};ld.prototype._setValue=tO;var Iv=class extends ld{};Iv.prototype._setValue=LP;var Cv=class extends ld{};Cv.prototype._setValue=kP;var Lv=class extends ld{};Lv.prototype._setValue=RP;var kv=class extends ld{};kv.prototype._setValue=DP;var wg=class extends Qn{constructor(t){super(t),this._typeIds=new pp(Int8Array,0,1),typeof t.valueToChildTypeId==\"function\"&&(this._valueToChildTypeId=t.valueToChildTypeId)}get typeIdToChildIndex(){return this.type.typeIdToChildIndex}append(t,r){return this.set(this.length,t,r)}set(t,r,i){return i===void 0&&(i=this._valueToChildTypeId(this,r,t)),this.setValue(t,r,i),this}setValue(t,r,i){this._typeIds.set(t,i);let s=this.type.typeIdToChildIndex[i],n=this.children[s];n?.set(t,r)}addChild(t,r=`${this.children.length}`){let i=this.children.push(t),{type:{children:s,mode:n,typeIds:o}}=this,c=[...s,new si(r,t.type)];return this.type=new cc(n,[...o,i],c),i}_valueToChildTypeId(t,r,i){throw new Error(\"Cannot map UnionBuilder value to child typeId. Pass the `childTypeId` as the second argument to unionBuilder.append(), or supply a `valueToChildTypeId` function as part of the UnionBuilder constructor options.\")}},d2=class extends wg{},p2=class extends wg{constructor(t){super(t),this._offsets=new pp(Int32Array)}setValue(t,r,i){let s=this._typeIds.set(t,i).buffer[t],n=this.getChildAt(this.type.typeIdToChildIndex[s]),o=this._offsets.set(t,n.length).buffer[t];n?.set(o,r)}};var Rv=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,$f(r))}_flushPending(t,r){}};Rv.prototype._flushPending=vg.prototype._flushPending;var Dv=class extends fc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,$f(r))}_flushPending(t,r){}};Dv.prototype._flushPending=xg.prototype._flushPending;var vO=class extends Mr{visitNull(){return h2}visitBool(){return fm}visitInt(){return su}visitInt8(){return e2}visitInt16(){return r2}visitInt32(){return i2}visitInt64(){return n2}visitUint8(){return s2}visitUint16(){return o2}visitUint32(){return a2}visitUint64(){return l2}visitFloat(){return pm}visitFloat16(){return Kw}visitFloat32(){return Jw}visitFloat64(){return t2}visitUtf8(){return Rv}visitLargeUtf8(){return Dv}visitBinary(){return vg}visitLargeBinary(){return xg}visitFixedSizeBinary(){return _v}visitDate(){return dm}visitDateDay(){return Av}visitDateMillisecond(){return mv}visitTimestamp(){return ad}visitTimestampSecond(){return Tv}visitTimestampMillisecond(){return Mv}visitTimestampMicrosecond(){return Ev}visitTimestampNanosecond(){return Pv}visitTime(){return ld}visitTimeSecond(){return Iv}visitTimeMillisecond(){return Cv}visitTimeMicrosecond(){return Lv}visitTimeNanosecond(){return kv}visitDecimal(){return gv}visitList(){return c2}visitStruct(){return f2}visitUnion(){return wg}visitDenseUnion(){return p2}visitSparseUnion(){return d2}visitDictionary(){return $w}visitInterval(){return Am}visitIntervalDayTime(){return yv}visitIntervalYearMonth(){return vv}visitDuration(){return od}visitDurationSecond(){return xv}visitDurationMillisecond(){return bv}visitDurationMicrosecond(){return wv}visitDurationNanosecond(){return Sv}visitFixedSizeList(){return Xw}visitMap(){return u2}},bW=new vO;var Cr=class extends Mr{compareSchemas(t,r){return t===r||r instanceof t.constructor&&this.compareManyFields(t.fields,r.fields)}compareManyFields(t,r){return t===r||Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((i,s)=>this.compareFields(i,r[s]))}compareFields(t,r){return t===r||r instanceof t.constructor&&t.name===r.name&&t.nullable===r.nullable&&this.visit(t.type,r.type)}};function Cl(e,t){return t instanceof e.constructor}function Sg(e,t){return e===t||Cl(e,t)}function yp(e,t){return e===t||Cl(e,t)&&e.bitWidth===t.bitWidth&&e.isSigned===t.isSigned}function JP(e,t){return e===t||Cl(e,t)&&e.precision===t.precision}function mht(e,t){return e===t||Cl(e,t)&&e.byteWidth===t.byteWidth}function xO(e,t){return e===t||Cl(e,t)&&e.unit===t.unit}function A2(e,t){return e===t||Cl(e,t)&&e.unit===t.unit&&e.timezone===t.timezone}function m2(e,t){return e===t||Cl(e,t)&&e.unit===t.unit&&e.bitWidth===t.bitWidth}function ght(e,t){return e===t||Cl(e,t)&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}function _ht(e,t){return e===t||Cl(e,t)&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}function bO(e,t){return e===t||Cl(e,t)&&e.mode===t.mode&&e.typeIds.every((r,i)=>r===t.typeIds[i])&&cd.compareManyFields(e.children,t.children)}function yht(e,t){return e===t||Cl(e,t)&&e.id===t.id&&e.isOrdered===t.isOrdered&&cd.visit(e.indices,t.indices)&&cd.visit(e.dictionary,t.dictionary)}function wO(e,t){return e===t||Cl(e,t)&&e.unit===t.unit}function g2(e,t){return e===t||Cl(e,t)&&e.unit===t.unit}function vht(e,t){return e===t||Cl(e,t)&&e.listSize===t.listSize&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}function xht(e,t){return e===t||Cl(e,t)&&e.keysSorted===t.keysSorted&&e.children.length===t.children.length&&cd.compareManyFields(e.children,t.children)}Cr.prototype.visitNull=Sg;Cr.prototype.visitBool=Sg;Cr.prototype.visitInt=yp;Cr.prototype.visitInt8=yp;Cr.prototype.visitInt16=yp;Cr.prototype.visitInt32=yp;Cr.prototype.visitInt64=yp;Cr.prototype.visitUint8=yp;Cr.prototype.visitUint16=yp;Cr.prototype.visitUint32=yp;Cr.prototype.visitUint64=yp;Cr.prototype.visitFloat=JP;Cr.prototype.visitFloat16=JP;Cr.prototype.visitFloat32=JP;Cr.prototype.visitFloat64=JP;Cr.prototype.visitUtf8=Sg;Cr.prototype.visitLargeUtf8=Sg;Cr.prototype.visitBinary=Sg;Cr.prototype.visitLargeBinary=Sg;Cr.prototype.visitFixedSizeBinary=mht;Cr.prototype.visitDate=xO;Cr.prototype.visitDateDay=xO;Cr.prototype.visitDateMillisecond=xO;Cr.prototype.visitTimestamp=A2;Cr.prototype.visitTimestampSecond=A2;Cr.prototype.visitTimestampMillisecond=A2;Cr.prototype.visitTimestampMicrosecond=A2;Cr.prototype.visitTimestampNanosecond=A2;Cr.prototype.visitTime=m2;Cr.prototype.visitTimeSecond=m2;Cr.prototype.visitTimeMillisecond=m2;Cr.prototype.visitTimeMicrosecond=m2;Cr.prototype.visitTimeNanosecond=m2;Cr.prototype.visitDecimal=Sg;Cr.prototype.visitList=ght;Cr.prototype.visitStruct=_ht;Cr.prototype.visitUnion=bO;Cr.prototype.visitDenseUnion=bO;Cr.prototype.visitSparseUnion=bO;Cr.prototype.visitDictionary=yht;Cr.prototype.visitInterval=wO;Cr.prototype.visitIntervalDayTime=wO;Cr.prototype.visitIntervalYearMonth=wO;Cr.prototype.visitDuration=g2;Cr.prototype.visitDurationSecond=g2;Cr.prototype.visitDurationMillisecond=g2;Cr.prototype.visitDurationMicrosecond=g2;Cr.prototype.visitDurationNanosecond=g2;Cr.prototype.visitFixedSizeList=vht;Cr.prototype.visitMap=xht;var cd=new Cr;function Tg(e,t){return cd.compareSchemas(e,t)}function wW(e,t){return cd.compareFields(e,t)}function SW(e,t){return cd.visit(e,t)}function bg(e){let t=e.type,r=new(bW.getVisitFn(t)())(e);if(t.children&&t.children.length>0){let i=e.children||[],s={nullValues:e.nullValues},n=Array.isArray(i)?(o,c)=>i[c]||s:({name:o})=>i[o]||s;for(let[o,c]of t.children.entries()){let{type:f}=c,_=n(c,o);r.children.push(bg(Object.assign(Object.assign({},_),{type:f})))}}return r}function t3(e,t){return bht(e,t.map(r=>r.data.concat()))}function bht(e,t){let r=[...e.fields],i=[],s={numBatches:t.reduce((C,R)=>Math.max(C,R.length),0)},n=0,o=0,c=-1,f=t.length,_,w=[];for(;s.numBatches-- >0;){for(o=Number.POSITIVE_INFINITY,c=-1;++c0&&(i[n++]=yr({type:new un(r),length:o,nullCount:0,children:w.slice()})))}return[e=e.assign(r),i.map(C=>new ks(e,C))]}function wht(e,t,r,i,s){var n;let o=(t+63&-64)>>3;for(let c=-1,f=i.length;++c=t)w===t?r[c]=_:(r[c]=_.slice(0,t),s.numBatches=Math.max(s.numBatches,i[c].unshift(_.slice(t,w-t))));else{let C=e[c];e[c]=C.clone({nullable:!0}),r[c]=(n=_?._changeLengthAndBackfillNullBitmap(t))!==null&&n!==void 0?n:yr({type:C.type,length:t,nullCount:t,nullBitmap:new Uint8Array(o)})}}return r}var MW,ba=class e{constructor(...t){var r,i;if(t.length===0)return this.batches=[],this.schema=new nn([]),this._offsets=[0],this;let s,n;t[0]instanceof nn&&(s=t.shift()),t.at(-1)instanceof Uint32Array&&(n=t.pop());let o=f=>{if(f){if(f instanceof ks)return[f];if(f instanceof e)return f.batches;if(f instanceof Di){if(f.type instanceof un)return[new ks(new nn(f.type.children),f)]}else{if(Array.isArray(f))return f.flatMap(_=>o(_));if(typeof f[Symbol.iterator]==\"function\")return[...f].flatMap(_=>o(_));if(typeof f==\"object\"){let _=Object.keys(f),w=_.map(N=>new wr([f[N]])),C=s??new nn(_.map((N,j)=>new si(String(N),w[j].type,w[j].nullable))),[,R]=t3(C,w);return R.length===0?[new ks(f)]:R}}}return[]},c=t.flatMap(f=>o(f));if(s=(i=s??((r=c[0])===null||r===void 0?void 0:r.schema))!==null&&i!==void 0?i:new nn([]),!(s instanceof nn))throw new TypeError(\"Table constructor expects a [Schema, RecordBatch[]] pair.\");for(let f of c){if(!(f instanceof ks))throw new TypeError(\"Table constructor expects a [Schema, RecordBatch[]] pair.\");if(!Tg(s,f.schema))throw new TypeError(\"Table and inner RecordBatch schemas must be equivalent.\")}this.schema=s,this.batches=c,this._offsets=n??HP(this.data)}get data(){return this.batches.map(({data:t})=>t)}get numCols(){return this.schema.fields.length}get numRows(){return this.data.reduce((t,r)=>t+r.length,0)}get nullCount(){return this._nullCount===-1&&(this._nullCount=WP(this.data)),this._nullCount}isValid(t){return!1}get(t){return null}set(t,r){}indexOf(t,r){return-1}[Symbol.iterator](){return this.batches.length>0?uv.visit(new wr(this.data)):new Array(0)[Symbol.iterator]()}toArray(){return[...this]}toString(){return`[\n ${this.toArray().join(`,\n `)}\n]`}concat(...t){let r=this.schema,i=this.data.concat(t.flatMap(({data:s})=>s));return new e(r,i.map(s=>new ks(r,s)))}slice(t,r){let i=this.schema;[t,r]=Vw({length:this.numRows},t,r);let s=qP(this.data,this._offsets,t,r);return new e(i,s.map(n=>new ks(i,n)))}getChild(t){return this.getChildAt(this.schema.fields.findIndex(r=>r.name===t))}getChildAt(t){if(t>-1&&ti.children[t]);if(r.length===0){let{type:i}=this.schema.fields[t],s=yr({type:i,length:0,nullCount:0});r.push(s._changeLengthAndBackfillNullBitmap(this.numRows))}return new wr(r)}return null}setChild(t,r){var i;return this.setChildAt((i=this.schema.fields)===null||i===void 0?void 0:i.findIndex(s=>s.name===t),r)}setChildAt(t,r){let i=this.schema,s=[...this.batches];if(t>-1&&tthis.getChildAt(_));[n[t],c[t]]=[o,r],[i,s]=t3(i,c)}return new e(i,s)}select(t){let r=this.schema.fields.reduce((i,s,n)=>i.set(s.name,n),new Map);return this.selectAt(t.map(i=>r.get(i)).filter(i=>i>-1))}selectAt(t){let r=this.schema.selectAt(t),i=this.batches.map(s=>s.selectAt(t));return new e(r,i)}assign(t){let r=this.schema.fields,[i,s]=t.schema.fields.reduce((c,f,_)=>{let[w,C]=c,R=r.findIndex(N=>N.name===f.name);return~R?C[R]=_:w.push(_),c},[[],[]]),n=this.schema.assign(t.schema),o=[...r.map((c,f)=>[f,s[f]]).map(([c,f])=>f===void 0?this.getChildAt(c):t.getChildAt(f)),...i.map(c=>t.getChildAt(c))].filter(Boolean);return new e(...t3(n,o))}};MW=Symbol.toStringTag;ba[MW]=(e=>(e.schema=null,e.batches=[],e._offsets=new Uint32Array([0]),e._nullCount=-1,e[Symbol.isConcatSpreadable]=!0,e.isValid=cv(Ww),e.get=cv(co.getVisitFn(Rt.Struct)),e.set=ZP(xa.getVisitFn(Rt.Struct)),e.indexOf=YP(gg.getVisitFn(Rt.Struct)),\"Table\"))(ba.prototype);var PW,ks=class e{constructor(...t){switch(t.length){case 2:{if([this.schema]=t,!(this.schema instanceof nn))throw new TypeError(\"RecordBatch constructor expects a [Schema, Data] pair.\");if([,this.data=yr({nullCount:0,type:new un(this.schema.fields),children:this.schema.fields.map(r=>yr({type:r.type,nullCount:0}))})]=t,!(this.data instanceof Di))throw new TypeError(\"RecordBatch constructor expects a [Schema, Data] pair.\");[this.schema,this.data]=EW(this.schema,this.data.children);break}case 1:{let[r]=t,{fields:i,children:s,length:n}=Object.keys(r).reduce((f,_,w)=>(f.children[w]=r[_],f.length=Math.max(f.length,r[_].length),f.fields[w]=si.new({name:_,type:r[_].type,nullable:!0}),f),{length:0,fields:new Array,children:new Array}),o=new nn(i),c=yr({type:new un(i),length:n,children:s,nullCount:0});[this.schema,this.data]=EW(o,c.children,n);break}default:throw new TypeError(\"RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.\")}}get dictionaries(){return this._dictionaries||(this._dictionaries=IW(this.schema.fields,this.data.children))}get numCols(){return this.schema.fields.length}get numRows(){return this.data.length}get nullCount(){return this.data.nullCount}isValid(t){return this.data.getValid(t)}get(t){return co.visit(this.data,t)}set(t,r){return xa.visit(this.data,t,r)}indexOf(t,r){return gg.visit(this.data,t,r)}[Symbol.iterator](){return uv.visit(new wr([this.data]))}toArray(){return[...this]}concat(...t){return new ba(this.schema,[this,...t])}slice(t,r){let[i]=new wr([this.data]).slice(t,r).data;return new e(this.schema,i)}getChild(t){var r;return this.getChildAt((r=this.schema.fields)===null||r===void 0?void 0:r.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&ts.name===t),r)}setChildAt(t,r){let i=this.schema,s=this.data;if(t>-1&&tc.name===n);~o&&(s[o]=this.data.children[o])}return new e(r,yr({type:i,length:this.numRows,children:s}))}selectAt(t){let r=this.schema.selectAt(t),i=t.map(n=>this.data.children[n]).filter(Boolean),s=yr({type:new un(r.fields),length:this.numRows,children:i});return new e(r,s)}};PW=Symbol.toStringTag;ks[PW]=(e=>(e._nullCount=-1,e[Symbol.isConcatSpreadable]=!0,\"RecordBatch\"))(ks.prototype);function EW(e,t,r=t.reduce((i,s)=>Math.max(i,s.length),0)){var i;let s=[...e.fields],n=[...t],o=(r+63&-64)>>3;for(let[c,f]of e.fields.entries()){let _=t[c];(!_||_.length!==r)&&(s[c]=f.clone({nullable:!0}),n[c]=(i=_?._changeLengthAndBackfillNullBitmap(r))!==null&&i!==void 0?i:yr({type:f.type,length:r,nullCount:r,nullBitmap:new Uint8Array(o)}))}return[e.assign(s),yr({type:new un(s),length:r,children:n})]}function IW(e,t,r=new Map){var i,s;if(((i=e?.length)!==null&&i!==void 0?i:0)>0&&e?.length===t?.length)for(let n=-1,o=e.length;++nyr({type:s.type})),i=yr({type:new un(t.fields),nullCount:0,children:r});super(t,i)}};var sf=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsMessage(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsMessage(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):en.V1}headerType(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint8(this.bb_pos+t):bi.NONE}header(t){let r=this.bb.__offset(this.bb_pos,8);return r?this.bb.__union(t,this.bb_pos+r):null}bodyLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt64(this.bb_pos+t):BigInt(\"0\")}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,12);return i?(r||new Co).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startMessage(t){t.startObject(5)}static addVersion(t,r){t.addFieldInt16(0,r,en.V1)}static addHeaderType(t,r){t.addFieldInt8(1,r,bi.NONE)}static addHeader(t,r){t.addFieldOffset(2,r,0)}static addBodyLength(t,r){t.addFieldInt64(3,r,BigInt(\"0\"))}static addCustomMetadata(t,r){t.addFieldOffset(4,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endMessage(t){return t.endObject()}static finishMessageBuffer(t,r){t.finish(r)}static finishSizePrefixedMessageBuffer(t,r){t.finish(r,void 0,!0)}static createMessage(t,r,i,s,n,o){return e.startMessage(t),e.addVersion(t,r),e.addHeaderType(t,i),e.addHeader(t,s),e.addBodyLength(t,n),e.addCustomMetadata(t,o),e.endMessage(t)}};var SO=class extends Mr{visit(t,r){return t==null||r==null?void 0:super.visit(t,r)}visitNull(t,r){return Mw.startNull(r),Mw.endNull(r)}visitInt(t,r){return Xh.startInt(r),Xh.addBitWidth(r,t.bitWidth),Xh.addIsSigned(r,t.isSigned),Xh.endInt(r)}visitFloat(t,r){return sm.startFloatingPoint(r),sm.addPrecision(r,t.precision),sm.endFloatingPoint(r)}visitBinary(t,r){return xw.startBinary(r),xw.endBinary(r)}visitLargeBinary(t,r){return ww.startLargeBinary(r),ww.endLargeBinary(r)}visitBool(t,r){return bw.startBool(r),bw.endBool(r)}visitUtf8(t,r){return Pw.startUtf8(r),Pw.endUtf8(r)}visitLargeUtf8(t,r){return Sw.startLargeUtf8(r),Sw.endLargeUtf8(r)}visitDecimal(t,r){return td.startDecimal(r),td.addScale(r,t.scale),td.addPrecision(r,t.precision),td.addBitWidth(r,t.bitWidth),td.endDecimal(r)}visitDate(t,r){return em.startDate(r),em.addUnit(r,t.unit),em.endDate(r)}visitTime(t,r){return hp.startTime(r),hp.addUnit(r,t.unit),hp.addBitWidth(r,t.bitWidth),hp.endTime(r)}visitTimestamp(t,r){let i=t.timezone&&r.createString(t.timezone)||void 0;return fp.startTimestamp(r),fp.addUnit(r,t.unit),i!==void 0&&fp.addTimezone(r,i),fp.endTimestamp(r)}visitInterval(t,r){return om.startInterval(r),om.addUnit(r,t.unit),om.endInterval(r)}visitDuration(t,r){return rm.startDuration(r),rm.addUnit(r,t.unit),rm.endDuration(r)}visitList(t,r){return Tw.startList(r),Tw.endList(r)}visitStruct(t,r){return Ew.startStruct_(r),Ew.endStruct_(r)}visitUnion(t,r){Kh.startTypeIdsVector(r,t.typeIds.length);let i=Kh.createTypeIdsVector(r,t.typeIds);return Kh.startUnion(r),Kh.addMode(r,t.mode),Kh.addTypeIds(r,i),Kh.endUnion(r)}visitDictionary(t,r){let i=this.visit(t.indices,r);return Jf.startDictionaryEncoding(r),Jf.addId(r,BigInt(t.id)),Jf.addIsOrdered(r,t.isOrdered),i!==void 0&&Jf.addIndexType(r,i),Jf.endDictionaryEncoding(r)}visitFixedSizeBinary(t,r){return im.startFixedSizeBinary(r),im.addByteWidth(r,t.byteWidth),im.endFixedSizeBinary(r)}visitFixedSizeList(t,r){return nm.startFixedSizeList(r),nm.addListSize(r,t.listSize),nm.endFixedSizeList(r)}visitMap(t,r){return am.startMap(r),am.addKeysSorted(r,t.keysSorted),am.endMap(r)}},e3=new SO;function RW(e,t=new Map){return new nn(Sht(e,t),r3(e.metadata),t)}function TO(e){return new wa(e.count,OW(e.columns),BW(e.columns))}function DW(e){return new pc(TO(e.data),e.id,e.isDelta)}function Sht(e,t){return(e.fields||[]).filter(Boolean).map(r=>si.fromJSON(r,t))}function CW(e,t){return(e.children||[]).filter(Boolean).map(r=>si.fromJSON(r,t))}function OW(e){return(e||[]).reduce((t,r)=>[...t,new $u(r.count,Tht(r.VALIDITY)),...OW(r.children)],[])}function BW(e,t=[]){for(let r=-1,i=(e||[]).length;++rt+ +(r===0),0)}function FW(e,t){let r,i,s,n,o,c;return!t||!(n=e.dictionary)?(o=kW(e,CW(e,t)),s=new si(e.name,o,e.nullable,r3(e.metadata))):t.has(r=n.id)?(i=(i=n.indexType)?LW(i):new ef,c=new hc(t.get(r),i,r,n.isOrdered),s=new si(e.name,c,e.nullable,r3(e.metadata))):(i=(i=n.indexType)?LW(i):new ef,t.set(r,o=kW(e,CW(e,t))),c=new hc(o,i,r,n.isOrdered),s=new si(e.name,c,e.nullable,r3(e.metadata))),s||null}function r3(e=[]){return new Map(e.map(({key:t,value:r})=>[t,r]))}function LW(e){return new is(e.isSigned,e.bitWidth)}function kW(e,t){let r=e.type.name;switch(r){case\"NONE\":return new ea;case\"null\":return new ea;case\"binary\":return new Uu;case\"largebinary\":return new ed;case\"utf8\":return new Vu;case\"largeutf8\":return new rd;case\"bool\":return new oc;case\"list\":return new lc((t||[])[0]);case\"struct\":return new un(t||[]);case\"struct_\":return new un(t||[])}switch(r){case\"int\":{let i=e.type;return new is(i.isSigned,i.bitWidth)}case\"floatingpoint\":{let i=e.type;return new lo(qi[i.precision])}case\"decimal\":{let i=e.type;return new ju(i.scale,i.precision,i.bitWidth)}case\"date\":{let i=e.type;return new Gu(Xs[i.unit])}case\"time\":{let i=e.type;return new ac(pr[i.unit],i.bitWidth)}case\"timestamp\":{let i=e.type;return new Wu(pr[i.unit],i.timezone)}case\"interval\":{let i=e.type;return new Hu(Io[i.unit])}case\"duration\":{let i=e.type;return new qu(pr[i.unit])}case\"union\":{let i=e.type,[s,...n]=(i.mode+\"\").toLowerCase(),o=s.toUpperCase()+n.join(\"\");return new cc(Mn[o],i.typeIds||[],t||[])}case\"fixedsizebinary\":{let i=e.type;return new Zu(i.byteWidth)}case\"fixedsizelist\":{let i=e.type;return new Il(i.listSize,(t||[])[0])}case\"map\":{let i=e.type;return new uc((t||[])[0],i.keysSorted)}}throw new Error(`Unrecognized type: \"${r}\"`)}var Mht=dg,Eht=eu,Ac=class e{static fromJSON(t,r){let i=new e(0,en.V5,r);return i._createHeader=Pht(t,r),i}static decode(t){t=new Eht(Rr(t));let r=sf.getRootAsMessage(t),i=r.bodyLength(),s=r.version(),n=r.headerType(),o=new e(i,s,n);return o._createHeader=Iht(r,n),o}static encode(t){let r=new Mht,i=-1;return t.isSchema()?i=nn.encode(r,t.header()):t.isRecordBatch()?i=wa.encode(r,t.header()):t.isDictionaryBatch()&&(i=pc.encode(r,t.header())),sf.startMessage(r),sf.addVersion(r,en.V5),sf.addHeader(r,i),sf.addHeaderType(r,t.headerType),sf.addBodyLength(r,BigInt(t.bodyLength)),sf.finishMessageBuffer(r,sf.endMessage(r)),r.asUint8Array()}static from(t,r=0){if(t instanceof nn)return new e(0,en.V5,bi.Schema,t);if(t instanceof wa)return new e(r,en.V5,bi.RecordBatch,t);if(t instanceof pc)return new e(r,en.V5,bi.DictionaryBatch,t);throw new Error(`Unrecognized Message header: ${t}`)}get type(){return this.headerType}get version(){return this._version}get headerType(){return this._headerType}get bodyLength(){return this._bodyLength}header(){return this._createHeader()}isSchema(){return this.headerType===bi.Schema}isRecordBatch(){return this.headerType===bi.RecordBatch}isDictionaryBatch(){return this.headerType===bi.DictionaryBatch}constructor(t,r,i,s){this._version=r,this._headerType=i,this.body=new Uint8Array(0),s&&(this._createHeader=()=>s),this._bodyLength=ms(t)}},wa=class{get nodes(){return this._nodes}get length(){return this._length}get buffers(){return this._buffers}constructor(t,r,i){this._nodes=r,this._buffers=i,this._length=ms(t)}},pc=class{get id(){return this._id}get data(){return this._data}get isDelta(){return this._isDelta}get length(){return this.data.length}get nodes(){return this.data.nodes}get buffers(){return this.data.buffers}constructor(t,r,i=!1){this._data=t,this._isDelta=i,this._id=ms(r)}},dc=class{constructor(t,r){this.offset=ms(t),this.length=ms(r)}},$u=class{constructor(t,r){this.length=ms(t),this.nullCount=ms(r)}};function Pht(e,t){return()=>{switch(t){case bi.Schema:return nn.fromJSON(e);case bi.RecordBatch:return wa.fromJSON(e);case bi.DictionaryBatch:return pc.fromJSON(e)}throw new Error(`Unrecognized Message type: { name: ${bi[t]}, type: ${t} }`)}}function Iht(e,t){return()=>{switch(t){case bi.Schema:return nn.decode(e.header(new sc),new Map,e.version());case bi.RecordBatch:return wa.decode(e.header(new ru),e.version());case bi.DictionaryBatch:return pc.decode(e.header(new up),e.version())}throw new Error(`Unrecognized Message type: { name: ${bi[t]}, type: ${t} }`)}}si.encode=Uht;si.decode=zht;si.fromJSON=FW;nn.encode=Nht;nn.decode=Cht;nn.fromJSON=RW;wa.encode=Vht;wa.decode=Lht;wa.fromJSON=TO;pc.encode=jht;pc.decode=kht;pc.fromJSON=DW;$u.encode=Ght;$u.decode=Dht;dc.encode=Wht;dc.decode=Rht;function Cht(e,t=new Map,r=en.V5){let i=Fht(e,t);return new nn(i,i3(e),t,r)}function Lht(e,t=en.V5){if(e.compression()!==null)throw new Error(\"Record batch compression not implemented\");return new wa(e.length(),Oht(e),Bht(e,t))}function kht(e,t=en.V5){return new pc(wa.decode(e.data(),t),e.id(),e.isDelta())}function Rht(e){return new dc(e.offset(),e.length())}function Dht(e){return new $u(e.length(),e.nullCount())}function Oht(e){let t=[];for(let r,i=-1,s=-1,n=e.nodesLength();++isi.encode(e,n));sc.startFieldsVector(e,r.length);let i=sc.createFieldsVector(e,r),s=t.metadata&&t.metadata.size>0?sc.createCustomMetadataVector(e,[...t.metadata].map(([n,o])=>{let c=e.createString(`${n}`),f=e.createString(`${o}`);return Co.startKeyValue(e),Co.addKey(e,c),Co.addValue(e,f),Co.endKeyValue(e)})):-1;return sc.startSchema(e),sc.addFields(e,i),sc.addEndianness(e,Hht?tm.Little:tm.Big),s!==-1&&sc.addCustomMetadata(e,s),sc.endSchema(e)}function Uht(e,t){let r=-1,i=-1,s=-1,n=t.type,o=t.typeId;Ne.isDictionary(n)?(o=n.dictionary.typeId,s=e3.visit(n,e),i=e3.visit(n.dictionary,e)):i=e3.visit(n,e);let c=(n.children||[]).map(w=>si.encode(e,w)),f=rl.createChildrenVector(e,c),_=t.metadata&&t.metadata.size>0?rl.createCustomMetadataVector(e,[...t.metadata].map(([w,C])=>{let R=e.createString(`${w}`),N=e.createString(`${C}`);return Co.startKeyValue(e),Co.addKey(e,R),Co.addValue(e,N),Co.endKeyValue(e)})):-1;return t.name&&(r=e.createString(t.name)),rl.startField(e),rl.addType(e,i),rl.addTypeType(e,o),rl.addChildren(e,f),rl.addNullable(e,!!t.nullable),r!==-1&&rl.addName(e,r),s!==-1&&rl.addDictionary(e,s),_!==-1&&rl.addCustomMetadata(e,_),rl.endField(e)}function Vht(e,t){let r=t.nodes||[],i=t.buffers||[];ru.startNodesVector(e,r.length);for(let o of r.slice().reverse())$u.encode(e,o);let s=e.endVector();ru.startBuffersVector(e,i.length);for(let o of i.slice().reverse())dc.encode(e,o);let n=e.endVector();return ru.startRecordBatch(e),ru.addLength(e,BigInt(t.length)),ru.addNodes(e,s),ru.addBuffers(e,n),ru.endRecordBatch(e)}function jht(e,t){let r=wa.encode(e,t.data);return up.startDictionaryBatch(e),up.addId(e,BigInt(t.id)),up.addIsDelta(e,t.isDelta),up.addData(e,r),up.endDictionaryBatch(e)}function Ght(e,t){return tv.createFieldNode(e,BigInt(t.length),BigInt(t.nullCount))}function Wht(e,t){return Jy.createBuffer(e,BigInt(t.offset),BigInt(t.length))}var Hht=(()=>{let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]===256})();var EO=e=>`Expected ${bi[e]} Message in stream, but was null or length 0.`,PO=e=>`Header pointer of flatbuffer-encoded ${bi[e]} Message is null or length 0.`,VW=(e,t)=>`Expected to read ${e} metadata bytes, but only read ${t}.`,jW=(e,t)=>`Expected to read ${e} bytes for message body, but only read ${t}.`,Ov=class{constructor(t){this.source=t instanceof sd?t:new sd(t)}[Symbol.iterator](){return this}next(){let t;return(t=this.readMetadataLength()).done?Nn:t.value===-1&&(t=this.readMetadataLength()).done?Nn:(t=this.readMetadata(t.value)).done?Nn:t}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}readMessage(t){let r;if((r=this.next()).done)return null;if(t!=null&&r.value.headerType!==t)throw new Error(EO(t));return r.value}readMessageBody(t){if(t<=0)return new Uint8Array(0);let r=Rr(this.source.read(t));if(r.byteLength[...s,...n.VALIDITY&&[n.VALIDITY]||[],...n.TYPE_ID&&[n.TYPE_ID]||[],...n.OFFSET&&[n.OFFSET]||[],...n.DATA&&[n.DATA]||[],...r(n.children)],[])}}readMessage(t){let r;if((r=this.next()).done)return null;if(t!=null&&r.value.headerType!==t)throw new Error(EO(t));return r.value}readSchema(){let t=bi.Schema,r=this.readMessage(t),i=r?.header();if(!r||!i)throw new Error(PO(t));return i}},n3=4,MO=\"ARROW1\",Bv=new Uint8Array(MO.length);for(let e=0;ethis):this}readRecordBatch(t){return this._impl.isFile()?this._impl.readRecordBatch(t):null}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}toDOMStream(){return va.toDOMStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this})}toNodeStream(){return va.toNodeStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this},{objectMode:!0})}static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t,r){throw new Error('\"throughDOM\" not available in this environment')}static from(t){return t instanceof e?t:hP(t)?Zht(t):dP(t)?$ht(t):Jc(t)?sr(this,void 0,void 0,function*(){return yield e.from(yield t)}):pP(t)||Aw(t)||mP(t)||zu(t)?Qht(new Qu(t)):Yht(new sd(t))}static readAll(t){return t instanceof e?t.isSync()?WW(t):HW(t):hP(t)||ArrayBuffer.isView(t)||Yh(t)||fP(t)?WW(t):HW(t)}},vp=class extends ou{constructor(t){super(t),this._impl=t}readAll(){return[...this]}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return Kc(this,arguments,function*(){yield ii(yield*Xy(Zh(this[Symbol.iterator]())))})}},Eg=class extends ou{constructor(t){super(t),this._impl=t}readAll(){var t,r,i,s;return sr(this,void 0,void 0,function*(){let n=new Array;try{for(var o=!0,c=Zh(this),f;f=yield c.next(),t=f.done,!t;o=!0){s=f.value,o=!1;let _=s;n.push(_)}}catch(_){r={error:_}}finally{try{!o&&!t&&(i=c.return)&&(yield i.call(c))}finally{if(r)throw r.error}}return n})}[Symbol.iterator](){throw new Error(\"AsyncRecordBatchStreamReader is not Iterable\")}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}},Pg=class extends vp{constructor(t){super(t),this._impl=t}},o3=class extends Eg{constructor(t){super(t),this._impl=t}},a3=class{get numDictionaries(){return this._dictionaryIndex}get numRecordBatches(){return this._recordBatchIndex}constructor(t=new Map){this.closed=!1,this.autoDestroy=!0,this._dictionaryIndex=0,this._recordBatchIndex=0,this.dictionaries=t}isSync(){return!1}isAsync(){return!1}isFile(){return!1}isStream(){return!1}reset(t){return this._dictionaryIndex=0,this._recordBatchIndex=0,this.schema=t,this.dictionaries=new Map,this}_loadRecordBatch(t,r){let i=this._loadVectors(t,r,this.schema.fields),s=yr({type:new un(this.schema.fields),length:t.length,children:i});return new ks(this.schema,s)}_loadDictionaryBatch(t,r){let{id:i,isDelta:s}=t,{dictionaries:n,schema:o}=this,c=n.get(i);if(s||!c){let f=o.dictionaries.get(i),_=this._loadVectors(t.data,r,[f]);return(c&&s?c.concat(new wr(_)):new wr(_)).memoize()}return c.memoize()}_loadVectors(t,r,i){return new Qw(r,t.nodes,t.buffers,this.dictionaries,this.schema.metadataVersion).visitMany(i)}},zv=class extends a3{constructor(t,r){super(r),this._reader=hP(t)?new y2(this._handle=t):new Ov(this._handle=t)}isSync(){return!0}isStream(){return!0}[Symbol.iterator](){return this}cancel(){!this.closed&&(this.closed=!0)&&(this.reset()._reader.return(),this._reader=null,this.dictionaries=null)}open(t){return this.closed||(this.autoDestroy=qW(this,t),this.schema||(this.schema=this._reader.readSchema())||this.cancel()),this}throw(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.throw(t):Nn}return(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.return(t):Nn}next(){if(this.closed)return Nn;let t,{_reader:r}=this;for(;t=this._readNextMessageAndValidate();)if(t.isSchema())this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),s=r.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,s)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),s=r.readMessageBody(t.bodyLength),n=this._loadDictionaryBatch(i,s);this.dictionaries.set(i.id,n)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Mg(this.schema)}):this.return()}_readNextMessageAndValidate(t){return this._reader.readMessage(t)}},Nv=class extends a3{constructor(t,r){super(r),this._reader=new _2(this._handle=t)}isAsync(){return!0}isStream(){return!0}[Symbol.asyncIterator](){return this}cancel(){return sr(this,void 0,void 0,function*(){!this.closed&&(this.closed=!0)&&(yield this.reset()._reader.return(),this._reader=null,this.dictionaries=null)})}open(t){return sr(this,void 0,void 0,function*(){return this.closed||(this.autoDestroy=qW(this,t),this.schema||(this.schema=yield this._reader.readSchema())||(yield this.cancel())),this})}throw(t){return sr(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.throw(t):Nn})}return(t){return sr(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.return(t):Nn})}next(){return sr(this,void 0,void 0,function*(){if(this.closed)return Nn;let t,{_reader:r}=this;for(;t=yield this._readNextMessageAndValidate();)if(t.isSchema())yield this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),s=yield r.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,s)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),s=yield r.readMessageBody(t.bodyLength),n=this._loadDictionaryBatch(i,s);this.dictionaries.set(i.id,n)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Mg(this.schema)}):yield this.return()})}_readNextMessageAndValidate(t){return sr(this,void 0,void 0,function*(){return yield this._reader.readMessage(t)})}},l3=class extends zv{get footer(){return this._footer}get numDictionaries(){return this._footer?this._footer.numDictionaries:0}get numRecordBatches(){return this._footer?this._footer.numRecordBatches:0}constructor(t,r){super(t instanceof qw?t:new qw(t),r)}isSync(){return!0}isFile(){return!0}open(t){if(!this.closed&&!this._footer){this.schema=(this._footer=this._readFooter()).schema;for(let r of this._footer.dictionaryBatches())r&&this._readDictionaryBatch(this._dictionaryIndex++)}return super.open(t)}readRecordBatch(t){var r;if(this.closed)return null;this._footer||this.open();let i=(r=this._footer)===null||r===void 0?void 0:r.getRecordBatch(t);if(i&&this._handle.seek(i.offset)){let s=this._reader.readMessage(bi.RecordBatch);if(s?.isRecordBatch()){let n=s.header(),o=this._reader.readMessageBody(s.bodyLength);return this._loadRecordBatch(n,o)}}return null}_readDictionaryBatch(t){var r;let i=(r=this._footer)===null||r===void 0?void 0:r.getDictionaryBatch(t);if(i&&this._handle.seek(i.offset)){let s=this._reader.readMessage(bi.DictionaryBatch);if(s?.isDictionaryBatch()){let n=s.header(),o=this._reader.readMessageBody(s.bodyLength),c=this._loadDictionaryBatch(n,o);this.dictionaries.set(n.id,c)}}}_readFooter(){let{_handle:t}=this,r=t.size-IO,i=t.readInt32(r),s=t.readAt(r-i,i);return Ap.decode(s)}_readNextMessageAndValidate(t){var r;if(this._footer||this.open(),this._footer&&this._recordBatchIndexsuper.open}});return sr(this,void 0,void 0,function*(){if(!this.closed&&!this._footer){this.schema=(this._footer=yield this._readFooter()).schema;for(let i of this._footer.dictionaryBatches())i&&(yield this._readDictionaryBatch(this._dictionaryIndex++))}return yield r.open.call(this,t)})}readRecordBatch(t){var r;return sr(this,void 0,void 0,function*(){if(this.closed)return null;this._footer||(yield this.open());let i=(r=this._footer)===null||r===void 0?void 0:r.getRecordBatch(t);if(i&&(yield this._handle.seek(i.offset))){let s=yield this._reader.readMessage(bi.RecordBatch);if(s?.isRecordBatch()){let n=s.header(),o=yield this._reader.readMessageBody(s.bodyLength);return this._loadRecordBatch(n,o)}}return null})}_readDictionaryBatch(t){var r;return sr(this,void 0,void 0,function*(){let i=(r=this._footer)===null||r===void 0?void 0:r.getDictionaryBatch(t);if(i&&(yield this._handle.seek(i.offset))){let s=yield this._reader.readMessage(bi.DictionaryBatch);if(s?.isDictionaryBatch()){let n=s.header(),o=yield this._reader.readMessageBody(s.bodyLength),c=this._loadDictionaryBatch(n,o);this.dictionaries.set(n.id,c)}}})}_readFooter(){return sr(this,void 0,void 0,function*(){let{_handle:t}=this;t._pending&&(yield t._pending);let r=t.size-IO,i=yield t.readInt32(r),s=yield t.readAt(r-i,i);return Ap.decode(s)})}_readNextMessageAndValidate(t){return sr(this,void 0,void 0,function*(){if(this._footer||(yield this.open()),this._footer&&this._recordBatchIndex=4?s3(t)?new Pg(new l3(e.read())):new vp(new zv(e)):new vp(new zv(function*(){}()))}function Qht(e){return sr(this,void 0,void 0,function*(){let t=yield e.peek(Fv+7&-8);return t&&t.byteLength>=4?s3(t)?new Pg(new l3(yield e.read())):new Eg(new Nv(e)):new Eg(new Nv(function(){return Kc(this,arguments,function*(){})}()))})}function $ht(e){return sr(this,void 0,void 0,function*(){let{size:t}=yield e.stat(),r=new hm(e,t);return t>=GW&&s3(yield r.readAt(0,Fv+7&-8))?new o3(new CO(r)):new Eg(new Nv(r))})}var ns=class e extends Mr{static assemble(...t){let r=s=>s.flatMap(n=>Array.isArray(n)?r(n):n instanceof ks?n.data.children:n.data),i=new e;return i.visitMany(r(t)),i}constructor(){super(),this._byteLength=0,this._nodes=[],this._buffers=[],this._bufferRegions=[]}visit(t){if(t instanceof wr)return this.visitMany(t.data),this;let{type:r}=t;if(!Ne.isDictionary(r)){let{length:i}=t;if(i>2147483647)throw new RangeError(\"Cannot write arrays larger than 2^31 - 1 in length\");if(Ne.isUnion(r))this.nodes.push(new $u(i,0));else{let{nullCount:s}=t;Ne.isNull(r)||of.call(this,s<=0?new Uint8Array(0):Ag(t.offset,i,t.nullBitmap)),this.nodes.push(new $u(i,s))}}return super.visit(t)}visitNull(t){return this}visitDictionary(t){return this.visit(t.clone(t.type.indices))}get nodes(){return this._nodes}get buffers(){return this._buffers}get byteLength(){return this._byteLength}get bufferRegions(){return this._bufferRegions}};function of(e){let t=e.byteLength+7&-8;return this.buffers.push(e),this.bufferRegions.push(new dc(this._byteLength,t)),this._byteLength+=t,this}function Xht(e){var t;let{type:r,length:i,typeIds:s,valueOffsets:n}=e;if(of.call(this,s),r.mode===Mn.Sparse)return kO.call(this,e);if(r.mode===Mn.Dense){if(e.offset<=0)return of.call(this,n),kO.call(this,e);{let o=new Int32Array(i),c=Object.create(null),f=Object.create(null);for(let _,w,C=-1;++C{let C=r.typeIds[w],R=c[C],N=f[C];return _.slice(R,Math.min(i,N))}))}}return this}function Kht(e){let t;return e.nullCount>=e.length?of.call(this,new Uint8Array(0)):(t=e.values)instanceof Uint8Array?of.call(this,Ag(e.offset,e.length,t)):of.call(this,mg(e.values))}function xp(e){return of.call(this,e.values.subarray(0,e.length*e.stride))}function c3(e){let{length:t,values:r,valueOffsets:i}=e,s=ms(i[0]),n=ms(i[t]),o=Math.min(n-s,r.byteLength-s);return of.call(this,_P(-s,t+1,i)),of.call(this,r.subarray(s,s+o)),this}function RO(e){let{length:t,valueOffsets:r}=e;if(r){let{[0]:i,[t]:s}=r;return of.call(this,_P(-i,t+1,r)),this.visit(e.children[0].slice(i,s-i))}return this.visit(e.children[0])}function kO(e){return this.visitMany(e.type.children.map((t,r)=>e.children[r]).filter(Boolean))[0]}ns.prototype.visitBool=Kht;ns.prototype.visitInt=xp;ns.prototype.visitFloat=xp;ns.prototype.visitUtf8=c3;ns.prototype.visitLargeUtf8=c3;ns.prototype.visitBinary=c3;ns.prototype.visitLargeBinary=c3;ns.prototype.visitFixedSizeBinary=xp;ns.prototype.visitDate=xp;ns.prototype.visitTimestamp=xp;ns.prototype.visitTime=xp;ns.prototype.visitDecimal=xp;ns.prototype.visitList=RO;ns.prototype.visitStruct=kO;ns.prototype.visitUnion=Xht;ns.prototype.visitInterval=xp;ns.prototype.visitDuration=xp;ns.prototype.visitFixedSizeList=RO;ns.prototype.visitMap=RO;var Ig=class extends yg{static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t,r){throw new Error('\"throughDOM\" not available in this environment')}constructor(t){super(),this._position=0,this._started=!1,this._sink=new nd,this._schema=null,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,Pl(t)||(t={autoDestroy:!0,writeLegacyIpcFormat:!1}),this._autoDestroy=typeof t.autoDestroy==\"boolean\"?t.autoDestroy:!0,this._writeLegacyIpcFormat=typeof t.writeLegacyIpcFormat==\"boolean\"?t.writeLegacyIpcFormat:!1}toString(t=!1){return this._sink.toString(t)}toUint8Array(t=!1){return this._sink.toUint8Array(t)}writeAll(t){return Jc(t)?t.then(r=>this.writeAll(r)):zu(t)?OO(this,t):DO(this,t)}get closed(){return this._sink.closed}[Symbol.asyncIterator](){return this._sink[Symbol.asyncIterator]()}toDOMStream(t){return this._sink.toDOMStream(t)}toNodeStream(t){return this._sink.toNodeStream(t)}close(){return this.reset()._sink.close()}abort(t){return this.reset()._sink.abort(t)}finish(){return this._autoDestroy?this.close():this.reset(this._sink,this._schema),this}reset(t=this._sink,r=null){return t===this._sink||t instanceof nd?this._sink=t:(this._sink=new nd,t&&s9(t)?this.toDOMStream({type:\"bytes\"}).pipeTo(t):t&&o9(t)&&this.toNodeStream({objectMode:!1}).pipe(t)),this._started&&this._schema&&this._writeFooter(this._schema),this._started=!1,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,(!r||!Tg(r,this._schema))&&(r==null?(this._position=0,this._schema=null):(this._started=!0,this._schema=r,this._writeSchema(r))),this}write(t){let r=null;if(this._sink){if(t==null)return this.finish()&&void 0;if(t instanceof ba&&!(r=t.schema))return this.finish()&&void 0;if(t instanceof ks&&!(r=t.schema))return this.finish()&&void 0}else throw new Error(\"RecordBatchWriter is closed\");if(r&&!Tg(r,this._schema)){if(this._started&&this._autoDestroy)return this.close();this.reset(this._sink,r)}t instanceof ks?t instanceof Mg||this._writeRecordBatch(t):t instanceof ba?this.writeAll(t.batches):Yh(t)&&this.writeAll(t)}_writeMessage(t,r=8){let i=r-1,s=Ac.encode(t),n=s.byteLength,o=this._writeLegacyIpcFormat?4:8,c=n+o+i&~i,f=c-n-o;return t.headerType===bi.RecordBatch?this._recordBatchBlocks.push(new mp(c,t.bodyLength,this._position)):t.headerType===bi.DictionaryBatch&&this._dictionaryBlocks.push(new mp(c,t.bodyLength,this._position)),this._writeLegacyIpcFormat||this._write(Int32Array.of(-1)),this._write(Int32Array.of(c-o)),n>0&&this._write(s),this._writePadding(f)}_write(t){if(this._started){let r=Rr(t);r&&r.byteLength>0&&(this._sink.write(r),this._position+=r.byteLength)}return this}_writeSchema(t){return this._writeMessage(Ac.from(t))}_writeFooter(t){return this._writeLegacyIpcFormat?this._write(Int32Array.of(0)):this._write(Int32Array.of(-1,0))}_writeMagic(){return this._write(Bv)}_writePadding(t){return t>0?this._write(new Uint8Array(t)):this}_writeRecordBatch(t){let{byteLength:r,nodes:i,bufferRegions:s,buffers:n}=ns.assemble(t),o=new wa(t.numRows,i,s),c=Ac.from(o,r);return this._writeDictionaries(t)._writeMessage(c)._writeBodyBuffers(n)}_writeDictionaryBatch(t,r,i=!1){this._dictionaryDeltaOffsets.set(r,t.length+(this._dictionaryDeltaOffsets.get(r)||0));let{byteLength:s,nodes:n,bufferRegions:o,buffers:c}=ns.assemble(new wr([t])),f=new wa(t.length,n,o),_=new pc(f,r,i),w=Ac.from(_,s);return this._writeMessage(w)._writeBodyBuffers(c)}_writeBodyBuffers(t){let r,i,s;for(let n=-1,o=t.length;++n0&&(this._write(r),(s=(i+7&-8)-i)>0&&this._writePadding(s));return this}_writeDictionaries(t){for(let[r,i]of t.dictionaries){let s=this._dictionaryDeltaOffsets.get(r)||0;if(s===0||(i=i?.slice(s)).length>0)for(let n of i.data)this._writeDictionaryBatch(n,r,s>0),s+=n.length}return this}},v2=class e extends Ig{static writeAll(t,r){let i=new e(r);return Jc(t)?t.then(s=>i.writeAll(s)):zu(t)?OO(i,t):DO(i,t)}},x2=class e extends Ig{static writeAll(t){let r=new e;return Jc(t)?t.then(i=>r.writeAll(i)):zu(t)?OO(r,t):DO(r,t)}constructor(){super(),this._autoDestroy=!0}_writeSchema(t){return this._writeMagic()._writePadding(2)}_writeFooter(t){let r=Ap.encode(new Ap(t,en.V5,this._recordBatchBlocks,this._dictionaryBlocks));return super._writeFooter(t)._write(r)._write(Int32Array.of(r.byteLength))._writeMagic()}};function DO(e,t){let r=t;t instanceof ba&&(r=t.batches,e.reset(void 0,t.schema));for(let i of r)e.write(i);return e.finish()}function OO(e,t){var r,i,s,n,o,c,f;return sr(this,void 0,void 0,function*(){try{for(r=!0,i=Zh(t);s=yield i.next(),n=s.done,!n;r=!0){f=s.value,r=!1;let _=f;e.write(_)}}catch(_){o={error:_}}finally{try{!r&&!n&&(c=i.return)&&(yield c.call(i))}finally{if(o)throw o.error}}return e.finish()})}function ZW(e,t){if(zu(e))return tft(e,t);if(Yh(e))return Jht(e,t);throw new Error(\"toDOMStream() must be called with an Iterable or AsyncIterable\")}function Jht(e,t){let r=null,i=t?.type===\"bytes\"||!1,s=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){n(o,r||(r=e[Symbol.iterator]()))},pull(o){r?n(o,r):o.close()},cancel(){(r?.return&&r.return()||!0)&&(r=null)}}),Object.assign({highWaterMark:i?s:void 0},t));function n(o,c){let f,_=null,w=o.desiredSize||null;for(;!(_=c.next(i?w:null)).done;)if(ArrayBuffer.isView(_.value)&&(f=Rr(_.value))&&(w!=null&&i&&(w=w-f.byteLength+1),_.value=f),o.enqueue(_.value),w!=null&&--w<=0)return;o.close()}}function tft(e,t){let r=null,i=t?.type===\"bytes\"||!1,s=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){return sr(this,void 0,void 0,function*(){yield n(o,r||(r=e[Symbol.asyncIterator]()))})},pull(o){return sr(this,void 0,void 0,function*(){r?yield n(o,r):o.close()})},cancel(){return sr(this,void 0,void 0,function*(){(r?.return&&(yield r.return())||!0)&&(r=null)})}}),Object.assign({highWaterMark:i?s:void 0},t));function n(o,c){return sr(this,void 0,void 0,function*(){let f,_=null,w=o.desiredSize||null;for(;!(_=yield c.next(i?w:null)).done;)if(ArrayBuffer.isView(_.value)&&(f=Rr(_.value))&&(w!=null&&i&&(w=w-f.byteLength+1),_.value=f),o.enqueue(_.value),w!=null&&--w<=0)return;o.close()})}}function $W(e){return new BO(e)}var BO=class{constructor(t){this._numChunks=0,this._finished=!1,this._bufferedSize=0;let{[\"readableStrategy\"]:r,[\"writableStrategy\"]:i,[\"queueingStrategy\"]:s=\"count\"}=t,n=i9(t,[\"readableStrategy\",\"writableStrategy\",\"queueingStrategy\"]);this._controller=null,this._builder=bg(n),this._getSize=s!==\"bytes\"?YW:QW;let{[\"highWaterMark\"]:o=s===\"bytes\"?Math.pow(2,14):1e3}=Object.assign({},r),{[\"highWaterMark\"]:c=s===\"bytes\"?Math.pow(2,14):1e3}=Object.assign({},i);this.readable=new ReadableStream({cancel:()=>{this._builder.clear()},pull:f=>{this._maybeFlush(this._builder,this._controller=f)},start:f=>{this._maybeFlush(this._builder,this._controller=f)}},{highWaterMark:o,size:s!==\"bytes\"?YW:QW}),this.writable=new WritableStream({abort:()=>{this._builder.clear()},write:()=>{this._maybeFlush(this._builder,this._controller)},close:()=>{this._maybeFlush(this._builder.finish(),this._controller)}},{highWaterMark:c,size:f=>this._writeValueAndReturnChunkSize(f)})}_writeValueAndReturnChunkSize(t){let r=this._bufferedSize;return this._bufferedSize=this._getSize(this._builder.append(t)),this._bufferedSize-r}_maybeFlush(t,r){r!=null&&(this._bufferedSize>=r.desiredSize&&++this._numChunks&&this._enqueue(r,t.toVector()),t.finished&&((t.length>0||this._numChunks===0)&&++this._numChunks&&this._enqueue(r,t.toVector()),!this._finished&&(this._finished=!0)&&this._enqueue(r,null)))}_enqueue(t,r){this._bufferedSize=0,this._controller=null,r==null?t.close():t.enqueue(r)}},YW=e=>{var t;return(t=e?.length)!==null&&t!==void 0?t:0},QW=e=>{var t;return(t=e?.byteLength)!==null&&t!==void 0?t:0};function u3(e,t){let r=new nd,i=null,s=new ReadableStream({cancel(){return sr(this,void 0,void 0,function*(){yield r.close()})},start(c){return sr(this,void 0,void 0,function*(){yield o(c,i||(i=yield n()))})},pull(c){return sr(this,void 0,void 0,function*(){i?yield o(c,i):c.close()})}});return{writable:new WritableStream(r,Object.assign({highWaterMark:Math.pow(2,14)},e)),readable:s};function n(){return sr(this,void 0,void 0,function*(){return yield(yield ou.from(r)).open(t)})}function o(c,f){return sr(this,void 0,void 0,function*(){let _=c.desiredSize,w=null;for(;!(w=yield f.next()).done;)if(c.enqueue(w.value),_!=null&&--_<=0)return;c.close()})}}function h3(e,t){let r=new this(e),i=new Qu(r),s=new ReadableStream({cancel(){return sr(this,void 0,void 0,function*(){yield i.cancel()})},pull(o){return sr(this,void 0,void 0,function*(){yield n(o)})},start(o){return sr(this,void 0,void 0,function*(){yield n(o)})}},Object.assign({highWaterMark:Math.pow(2,14)},t));return{writable:new WritableStream(r,e),readable:s};function n(o){return sr(this,void 0,void 0,function*(){let c=null,f=o.desiredSize;for(;c=yield i.read(f||null);)if(o.enqueue(c),f!=null&&(f-=c.byteLength)<=0)return;o.close()})}}function b2(e){let t=ou.from(e);return Jc(t)?t.then(r=>b2(r)):t.isAsync()?t.readAll().then(r=>new ba(r)):new ba(t.readAll())}var bft=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},ZD),yO),uO),YD),jD),cO),HD),{compareSchemas:Tg,compareFields:wW,compareTypes:SW});va.toDOMStream=ZW;Qn.throughDOM=$W;ou.throughDOM=u3;Pg.throughDOM=u3;vp.throughDOM=u3;Ig.throughDOM=h3;x2.throughDOM=h3;v2.throughDOM=h3;var wft=\"0.5.0\",Sft=`https://cdn.jsdelivr.net/npm/parquet-wasm@${wft}/esm/arrow2_bg.wasm`,FO=!1;async function XW(){FO||(await e9(Sft),FO=!0)}function Tft(e){if(!FO)throw new Error(\"wasm not ready\");console.time(\"readParquet\");let t=KG(new Uint8Array(e.buffer)).intoIPCStream(),r=b2(t);return console.timeEnd(\"readParquet\"),r}function w2(e){let t=[];for(let r of e){let i=Tft(r);i.batches.length!==1&&console.warn(\"Expected one batch\"),t.push(...i.batches)}return new ba(t)}var KW=ki(Ji(),1);function zO(e){return e instanceof Array&&e?.[0]instanceof DataView?e?.[0].byteLength>0?w2(e).getChildAt(0):null:e}var Cg=class{model;callbacks;updateStateCallback;constructor(t,r){this.model=t,this.model.on(\"change\",r),this.updateStateCallback=r,this.callbacks=new Map,this.callbacks.set(\"change\",r)}async loadSubModels(){}initRegularAttribute(t,r){this[r]=this.model.get(t),this.model.off(`change:${t}`);let i=()=>{this[r]=this.model.get(t)};this.model.on(`change:${t}`,i),this.callbacks.set(`change:${t}`,i)}initVectorizedAccessor(t,r){this[r]=zO(this.model.get(t)),this.model.off(`change:${t}`);let i=()=>{this[r]=zO(this.model.get(t))};this.model.on(`change:${t}`,i),this.callbacks.set(`change:${t}`,i)}finalize(){for(let[t,r]of Object.entries(this.callbacks))this.model.off(t,r)}};async function d3(e,t){let r=[];for(let i of t)r.push(e.get_model(i.slice(10)));return await Promise.all(r)}function ce(e){return e!=null}var Mft=`\n uniform bool brushing_enabled;\n uniform int brushing_target;\n uniform vec2 brushing_mousePos;\n uniform float brushing_radius;\n\n #ifdef NON_INSTANCED_MODEL\n attribute vec2 brushingTargets;\n #else\n attribute vec2 instanceBrushingTargets;\n #endif\n\n varying float brushing_isVisible;\n\n bool brushing_isPointInRange(vec2 position) {\n if (!brushing_enabled) {\n return true;\n }\n vec2 source_commonspace = project_position(position);\n vec2 target_commonspace = project_position(brushing_mousePos);\n float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);\n\n return distance <= brushing_radius;\n }\n\n bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {\n return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);\n }\n\n void brushing_setVisible(bool visible) {\n brushing_isVisible = float(visible);\n }\n`,Eft=`\n uniform bool brushing_enabled;\n varying float brushing_isVisible;\n`,Pft={source:0,target:1,custom:2,source_target:3},Ift={\"vs:DECKGL_FILTER_GL_POSITION\":`\n vec2 brushingTarget;\n vec2 brushingSource;\n if (brushing_target == 3) {\n brushingTarget = geometry.worldPositionAlt.xy;\n brushingSource = geometry.worldPosition.xy;\n } else if (brushing_target == 0) {\n brushingTarget = geometry.worldPosition.xy;\n } else if (brushing_target == 1) {\n brushingTarget = geometry.worldPositionAlt.xy;\n } else {\n #ifdef NON_INSTANCED_MODEL\n brushingTarget = brushingTargets;\n #else\n brushingTarget = instanceBrushingTargets;\n #endif\n }\n bool visible;\n if (brushing_target == 3) {\n visible = brushing_arePointsInRange(brushingSource, brushingTarget);\n } else {\n visible = brushing_isPointInRange(brushingTarget);\n }\n brushing_setVisible(visible);\n `,\"fs:DECKGL_FILTER_COLOR\":`\n if (brushing_enabled && brushing_isVisible < 0.5) {\n discard;\n }\n `},JW={name:\"brushing\",dependencies:[Uh],vs:Mft,fs:Eft,inject:Ift,getUniforms:e=>{if(!e||!(\"viewport\"in e))return{};let{brushingEnabled:t=!0,brushingRadius:r=1e4,brushingTarget:i=\"source\",mousePosition:s,viewport:n}=e;return{brushing_enabled:!!(t&&s&&n.containsPixel(s)),brushing_radius:r,brushing_target:Pft[i]||0,brushing_mousePos:s?n.unproject([s.x-n.x,s.y-n.y]):[0,0]}}};var Cft={getBrushingTarget:{type:\"accessor\",value:[0,0]},brushingTarget:\"source\",brushingEnabled:!0,brushingRadius:1e4},mm=class extends Bu{getShaders(){return{modules:[JW]}}initializeState(t,r){let i=this.getAttributeManager();i&&i.add({brushingTargets:{size:2,accessor:\"getBrushingTarget\",shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}}),this.state.onMouseMove=()=>{var s;(s=this.getCurrentLayer())===null||s===void 0||s.setNeedsRedraw()},t.deck&&t.deck.eventManager.on({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}finalizeState(t,r){t.deck&&t.deck.eventManager.off({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}};G(mm,\"defaultProps\",Cft);G(mm,\"extensionName\",\"BrushingExtension\");var tH=`\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`,eH=`\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;function rH(e){if(!e||!(\"extensions\"in e))return{};let{filterRange:t=[-1,1],filterEnabled:r=!0,filterTransformSize:i=!0,filterTransformColor:s=!0}=e,n=e.filterSoftRange||t;return{...Number.isFinite(t[0])?{filter_min:t[0],filter_softMin:n[0],filter_softMax:n[1],filter_max:t[1]}:{filter_min:t.map(o=>o[0]),filter_softMin:n.map(o=>o[0]),filter_softMax:n.map(o=>o[1]),filter_max:t.map(o=>o[1])},filter_enabled:r,filter_useSoftMargin:!!e.filterSoftRange,filter_transformSize:r&&i,filter_transformColor:r&&s}}function Lft(e){if(!e||!(\"extensions\"in e))return{};let t=rH(e);if(Number.isFinite(t.filter_min)){let r=Math.fround(t.filter_min);t.filter_min-=r,t.filter_softMin-=r,t.filter_min64High=r;let i=Math.fround(t.filter_max);t.filter_max-=i,t.filter_softMax-=i,t.filter_max64High=i}else{let r=t.filter_min.map(Math.fround);t.filter_min=t.filter_min.map((s,n)=>s-r[n]),t.filter_softMin=t.filter_softMin.map((s,n)=>s-r[n]),t.filter_min64High=r;let i=t.filter_max.map(Math.fround);t.filter_max=t.filter_max.map((s,n)=>s-i[n]),t.filter_softMax=t.filter_softMax.map((s,n)=>s-i[n]),t.filter_max64High=i}return t}var iH={\"vs:#main-start\":`\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\"vs:#main-end\":`\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n `,\"vs:DECKGL_FILTER_SIZE\":`\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\"fs:DECKGL_FILTER_COLOR\":`\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `},nH={name:\"data-filter\",vs:tH,fs:eH,inject:iH,getUniforms:rH},sH={name:\"data-filter-fp64\",vs:tH,fs:eH,inject:iH,getUniforms:Lft};var kft=`#define SHADER_NAME data-filter-vertex-shader\n\n#ifdef FLOAT_TARGET\n attribute float filterIndices;\n attribute float filterPrevIndices;\n#else\n attribute vec2 filterIndices;\n attribute vec2 filterPrevIndices;\n#endif\n\nvarying vec4 vColor;\nconst float component = 1.0 / 255.0;\n\nvoid main() {\n #ifdef FLOAT_TARGET\n dataFilter_value *= float(filterIndices != filterPrevIndices);\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n vColor = vec4(0.0, 0.0, 0.0, 1.0);\n #else\n // Float texture is not supported: pack result into 4 channels x 256 px x 64px\n dataFilter_value *= float(filterIndices.x != filterPrevIndices.x);\n float col = filterIndices.x;\n float row = filterIndices.y * 4.0;\n float channel = floor(row);\n row = fract(row);\n vColor = component * vec4(bvec4(channel == 0.0, channel == 1.0, channel == 2.0, channel == 3.0));\n gl_Position = vec4(col * 2.0 - 1.0, row * 2.0 - 1.0, 0.0, 1.0);\n #endif\n gl_PointSize = 1.0;\n}\n`,Rft=`#define SHADER_NAME data-filter-fragment-shader\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main() {\n if (dataFilter_value < 0.5) {\n discard;\n }\n gl_FragColor = vColor;\n}\n`;function oH(e){return!!(e.getExtension(\"EXT_float_blend\")&&(e.getExtension(\"EXT_color_buffer_float\")||e.getExtension(\"WEBGL_color_buffer_float\")))}function aH(e,t){return t?new yi(e,{width:1,height:1,attachments:{36064:new pi(e,{format:hr(e)?34836:6408,type:5126,mipmaps:!1})}}):new yi(e,{width:256,height:64,depth:!1})}function lH(e,t,r){return t.defines.NON_INSTANCED_MODEL=1,r&&(t.defines.FLOAT_TARGET=1),new Sn(e,{id:\"data-filter-aggregation-model\",vertexCount:1,isInstanced:!1,drawMode:0,vs:kft,fs:Rft,...t})}var cH={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};var Oft={getFilterValue:{type:\"accessor\",value:0},onFilteredItemsChange:{type:\"function\",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0},uH={1:\"float\",2:\"vec2\",3:\"vec3\",4:\"vec4\"},gm=class extends Bu{constructor({filterSize:t=1,fp64:r=!1,countItems:i=!1}={}){if(!uH[t])throw new Error(\"filterSize out of range\");super({filterSize:t,fp64:r,countItems:i})}getShaders(t){let{filterSize:r,fp64:i}=t.opts;return{modules:[i?sH:nH],defines:{DATAFILTER_TYPE:uH[r],DATAFILTER_DOUBLE:!!i}}}initializeState(t,r){let i=this.getAttributeManager();i&&i.add({filterValues:{size:r.opts.filterSize,type:r.opts.fp64?5130:5126,accessor:\"getFilterValue\",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}}});let{gl:s}=this.context;if(i&&r.opts.countItems){let n=oH(s);i.add({filterIndices:{size:n?1:2,vertexOffset:1,type:5121,normalized:!0,accessor:(f,{index:_})=>{let w=f&&f.__source?f.__source.index:_;return n?(w+1)%255:[(w+1)%255,Math.floor(w/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});let o=aH(s,n),c=lH(s,r.getShaders.call(this,r),n);this.setState({filterFBO:o,filterModel:c})}}updateState({props:t,oldProps:r}){if(this.state.filterModel){let s=this.getAttributeManager().attributes.filterValues.needsUpdate()||t.filterEnabled!==r.filterEnabled||t.filterRange!==r.filterRange||t.filterSoftRange!==r.filterSoftRange;s&&this.setState({filterNeedsUpdate:s})}}draw(t,r){let{filterFBO:i,filterModel:s,filterNeedsUpdate:n}=this.state,{onFilteredItemsChange:o}=this.props;if(n&&o&&s){let{attributes:{filterValues:c,filterIndices:f}}=this.getAttributeManager();s.setVertexCount(this.getNumInstances());let{gl:_}=this.context;Gf(_,{framebuffer:i,color:[0,0,0,0]}),s.updateModuleSettings(t.moduleParameters).setAttributes({...c.getShaderAttributes(),...f&&f.getShaderAttributes()}).draw({framebuffer:i,parameters:{...cH,viewport:[0,0,i.width,i.height]}});let w=Rh(i),C=0;for(let R=0;R 1000\n }\n\n if (collision_enabled) {\n vec4 collision_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n vec2 collision_texCoords = collision_getCoords(collision_common_position);\n collision_fade = collision_isVisible(collision_texCoords, geometry.pickingColor / 255.0);\n if (collision_fade < 0.0001) {\n // Position outside clip space bounds to discard\n position = vec4(0.0, 0.0, 2.0, 1.0);\n }\n }\n `,\"vs:DECKGL_FILTER_COLOR\":`\n color.a *= collision_fade;\n `},zft=(e,t)=>{if(!e||!(\"dummyCollisionMap\"in e))return{};let{collisionFBO:r,drawToCollisionMap:i,dummyCollisionMap:s}=e;return{collision_sort:!!i,collision_texture:!i&&r?r:s}},hH={name:\"collision\",dependencies:[Uh],vs:Bft,inject:Fft,getUniforms:zft};var S2=class extends rc{renderCollisionMap(t,r){let i=this.gl,s=1;return bn(i,{scissorTest:!0,scissor:[s,s,t.width-2*s,t.height-2*s],clearColor:[0,0,0,0],blend:!1,depthTest:!0,depthRange:[0,1]},()=>this.render({...r,target:t,pass:\"collision\"}))}getModuleParameters(){return{drawToCollisionMap:!0,pickingActive:1,pickingAttribute:!1,lightSources:{}}}};var T2=class extends rc{constructor(t,r){super(t,r),G(this,\"maskMap\",void 0),G(this,\"fbo\",void 0);let{mapSize:i=2048}=r;this.maskMap=new pi(t,{width:i,height:i,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.fbo=new yi(t,{id:\"maskmap\",width:i,height:i,attachments:{36064:this.maskMap}})}render(t){let r=this.gl,i=[!1,!1,!1,!1];return i[t.channel]=!0,bn(r,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:i,depthTest:!1},()=>super.render({...t,target:this.fbo,pass:\"mask\"}))}shouldDrawLayer(t){return t.props.operation.includes(\"mask\")}delete(){this.fbo.delete(),this.maskMap.delete()}};function fH(e,t){let r=[1/0,1/0,-1/0,-1/0];for(let i of e){let s=i.getBounds();if(s){let n=i.projectPosition(s[0],{viewport:t,autoOffset:!1}),o=i.projectPosition(s[1],{viewport:t,autoOffset:!1});r[0]=Math.min(r[0],n[0]),r[1]=Math.min(r[1],n[1]),r[2]=Math.max(r[2],o[0]),r[3]=Math.max(r[3],o[1])}}return Number.isFinite(r[0])?r:null}var Nft=2048;function dH(e){let{bounds:t,viewport:r,border:i=0}=e,{isGeospatial:s}=r;if(t[2]<=t[0]||t[3]<=t[1])return null;let n=r.unprojectPosition([(t[0]+t[2])/2,(t[1]+t[3])/2,0]),{width:o,height:c,zoom:f}=e;if(f===void 0){o=o-i*2,c=c-i*2;let _=Math.min(o/(t[2]-t[0]),c/(t[3]-t[1]));f=Math.min(Math.log2(_),20)}else if(!o||!c){let _=2**f;o=Math.round(Math.abs(t[2]-t[0])*_),c=Math.round(Math.abs(t[3]-t[1])*_);let w=Nft-i*2;if(o>w||c>w){let C=w/Math.max(o,c);o=Math.round(o*C),c=Math.round(c*C),f+=Math.log2(C)}}return s?new nc({id:r.id,x:i,y:i,width:o,height:c,longitude:n[0],latitude:n[1],zoom:f,orthographic:!0}):new Zy({id:r.id,x:i,y:i,width:o,height:c,target:n,zoom:f,flipY:!1})}function Uft(e,t){let r;if(t&&t.length===2){let[n,o]=t,c=e.getBounds({z:n}),f=e.getBounds({z:o});r=[Math.min(c[0],f[0]),Math.min(c[1],f[1]),Math.max(c[2],f[2]),Math.max(c[3],f[3])]}else r=e.getBounds();let i=e.projectPosition(r.slice(0,2)),s=e.projectPosition(r.slice(2,4));return[i[0],i[1],s[0],s[1]]}function pH(e,t,r){if(!e)return[0,0,1,1];let i=Uft(t,r),s=Vft(i);return e[2]-e[0]<=s[2]-s[0]&&e[3]-e[1]<=s[3]-s[1]?e:[Math.max(e[0],s[0]),Math.max(e[1],s[1]),Math.min(e[2],s[2]),Math.min(e[3],s[3])]}function Vft(e){let t=e[2]-e[0],r=e[3]-e[1],i=(e[0]+e[2])/2,s=(e[1]+e[3])/2;return[i-t,s-r,i+t,s+r]}var M2=class{constructor(){G(this,\"id\",\"mask-effect\"),G(this,\"props\",null),G(this,\"useInPicking\",!0),G(this,\"order\",0),G(this,\"dummyMaskMap\",void 0),G(this,\"channels\",[]),G(this,\"masks\",null),G(this,\"maskPass\",void 0),G(this,\"maskMap\",void 0),G(this,\"lastViewport\",void 0)}preRender(t,{layers:r,layerFilter:i,viewports:s,onViewportActive:n,views:o,isPicking:c}){let f=!1;if(this.dummyMaskMap||(this.dummyMaskMap=new pi(t,{width:1,height:1})),c)return{didRender:f};let _=r.filter(N=>N.props.visible&&N.props.operation.includes(\"mask\"));if(_.length===0)return this.masks=null,this.channels.length=0,{didRender:f};this.masks={},this.maskPass||(this.maskPass=new T2(t,{id:\"default-mask\"}),this.maskMap=this.maskPass.maskMap);let w=this._sortMaskChannels(_),C=s[0],R=!this.lastViewport||!this.lastViewport.equals(C);if(C.resolution!==void 0)return nr.warn(\"MaskExtension is not supported in GlobeView\")(),{didRender:f};for(let N in w){let j=this._renderChannel(w[N],{layerFilter:i,onViewportActive:n,views:o,viewport:C,viewportChanged:R});f||(f=j)}return{didRender:f}}_renderChannel(t,{layerFilter:r,onViewportActive:i,views:s,viewport:n,viewportChanged:o}){let c=!1,f=this.channels[t.index];if(!f)return c;let _=t===f||t.layers.length!==f.layers.length||t.layers.some((w,C)=>w!==f.layers[C]||w.props.transitions)||t.layerBounds.some((w,C)=>w!==f.layerBounds[C]);if(t.bounds=f.bounds,t.maskBounds=f.maskBounds,this.channels[t.index]=t,_||o){this.lastViewport=n;let w=fH(t.layers,n);if(t.bounds=w&&pH(w,n),_||!To(t.bounds,f.bounds)){let{maskPass:C,maskMap:R}=this,N=w&&dH({bounds:t.bounds,viewport:n,width:R.width,height:R.height,border:1});t.maskBounds=N?N.getBounds():[0,0,1,1],C.render({pass:\"mask\",channel:t.index,layers:t.layers,layerFilter:r,viewports:N?[N]:[],onViewportActive:i,views:s,moduleParameters:{devicePixelRatio:1}}),c=!0}}return this.masks[t.id]={index:t.index,bounds:t.maskBounds,coordinateOrigin:t.coordinateOrigin,coordinateSystem:t.coordinateSystem},c}_sortMaskChannels(t){let r={},i=0;for(let s of t){let{id:n}=s.root,o=r[n];if(!o){if(++i>4){nr.warn(\"Too many mask layers. The max supported is 4\")();continue}o={id:n,index:this.channels.findIndex(c=>c?.id===n),layers:[],layerBounds:[],coordinateOrigin:s.root.props.coordinateOrigin,coordinateSystem:s.root.props.coordinateSystem},r[n]=o}o.layers.push(s),o.layerBounds.push(s.getBounds())}for(let s=0;s<4;s++){let n=this.channels[s];(!n||!(n.id in r))&&(this.channels[s]=null)}for(let s in r){let n=r[s];n.index<0&&(n.index=this.channels.findIndex(o=>!o),this.channels[n.index]=n)}return r}getModuleParameters(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}cleanup(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}};var NO=2,E2=class{constructor(){G(this,\"id\",\"collision-filter-effect\"),G(this,\"props\",null),G(this,\"useInPicking\",!0),G(this,\"order\",1),G(this,\"channels\",{}),G(this,\"collisionFilterPass\",void 0),G(this,\"collisionFBOs\",{}),G(this,\"dummyCollisionMap\",void 0),G(this,\"lastViewport\",void 0)}preRender(t,{effects:r,layers:i,layerFilter:s,viewports:n,onViewportActive:o,views:c,isPicking:f,preRenderStats:_={}}){var w;if(this.dummyCollisionMap||(this.dummyCollisionMap=new pi(t,{width:1,height:1})),f)return;let C=i.filter(({props:{visible:$,collisionEnabled:K}})=>$&&K);if(C.length===0){this.channels={};return}this.collisionFilterPass||(this.collisionFilterPass=new S2(t,{id:\"default-collision-filter\"}));let R=r?.filter($=>$.constructor===M2),N=(w=_[\"mask-effect\"])===null||w===void 0?void 0:w.didRender,j=this._groupByCollisionGroup(t,C),Y=n[0],rt=!this.lastViewport||!this.lastViewport.equals(Y)||N;for(let $ in j){let K=this.collisionFBOs[$],tt=j[$];K.resize({width:t.canvas.width/NO,height:t.canvas.height/NO}),this._render(tt,{effects:R,layerFilter:s,onViewportActive:o,views:c,viewport:Y,viewportChanged:rt})}}_render(t,{effects:r,layerFilter:i,onViewportActive:s,views:n,viewport:o,viewportChanged:c}){let{collisionGroup:f}=t,_=this.channels[f];if(!_)return;let w=c||t===_||!ao(_.layers,t.layers,1)||t.layerBounds.some((C,R)=>!To(C,_.layerBounds[R]))||t.allLayersLoaded!==_.allLayersLoaded||t.layers.some(C=>C.props.transitions);if(this.channels[f]=t,w){this.lastViewport=o;let C=this.collisionFBOs[f];this.collisionFilterPass.renderCollisionMap(C,{pass:\"collision-filter\",isPicking:!0,layers:t.layers,effects:r,layerFilter:i,viewports:o?[o]:[],onViewportActive:s,views:n,moduleParameters:{dummyCollisionMap:this.dummyCollisionMap,devicePixelRatio:Sl(C.gl)/NO}})}}_groupByCollisionGroup(t,r){let i={};for(let s of r){let{collisionGroup:n}=s.props,o=i[n];o||(o={collisionGroup:n,layers:[],layerBounds:[],allLayersLoaded:!0},i[n]=o),o.layers.push(s),o.layerBounds.push(s.getBounds()),s.isLoaded||(o.allLayersLoaded=!1)}for(let s of Object.keys(i))this.collisionFBOs[s]||this.createFBO(t,s),this.channels[s]||(this.channels[s]=i[s]);for(let s of Object.keys(this.collisionFBOs))i[s]||this.destroyFBO(s);return i}getModuleParameters(t){let{collisionGroup:r}=t.props,{collisionFBOs:i,dummyCollisionMap:s}=this;return{collisionFBO:i[r],dummyCollisionMap:s}}cleanup(){this.dummyCollisionMap&&(this.dummyCollisionMap.delete(),this.dummyCollisionMap=void 0),this.channels={};for(let t of Object.keys(this.collisionFBOs))this.destroyFBO(t);this.collisionFBOs={},this.lastViewport=void 0}createFBO(t,r){let{width:i,height:s}=t.canvas,n=new pi(t,{width:i,height:s,parameters:{10241:9728,10240:9728,10242:33071,10243:33071}}),o=new tl(t,{format:33189,width:i,height:s});this.collisionFBOs[r]=new yi(t,{id:\"Collision-\".concat(r),width:i,height:s,attachments:{36064:n,36096:o}})}destroyFBO(t){let r=this.collisionFBOs[t];for(let i of Object.values(r.attachments))i.delete();r.delete(),delete this.collisionFBOs[t]}};var jft={getCollisionPriority:{type:\"accessor\",value:0},collisionEnabled:!0,collisionGroup:{type:\"string\",value:\"default\"},collisionTestProps:{}},_m=class extends Bu{getShaders(){return{modules:[hH]}}draw({uniforms:t,context:r,moduleParameters:i}){let{collisionEnabled:s}=this.props,{collisionFBO:n,drawToCollisionMap:o}=i,c=s&&!!n;t.collision_enabled=c,o&&(this.props=this.clone(this.props.collisionTestProps).props)}initializeState(t,r){var i;if(this.getAttributeManager()===null)return;(i=this.context.deck)===null||i===void 0||i._addDefaultEffect(new E2),this.getAttributeManager().add({collisionPriorities:{size:1,accessor:\"getCollisionPriority\",shaderAttributes:{collisionPriorities:{divisor:0},instanceCollisionPriorities:{divisor:1}}}})}getNeedsPickingBuffer(){return this.props.collisionEnabled}};G(_m,\"defaultProps\",jft);G(_m,\"extensionName\",\"CollisionFilterExtension\");var Uv=class extends Cg{static extensionType;constructor(t,r){super(t,r)}},P2=class extends Uv{static extensionType=\"brushing\";extensionInstance;constructor(t,r,i){super(t,i),this.extensionInstance=new mm,r.initRegularAttribute(\"brushing_enabled\",\"brushingEnabled\"),r.initRegularAttribute(\"brushing_target\",\"brushingTarget\"),r.initRegularAttribute(\"brushing_radius\",\"brushingRadius\"),r.initVectorizedAccessor(\"get_brushing_target\",\"getBrushingTarget\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"brushingEnabled\",\"brushingTarget\",\"brushingRadius\",\"getBrushingTarget\"]}},I2=class extends Uv{static extensionType=\"collision-filter\";extensionInstance;constructor(t,r,i){super(t,i),this.extensionInstance=new _m,r.initRegularAttribute(\"collision_enabled\",\"collisionEnabled\"),r.initRegularAttribute(\"collision_group\",\"collisionGroup\"),r.initRegularAttribute(\"collision_test_props\",\"collisionTestProps\"),r.initVectorizedAccessor(\"get_collision_priority\",\"getCollisionPriority\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"collisionEnabled\",\"collisionGroup\",\"collisionTestProps\",\"getCollisionPriority\"]}},p3=class extends Uv{static extensionType=\"data-filter\";extensionInstance;constructor(t,r,i){super(t,i);let s=this.model.get(\"filter_size\");this.extensionInstance=new gm({filterSize:s}),r.initRegularAttribute(\"filter_enabled\",\"filterEnabled\"),r.initRegularAttribute(\"filter_range\",\"filterRange\"),r.initRegularAttribute(\"filter_soft_range\",\"filterSoftRange\"),r.initRegularAttribute(\"filter_transform_size\",\"filterTransformSize\"),r.initRegularAttribute(\"filter_transform_color\",\"filterTransformColor\"),r.initVectorizedAccessor(\"get_filter_value\",\"getFilterValue\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"filterEnabled\",\"filterRange\",\"filterSoftRange\",\"filterTransformSize\",\"filterTransformColor\",\"getFilterValue\"]}};async function UO(e,t,r){let i=e.get(\"_extension_type\"),s;switch(i){case P2.extensionType:s=new P2(e,t,r);break;case I2.extensionType:s=new I2(e,t,r);break;case p3.extensionType:s=new p3(e,t,r);break;default:throw new Error(`no known model for extension type ${i}`)}return await s.loadSubModels(),s}var Lg=class extends Cg{pickable;visible;opacity;autoHighlight;extensions;extensionLayerPropertyNames=[];constructor(t,r){super(t,r),this.initRegularAttribute(\"pickable\",\"pickable\"),this.initRegularAttribute(\"visible\",\"visible\"),this.initRegularAttribute(\"opacity\",\"opacity\"),this.initRegularAttribute(\"auto_highlight\",\"autoHighlight\"),this.extensions=[]}async loadSubModels(){await this.initLayerExtensions()}extensionInstances(){return this.extensions.map(t=>t.extensionInstance)}extensionProps(){let t={};for(let r of this.extensionLayerPropertyNames)ce(this[r])&&(t[r]=this[r]);return t}onClick(t){t.index&&(this.model.set(\"selected_index\",t.index),this.model.save_changes())}baseLayerProps(){return{extensions:this.extensionInstances(),...this.extensionProps(),id:this.model.model_id,pickable:this.pickable,visible:this.visible,opacity:this.opacity,autoHighlight:this.autoHighlight,onClick:this.onClick.bind(this)}}async initLayerExtensions(){let t=async()=>{let r=this.model.get(\"extensions\");if(!r){this.extensions=[];return}let i=await d3(this.model.widget_manager,r),s=[];for(let n of i){let o=await UO(n,this,this.updateStateCallback);s.push(o)}this.extensions=s};await t(),this.model.off(\"change:extensions\"),this.model.on(\"change:extensions\",t),this.callbacks.set(\"change:extensions\",t)}};var AH=`#define SHADER_NAME arc-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec4 instanceSourceColors;\nattribute vec4 instanceTargetColors;\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec3 instancePickingColors;\nattribute float instanceWidths;\nattribute float instanceHeights;\nattribute float instanceTilts;\n\nuniform bool greatCircle;\nuniform bool useShortestPath;\nuniform float numSegments;\nuniform float opacity;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform int widthUnits;\n\nvarying vec4 vColor;\nvarying vec2 uv;\nvarying float isValid;\n\nfloat paraboloid(float distance, float sourceZ, float targetZ, float ratio) {\n\n float deltaZ = targetZ - sourceZ;\n float dh = distance * instanceHeights;\n if (dh == 0.0) {\n return sourceZ + deltaZ * ratio;\n }\n float unitZ = deltaZ / dh;\n float p2 = unitZ * unitZ + 1.0;\n float dir = step(deltaZ, 0.0);\n float z0 = mix(sourceZ, targetZ, dir);\n float r = mix(ratio, 1.0 - ratio, dir);\n return sqrt(r * (p2 - r)) * dh + z0;\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nfloat getSegmentRatio(float index) {\n return smoothstep(0.0, 1.0, index / (numSegments - 1.0));\n}\n\nvec3 interpolateFlat(vec3 source, vec3 target, float segmentRatio) {\n float distance = length(source.xy - target.xy);\n float z = paraboloid(distance, source.z, target.z, segmentRatio);\n\n float tiltAngle = radians(instanceTilts);\n vec2 tiltDirection = normalize(target.xy - source.xy);\n vec2 tilt = vec2(-tiltDirection.y, tiltDirection.x) * z * sin(tiltAngle);\n\n return vec3(\n mix(source.xy, target.xy, segmentRatio) + tilt,\n z * cos(tiltAngle)\n );\n}\nfloat getAngularDist (vec2 source, vec2 target) {\n vec2 sourceRadians = radians(source);\n vec2 targetRadians = radians(target);\n vec2 sin_half_delta = sin((sourceRadians - targetRadians) / 2.0);\n vec2 shd_sq = sin_half_delta * sin_half_delta;\n\n float a = shd_sq.y + cos(sourceRadians.y) * cos(targetRadians.y) * shd_sq.x;\n return 2.0 * asin(sqrt(a));\n}\n\nvec3 interpolateGreatCircle(vec3 source, vec3 target, vec3 source3D, vec3 target3D, float angularDist, float t) {\n vec2 lngLat;\n if(abs(angularDist - PI) < 0.001) {\n lngLat = (1.0 - t) * source.xy + t * target.xy;\n } else {\n float a = sin((1.0 - t) * angularDist);\n float b = sin(t * angularDist);\n vec3 p = source3D.yxz * a + target3D.yxz * b;\n lngLat = degrees(vec2(atan(p.y, -p.x), atan(p.z, length(p.xy))));\n }\n\n float z = paraboloid(angularDist * EARTH_RADIUS, source.z, target.z, t);\n\n return vec3(lngLat, z);\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n float segmentIndex = positions.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float prevSegmentRatio = getSegmentRatio(max(0.0, segmentIndex - 1.0));\n float nextSegmentRatio = getSegmentRatio(min(numSegments - 1.0, segmentIndex + 1.0));\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n isValid = 1.0;\n\n uv = vec2(segmentRatio, positions.y);\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n vec4 curr;\n vec4 next;\n vec3 source;\n vec3 target;\n\n if ((greatCircle || project_uProjectionMode == PROJECTION_MODE_GLOBE) && project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n source = project_globe_(vec3(instanceSourcePositions.xy, 0.0));\n target = project_globe_(vec3(instanceTargetPositions.xy, 0.0));\n float angularDist = getAngularDist(instanceSourcePositions.xy, instanceTargetPositions.xy);\n\n vec3 prevPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, prevSegmentRatio);\n vec3 currPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, segmentRatio);\n vec3 nextPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, nextSegmentRatio);\n\n if (abs(currPos.x - prevPos.x) > 180.0) {\n indexDir = -1.0;\n isValid = 0.0;\n } else if (abs(currPos.x - nextPos.x) > 180.0) {\n indexDir = 1.0;\n isValid = 0.0;\n }\n nextPos = indexDir < 0.0 ? prevPos : nextPos;\n nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\n\n if (isValid == 0.0) {\n nextPos.x += nextPos.x > 0.0 ? -360.0 : 360.0;\n float t = ((currPos.x > 0.0 ? 180.0 : -180.0) - currPos.x) / (nextPos.x - currPos.x);\n currPos = mix(currPos, nextPos, t);\n segmentRatio = mix(segmentRatio, nextSegmentRatio, t);\n }\n\n vec3 currPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, segmentRatio);\n vec3 nextPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, nextSegmentRatio);\n \n curr = project_position_to_clipspace(currPos, currPos64Low, vec3(0.0), geometry.position);\n next = project_position_to_clipspace(nextPos, nextPos64Low, vec3(0.0));\n \n } else {\n vec3 source_world = instanceSourcePositions;\n vec3 target_world = instanceTargetPositions;\n if (useShortestPath) {\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\n\n float deltaLng = target_world.x - source_world.x;\n if (deltaLng > 180.) target_world.x -= 360.;\n if (deltaLng < -180.) source_world.x -= 360.;\n }\n source = project_position(source_world, instanceSourcePositions64Low);\n target = project_position(target_world, instanceTargetPositions64Low);\n float antiMeridianX = 0.0;\n\n if (useShortestPath) {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n antiMeridianX = -(project_uCoordinateOrigin.x + 180.) / 360. * TILE_SIZE;\n }\n float thresholdRatio = (antiMeridianX - source.x) / (target.x - source.x);\n\n if (prevSegmentRatio <= thresholdRatio && nextSegmentRatio > thresholdRatio) {\n isValid = 0.0;\n indexDir = sign(segmentRatio - thresholdRatio);\n segmentRatio = thresholdRatio;\n }\n }\n\n nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\n vec3 currPos = interpolateFlat(source, target, segmentRatio);\n vec3 nextPos = interpolateFlat(source, target, nextSegmentRatio);\n\n if (useShortestPath) {\n if (nextPos.x < antiMeridianX) {\n currPos.x += TILE_SIZE;\n nextPos.x += TILE_SIZE;\n }\n }\n\n curr = project_common_position_to_clipspace(vec4(currPos, 1.0));\n next = project_common_position_to_clipspace(vec4(nextPos, 1.0));\n geometry.position = vec4(currPos, 1.0);\n }\n float widthPixels = clamp(\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels\n );\n vec3 offset = vec3(\n getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n DECKGL_FILTER_GL_POSITION(curr, geometry);\n gl_Position = curr + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n\n vec4 color = mix(instanceSourceColors, instanceTargetColors, segmentRatio);\n vColor = vec4(color.rgb, color.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var mH=`#define SHADER_NAME arc-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\nvarying float isValid;\n\nvoid main(void) {\n if (isValid == 0.0) {\n discard;\n }\n\n gl_FragColor = vColor;\n geometry.uv = uv;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var A3=[0,0,0,255],Gft={getSourcePosition:{type:\"accessor\",value:e=>e.sourcePosition},getTargetPosition:{type:\"accessor\",value:e=>e.targetPosition},getSourceColor:{type:\"accessor\",value:A3},getTargetColor:{type:\"accessor\",value:A3},getWidth:{type:\"accessor\",value:1},getHeight:{type:\"accessor\",value:1},getTilt:{type:\"accessor\",value:0},greatCircle:!1,numSegments:{type:\"number\",value:50,min:1},widthUnits:\"pixels\",widthScale:{type:\"number\",value:1,min:0},widthMinPixels:{type:\"number\",value:0,min:0},widthMaxPixels:{type:\"number\",value:Number.MAX_SAFE_INTEGER,min:0}},bp=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getBounds(){var t;return(t=this.getAttributeManager())===null||t===void 0?void 0:t.getBounds([\"instanceSourcePositions\",\"instanceTargetPositions\"])}getShaders(){return super.getShaders({vs:AH,fs:mH,modules:[oo,ta]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getSourcePosition\"},instanceTargetPositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getTargetPosition\"},instanceSourceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getSourceColor\",defaultValue:A3},instanceTargetColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getTargetColor\",defaultValue:A3},instanceWidths:{size:1,transition:!0,accessor:\"getWidth\",defaultValue:1},instanceHeights:{size:1,transition:!0,accessor:\"getHeight\",defaultValue:1},instanceTilts:{size:1,transition:!0,accessor:\"getTilt\",defaultValue:0}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t;if(s.extensionsChanged||s.propsChanged&&r.numSegments!==i.numSegments){var n;let{gl:o}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(o),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{widthUnits:r,widthScale:i,widthMinPixels:s,widthMaxPixels:n,greatCircle:o,wrapLongitude:c}=this.props;this.state.model.setUniforms(t).setUniforms({greatCircle:o,widthUnits:Ko[r],widthScale:i,widthMinPixels:s,widthMaxPixels:n,useShortestPath:c}).draw()}_getModel(t){let{id:r,numSegments:i}=this.props,s=[];for(let o=0;o0&&j>0&&(c[C++]=w-n,c[C++]=w-n-1,c[C++]=w-1,c[C++]=w-n,c[C++]=w-1,c[C++]=w),w++}}return{vertexCount:o,positions:_,indices:c,texCoords:f}}function qft(e){let t=new Float64Array(12);for(let r=0;r 0.5) {\n vTexPos = geometry.worldPosition.xy;\n }\n\n vec4 color = vec4(0.0);\n DECKGL_FILTER_COLOR(color, geometry);\n}\n`;var Yft=`\nvec3 packUVsIntoRGB(vec2 uv) {\n // Extract the top 8 bits. We want values to be truncated down so we can add a fraction\n vec2 uv8bit = floor(uv * 256.);\n\n // Calculate the normalized remainders of u and v parts that do not fit into 8 bits\n // Scale and clamp to 0-1 range\n vec2 uvFraction = fract(uv * 256.);\n vec2 uvFraction4bit = floor(uvFraction * 16.);\n\n // Remainder can be encoded in blue channel, encode as 4 bits for pixel coordinates\n float fractions = uvFraction4bit.x + uvFraction4bit.y * 16.;\n\n return vec3(uv8bit, fractions) / 255.;\n}\n`,_H=`\n#define SHADER_NAME bitmap-layer-fragment-shader\n\n#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform sampler2D bitmapTexture;\n\nvarying vec2 vTexCoord;\nvarying vec2 vTexPos;\n\nuniform float desaturate;\nuniform vec4 transparentColor;\nuniform vec3 tintColor;\nuniform float opacity;\n\nuniform float coordinateConversion;\nuniform vec4 bounds;\n\n/* projection utils */\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / PI / 2.0;\n\n// from degrees to Web Mercator\nvec2 lnglat_to_mercator(vec2 lnglat) {\n float x = lnglat.x;\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\n// from Web Mercator to degrees\nvec2 mercator_to_lnglat(vec2 xy) {\n xy /= WORLD_SCALE;\n return degrees(vec2(\n xy.x - PI,\n atan(exp(xy.y - PI)) * 2.0 - PI * 0.5\n ));\n}\n/* End projection utils */\n\n// apply desaturation\nvec3 color_desaturate(vec3 color) {\n float luminance = (color.r + color.g + color.b) * 0.333333333;\n return mix(color, vec3(luminance), desaturate);\n}\n\n// apply tint\nvec3 color_tint(vec3 color) {\n return color * tintColor;\n}\n\n// blend with background color\nvec4 apply_opacity(vec3 color, float alpha) {\n if (transparentColor.a == 0.0) {\n return vec4(color, alpha);\n }\n float blendedAlpha = alpha + transparentColor.a * (1.0 - alpha);\n float highLightRatio = alpha / blendedAlpha;\n vec3 blendedRGB = mix(transparentColor.rgb, color, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n}\n\nvec2 getUV(vec2 pos) {\n return vec2(\n (pos.x - bounds[0]) / (bounds[2] - bounds[0]),\n (pos.y - bounds[3]) / (bounds[1] - bounds[3])\n );\n}\n\n`.concat(Yft,`\n\nvoid main(void) {\n vec2 uv = vTexCoord;\n if (coordinateConversion < -0.5) {\n vec2 lnglat = mercator_to_lnglat(vTexPos);\n uv = getUV(lnglat);\n } else if (coordinateConversion > 0.5) {\n vec2 commonPos = lnglat_to_mercator(vTexPos);\n uv = getUV(commonPos);\n }\n vec4 bitmapColor = texture2D(bitmapTexture, uv);\n\n gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity);\n\n geometry.uv = uv;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n\n if (picking_uActive && !picking_uAttribute) {\n // Since instance information is not used, we can use picking color for pixel index\n gl_FragColor.rgb = packUVsIntoRGB(uv);\n }\n}\n`);var Qft={image:{type:\"image\",value:null,async:!0},bounds:{type:\"array\",value:[1,0,0,1],compare:!0},_imageCoordinateSystem:Yr.DEFAULT,desaturate:{type:\"number\",min:0,max:1,value:0},transparentColor:{type:\"color\",value:[0,0,0,0]},tintColor:{type:\"color\",value:[255,255,255]},textureParameters:{type:\"object\",ignore:!0}},wp=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:gH,fs:_H,modules:[oo,ta]})}initializeState(){let t=this.getAttributeManager();t.remove([\"instancePickingColors\"]);let r=!0;t.add({indices:{size:1,isIndexed:!0,update:i=>i.value=this.state.mesh.indices,noAlloc:r},positions:{size:3,type:5130,fp64:this.use64bitPositions(),update:i=>i.value=this.state.mesh.positions,noAlloc:r},texCoords:{size:2,update:i=>i.value=this.state.mesh.texCoords,noAlloc:r}})}updateState({props:t,oldProps:r,changeFlags:i}){let s=this.getAttributeManager();if(i.extensionsChanged){var n;let{gl:o}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(o),s.invalidateAll()}if(t.bounds!==r.bounds){let o=this.state.mesh,c=this._createMesh();this.state.model.setVertexCount(c.vertexCount);for(let f in c)o&&o[f]!==c[f]&&s.invalidate(f);this.setState({mesh:c,...this._getCoordinateUniforms()})}else t._imageCoordinateSystem!==r._imageCoordinateSystem&&this.setState(this._getCoordinateUniforms())}getPickingInfo(t){let{image:r}=this.props,i=t.info;if(!i.color||!r)return i.bitmap=null,i;let{width:s,height:n}=r;i.index=0;let o=$ft(i.color),c=[Math.floor(o[0]*s),Math.floor(o[1]*n)];return i.bitmap={size:{width:s,height:n},uv:o,pixel:c},i}disablePickingIndex(){this.setState({disablePicking:!0})}restorePickingColors(){this.setState({disablePicking:!1})}_updateAutoHighlight(t){super._updateAutoHighlight({...t,color:this.encodePickingColor(0)})}_createMesh(){let{bounds:t}=this.props,r=t;return yH(t)&&(r=[[t[0],t[1]],[t[0],t[3]],[t[2],t[3]],[t[2],t[1]]]),VO(r,this.context.viewport.resolution)}_getModel(t){return t?new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:4,vertexCount:6}),isInstanced:!1}):null}draw(t){let{uniforms:r,moduleParameters:i}=t,{model:s,coordinateConversion:n,bounds:o,disablePicking:c}=this.state,{image:f,desaturate:_,transparentColor:w,tintColor:C}=this.props;i.pickingActive&&c||f&&s&&s.setUniforms(r).setUniforms({bitmapTexture:f,desaturate:_,transparentColor:w.map(R=>R/255),tintColor:C.slice(0,3).map(R=>R/255),coordinateConversion:n,bounds:o}).draw()}_getCoordinateUniforms(){let{LNGLAT:t,CARTESIAN:r,DEFAULT:i}=Yr,{_imageCoordinateSystem:s}=this.props;if(s!==i){let{bounds:n}=this.props;if(!yH(n))throw new Error(\"_imageCoordinateSystem only supports rectangular bounds\");let o=this.context.viewport.resolution?t:r;if(s=s===t?t:r,s===t&&o===r)return{coordinateConversion:-1,bounds:n};if(s===r&&o===t){let c=El([n[0],n[1]]),f=El([n[2],n[3]]);return{coordinateConversion:1,bounds:[c[0],c[1],f[0],f[1]]}}}return{coordinateConversion:0,bounds:[0,0,0,0]}}};G(wp,\"layerName\",\"BitmapLayer\");G(wp,\"defaultProps\",Qft);function $ft(e){let[t,r,i]=e,s=(i&240)/256,n=(i&15)/16;return[(t+n)/256,(r+s)/256]}function yH(e){return Number.isFinite(e[0])}var vH=`#define SHADER_NAME icon-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute vec4 instanceIconFrames;\nattribute float instanceColorModes;\nattribute vec2 instanceOffsets;\nattribute vec2 instancePixelOffset;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;var xH=`#define SHADER_NAME icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float alphaCutoff;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\n float a = texColor.a * opacity * vColor.a;\n\n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color, a);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var Xft=1024,Kft=4,bH=()=>{},wH={10241:9987,10240:9729,10242:33071,10243:33071};function Jft(e){return Math.pow(2,Math.ceil(Math.log2(e)))}function tdt(e,t,r,i){let s=Math.min(r/t.width,i/t.height),n=Math.floor(t.width*s),o=Math.floor(t.height*s);return s===1?{data:t,width:n,height:o}:(e.canvas.height=o,e.canvas.width=n,e.clearRect(0,0,n,o),e.drawImage(t,0,0,t.width,t.height,0,0,n,o),{data:e.canvas,width:n,height:o})}function C2(e){return e&&(e.id||e.url)}function edt(e,t,r,i){let s=e.width,n=e.height,o=new pi(e.gl,{width:t,height:r,parameters:i});return rE(e,o,{targetY:0,width:s,height:n}),e.delete(),o}function SH(e,t,r){for(let i=0;io&&(SH(r,c,s),i=0,s=n+s+t,n=0,c=[]),c.push({icon:_,xOffset:i}),i=i+R+t,n=Math.max(n,C)}}return c.length>0&&SH(r,c,s),{mapping:r,rowHeight:n,xOffset:i,yOffset:s,canvasWidth:o,canvasHeight:Jft(n+s+t)}}function idt(e,t,r){if(!e||!t)return null;r=r||{};let i={},{iterable:s,objectInfo:n}=Xc(e);for(let o of s){n.index++;let c=t(o,n),f=C2(c);if(!c)throw new Error(\"Icon is missing.\");if(!c.url)throw new Error(\"Icon url is missing.\");!i[f]&&(!r[f]||c.url!==r[f].url)&&(i[f]={...c,source:o,sourceIndex:n.index})}return i}var L2=class{constructor(t,{onUpdate:r=bH,onError:i=bH}){G(this,\"gl\",void 0),G(this,\"onUpdate\",void 0),G(this,\"onError\",void 0),G(this,\"_loadOptions\",null),G(this,\"_texture\",null),G(this,\"_externalTexture\",null),G(this,\"_mapping\",{}),G(this,\"_textureParameters\",null),G(this,\"_pendingCount\",0),G(this,\"_autoPacking\",!1),G(this,\"_xOffset\",0),G(this,\"_yOffset\",0),G(this,\"_rowHeight\",0),G(this,\"_buffer\",Kft),G(this,\"_canvasWidth\",Xft),G(this,\"_canvasHeight\",0),G(this,\"_canvas\",null),this.gl=t,this.onUpdate=r,this.onError=i}finalize(){var t;(t=this._texture)===null||t===void 0||t.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(t){let r=this._autoPacking?C2(t):t;return this._mapping[r]||{}}setProps({loadOptions:t,autoPacking:r,iconAtlas:i,iconMapping:s,textureParameters:n}){if(t&&(this._loadOptions=t),r!==void 0&&(this._autoPacking=r),s&&(this._mapping=s),i){var o;(o=this._texture)===null||o===void 0||o.delete(),this._texture=null,this._externalTexture=i}n&&(this._textureParameters=n)}get isLoaded(){return this._pendingCount===0}packIcons(t,r){if(!this._autoPacking||typeof document>\"u\")return;let i=Object.values(idt(t,r,this._mapping)||{});if(i.length>0){let{mapping:s,xOffset:n,yOffset:o,rowHeight:c,canvasHeight:f}=rdt({icons:i,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=c,this._mapping=s,this._xOffset=n,this._yOffset=o,this._canvasHeight=f,this._texture||(this._texture=new pi(this.gl,{width:this._canvasWidth,height:this._canvasHeight,parameters:this._textureParameters||wH})),this._texture.height!==this._canvasHeight&&(this._texture=edt(this._texture,this._canvasWidth,this._canvasHeight,this._textureParameters||wH)),this.onUpdate(),this._canvas=this._canvas||document.createElement(\"canvas\"),this._loadIcons(i)}}_loadIcons(t){let r=this._canvas.getContext(\"2d\",{willReadFrequently:!0});for(let i of t)this._pendingCount++,NA(i.url,this._loadOptions).then(s=>{let n=C2(i),o=this._mapping[n],{x:c,y:f,width:_,height:w}=o,{data:C,width:R,height:N}=tdt(r,s,_,w);this._texture.setSubImageData({data:C,x:c+(_-R)/2,y:f+(w-N)/2,width:R,height:N}),o.width=R,o.height=N,this._texture.generateMipmap(),this.onUpdate()}).catch(s=>{this.onError({url:i.url,source:i.source,sourceIndex:i.sourceIndex,loadOptions:this._loadOptions,error:s})}).finally(()=>{this._pendingCount--})}};var TH=[0,0,0,255],ndt={iconAtlas:{type:\"image\",value:null,async:!0},iconMapping:{type:\"object\",value:{},async:!0},sizeScale:{type:\"number\",value:1,min:0},billboard:!0,sizeUnits:\"pixels\",sizeMinPixels:{type:\"number\",min:0,value:0},sizeMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},alphaCutoff:{type:\"number\",value:.05,min:0,max:1},getPosition:{type:\"accessor\",value:e=>e.position},getIcon:{type:\"accessor\",value:e=>e.icon},getColor:{type:\"accessor\",value:TH},getSize:{type:\"accessor\",value:1},getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]},onIconError:{type:\"function\",value:null,optional:!0},textureParameters:{type:\"object\",ignore:!0}},Sp=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:vH,fs:xH,modules:[oo,ta]})}initializeState(){this.state={iconManager:new L2(this.context.gl,{onUpdate:this._onUpdate.bind(this),onError:this._onError.bind(this)})},this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceSizes:{size:1,transition:!0,accessor:\"getSize\",defaultValue:1},instanceOffsets:{size:2,accessor:\"getIcon\",transform:this.getInstanceOffset},instanceIconFrames:{size:4,accessor:\"getIcon\",transform:this.getInstanceIconFrame},instanceColorModes:{size:1,type:5121,accessor:\"getIcon\",transform:this.getInstanceColorMode},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getColor\",defaultValue:TH},instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instancePixelOffset:{size:2,transition:!0,accessor:\"getPixelOffset\"}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t,n=this.getAttributeManager(),{iconAtlas:o,iconMapping:c,data:f,getIcon:_,textureParameters:w}=r,{iconManager:C}=this.state,R=o||this.internalState.isAsyncPropLoading(\"iconAtlas\");if(C.setProps({loadOptions:r.loadOptions,autoPacking:!R,iconAtlas:o,iconMapping:R?c:null,textureParameters:w}),R?i.iconMapping!==r.iconMapping&&n.invalidate(\"getIcon\"):(s.dataChanged||s.updateTriggersChanged&&(s.updateTriggersChanged.all||s.updateTriggersChanged.getIcon))&&C.packIcons(f,_),s.extensionsChanged){var N;let{gl:j}=this.context;(N=this.state.model)===null||N===void 0||N.delete(),this.state.model=this._getModel(j),n.invalidateAll()}}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(t){super.finalizeState(t),this.state.iconManager.finalize()}draw({uniforms:t}){let{sizeScale:r,sizeMinPixels:i,sizeMaxPixels:s,sizeUnits:n,billboard:o,alphaCutoff:c}=this.props,{iconManager:f}=this.state,_=f.getTexture();_&&this.state.model.setUniforms(t).setUniforms({iconsTexture:_,iconsTextureDim:[_.width,_.height],sizeUnits:Ko[n],sizeScale:r,sizeMinPixels:i,sizeMaxPixels:s,billboard:o,alphaCutoff:c}).draw()}_getModel(t){let r=[-1,-1,-1,1,1,1,1,-1];return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,attributes:{positions:{size:2,value:new Float32Array(r)}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(t){var r;let i=(r=this.getCurrentLayer())===null||r===void 0?void 0:r.props.onIconError;i?i(t):nr.error(t.error.message)()}getInstanceOffset(t){let{width:r,height:i,anchorX:s=r/2,anchorY:n=i/2}=this.state.iconManager.getIconMapping(t);return[r/2-s,i/2-n]}getInstanceColorMode(t){return this.state.iconManager.getIconMapping(t).mask?1:0}getInstanceIconFrame(t){let{x:r,y:i,width:s,height:n}=this.state.iconManager.getIconMapping(t);return[r,i,s,n]}};G(Sp,\"defaultProps\",ndt);G(Sp,\"layerName\",\"IconLayer\");var MH=`#define SHADER_NAME scatterplot-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceRadius;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusScale;\nuniform float radiusMinPixels;\nuniform float radiusMaxPixels;\nuniform float lineWidthScale;\nuniform float lineWidthMinPixels;\nuniform float lineWidthMaxPixels;\nuniform float stroked;\nuniform bool filled;\nuniform bool antialiasing;\nuniform bool billboard;\nuniform int radiusUnits;\nuniform int lineWidthUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n outerRadiusPixels = clamp(\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\n radiusMinPixels, radiusMaxPixels\n );\n float lineWidthPixels = clamp(\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\n lineWidthMinPixels, lineWidthMaxPixels\n );\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\n unitPosition = edgePadding * positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\n \n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = edgePadding * positions * outerRadiusPixels;\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;var EH=`#define SHADER_NAME scatterplot-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool filled;\nuniform float stroked;\nuniform bool antialiasing;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition) * outerRadiusPixels;\n float inCircle = antialiasing ? \n smoothedge(distToCenter, outerRadiusPixels) : \n step(distToCenter, outerRadiusPixels);\n\n if (inCircle == 0.0) {\n discard;\n }\n\n if (stroked > 0.5) {\n float isLine = antialiasing ? \n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\n\n if (filled) {\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\n } else {\n if (isLine == 0.0) {\n discard;\n }\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\n }\n } else if (!filled) {\n discard;\n } else {\n gl_FragColor = vFillColor;\n }\n\n gl_FragColor.a *= inCircle;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var PH=[0,0,0,255],sdt={radiusUnits:\"meters\",radiusScale:{type:\"number\",min:0,value:1},radiusMinPixels:{type:\"number\",min:0,value:0},radiusMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},lineWidthUnits:\"meters\",lineWidthScale:{type:\"number\",min:0,value:1},lineWidthMinPixels:{type:\"number\",min:0,value:0},lineWidthMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},stroked:!1,filled:!0,billboard:!1,antialiasing:!0,getPosition:{type:\"accessor\",value:e=>e.position},getRadius:{type:\"accessor\",value:1},getFillColor:{type:\"accessor\",value:PH},getLineColor:{type:\"accessor\",value:PH},getLineWidth:{type:\"accessor\",value:1},strokeWidth:{deprecatedFor:\"getLineWidth\"},outline:{deprecatedFor:\"stroked\"},getColor:{deprecatedFor:[\"getFillColor\",\"getLineColor\"]}},Xu=class extends Tn{getShaders(){return super.getShaders({vs:MH,fs:EH,modules:[oo,ta]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceRadius:{size:1,transition:!0,accessor:\"getRadius\",defaultValue:1},instanceFillColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:\"getFillColor\",defaultValue:[0,0,0,255]},instanceLineColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:\"getLineColor\",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:\"getLineWidth\",defaultValue:1}})}updateState(t){if(super.updateState(t),t.changeFlags.extensionsChanged){var r;let{gl:i}=this.context;(r=this.state.model)===null||r===void 0||r.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{radiusUnits:r,radiusScale:i,radiusMinPixels:s,radiusMaxPixels:n,stroked:o,filled:c,billboard:f,antialiasing:_,lineWidthUnits:w,lineWidthScale:C,lineWidthMinPixels:R,lineWidthMaxPixels:N}=this.props;this.state.model.setUniforms(t).setUniforms({stroked:o?1:0,filled:c,billboard:f,antialiasing:_,radiusUnits:Ko[r],radiusScale:i,radiusMinPixels:s,radiusMaxPixels:n,lineWidthUnits:Ko[w],lineWidthScale:C,lineWidthMinPixels:R,lineWidthMaxPixels:N}).draw()}_getModel(t){let r=[-1,-1,0,1,-1,0,1,1,0,-1,1,0];return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,vertexCount:4,attributes:{positions:{size:3,value:new Float32Array(r)}}}),isInstanced:!0})}};G(Xu,\"defaultProps\",sdt);G(Xu,\"layerName\",\"ScatterplotLayer\");var Vv={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function kg(e,t,r={}){return IH(e,r)!==t?(odt(e,r),!0):!1}function IH(e,t={}){return Math.sign(m3(e,t))}function m3(e,t={}){let{start:r=0,end:i=e.length}=t,s=t.size||2,n=0;for(let o=r,c=i-s;o0){let s=!0;for(let n=0;nt[2]&&(r|=2),e[1]t[3]&&(r|=8),r}function D2(e,t){let{size:r=2,broken:i=!1,gridResolution:s=10,gridOffset:n=[0,0],startIndex:o=0,endIndex:c=e.length}=t||{},f=(c-o)/r,_=[],w=[_],C=ym(e,0,r,o),R,N,j=kH(C,s,n,[]),Y=[];mc(_,C);for(let rt=1;rtr&&(_=[],w.push(_),mc(_,C)),N=R2(R,j)}mc(_,R),k2(C,R)}return i?w:w[0]}var CH=0,ldt=1;function _3(e,t){for(let r=0;r=0?(mc(_,N)&&C.push(Y),ut+=j):C.length&&(C[C.length-1]=CH),k2(rt,N),$=j,K=Y;return[tt?{pos:f,types:t&&w}:null,ut?{pos:_,types:t&&C}:null]}function kH(e,t,r,i){let s=Math.floor((e[0]-r[0])/t)*t+r[0],n=Math.floor((e[1]-r[1])/t)*t+r[1];return i[0]=s,i[1]=n,i[2]=s+t,i[3]=n+t,i}function cdt(e,t,r){r&8?(e[1]+=t,e[3]+=t):r&4?(e[1]-=t,e[3]-=t):r&2?(e[0]+=t,e[2]+=t):r&1&&(e[0]-=t,e[2]-=t)}function udt(e,t,r,i){let s=1/0,n=-1/0,o=1/0,c=-1/0;for(let f=0;fn?_:n,o=wc?w:c}return i[0][0]=s,i[0][1]=o,i[1][0]=n,i[1][1]=c,i}var hdt=85.051129;function jO(e,t){let{size:r=2,startIndex:i=0,endIndex:s=e.length,normalize:n=!0}=t||{},o=e.slice(i,s);RH(o,r,0,s-i);let c=D2(o,{size:r,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(n)for(let f of c)DH(f,r);return c}function GO(e,t=null,r){let{size:i=2,normalize:s=!0,edgeTypes:n=!1}=r||{};t=t||[];let o=[],c=[],f=0,_=0;for(let C=0;C<=t.length;C++){let R=t[C]||e.length,N=_,j=fdt(e,i,f,R);for(let Y=j;Ys&&(s=c,n=o-1)}return n}function ddt(e,t,r,i,s=hdt){let n=e[r],o=e[i-t];if(Math.abs(n-o)>180){let c=ym(e,0,t,r);c[0]+=Math.round((o-n)/360)*360,mc(e,c),c[1]=Math.sign(c[1])*s,mc(e,c),c[0]=n,mc(e,c)}}function RH(e,t,r,i){let s=e[0],n;for(let o=r;o180||c<-180)&&(n-=Math.round(c/360)*360),e[o]=s=n}}function DH(e,t){let r,i=e.length/t;for(let n=0;n=i),s=s.flatMap(N=>[N[0],N[1]]),kg(s,Vv.COUNTER_CLOCKWISE));let n=r>0,o=i+1,c=n?o*3+1:i,f=Math.PI*2/i,_=new Uint16Array(n?i*3*2:0),w=new Float32Array(c*3),C=new Float32Array(c*3),R=0;if(n){for(let N=0;N 0.0 && instanceElevations >= 0.0);\n float dotRadius = radius * coverage * shouldRender;\n\n geometry.pickingColor = instancePickingColors;\n vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\n vec3 centroidPosition64Low = instancePositions64Low;\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\n if (radiusUnits == UNIT_METERS) {\n offset = project_size(offset);\n }\n vec3 pos = vec3(offset, 0.);\n DECKGL_FILTER_SIZE(pos, geometry);\n\n gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\n geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var BH=`#version 300 es\n#define SHADER_NAME column-layer-fragment-shader\n\nprecision highp float;\n\nuniform vec3 project_uCameraPosition;\nuniform bool extruded;\nuniform bool isStroke;\n\nout vec4 fragColor;\n\nin vec4 vColor;\n#ifdef FLAT_SHADING\nin vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n fragColor = vColor;\n#ifdef FLAT_SHADING\n if (extruded && !isStroke && !picking_uActive) {\n vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\n }\n#endif\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;var y3=[0,0,0,255],mdt={diskResolution:{type:\"number\",min:4,value:20},vertices:null,radius:{type:\"number\",min:0,value:1e3},angle:{type:\"number\",value:0},offset:{type:\"array\",value:[0,0]},coverage:{type:\"number\",min:0,max:1,value:1},elevationScale:{type:\"number\",min:0,value:1},radiusUnits:\"meters\",lineWidthUnits:\"meters\",lineWidthScale:1,lineWidthMinPixels:0,lineWidthMaxPixels:Number.MAX_SAFE_INTEGER,extruded:!0,wireframe:!1,filled:!0,stroked:!1,getPosition:{type:\"accessor\",value:e=>e.position},getFillColor:{type:\"accessor\",value:y3},getLineColor:{type:\"accessor\",value:y3},getLineWidth:{type:\"accessor\",value:1},getElevation:{type:\"accessor\",value:1e3},material:!0,getColor:{deprecatedFor:[\"getFillColor\",\"getLineColor\"]}},af=class extends Tn{getShaders(){let{gl:t}=this.context,r=!hr(t),i={},s=this.props.flatShading&&H0(t,Pi.GLSL_DERIVATIVES);return s&&(i.FLAT_SHADING=1),super.getShaders({vs:OH,fs:BH,defines:i,transpileToGLSL100:r,modules:[oo,s?Cy:YA,ta]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceElevations:{size:1,transition:!0,accessor:\"getElevation\"},instanceFillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getFillColor\",defaultValue:y3},instanceLineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getLineColor\",defaultValue:y3},instanceStrokeWidths:{size:1,accessor:\"getLineWidth\",transition:!0}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t,n=s.extensionsChanged||r.flatShading!==i.flatShading;if(n){var o;let{gl:c}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(c),this.getAttributeManager().invalidateAll()}(n||r.diskResolution!==i.diskResolution||r.vertices!==i.vertices||(r.extruded||r.stroked)!==(i.extruded||i.stroked))&&this._updateGeometry(r)}getGeometry(t,r,i){let s=new B2({radius:1,height:i?2:0,vertices:r,nradial:t}),n=0;if(r)for(let o=0;o=t.length&&(r+=1-t.length/s);let n=r*s;return i[0]=t[n],i[1]=t[n+1],i[2]=s===3&&t[n+2]||0,i}isClosed(t){if(!this.normalize)return!!this.opts.loop;let{positionSize:r}=this,i=t.length-r;return t[0]===t[i]&&t[1]===t[i+1]&&(r===2||t[2]===t[i+2])}};function zH(e){return Array.isArray(e[0])}var NH=`#define SHADER_NAME path-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute float instanceTypes;\nattribute vec3 instanceStartPositions;\nattribute vec3 instanceEndPositions;\nattribute vec3 instanceLeftPositions;\nattribute vec3 instanceRightPositions;\nattribute vec3 instanceLeftPositions64Low;\nattribute vec3 instanceStartPositions64Low;\nattribute vec3 instanceEndPositions64Low;\nattribute vec3 instanceRightPositions64Low;\nattribute float instanceStrokeWidths;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float jointType;\nuniform float capType;\nuniform float miterLimit;\nuniform bool billboard;\nuniform int widthUnits;\n\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nconst float EPSILON = 0.001;\nconst vec3 ZERO_OFFSET = vec3(0.0);\n\nfloat flipIfTrue(bool flag) {\n return -(float(flag) * 2. - 1.);\n}\nvec3 getLineJoinOffset(\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\n vec2 width\n) {\n bool isEnd = positions.x > 0.0;\n float sideOfPath = positions.y;\n float isJoint = float(sideOfPath == 0.0);\n\n vec3 deltaA3 = (currPoint - prevPoint);\n vec3 deltaB3 = (nextPoint - currPoint);\n\n mat3 rotationMatrix;\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\n if (needsRotation) {\n deltaA3 = deltaA3 * rotationMatrix;\n deltaB3 = deltaB3 * rotationMatrix;\n }\n vec2 deltaA = deltaA3.xy / width;\n vec2 deltaB = deltaB3.xy / width;\n\n float lenA = length(deltaA);\n float lenB = length(deltaB);\n\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\n\n vec2 perpA = vec2(-dirA.y, dirA.x);\n vec2 perpB = vec2(-dirB.y, dirB.x);\n vec2 tangent = dirA + dirB;\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\n vec2 miterVec = vec2(-tangent.y, tangent.x);\n vec2 dir = isEnd ? dirA : dirB;\n vec2 perp = isEnd ? perpA : perpB;\n float L = isEnd ? lenA : lenB;\n float sinHalfA = abs(dot(miterVec, perp));\n float cosHalfA = abs(dot(dirA, miterVec));\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\n float cornerPosition = sideOfPath * turnDirection;\n\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\n miterSize = mix(\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\n miterSize,\n step(0.0, cornerPosition)\n );\n\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\n * (sideOfPath + isJoint * turnDirection);\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\n bool isCap = isStartCap || isEndCap;\n if (isCap) {\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\n vJointType = capType;\n } else {\n vJointType = jointType;\n }\n vPathLength = L;\n vCornerOffset = offsetVec;\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\n vMiterLength = isCap ? isJoint : vMiterLength;\n\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\n vPathPosition = vec2(\n dot(offsetFromStartOfPath, perp),\n dot(offsetFromStartOfPath, dir)\n );\n geometry.uv = vPathPosition;\n\n float isValid = step(instanceTypes, 3.5);\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\n\n if (needsRotation) {\n offset = rotationMatrix * offset;\n }\n return offset;\n}\nvoid clipLine(inout vec4 position, vec4 refPosition) {\n if (position.w < EPSILON) {\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\n position = refPosition + (position - refPosition) * r;\n }\n}\n\nvoid main() {\n geometry.pickingColor = instancePickingColors;\n\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n\n float isEnd = positions.x;\n\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\n\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\n\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\n\n geometry.worldPosition = currPosition;\n vec2 widthPixels = vec2(clamp(\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels) / 2.0);\n vec3 width;\n\n if (billboard) {\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\n\n clipLine(prevPositionScreen, currPositionScreen);\n clipLine(nextPositionScreen, currPositionScreen);\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\n\n width = vec3(widthPixels, 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(\n prevPositionScreen.xyz / prevPositionScreen.w,\n currPositionScreen.xyz / currPositionScreen.w,\n nextPositionScreen.xyz / nextPositionScreen.w,\n project_pixel_size_to_clipspace(width.xy)\n );\n\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\n } else {\n prevPosition = project_position(prevPosition, prevPosition64Low);\n currPosition = project_position(currPosition, currPosition64Low);\n nextPosition = project_position(nextPosition, nextPosition64Low);\n\n width = vec3(project_pixel_size(widthPixels), 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\n geometry.position = vec4(currPosition + offset, 1.0);\n gl_Position = project_common_position_to_clipspace(geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var UH=`#define SHADER_NAME path-layer-fragment-shader\n\nprecision highp float;\n\nuniform float miterLimit;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nvoid main(void) {\n geometry.uv = vPathPosition;\n\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\n discard;\n }\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\n discard;\n }\n }\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var VH=[0,0,0,255],ydt={widthUnits:\"meters\",widthScale:{type:\"number\",min:0,value:1},widthMinPixels:{type:\"number\",min:0,value:0},widthMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},jointRounded:!1,capRounded:!1,miterLimit:{type:\"number\",min:0,value:4},billboard:!1,_pathType:null,getPath:{type:\"accessor\",value:e=>e.path},getColor:{type:\"accessor\",value:VH},getWidth:{type:\"accessor\",value:1},rounded:{deprecatedFor:[\"jointRounded\",\"capRounded\"]}},HO={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e},gc=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:NH,fs:UH,modules:[oo,ta]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({positions:{size:3,vertexOffset:1,type:5130,fp64:this.use64bitPositions(),transition:HO,accessor:\"getPath\",update:this.calculatePositions,noAlloc:!0,shaderAttributes:{instanceLeftPositions:{vertexOffset:0},instanceStartPositions:{vertexOffset:1},instanceEndPositions:{vertexOffset:2},instanceRightPositions:{vertexOffset:3}}},instanceTypes:{size:1,type:5121,update:this.calculateSegmentTypes,noAlloc:!0},instanceStrokeWidths:{size:1,accessor:\"getWidth\",transition:HO,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,accessor:\"getColor\",transition:HO,defaultValue:VH},instancePickingColors:{size:3,type:5121,accessor:(i,{index:s,target:n})=>this.encodePickingColor(i&&i.__source?i.__source.index:s,n)}}),this.setState({pathTesselator:new F2({fp64:this.use64bitPositions()})})}updateState(t){super.updateState(t);let{props:r,changeFlags:i}=t,s=this.getAttributeManager();if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPath)){let{pathTesselator:c}=this.state,f=r.data.attributes||{};c.updateGeometry({data:r.data,geometryBuffer:f.getPath,buffers:f,normalize:!r._pathType,loop:r._pathType===\"loop\",getGeometry:r.getPath,positionFormat:r.positionFormat,wrapLongitude:r.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:i.dataChanged}),this.setState({numInstances:c.instanceCount,startIndices:c.vertexStarts}),i.dataChanged||s.invalidateAll()}if(i.extensionsChanged){var o;let{gl:c}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(c),s.invalidateAll()}}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i}=r,{data:s}=this.props;return s[0]&&s[0].__source&&(r.object=s.find(n=>n.__source.index===i)),r}disablePickingIndex(t){let{data:r}=this.props;if(r[0]&&r[0].__source)for(let i=0;i=1&&e[0].length>=2&&Number.isFinite(e[0][0])}function zdt(e){let t=e[0],r=e[e.length-1];return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]}function Ndt(e,t,r,i){for(let s=0;sc/t));let n=Gv(e),o=i&&t===3;if(r){let c=n.length;n=n.slice();let f=[];for(let _=0;_f&&c>_||(f>_?(r||(n=n.slice()),$H(n,0,2,1)):(r||(n=n.slice()),$H(n,2,0,1)))}return(0,XH.default)(n,s,t)}var j2=class extends JA{constructor(t){let{fp64:r,IndexType:i=Uint32Array}=t;super({...t,attributes:{positions:{size:3,type:r?Float64Array:Float32Array},vertexValid:{type:Uint8ClampedArray,size:1},indices:{type:i,size:1}}})}get(t){let{attributes:r}=this;return t===\"indices\"?r.indices&&r.indices.subarray(0,this.vertexCount):r[t]}updateGeometry(t){super.updateGeometry(t);let r=this.buffers.indices;if(r)this.vertexCount=(r.value||r).length;else if(this.data&&!this.getGeometry)throw new Error(\"missing indices buffer\")}normalizeGeometry(t){if(this.normalize){let r=T3(t,this.positionSize);return this.opts.resolution?O2(Gv(r),V2(r),{size:this.positionSize,gridResolution:this.opts.resolution,edgeTypes:!0}):this.opts.wrapLongitude?GO(Gv(r),V2(r),{size:this.positionSize,maxLatitude:86,edgeTypes:!0}):r}return t}getGeometrySize(t){if(tq(t)){let r=0;for(let i of t)r+=this.getGeometrySize(i);return r}return Gv(t).length/this.positionSize}getGeometryFromBuffer(t){return this.normalize||!this.buffers.indices?super.getGeometryFromBuffer(t):null}updateGeometryAttributes(t,r){if(t&&tq(t))for(let i of t){let s=this.getGeometrySize(i);r.geometrySize=s,this.updateGeometryAttributes(i,r),r.vertexStart+=s,r.indexStart=this.indexStarts[r.geometryIndex+1]}else this._updateIndices(t,r),this._updatePositions(t,r),this._updateVertexValid(t,r)}_updateIndices(t,{geometryIndex:r,vertexStart:i,indexStart:s}){let{attributes:n,indexStarts:o,typedArrayManager:c}=this,f=n.indices;if(!f||!t)return;let _=s,w=KH(t,this.positionSize,this.opts.preproject,this.opts.full3d);f=c.allocate(f,s+w.length,{copy:!0});for(let C=0;C2?o[f*n+2]:0;s[c*3]=_,s[c*3+1]=w,s[c*3+2]=C}}_updateVertexValid(t,{vertexStart:r,geometrySize:i}){let{positionSize:s}=this,n=this.attributes.vertexValid,o=t&&V2(t);if(t&&t.edgeTypes?n.set(t.edgeTypes,r):n.fill(1,r,r+i),o)for(let c=0;c0&&!Number.isFinite(e[0])}var M3=`\nattribute vec2 vertexPositions;\nattribute float vertexValid;\n\nuniform bool extruded;\nuniform bool isWireframe;\nuniform float elevationScale;\nuniform float opacity;\n\nvarying vec4 vColor;\n\nstruct PolygonProps {\n vec4 fillColors;\n vec4 lineColors;\n vec3 positions;\n vec3 nextPositions;\n vec3 pickingColors;\n vec3 positions64Low;\n vec3 nextPositions64Low;\n float elevations;\n};\n\nvec3 project_offset_normal(vec3 vector) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\n }\n return project_normal(vector);\n}\n\nvoid calculatePosition(PolygonProps props) {\n#ifdef IS_SIDE_VERTEX\n if(vertexValid < 0.5){\n gl_Position = vec4(0.);\n return;\n }\n#endif\n\n vec3 pos;\n vec3 pos64Low;\n vec3 normal;\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\n\n geometry.worldPosition = props.positions;\n geometry.worldPositionAlt = props.nextPositions;\n geometry.pickingColor = props.pickingColors;\n\n#ifdef IS_SIDE_VERTEX\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\n#else\n pos = props.positions;\n pos64Low = props.positions64Low;\n#endif\n\n if (extruded) {\n pos.z += props.elevations * vertexPositions.y * elevationScale;\n }\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n if (extruded) {\n #ifdef IS_SIDE_VERTEX\n normal = vec3(\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\n 0.0);\n normal = project_offset_normal(normal);\n #else\n normal = project_normal(vec3(0.0, 0.0, 1.0));\n #endif\n geometry.normal = normal;\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\n vColor = vec4(lightColor, colors.a * opacity);\n } else {\n vColor = vec4(colors.rgb, colors.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var eq=`#define SHADER_NAME solid-polygon-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float elevations;\nattribute vec4 fillColors;\nattribute vec4 lineColors;\nattribute vec3 pickingColors;\n\n`.concat(M3,`\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = positions;\n props.positions64Low = positions64Low;\n props.elevations = elevations;\n props.fillColors = fillColors;\n props.lineColors = lineColors;\n props.pickingColors = pickingColors;\n\n calculatePosition(props);\n}\n`);var rq=`#define SHADER_NAME solid-polygon-layer-vertex-shader-side\n#define IS_SIDE_VERTEX\n\n\nattribute vec3 instancePositions;\nattribute vec3 nextPositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 nextPositions64Low;\nattribute float instanceElevations;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\n`.concat(M3,`\n\nvoid main(void) {\n PolygonProps props;\n\n #if RING_WINDING_ORDER_CW == 1\n props.positions = instancePositions;\n props.positions64Low = instancePositions64Low;\n props.nextPositions = nextPositions;\n props.nextPositions64Low = nextPositions64Low;\n #else\n props.positions = nextPositions;\n props.positions64Low = nextPositions64Low;\n props.nextPositions = instancePositions;\n props.nextPositions64Low = instancePositions64Low;\n #endif\n props.elevations = instanceElevations;\n props.fillColors = instanceFillColors;\n props.lineColors = instanceLineColors;\n props.pickingColors = instancePickingColors;\n\n calculatePosition(props);\n}\n`);var iq=`#define SHADER_NAME solid-polygon-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var P3=[0,0,0,255],Udt={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:\"CW\",_full3d:!1,elevationScale:{type:\"number\",min:0,value:1},getPolygon:{type:\"accessor\",value:e=>e.polygon},getElevation:{type:\"accessor\",value:1e3},getFillColor:{type:\"accessor\",value:P3},getLineColor:{type:\"accessor\",value:P3},material:!0},E3={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e},_c=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(t){return super.getShaders({vs:t===\"top\"?eq:rq,fs:iq,defines:{RING_WINDING_ORDER_CW:!this.props._normalize&&this.props._windingOrder===\"CCW\"?0:1},modules:[oo,YA,ta]})}get wrapLongitude(){return!1}initializeState(){let{gl:t,viewport:r}=this.context,{coordinateSystem:i}=this.props,{_full3d:s}=this.props;r.isGeospatial&&i===Yr.DEFAULT&&(i=Yr.LNGLAT);let n;i===Yr.LNGLAT&&(s?n=r.projectPosition.bind(r):n=r.projectFlat.bind(r)),this.setState({numInstances:0,polygonTesselator:new j2({preproject:n,fp64:this.use64bitPositions(),IndexType:!t||Dh(t,Pi.ELEMENT_INDEX_UINT32)?Uint32Array:Uint16Array})});let o=this.getAttributeManager(),c=!0;o.remove([\"instancePickingColors\"]),o.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:c},positions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:E3,accessor:\"getPolygon\",update:this.calculatePositions,noAlloc:c,shaderAttributes:{positions:{vertexOffset:0,divisor:0},instancePositions:{vertexOffset:0,divisor:1},nextPositions:{vertexOffset:1,divisor:1}}},vertexValid:{size:1,divisor:1,type:5121,update:this.calculateVertexValid,noAlloc:c},elevations:{size:1,transition:E3,accessor:\"getElevation\",shaderAttributes:{elevations:{divisor:0},instanceElevations:{divisor:1}}},fillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:E3,accessor:\"getFillColor\",defaultValue:P3,shaderAttributes:{fillColors:{divisor:0},instanceFillColors:{divisor:1}}},lineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:E3,accessor:\"getLineColor\",defaultValue:P3,shaderAttributes:{lineColors:{divisor:0},instanceLineColors:{divisor:1}}},pickingColors:{size:3,type:5121,accessor:(f,{index:_,target:w})=>this.encodePickingColor(f&&f.__source?f.__source.index:_,w),shaderAttributes:{pickingColors:{divisor:0},instancePickingColors:{divisor:1}}}})}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i}=r,{data:s}=this.props;return s[0]&&s[0].__source&&(r.object=s.find(n=>n.__source.index===i)),r}disablePickingIndex(t){let{data:r}=this.props;if(r[0]&&r[0].__source)for(let i=0;if.delete()),this.setState(this._getModels(this.context.gl)),n.invalidateAll()}}updateGeometry({props:t,oldProps:r,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPolygon)){let{polygonTesselator:n}=this.state,o=t.data.attributes||{};n.updateGeometry({data:t.data,normalize:t._normalize,geometryBuffer:o.getPolygon,buffers:o,getGeometry:t.getPolygon,positionFormat:t.positionFormat,wrapLongitude:t.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:i.dataChanged,full3d:t._full3d}),this.setState({numInstances:n.instanceCount,startIndices:n.vertexStarts}),i.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(t){let{id:r,filled:i,extruded:s}=this.props,n,o;if(i){let c=this.getShaders(\"top\");c.defines.NON_INSTANCED_MODEL=1,n=new Sn(t,{...c,id:\"\".concat(r,\"-top\"),drawMode:4,attributes:{vertexPositions:new Float32Array([0,1])},uniforms:{isWireframe:!1,isSideVertex:!1},vertexCount:0,isIndexed:!0})}return s&&(o=new Sn(t,{...this.getShaders(\"side\"),id:\"\".concat(r,\"-side\"),geometry:new As({drawMode:1,vertexCount:4,attributes:{vertexPositions:{size:2,value:new Float32Array([1,0,0,0,0,1,1,1])}}}),instanceCount:0,isInstanced:1}),o.userData.excludeAttributes={indices:!0}),{models:[o,n].filter(Boolean),topModel:n,sideModel:o}}calculateIndices(t){let{polygonTesselator:r}=this.state;t.startIndices=r.indexStarts,t.value=r.get(\"indices\")}calculatePositions(t){let{polygonTesselator:r}=this.state;t.startIndices=r.vertexStarts,t.value=r.get(\"positions\")}calculateVertexValid(t){t.value=this.state.polygonTesselator.get(\"vertexValid\")}};G(_c,\"defaultProps\",Udt);G(_c,\"layerName\",\"SolidPolygonLayer\");function I3({data:e,getIndex:t,dataRange:r,replace:i}){let{startRow:s=0,endRow:n=1/0}=r,o=e.length,c=o,f=o;for(let R=0;RR&&N>=s&&(c=R),N>=n){f=R;break}}let _=c,C=f-c!==i.length?e.slice(f):void 0;for(let R=0;Re.polygon},getFillColor:{type:\"accessor\",value:Vdt},getLineColor:{type:\"accessor\",value:nq},getLineWidth:{type:\"accessor\",value:1},getElevation:{type:\"accessor\",value:1e3},material:!0},lf=class extends tn{initializeState(){this.state={paths:[]},this.props.getLineDashArray&&nr.removed(\"getLineDashArray\",\"PathStyleExtension\")()}updateState({changeFlags:t}){let r=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getPolygon);if(r&&Array.isArray(t.dataChanged)){let i=this.state.paths.slice(),s=t.dataChanged.map(n=>I3({data:i,getIndex:o=>o.__source.index,dataRange:n,replace:this._getPaths(n)}));this.setState({paths:i,pathsDiff:s})}else r&&this.setState({paths:this._getPaths(),pathsDiff:null})}_getPaths(t={}){let{data:r,getPolygon:i,positionFormat:s,_normalize:n}=this.props,o=[],c=s===\"XY\"?2:3,{startRow:f,endRow:_}=t,{iterable:w,objectInfo:C}=Xc(r,f,_);for(let R of w){C.index++;let N=i(R,C);n&&(N=T3(N,c));let{holeIndices:j}=N,Y=N.positions||N;if(j)for(let rt=0;rt<=j.length;rt++){let $=Y.slice(j[rt-1]||0,j[rt]||Y.length);o.push(this.getSubLayerRow({path:$},R,C.index))}else o.push(this.getSubLayerRow({path:Y},R,C.index))}return o}renderLayers(){let{data:t,_dataDiff:r,stroked:i,filled:s,extruded:n,wireframe:o,_normalize:c,_windingOrder:f,elevationScale:_,transitions:w,positionFormat:C}=this.props,{lineWidthUnits:R,lineWidthScale:N,lineWidthMinPixels:j,lineWidthMaxPixels:Y,lineJointRounded:rt,lineMiterLimit:$,lineDashJustified:K}=this.props,{getFillColor:tt,getLineColor:ut,getLineWidth:Pt,getLineDashArray:Ot,getElevation:Kt,getPolygon:Zt,updateTriggers:le,material:ue}=this.props,{paths:Ge,pathsDiff:tr}=this.state,er=this.getSubLayerClass(\"fill\",_c),Lr=this.getSubLayerClass(\"stroke\",gc),zi=this.shouldRenderSubLayer(\"fill\",Ge)&&new er({_dataDiff:r,extruded:n,elevationScale:_,filled:s,wireframe:o,_normalize:c,_windingOrder:f,getElevation:Kt,getFillColor:tt,getLineColor:n&&o?ut:nq,material:ue,transitions:w},this.getSubLayerProps({id:\"fill\",updateTriggers:le&&{getPolygon:le.getPolygon,getElevation:le.getElevation,getFillColor:le.getFillColor,lineColors:n&&o,getLineColor:le.getLineColor}}),{data:t,positionFormat:C,getPolygon:Zt}),Bo=!n&&i&&this.shouldRenderSubLayer(\"stroke\",Ge)&&new Lr({_dataDiff:tr&&(()=>tr),widthUnits:R,widthScale:N,widthMinPixels:j,widthMaxPixels:Y,jointRounded:rt,miterLimit:$,dashJustified:K,_pathType:\"loop\",transitions:w&&{getWidth:w.getLineWidth,getColor:w.getLineColor,getPath:w.getPolygon},getColor:this.getSubLayerAccessor(ut),getWidth:this.getSubLayerAccessor(Pt),getDashArray:this.getSubLayerAccessor(Ot)},this.getSubLayerProps({id:\"stroke\",updateTriggers:le&&{getWidth:le.getLineWidth,getColor:le.getLineColor,getDashArray:le.getLineDashArray}}),{data:Ge,positionFormat:C,getPath:Pc=>Pc.path});return[!n&&zi,Bo,n&&zi]}};G(lf,\"layerName\",\"PolygonLayer\");G(lf,\"defaultProps\",jdt);function sq(e,t){if(!e)return null;let r=\"startIndices\"in e?e.startIndices[t]:t,i=e.featureIds.value[r];return r!==-1?Gdt(e,i,r):null}function Gdt(e,t,r){let i={properties:{...e.properties[t]}};for(let s in e.numericProps)i.properties[s]=e.numericProps[s].value[r];return i}function oq(e,t){let r={points:null,lines:null,polygons:null};for(let i in r){let s=e[i].globalFeatureIds.value;r[i]=new Uint8ClampedArray(s.length*3);let n=[];for(let o=0;o 0.0) {\n float inFill = alpha;\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\n color = mix(outlineColor, vColor, inFill);\n alpha = inBorder;\n }\n }\n float a = alpha * color.a;\n \n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color.rgb, a * opacity);\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var XO=192/256,lq=[],Wdt={getIconOffsets:{type:\"accessor\",value:e=>e.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:\"color\",value:[0,0,0,255]}},Dg=class extends Sp{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return{...super.getShaders(),fs:aq}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:\"getIconOffsets\"},instancePickingColors:{type:5121,size:3,accessor:(r,{index:i,target:s})=>this.encodePickingColor(i,s)}})}updateState(t){super.updateState(t);let{props:r,oldProps:i}=t,{outlineColor:s}=r;s!==i.outlineColor&&(s=s.map(n=>n/255),s[3]=Number.isFinite(s[3])?s[3]:1,this.setState({outlineColor:s})),!r.sdf&&r.outlineWidth&&nr.warn(\"\".concat(this.id,\": fontSettings.sdf is required to render outline\"))()}draw(t){let{sdf:r,smoothing:i,outlineWidth:s}=this.props,{outlineColor:n}=this.state,o=s?Math.max(i,XO*(1-s)):-1;if(t.uniforms={...t.uniforms,sdfBuffer:XO,outlineBuffer:o,gamma:i,sdf:!!r,outlineColor:n},super.draw(t),r&&s){let{iconManager:c}=this.state;c.getTexture()&&this.state.model.draw({uniforms:{outlineBuffer:XO}})}}getInstanceOffset(t){return t?Array.from(t).flatMap(r=>super.getInstanceOffset(r)):lq}getInstanceColorMode(t){return 1}getInstanceIconFrame(t){return t?Array.from(t).flatMap(r=>super.getInstanceIconFrame(r)):lq}};G(Dg,\"defaultProps\",Wdt);G(Dg,\"layerName\",\"MultiIconLayer\");var G2=class{constructor({fontSize:t=24,buffer:r=3,radius:i=8,cutoff:s=.25,fontFamily:n=\"sans-serif\",fontWeight:o=\"normal\",fontStyle:c=\"normal\"}={}){this.buffer=r,this.cutoff=s,this.radius=i;let f=this.size=t+r*4,_=this._createCanvas(f),w=this.ctx=_.getContext(\"2d\",{willReadFrequently:!0});w.font=`${c} ${o} ${t}px ${n}`,w.textBaseline=\"alphabetic\",w.textAlign=\"left\",w.fillStyle=\"black\",this.gridOuter=new Float64Array(f*f),this.gridInner=new Float64Array(f*f),this.f=new Float64Array(f),this.z=new Float64Array(f+1),this.v=new Uint16Array(f)}_createCanvas(t){let r=document.createElement(\"canvas\");return r.width=r.height=t,r}draw(t){let{width:r,actualBoundingBoxAscent:i,actualBoundingBoxDescent:s,actualBoundingBoxLeft:n,actualBoundingBoxRight:o}=this.ctx.measureText(t),c=Math.ceil(i),f=0,_=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-n))),w=Math.min(this.size-this.buffer,c+Math.ceil(s)),C=_+2*this.buffer,R=w+2*this.buffer,N=Math.max(C*R,0),j=new Uint8ClampedArray(N),Y={data:j,width:C,height:R,glyphWidth:_,glyphHeight:w,glyphTop:c,glyphLeft:f,glyphAdvance:r};if(_===0||w===0)return Y;let{ctx:rt,buffer:$,gridInner:K,gridOuter:tt}=this;rt.clearRect($,$,_,w),rt.fillText(t,$,$+c);let ut=rt.getImageData($,$,_,w);tt.fill(1e20,0,N),K.fill(0,0,N);for(let Pt=0;Pt0?le*le:0,K[Zt]=le<0?le*le:0}}cq(tt,0,0,C,R,C,this.f,this.v,this.z),cq(K,$,$,_,w,C,this.f,this.v,this.z);for(let Pt=0;Pt-1);f++,n[f]=c,o[f]=_,o[f+1]=1e20}for(let c=0,f=0;cs&&(_=0,f++),n[C]={x:_+i,y:c+f*w+i,width:R,height:w,layoutWidth:R,layoutHeight:r},_+=R+i*2}return{mapping:n,xOffset:_,yOffset:c+f*w,canvasHeight:Zdt(c+(f+1)*w)}}function fq(e,t,r,i){let s=0;for(let o=t;oi&&(oc){let C=fq(e,c,f,s);_+C>i&&(oi&&(C=dq(e,c,f,i,s,n),o=n[n.length-1])),c=f,_+=C}return _}function Qdt(e,t,r,i,s=0,n){n===void 0&&(n=e.length);let o=[];return t===\"break-all\"?dq(e,s,n,r,i,o):Ydt(e,s,n,r,i,o),o}function $dt(e,t,r,i,s,n){let o=0,c=0;for(let f=t;f0,C=[0,0],R=[0,0],N=0,j=0,Y=0;for(let $=0;$<=o;$++){let K=n[$];if((K===`\n`||$===o)&&(Y=$),Y>j){let tt=w?Qdt(n,r,i,s,j,Y):qdt;for(let ut=0;ut<=tt.length;ut++){let Pt=ut===0?j:tt[ut-1],Ot=ut1||f>0){let N=e.constructor;R=new N(_);for(let j=0;j<_;j++)R[j]=e[j*c+f]}for(let N=0;N=0&&this._order.splice(r,1)}_appendOrder(t){this._order.push(t)}};function Xdt(){let e=[];for(let t=32;t<128;t++)e.push(String.fromCharCode(t));return e}var Og={fontFamily:\"Monaco, monospace\",fontWeight:\"normal\",characterSet:Xdt(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},mq=1024,gq=.9,_q=1.2,vq=3,C3=new Wv(vq);function Kdt(e,t){let r;typeof t==\"string\"?r=new Set(Array.from(t)):r=new Set(t);let i=C3.get(e);if(!i)return r;for(let s in i.mapping)r.has(s)&&r.delete(s);return r}function Jdt(e,t){for(let r=0;r=vq,\"Invalid cache limit\"),C3=new Wv(e)}var W2=class{constructor(){G(this,\"props\",{...Og}),G(this,\"_key\",void 0),G(this,\"_atlas\",void 0)}get texture(){return this._atlas}get mapping(){return this._atlas&&this._atlas.mapping}get scale(){let{fontSize:t,buffer:r}=this.props;return(t*_q+r*2)/t}setProps(t={}){Object.assign(this.props,t),this._key=this._getKey();let r=Kdt(this._key,this.props.characterSet),i=C3.get(this._key);if(i&&r.size===0){this._atlas!==i&&(this._atlas=i);return}let s=this._generateFontAtlas(r,i);this._atlas=s,C3.set(this._key,s)}_generateFontAtlas(t,r){let{fontFamily:i,fontWeight:s,fontSize:n,buffer:o,sdf:c,radius:f,cutoff:_}=this.props,w=r&&r.data;w||(w=document.createElement(\"canvas\"),w.width=mq);let C=w.getContext(\"2d\",{willReadFrequently:!0});yq(C,i,n,s);let{mapping:R,canvasHeight:N,xOffset:j,yOffset:Y}=hq({getFontWidth:rt=>C.measureText(rt).width,fontHeight:n*_q,buffer:o,characterSet:t,maxCanvasWidth:mq,...r&&{mapping:r.mapping,xOffset:r.xOffset,yOffset:r.yOffset}});if(w.height!==N){let rt=C.getImageData(0,0,w.width,w.height);w.height=N,C.putImageData(rt,0,0)}if(yq(C,i,n,s),c){let rt=new G2({fontSize:n,buffer:o,radius:f,cutoff:_,fontFamily:i,fontWeight:\"\".concat(s)});for(let $ of t){let{data:K,width:tt,height:ut,glyphTop:Pt}=rt.draw($);R[$].width=tt,R[$].layoutOffsetY=n*gq-Pt;let Ot=C.createImageData(tt,ut);Jdt(K,Ot),C.putImageData(Ot,R[$].x,R[$].y)}}else for(let rt of t)C.fillText(rt,R[rt].x,R[rt].y+o+n*gq);return{xOffset:j,yOffset:Y,mapping:R,data:w,width:w.width,height:w.height}}_getKey(){let{fontFamily:t,fontWeight:r,fontSize:i,buffer:s,sdf:n,radius:o,cutoff:c}=this.props;return n?\"\".concat(t,\" \").concat(r,\" \").concat(i,\" \").concat(s,\" \").concat(o,\" \").concat(c):\"\".concat(t,\" \").concat(r,\" \").concat(i,\" \").concat(s)}};var bq=`#define SHADER_NAME text-background-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceRects;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec2 instancePixelOffsets;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;var wq=`#define SHADER_NAME text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n if (stroked) {\n float distToEdge = min(\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\n );\n float isBorder = smoothedge(distToEdge, vLineWidth);\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\n } else {\n gl_FragColor = vFillColor;\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var tpt={billboard:!0,sizeScale:1,sizeUnits:\"pixels\",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,padding:{type:\"array\",value:[0,0,0,0]},getPosition:{type:\"accessor\",value:e=>e.position},getSize:{type:\"accessor\",value:1},getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]},getBoundingRect:{type:\"accessor\",value:[0,0,0,0]},getFillColor:{type:\"accessor\",value:[0,0,0,255]},getLineColor:{type:\"accessor\",value:[0,0,0,255]},getLineWidth:{type:\"accessor\",value:1}},Bg=class extends Tn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:bq,fs:wq,modules:[oo,ta]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceSizes:{size:1,transition:!0,accessor:\"getSize\",defaultValue:1},instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instanceRects:{size:4,accessor:\"getBoundingRect\"},instancePixelOffsets:{size:2,transition:!0,accessor:\"getPixelOffset\"},instanceFillColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:\"getFillColor\",defaultValue:[0,0,0,255]},instanceLineColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:\"getLineColor\",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:\"getLineWidth\",defaultValue:1}})}updateState(t){super.updateState(t);let{changeFlags:r}=t;if(r.extensionsChanged){var i;let{gl:s}=this.context;(i=this.state.model)===null||i===void 0||i.delete(),this.state.model=this._getModel(s),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{billboard:r,sizeScale:i,sizeUnits:s,sizeMinPixels:n,sizeMaxPixels:o,getLineWidth:c}=this.props,{padding:f}=this.props;f.length<4&&(f=[f[0],f[1],f[0],f[1]]),this.state.model.setUniforms(t).setUniforms({billboard:r,stroked:!!c,padding:f,sizeUnits:Ko[s],sizeScale:i,sizeMinPixels:n,sizeMaxPixels:o}).draw()}_getModel(t){let r=[0,0,1,0,1,1,0,1];return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,vertexCount:4,attributes:{positions:{size:2,value:new Float32Array(r)}}}),isInstanced:!0})}};G(Bg,\"defaultProps\",tpt);G(Bg,\"layerName\",\"TextBackgroundLayer\");var Sq={start:1,middle:0,end:-1},Tq={top:1,center:0,bottom:-1},KO=[0,0,0,255],ept=1,rpt={billboard:!0,sizeScale:1,sizeUnits:\"pixels\",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,background:!1,getBackgroundColor:{type:\"accessor\",value:[255,255,255,255]},getBorderColor:{type:\"accessor\",value:KO},getBorderWidth:{type:\"accessor\",value:0},backgroundPadding:{type:\"array\",value:[0,0,0,0]},characterSet:{type:\"object\",value:Og.characterSet},fontFamily:Og.fontFamily,fontWeight:Og.fontWeight,lineHeight:ept,outlineWidth:{type:\"number\",value:0,min:0},outlineColor:{type:\"color\",value:KO},fontSettings:{type:\"object\",value:{},compare:1},wordBreak:\"break-word\",maxWidth:{type:\"number\",value:-1},getText:{type:\"accessor\",value:e=>e.text},getPosition:{type:\"accessor\",value:e=>e.position},getColor:{type:\"accessor\",value:KO},getSize:{type:\"accessor\",value:32},getAngle:{type:\"accessor\",value:0},getTextAnchor:{type:\"accessor\",value:\"middle\"},getAlignmentBaseline:{type:\"accessor\",value:\"center\"},getPixelOffset:{type:\"accessor\",value:[0,0]},backgroundColor:{deprecatedFor:[\"background\",\"getBackgroundColor\"]}},cf=class extends tn{constructor(...t){super(...t),G(this,\"state\",void 0),G(this,\"getBoundingRect\",(r,i)=>{let{size:[s,n]}=this.transformParagraph(r,i),{fontSize:o}=this.state.fontAtlasManager.props;s/=o,n/=o;let{getTextAnchor:c,getAlignmentBaseline:f}=this.props,_=Sq[typeof c==\"function\"?c(r,i):c],w=Tq[typeof f==\"function\"?f(r,i):f];return[(_-1)*s/2,(w-1)*n/2,s,n]}),G(this,\"getIconOffsets\",(r,i)=>{let{getTextAnchor:s,getAlignmentBaseline:n}=this.props,{x:o,y:c,rowWidth:f,size:[_,w]}=this.transformParagraph(r,i),C=Sq[typeof s==\"function\"?s(r,i):s],R=Tq[typeof n==\"function\"?n(r,i):n],N=o.length,j=new Array(N*2),Y=0;for(let rt=0;rt0&&nr.warn(\"v8.9 breaking change: TextLayer maxWidth is now relative to text size\")()}updateState(t){let{props:r,oldProps:i,changeFlags:s}=t;(s.dataChanged||s.updateTriggersChanged&&(s.updateTriggersChanged.all||s.updateTriggersChanged.getText))&&this._updateText(),(this._updateFontAtlas()||r.lineHeight!==i.lineHeight||r.wordBreak!==i.wordBreak||r.maxWidth!==i.maxWidth)&&this.setState({styleVersion:this.state.styleVersion+1})}getPickingInfo({info:t}){return t.object=t.index>=0?this.props.data[t.index]:null,t}_updateFontAtlas(){let{fontSettings:t,fontFamily:r,fontWeight:i}=this.props,{fontAtlasManager:s,characterSet:n}=this.state,o={...t,characterSet:n,fontFamily:r,fontWeight:i};if(!s.mapping)return s.setProps(o),!0;for(let c in o)if(o[c]!==s.props[c])return s.setProps(o),!0;return!1}_updateText(){var t;let{data:r,characterSet:i}=this.props,s=(t=r.attributes)===null||t===void 0?void 0:t.getText,{getText:n}=this.props,o=r.startIndices,c,f=i===\"auto\"&&new Set;if(s&&o){let{texts:_,characterCount:w}=Aq({...ArrayBuffer.isView(s)?{value:s}:s,length:r.length,startIndices:o,characterSet:f});c=w,n=(C,{index:R})=>_[R]}else{let{iterable:_,objectInfo:w}=Xc(r);o=[0],c=0;for(let C of _){w.index++;let R=Array.from(n(C,w)||\"\");f&&R.forEach(f.add,f),c+=R.length,o.push(c)}}this.setState({getText:n,startIndices:o,numInstances:c,characterSet:f||i})}transformParagraph(t,r){let{fontAtlasManager:i}=this.state,s=i.mapping,n=this.state.getText,{wordBreak:o,lineHeight:c,maxWidth:f}=this.props,_=n(t,r)||\"\";return pq(_,c,o,f*i.props.fontSize,s)}renderLayers(){let{startIndices:t,numInstances:r,getText:i,fontAtlasManager:{scale:s,texture:n,mapping:o},styleVersion:c}=this.state,{data:f,_dataDiff:_,getPosition:w,getColor:C,getSize:R,getAngle:N,getPixelOffset:j,getBackgroundColor:Y,getBorderColor:rt,getBorderWidth:$,backgroundPadding:K,background:tt,billboard:ut,fontSettings:Pt,outlineWidth:Ot,outlineColor:Kt,sizeScale:Zt,sizeUnits:le,sizeMinPixels:ue,sizeMaxPixels:Ge,transitions:tr,updateTriggers:er}=this.props,Lr=this.getSubLayerClass(\"characters\",Dg),zi=this.getSubLayerClass(\"background\",Bg);return[tt&&new zi({getFillColor:Y,getLineColor:rt,getLineWidth:$,padding:K,getPosition:w,getSize:R,getAngle:N,getPixelOffset:j,billboard:ut,sizeScale:Zt,sizeUnits:le,sizeMinPixels:ue,sizeMaxPixels:Ge,transitions:tr&&{getPosition:tr.getPosition,getAngle:tr.getAngle,getSize:tr.getSize,getFillColor:tr.getBackgroundColor,getLineColor:tr.getBorderColor,getLineWidth:tr.getBorderWidth,getPixelOffset:tr.getPixelOffset}},this.getSubLayerProps({id:\"background\",updateTriggers:{getPosition:er.getPosition,getAngle:er.getAngle,getSize:er.getSize,getFillColor:er.getBackgroundColor,getLineColor:er.getBorderColor,getLineWidth:er.getBorderWidth,getPixelOffset:er.getPixelOffset,getBoundingRect:{getText:er.getText,getTextAnchor:er.getTextAnchor,getAlignmentBaseline:er.getAlignmentBaseline,styleVersion:c}}}),{data:f.attributes&&f.attributes.background?{length:f.length,attributes:f.attributes.background}:f,_dataDiff:_,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new Lr({sdf:Pt.sdf,smoothing:Number.isFinite(Pt.smoothing)?Pt.smoothing:Og.smoothing,outlineWidth:Ot/(Pt.radius||Og.radius),outlineColor:Kt,iconAtlas:n,iconMapping:o,getPosition:w,getColor:C,getSize:R,getAngle:N,getPixelOffset:j,billboard:ut,sizeScale:Zt*s,sizeUnits:le,sizeMinPixels:ue*s,sizeMaxPixels:Ge*s,transitions:tr&&{getPosition:tr.getPosition,getAngle:tr.getAngle,getColor:tr.getColor,getSize:tr.getSize,getPixelOffset:tr.getPixelOffset}},this.getSubLayerProps({id:\"characters\",updateTriggers:{all:er.getText,getPosition:er.getPosition,getAngle:er.getAngle,getColor:er.getColor,getSize:er.getSize,getPixelOffset:er.getPixelOffset,getIconOffsets:{getTextAnchor:er.getTextAnchor,getAlignmentBaseline:er.getAlignmentBaseline,styleVersion:c}}}),{data:f,_dataDiff:_,startIndices:t,numInstances:r,getIconOffsets:this.getIconOffsets,getIcon:i})]}static set fontAtlasCacheLimit(t){xq(t)}};G(cf,\"defaultProps\",rpt);G(cf,\"layerName\",\"TextLayer\");var H2={circle:{type:Xu,props:{filled:\"filled\",stroked:\"stroked\",lineWidthMaxPixels:\"lineWidthMaxPixels\",lineWidthMinPixels:\"lineWidthMinPixels\",lineWidthScale:\"lineWidthScale\",lineWidthUnits:\"lineWidthUnits\",pointRadiusMaxPixels:\"radiusMaxPixels\",pointRadiusMinPixels:\"radiusMinPixels\",pointRadiusScale:\"radiusScale\",pointRadiusUnits:\"radiusUnits\",pointAntialiasing:\"antialiasing\",pointBillboard:\"billboard\",getFillColor:\"getFillColor\",getLineColor:\"getLineColor\",getLineWidth:\"getLineWidth\",getPointRadius:\"getRadius\"}},icon:{type:Sp,props:{iconAtlas:\"iconAtlas\",iconMapping:\"iconMapping\",iconSizeMaxPixels:\"sizeMaxPixels\",iconSizeMinPixels:\"sizeMinPixels\",iconSizeScale:\"sizeScale\",iconSizeUnits:\"sizeUnits\",iconAlphaCutoff:\"alphaCutoff\",iconBillboard:\"billboard\",getIcon:\"getIcon\",getIconAngle:\"getAngle\",getIconColor:\"getColor\",getIconPixelOffset:\"getPixelOffset\",getIconSize:\"getSize\"}},text:{type:cf,props:{textSizeMaxPixels:\"sizeMaxPixels\",textSizeMinPixels:\"sizeMinPixels\",textSizeScale:\"sizeScale\",textSizeUnits:\"sizeUnits\",textBackground:\"background\",textBackgroundPadding:\"backgroundPadding\",textFontFamily:\"fontFamily\",textFontWeight:\"fontWeight\",textLineHeight:\"lineHeight\",textMaxWidth:\"maxWidth\",textOutlineColor:\"outlineColor\",textOutlineWidth:\"outlineWidth\",textWordBreak:\"wordBreak\",textCharacterSet:\"characterSet\",textBillboard:\"billboard\",textFontSettings:\"fontSettings\",getText:\"getText\",getTextAngle:\"getAngle\",getTextColor:\"getColor\",getTextPixelOffset:\"getPixelOffset\",getTextSize:\"getSize\",getTextAnchor:\"getTextAnchor\",getTextAlignmentBaseline:\"getAlignmentBaseline\",getTextBackgroundColor:\"getBackgroundColor\",getTextBorderColor:\"getBorderColor\",getTextBorderWidth:\"getBorderWidth\"}}},q2={type:gc,props:{lineWidthUnits:\"widthUnits\",lineWidthScale:\"widthScale\",lineWidthMinPixels:\"widthMinPixels\",lineWidthMaxPixels:\"widthMaxPixels\",lineJointRounded:\"jointRounded\",lineCapRounded:\"capRounded\",lineMiterLimit:\"miterLimit\",lineBillboard:\"billboard\",getLineColor:\"getColor\",getLineWidth:\"getWidth\"}},L3={type:_c,props:{extruded:\"extruded\",filled:\"filled\",wireframe:\"wireframe\",elevationScale:\"elevationScale\",material:\"material\",_full3d:\"_full3d\",getElevation:\"getElevation\",getFillColor:\"getFillColor\",getLineColor:\"getLineColor\"}};function Hv({type:e,props:t}){let r={};for(let i in t)r[i]=e.defaultProps[t[i]];return r}function k3(e,t){let{transitions:r,updateTriggers:i}=e.props,s={updateTriggers:{},transitions:r&&{getPosition:r.geometry}};for(let n in t){let o=t[n],c=e.props[n];n.startsWith(\"get\")&&(c=e.getSubLayerAccessor(c),s.updateTriggers[o]=i[n],r&&(s.transitions[o]=r[n])),s[o]=c}return s}function Eq(e){if(Array.isArray(e))return e;switch(nr.assert(e.type,\"GeoJSON does not have type\"),e.type){case\"Feature\":return[e];case\"FeatureCollection\":return nr.assert(Array.isArray(e.features),\"GeoJSON does not have features array\"),e.features;default:return[{geometry:e}]}}function JO(e,t,r={}){let i={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:s=0,endRow:n=e.length}=r;for(let o=s;o{c.push(r({geometry:{type:\"Point\",coordinates:C}},i,s))});break;case\"LineString\":f.push(r({geometry:e},i,s));break;case\"MultiLineString\":o.forEach(C=>{f.push(r({geometry:{type:\"LineString\",coordinates:C}},i,s))});break;case\"Polygon\":_.push(r({geometry:e},i,s)),o.forEach(C=>{w.push(r({geometry:{type:\"LineString\",coordinates:C}},i,s))});break;case\"MultiPolygon\":o.forEach(C=>{_.push(r({geometry:{type:\"Polygon\",coordinates:C}},i,s)),C.forEach(R=>{w.push(r({geometry:{type:\"LineString\",coordinates:R}},i,s))})});break;default:}}var ipt={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function npt(e,t){let r=ipt[e];for(nr.assert(r,\"Unknown GeoJSON type \".concat(e));t&&--r>0;)t=t[0];return t&&Number.isFinite(t[0])}function Pq(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function R3(e){return e.geometry.coordinates}function Iq(e,t){let r=Pq(),{pointFeatures:i,lineFeatures:s,polygonFeatures:n,polygonOutlineFeatures:o}=e;return r.points.data=i,r.points._dataDiff=t.pointFeatures&&(()=>t.pointFeatures),r.points.getPosition=R3,r.lines.data=s,r.lines._dataDiff=t.lineFeatures&&(()=>t.lineFeatures),r.lines.getPath=R3,r.polygons.data=n,r.polygons._dataDiff=t.polygonFeatures&&(()=>t.polygonFeatures),r.polygons.getPolygon=R3,r.polygonsOutline.data=o,r.polygonsOutline._dataDiff=t.polygonOutlineFeatures&&(()=>t.polygonOutlineFeatures),r.polygonsOutline.getPath=R3,r}function Cq(e,t){let r=Pq(),{points:i,lines:s,polygons:n}=e,o=oq(e,t);return r.points.data={length:i.positions.value.length/i.positions.size,attributes:{...i.attributes,getPosition:i.positions,instancePickingColors:{size:3,value:o.points}},properties:i.properties,numericProps:i.numericProps,featureIds:i.featureIds},r.lines.data={length:s.pathIndices.value.length-1,startIndices:s.pathIndices.value,attributes:{...s.attributes,getPath:s.positions,instancePickingColors:{size:3,value:o.lines}},properties:s.properties,numericProps:s.numericProps,featureIds:s.featureIds},r.lines._pathType=\"open\",r.polygons.data={length:n.polygonIndices.value.length-1,startIndices:n.polygonIndices.value,attributes:{...n.attributes,getPolygon:n.positions,pickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},r.polygons._normalize=!1,n.triangles&&(r.polygons.data.attributes.indices=n.triangles.value),r.polygonsOutline.data={length:n.primitivePolygonIndices.value.length-1,startIndices:n.primitivePolygonIndices.value,attributes:{...n.attributes,getPath:n.positions,instancePickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},r.polygonsOutline._pathType=\"open\",r}var spt=[\"points\",\"linestrings\",\"polygons\"],opt={...Hv(H2.circle),...Hv(H2.icon),...Hv(H2.text),...Hv(q2),...Hv(L3),stroked:!0,filled:!0,extruded:!1,wireframe:!1,_full3d:!1,iconAtlas:{type:\"object\",value:null},iconMapping:{type:\"object\",value:{}},getIcon:{type:\"accessor\",value:e=>e.properties.icon},getText:{type:\"accessor\",value:e=>e.properties.text},pointType:\"circle\",getRadius:{deprecatedFor:\"getPointRadius\"}},xm=class extends tn{initializeState(){this.state={layerProps:{},features:{}}}updateState({props:t,changeFlags:r}){if(!r.dataChanged)return;let{data:i}=this.props,s=i&&\"points\"in i&&\"polygons\"in i&&\"lines\"in i;this.setState({binary:s}),s?this._updateStateBinary({props:t,changeFlags:r}):this._updateStateJSON({props:t,changeFlags:r})}_updateStateBinary({props:t,changeFlags:r}){let i=Cq(t.data,this.encodePickingColor);this.setState({layerProps:i})}_updateStateJSON({props:t,changeFlags:r}){let i=Eq(t.data),s=this.getSubLayerRow.bind(this),n={},o={};if(Array.isArray(r.dataChanged)){let f=this.state.features;for(let _ in f)n[_]=f[_].slice(),o[_]=[];for(let _ of r.dataChanged){let w=JO(i,s,_);for(let C in f)o[C].push(I3({data:n[C],getIndex:R=>R.__source.index,dataRange:_,replace:w[C]}))}}else n=JO(i,s);let c=Iq(n,o);this.setState({features:n,featuresDiff:o,layerProps:c})}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i,sourceLayer:s}=r;return r.featureType=spt.find(n=>s.id.startsWith(\"\".concat(this.id,\"-\").concat(n,\"-\"))),i>=0&&s.id.startsWith(\"\".concat(this.id,\"-points-text\"))&&this.state.binary&&(r.index=this.props.data.points.globalFeatureIds.value[i]),r}_updateAutoHighlight(t){let r=\"\".concat(this.id,\"-points-\"),i=t.featureType===\"points\";for(let s of this.getSubLayers())s.id.startsWith(r)===i&&s.updateAutoHighlight(t)}_renderPolygonLayer(){let{extruded:t,wireframe:r}=this.props,{layerProps:i}=this.state,s=\"polygons-fill\",n=this.shouldRenderSubLayer(s,i.polygons.data)&&this.getSubLayerClass(s,L3.type);if(n){let o=k3(this,L3.props),c=t&&r;return c||delete o.getLineColor,o.updateTriggers.lineColors=c,new n(o,this.getSubLayerProps({id:s,updateTriggers:o.updateTriggers}),i.polygons)}return null}_renderLineLayers(){let{extruded:t,stroked:r}=this.props,{layerProps:i}=this.state,s=\"polygons-stroke\",n=\"linestrings\",o=!t&&r&&this.shouldRenderSubLayer(s,i.polygonsOutline.data)&&this.getSubLayerClass(s,q2.type),c=this.shouldRenderSubLayer(n,i.lines.data)&&this.getSubLayerClass(n,q2.type);if(o||c){let f=k3(this,q2.props);return[o&&new o(f,this.getSubLayerProps({id:s,updateTriggers:f.updateTriggers}),i.polygonsOutline),c&&new c(f,this.getSubLayerProps({id:n,updateTriggers:f.updateTriggers}),i.lines)]}return null}_renderPointLayers(){let{pointType:t}=this.props,{layerProps:r,binary:i}=this.state,{highlightedObjectIndex:s}=this.props;!i&&Number.isFinite(s)&&(s=r.points.data.findIndex(c=>c.__source.index===s));let n=new Set(t.split(\"+\")),o=[];for(let c of n){let f=\"points-\".concat(c),_=H2[c],w=_&&this.shouldRenderSubLayer(f,r.points.data)&&this.getSubLayerClass(f,_.type);if(w){let C=k3(this,_.props),R=r.points;if(c===\"text\"&&i){let{instancePickingColors:N,...j}=R.data.attributes;R={...R,data:{...R.data,attributes:j}}}o.push(new w(C,this.getSubLayerProps({id:f,updateTriggers:C.updateTriggers,highlightedObjectIndex:s}),R))}}return o}renderLayers(){let{extruded:t}=this.props,r=this._renderPolygonLayer(),i=this._renderLineLayers(),s=this._renderPointLayers();return[!t&&r,i,s,t&&r]}getSubLayerAccessor(t){let{binary:r}=this.state;return!r||typeof t!=\"function\"?super.getSubLayerAccessor(t):(i,s)=>{let{data:n,index:o}=s,c=sq(n,o);return t(c,s)}}};G(xm,\"layerName\",\"GeoJsonLayer\");G(xm,\"defaultProps\",opt);var f$t=1/Math.PI*180,d$t=1/180*Math.PI,apt={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...apt}};var Z2=globalThis.mathgl.config;function Y2(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function qv(e,t,r){let i=Z2.EPSILON;r&&(Z2.EPSILON=r);try{if(e===t)return!0;if(Y2(e)&&Y2(t)){if(e.length!==t.length)return!1;for(let s=0;s{t([r,i],[s,n],o,c)},this.options):Rq(this.points,t,this.options)}modifyWindingDirection(t){return this.isFlatArray?tB(this.points,t,this.options):kq(this.points,t,this.options)}};function nB(e,t,r=2,i,s=\"xy\"){let n=t&&t.length,o=n?t[0]*r:e.length,c=Oq(e,0,o,r,!0,i&&i[0],s),f=[];if(!c||c.next===c.prev)return f;let _,w,C,R,N,j,Y;if(n&&(c=ppt(e,t,c,r,i,s)),e.length>80*r){R=w=e[0],N=C=e[1];for(let rt=r;rtw&&(w=j),Y>C&&(C=Y);_=Math.max(w-R,C-N),_=_!==0?32767/_:0}return Q2(c,f,r,R,N,_,0),f}function Oq(e,t,r,i,s,n,o){let c,f;n===void 0&&(n=Zv(e,{start:t,end:r,size:i,plane:o}));let _=Fg[o[0]],w=Fg[o[1]];if(s===n<0)for(c=t;c=t;c-=i)f=Dq(c,e[c+_],e[c+w],f);return f&&F3(f,f.next)&&(X2(f),f=f.next),f}function zg(e,t){if(!e)return e;t||(t=e);let r=e,i;do if(i=!1,!r.steiner&&(F3(r,r.next)||ys(r.prev,r,r.next)===0)){if(X2(r),r=t=r.prev,r===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function Q2(e,t,r,i,s,n,o){if(!e)return;!o&&n&&ypt(e,i,s,n);let c=e,f,_;for(;e.prev!==e.next;){if(f=e.prev,_=e.next,n?hpt(e,i,s,n):upt(e)){t.push(f.i/r|0),t.push(e.i/r|0),t.push(_.i/r|0),X2(e),e=_.next,c=_.next;continue}if(e=_,e===c){o?o===1?(e=fpt(zg(e),t,r),Q2(e,t,r,i,s,n,2)):o===2&&dpt(e,t,r,i,s,n):Q2(zg(e),t,r,i,s,n,1);break}}}function upt(e){let t=e.prev,r=e,i=e.next;if(ys(t,r,i)>=0)return!1;let s=t.x,n=r.x,o=i.x,c=t.y,f=r.y,_=i.y,w=sn?s>o?s:o:n>o?n:o,N=c>f?c>_?c:_:f>_?f:_,j=i.next;for(;j!==t;){if(j.x>=w&&j.x<=R&&j.y>=C&&j.y<=N&&Qv(s,c,n,f,o,_,j.x,j.y)&&ys(j.prev,j,j.next)>=0)return!1;j=j.next}return!0}function hpt(e,t,r,i){let s=e.prev,n=e,o=e.next;if(ys(s,n,o)>=0)return!1;let c=s.x,f=n.x,_=o.x,w=s.y,C=n.y,R=o.y,N=cf?c>_?c:_:f>_?f:_,rt=w>C?w>R?w:R:C>R?C:R,$=iB(N,j,t,r,i),K=iB(Y,rt,t,r,i),tt=e.prevZ,ut=e.nextZ;for(;tt&&tt.z>=$&&ut&&ut.z<=K;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&Qv(c,w,f,C,_,R,tt.x,tt.y)&&ys(tt.prev,tt,tt.next)>=0||(tt=tt.prevZ,ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&Qv(c,w,f,C,_,R,ut.x,ut.y)&&ys(ut.prev,ut,ut.next)>=0))return!1;ut=ut.nextZ}for(;tt&&tt.z>=$;){if(tt.x>=N&&tt.x<=Y&&tt.y>=j&&tt.y<=rt&&tt!==s&&tt!==o&&Qv(c,w,f,C,_,R,tt.x,tt.y)&&ys(tt.prev,tt,tt.next)>=0)return!1;tt=tt.prevZ}for(;ut&&ut.z<=K;){if(ut.x>=N&&ut.x<=Y&&ut.y>=j&&ut.y<=rt&&ut!==s&&ut!==o&&Qv(c,w,f,C,_,R,ut.x,ut.y)&&ys(ut.prev,ut,ut.next)>=0)return!1;ut=ut.nextZ}return!0}function fpt(e,t,r){let i=e;do{let s=i.prev,n=i.next.next;!F3(s,n)&&Bq(s,i,i.next,n)&&$2(s,n)&&$2(n,s)&&(t.push(s.i/r|0),t.push(i.i/r|0),t.push(n.i/r|0),X2(i),X2(i.next),i=e=n),i=i.next}while(i!==e);return zg(i)}function dpt(e,t,r,i,s,n){let o=e;do{let c=o.next.next;for(;c!==o.prev;){if(o.i!==c.i&&bpt(o,c)){let f=Fq(o,c);o=zg(o,o.next),f=zg(f,f.next),Q2(o,t,r,i,s,n,0),Q2(f,t,r,i,s,n,0);return}c=c.next}o=o.next}while(o!==e)}function ppt(e,t,r,i,s,n){let o=[],c,f,_,w,C;for(c=0,f=t.length;c=r.next.y&&r.next.y!==r.y){let R=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(R<=i&&R>n&&(n=R,o=r.x=r.x&&r.x>=f&&i!==r.x&&Qv(s<_?i:n,s,f,_,s<_?n:i,s,r.x,r.y)&&(C=Math.abs(s-r.y)/(i-r.x),$2(r,e)&&(Co.x||r.x===o.x&&_pt(o,r)))&&(o=r,w=C)),r=r.next;while(r!==c);return o}function _pt(e,t){return ys(e.prev,e,t.prev)<0&&ys(t.next,e,e.next)<0}function ypt(e,t,r,i){let s=e;do s.z===0&&(s.z=iB(s.x,s.y,t,r,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,vpt(s)}function vpt(e){let t,r,i=1,s,n,o,c,f,_;do{for(n=e,e=null,_=null,s=0;n;){for(s++,c=n,o=0,r=0;r0||f>0&&c;)o!==0&&(f===0||!c||n.z<=c.z)?(t=n,n=n.nextZ,o--):(t=c,c=c.nextZ,f--),_?_.nextZ=t:e=t,t.prevZ=_,_=t;n=c}_.nextZ=null,i*=2}while(s>1);return e}function iB(e,t,r,i,s){return e=(e-r)*s|0,t=(t-i)*s|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function xpt(e){let t=e,r=e;do(t.x=(e-o)*(n-c)&&(e-o)*(i-c)>=(r-o)*(t-c)&&(r-o)*(n-c)>=(s-o)*(i-c)}function bpt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!wpt(e,t)&&($2(e,t)&&$2(t,e)&&Spt(e,t)&&(ys(e.prev,e,t.prev)||ys(e,t.prev,t))||F3(e,t)&&ys(e.prev,e,e.next)>0&&ys(t.prev,t,t.next)>0)}function ys(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function F3(e,t){return e.x===t.x&&e.y===t.y}function Bq(e,t,r,i){let s=B3(ys(e,t,r)),n=B3(ys(e,t,i)),o=B3(ys(r,i,e)),c=B3(ys(r,i,t));return!!(s!==n&&o!==c||s===0&&O3(e,r,t)||n===0&&O3(e,i,t)||o===0&&O3(r,e,i)||c===0&&O3(r,t,i))}function O3(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function B3(e){return e>0?1:e<0?-1:0}function wpt(e,t){let r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&Bq(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function $2(e,t){return ys(e.prev,e,e.next)<0?ys(e,t,e.next)>=0&&ys(e,e.prev,t)>=0:ys(e,t,e.prev)<0||ys(e,e.next,t)<0}function Spt(e,t){let r=e,i=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do r.y>n!=r.next.y>n&&r.next.y!==r.y&&s<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next;while(r!==e);return i}function Fq(e,t){let r=new K2(e.i,e.x,e.y),i=new K2(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,r.next=s,s.prev=r,i.next=r,r.prev=i,n.next=i,i.prev=n,i}function Dq(e,t,r,i){let s=new K2(e,t,r);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function X2(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}var K2=class{constructor(t,r,i){G(this,\"i\",void 0),G(this,\"x\",void 0),G(this,\"y\",void 0),G(this,\"prev\",null),G(this,\"next\",null),G(this,\"z\",0),G(this,\"prevZ\",null),G(this,\"nextZ\",null),G(this,\"steiner\",!1),this.i=t,this.x=r,this.y=i}};function Uq(e){e(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),e(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),e(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),e.WGS84=e[\"EPSG:4326\"],e[\"EPSG:3785\"]=e[\"EPSG:3857\"],e.GOOGLE=e[\"EPSG:3857\"],e[\"EPSG:900913\"]=e[\"EPSG:3857\"],e[\"EPSG:102113\"]=e[\"EPSG:3857\"]}var uf=1,hf=2,Tp=3,Vq=4,J2=5,sB=6378137,jq=6356752314e-3,oB=.0066943799901413165,Ng=484813681109536e-20,de=Math.PI/2,Gq=.16666666666666666,Wq=.04722222222222222,Hq=.022156084656084655,we=1e-10,vs=.017453292519943295,yc=57.29577951308232,Fi=Math.PI/4,bm=Math.PI*2,xs=3.14159265359;var Ll={};Ll.greenwich=0;Ll.lisbon=-9.131906111111;Ll.paris=2.337229166667;Ll.bogota=-74.080916666667;Ll.madrid=-3.687938888889;Ll.rome=12.452333333333;Ll.bern=7.439583333333;Ll.jakarta=106.807719444444;Ll.ferro=-17.666666666667;Ll.brussels=4.367975;Ll.stockholm=18.058277777778;Ll.athens=23.7163375;Ll.oslo=10.722916666667;var qq={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}};var Zq=/[\\s_\\-\\/\\(\\)]/g;function au(e,t){if(e[t])return e[t];for(var r=Object.keys(e),i=t.toLowerCase().replace(Zq,\"\"),s=-1,n,o;++s=this.text.length)return;e=this.text[this.place++]}switch(this.state){case eS:return this.neutral(e);case Qq:return this.keyword(e);case z3:return this.quoted(e);case Xq:return this.afterquote(e);case $q:return this.number(e);case aB:return}};Mp.prototype.afterquote=function(e){if(e==='\"'){this.word+='\"',this.state=z3;return}if(N3.test(e)){this.word=this.word.trim(),this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in afterquote yet, index '+this.place)};Mp.prototype.afterItem=function(e){if(e===\",\"){this.word!==null&&this.currentObject.push(this.word),this.word=null,this.state=eS;return}if(e===\"]\"){this.level--,this.word!==null&&(this.currentObject.push(this.word),this.word=null),this.state=eS,this.currentObject=this.stack.pop(),this.currentObject||(this.state=aB);return}};Mp.prototype.number=function(e){if(Kq.test(e)){this.word+=e;return}if(N3.test(e)){this.word=parseFloat(this.word),this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in number yet, index '+this.place)};Mp.prototype.quoted=function(e){if(e==='\"'){this.state=Xq;return}this.word+=e};Mp.prototype.keyword=function(e){if(Cpt.test(e)){this.word+=e;return}if(e===\"[\"){var t=[];t.push(this.word),this.level++,this.root===null?this.root=t:this.currentObject.push(t),this.stack.push(this.currentObject),this.currentObject=t,this.state=eS;return}if(N3.test(e)){this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in keyword yet, index '+this.place)};Mp.prototype.neutral=function(e){if(Ipt.test(e)){this.word=e,this.state=Qq;return}if(e==='\"'){this.word=\"\",this.state=z3;return}if(Kq.test(e)){this.word=e,this.state=$q;return}if(N3.test(e)){this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in neutral yet, index '+this.place)};Mp.prototype.output=function(){for(;this.place0?90:-90),e.lat_ts=e.lat1):!e.lat_ts&&e.lat0&&e.projName===\"Polar_Stereographic\"&&(e.lat_ts=e.lat0,e.lat0=ud(e.lat0>0?90:-90))}function U3(e){var t=Yq(e),r=t.shift(),i=t.shift();t.unshift([\"name\",i]),t.unshift([\"type\",r]);var s={};return Ug(t,s),Dpt(s),s}function Ku(e){var t=this;if(arguments.length===2){var r=arguments[1];typeof r==\"string\"?r.charAt(0)===\"+\"?Ku[e]=tS(arguments[1]):Ku[e]=U3(arguments[1]):Ku[e]=r}else if(arguments.length===1){if(Array.isArray(e))return e.map(function(i){Array.isArray(i)?Ku.apply(t,i):Ku(i)});if(typeof e==\"string\"){if(e in Ku)return Ku[e]}else\"EPSG\"in e?Ku[\"EPSG:\"+e.EPSG]=e:\"ESRI\"in e?Ku[\"ESRI:\"+e.ESRI]=e:\"IAU2000\"in e?Ku[\"IAU2000:\"+e.IAU2000]=e:console.log(e);return}}Uq(Ku);var $v=Ku;function Opt(e){return typeof e==\"string\"}function Bpt(e){return e in $v}var Fpt=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];function zpt(e){return Fpt.some(function(t){return e.indexOf(t)>-1})}var Npt=[\"3857\",\"900913\",\"3785\",\"102113\"];function Upt(e){var t=au(e,\"authority\");if(t){var r=au(t,\"epsg\");return r&&Npt.indexOf(r)>-1}}function Vpt(e){var t=au(e,\"extension\");if(t)return au(t,\"proj4\")}function jpt(e){return e[0]===\"+\"}function Gpt(e){if(Opt(e)){if(Bpt(e))return $v[e];if(zpt(e)){var t=U3(e);if(Upt(t))return $v[\"EPSG:3857\"];var r=Vpt(t);return r?tS(r):t}if(jpt(e))return tS(e)}else return e}var tZ=Gpt;function lB(e,t){e=e||{};var r,i;if(!t)return e;for(i in t)r=t[i],r!==void 0&&(e[i]=r);return e}function il(e,t,r){var i=e*t;return r/Math.sqrt(1-i*i)}function hd(e){return e<0?-1:1}function Ie(e){return Math.abs(e)<=xs?e:e-hd(e)*bm}function kl(e,t,r){var i=e*r,s=.5*e;return i=Math.pow((1-i)/(1+i),s),Math.tan(.5*(de-t))/i}function Ep(e,t){for(var r=.5*e,i,s,n=de-2*Math.atan(t),o=0;o<=15;o++)if(i=e*Math.sin(n),s=de-2*Math.atan(t*Math.pow((1-i)/(1+i),r))-n,n+=s,Math.abs(s)<=1e-10)return n;return-9999}function Wpt(){var e=this.b/this.a;this.es=1-e*e,\"x0\"in this||(this.x0=0),\"y0\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=il(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)}function Hpt(e){var t=e.x,r=e.y;if(r*yc>90&&r*yc<-90&&t*yc>180&&t*yc<-180)return null;var i,s;if(Math.abs(Math.abs(r)-de)<=we)return null;if(this.sphere)i=this.x0+this.a*this.k0*Ie(t-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(Fi+.5*r));else{var n=Math.sin(r),o=kl(this.e,r,n);i=this.x0+this.a*this.k0*Ie(t-this.long0),s=this.y0-this.a*this.k0*Math.log(o)}return e.x=i,e.y=s,e}function qpt(e){var t=e.x-this.x0,r=e.y-this.y0,i,s;if(this.sphere)s=de-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var n=Math.exp(-r/(this.a*this.k0));if(s=Ep(this.e,n),s===-9999)return null}return i=Ie(this.long0+t/(this.a*this.k0)),e.x=i,e.y=s,e}var Zpt=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],eZ={init:Wpt,forward:Hpt,inverse:qpt,names:Zpt};function Ypt(){}function rZ(e){return e}var Qpt=[\"longlat\",\"identity\"],iZ={init:Ypt,forward:rZ,inverse:rZ,names:Qpt};var $pt=[eZ,iZ],V3={},j3=[];function nZ(e,t){var r=j3.length;return e.names?(j3[r]=e,e.names.forEach(function(i){V3[i.toLowerCase()]=r}),this):(console.log(t),!0)}function Xpt(e){if(!e)return!1;var t=e.toLowerCase();if(typeof V3[t]<\"u\"&&j3[V3[t]])return j3[V3[t]]}function Kpt(){$pt.forEach(nZ)}var sZ={start:Kpt,add:nZ,get:Xpt};var Xr={};Xr.MERIT={a:6378137,rf:298.257,ellipseName:\"MERIT 1983\"};Xr.SGS85={a:6378136,rf:298.257,ellipseName:\"Soviet Geodetic System 85\"};Xr.GRS80={a:6378137,rf:298.257222101,ellipseName:\"GRS 1980(IUGG, 1980)\"};Xr.IAU76={a:6378140,rf:298.257,ellipseName:\"IAU 1976\"};Xr.airy={a:6377563396e-3,b:635625691e-2,ellipseName:\"Airy 1830\"};Xr.APL4={a:6378137,rf:298.25,ellipseName:\"Appl. Physics. 1965\"};Xr.NWL9D={a:6378145,rf:298.25,ellipseName:\"Naval Weapons Lab., 1965\"};Xr.mod_airy={a:6377340189e-3,b:6356034446e-3,ellipseName:\"Modified Airy\"};Xr.andrae={a:637710443e-2,rf:300,ellipseName:\"Andrae 1876 (Den., Iclnd.)\"};Xr.aust_SA={a:6378160,rf:298.25,ellipseName:\"Australian Natl & S. Amer. 1969\"};Xr.GRS67={a:6378160,rf:298.247167427,ellipseName:\"GRS 67(IUGG 1967)\"};Xr.bessel={a:6377397155e-3,rf:299.1528128,ellipseName:\"Bessel 1841\"};Xr.bess_nam={a:6377483865e-3,rf:299.1528128,ellipseName:\"Bessel 1841 (Namibia)\"};Xr.clrk66={a:63782064e-1,b:63565838e-1,ellipseName:\"Clarke 1866\"};Xr.clrk80={a:6378249145e-3,rf:293.4663,ellipseName:\"Clarke 1880 mod.\"};Xr.clrk80ign={a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:\"Clarke 1880 (IGN)\"};Xr.clrk58={a:6378293645208759e-9,rf:294.2606763692654,ellipseName:\"Clarke 1858\"};Xr.CPM={a:63757387e-1,rf:334.29,ellipseName:\"Comm. des Poids et Mesures 1799\"};Xr.delmbr={a:6376428,rf:311.5,ellipseName:\"Delambre 1810 (Belgium)\"};Xr.engelis={a:637813605e-2,rf:298.2566,ellipseName:\"Engelis 1985\"};Xr.evrst30={a:6377276345e-3,rf:300.8017,ellipseName:\"Everest 1830\"};Xr.evrst48={a:6377304063e-3,rf:300.8017,ellipseName:\"Everest 1948\"};Xr.evrst56={a:6377301243e-3,rf:300.8017,ellipseName:\"Everest 1956\"};Xr.evrst69={a:6377295664e-3,rf:300.8017,ellipseName:\"Everest 1969\"};Xr.evrstSS={a:6377298556e-3,rf:300.8017,ellipseName:\"Everest (Sabah & Sarawak)\"};Xr.fschr60={a:6378166,rf:298.3,ellipseName:\"Fischer (Mercury Datum) 1960\"};Xr.fschr60m={a:6378155,rf:298.3,ellipseName:\"Fischer 1960\"};Xr.fschr68={a:6378150,rf:298.3,ellipseName:\"Fischer 1968\"};Xr.helmert={a:6378200,rf:298.3,ellipseName:\"Helmert 1906\"};Xr.hough={a:6378270,rf:297,ellipseName:\"Hough\"};Xr.intl={a:6378388,rf:297,ellipseName:\"International 1909 (Hayford)\"};Xr.kaula={a:6378163,rf:298.24,ellipseName:\"Kaula 1961\"};Xr.lerch={a:6378139,rf:298.257,ellipseName:\"Lerch 1979\"};Xr.mprts={a:6397300,rf:191,ellipseName:\"Maupertius 1738\"};Xr.new_intl={a:63781575e-1,b:63567722e-1,ellipseName:\"New International 1967\"};Xr.plessis={a:6376523,rf:6355863,ellipseName:\"Plessis 1817 (France)\"};Xr.krass={a:6378245,rf:298.3,ellipseName:\"Krassovsky, 1942\"};Xr.SEasia={a:6378155,b:63567733205e-4,ellipseName:\"Southeast Asia\"};Xr.walbeck={a:6376896,b:63558348467e-4,ellipseName:\"Walbeck\"};Xr.WGS60={a:6378165,rf:298.3,ellipseName:\"WGS 60\"};Xr.WGS66={a:6378145,rf:298.25,ellipseName:\"WGS 66\"};Xr.WGS7={a:6378135,rf:298.26,ellipseName:\"WGS 72\"};var oZ=Xr.WGS84={a:6378137,rf:298.257223563,ellipseName:\"WGS 84\"};Xr.sphere={a:6370997,b:6370997,ellipseName:\"Normal Sphere (r=6370997)\"};function aZ(e,t,r,i){var s=e*e,n=t*t,o=(s-n)/s,c=0;i?(e*=1-o*(Gq+o*(Wq+o*Hq)),s=e*e,o=0):c=Math.sqrt(o);var f=(s-n)/n;return{es:o,e:c,ep2:f}}function lZ(e,t,r,i,s){if(!e){var n=au(Xr,i);n||(n=oZ),e=n.a,t=n.b,r=n.rf}return r&&!t&&(t=(1-1/r)*e),(r===0||Math.abs(e-t)3&&(c.datum_params[3]!==0||c.datum_params[4]!==0||c.datum_params[5]!==0||c.datum_params[6]!==0)&&(c.datum_type=hf,c.datum_params[3]*=Ng,c.datum_params[4]*=Ng,c.datum_params[5]*=Ng,c.datum_params[6]=c.datum_params[6]/1e6+1)),o&&(c.datum_type=Tp,c.grids=o),c.a=r,c.b=i,c.es=s,c.ep2=n,c}var cZ=Jpt;var uZ={};function uB(e,t){var r=new DataView(t),i=eAt(r),s=rAt(r,i),n=iAt(r,s,i),o={header:s,subgrids:n};return uZ[e]=o,o}function hZ(e){if(e===void 0)return null;var t=e.split(\",\");return t.map(tAt)}function tAt(e){if(e.length===0)return null;var t=e[0]===\"@\";return t&&(e=e.slice(1)),e===\"null\"?{name:\"null\",mandatory:!t,grid:null,isNull:!0}:{name:e,mandatory:!t,grid:uZ[e]||null,isNull:!1}}function Xv(e){return e/3600*Math.PI/180}function eAt(e){var t=e.getInt32(8,!1);return t===11?!1:(t=e.getInt32(8,!0),t!==11&&console.warn(\"Failed to detect nadgrid endian-ness, defaulting to little-endian\"),!0)}function rAt(e,t){return{nFields:e.getInt32(8,t),nSubgridFields:e.getInt32(24,t),nSubgrids:e.getInt32(40,t),shiftType:cB(e,56,64).trim(),fromSemiMajorAxis:e.getFloat64(120,t),fromSemiMinorAxis:e.getFloat64(136,t),toSemiMajorAxis:e.getFloat64(152,t),toSemiMinorAxis:e.getFloat64(168,t)}}function cB(e,t,r){return String.fromCharCode.apply(null,new Uint8Array(e.buffer.slice(t,r)))}function iAt(e,t,r){for(var i=176,s=[],n=0;n5e-11?!1:e.datum_type===uf?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]:e.datum_type===hf?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]&&e.datum_params[3]===t.datum_params[3]&&e.datum_params[4]===t.datum_params[4]&&e.datum_params[5]===t.datum_params[5]&&e.datum_params[6]===t.datum_params[6]:!0}function G3(e,t,r){var i=e.x,s=e.y,n=e.z?e.z:0,o,c,f,_;if(s<-de&&s>-1.001*de)s=-de;else if(s>de&&s<1.001*de)s=de;else{if(s<-de)return{x:-1/0,y:-1/0,z:e.z};if(s>de)return{x:1/0,y:1/0,z:e.z}}return i>Math.PI&&(i-=2*Math.PI),c=Math.sin(s),_=Math.cos(s),f=c*c,o=r/Math.sqrt(1-t*f),{x:(o+n)*_*Math.cos(i),y:(o+n)*_*Math.sin(i),z:(o*(1-t)+n)*c}}function W3(e,t,r,i){var s=1e-12,n=s*s,o=30,c,f,_,w,C,R,N,j,Y,rt,$,K,tt,ut=e.x,Pt=e.y,Ot=e.z?e.z:0,Kt,Zt,le;if(c=Math.sqrt(ut*ut+Pt*Pt),f=Math.sqrt(ut*ut+Pt*Pt+Ot*Ot),c/rn&&tti.y||j>i.x||$c&&Math.abs(f.y)>c);if(o<0)return console.log(\"Inverse grid shift iterator failed to converge.\"),i;i.x=Ie(n.x+r.ll[0]),i.y=n.y+r.ll[1]}else isNaN(n.x)||(i.x=e.x+n.x,i.y=e.y+n.y);return i}function mZ(e,t){var r={x:e.x/t.del[0],y:e.y/t.del[1]},i={x:Math.floor(r.x),y:Math.floor(r.y)},s={x:r.x-1*i.x,y:r.y-1*i.y},n={x:Number.NaN,y:Number.NaN},o;if(i.x<0||i.x>=t.lim[0]||i.y<0||i.y>=t.lim[1])return n;o=i.y*t.lim[0]+i.x;var c={x:t.cvs[o][0],y:t.cvs[o][1]};o++;var f={x:t.cvs[o][0],y:t.cvs[o][1]};o+=t.lim[0];var _={x:t.cvs[o][0],y:t.cvs[o][1]};o--;var w={x:t.cvs[o][0],y:t.cvs[o][1]},C=s.x*s.y,R=s.x*(1-s.y),N=(1-s.x)*(1-s.y),j=(1-s.x)*s.y;return n.x=N*c.x+R*f.x+j*w.x+C*_.x,n.y=N*c.y+R*f.y+j*w.y+C*_.y,n}function hB(e,t,r){var i=r.x,s=r.y,n=r.z||0,o,c,f,_={};for(f=0;f<3;f++)if(!(t&&f===2&&r.z===void 0))switch(f===0?(o=i,\"ew\".indexOf(e.axis[f])!==-1?c=\"x\":c=\"y\"):f===1?(o=s,\"ns\".indexOf(e.axis[f])!==-1?c=\"y\":c=\"x\"):(o=n,c=\"z\"),e.axis[f]){case\"e\":_[c]=o;break;case\"w\":_[c]=-o;break;case\"n\":_[c]=o;break;case\"s\":_[c]=-o;break;case\"u\":r[c]!==void 0&&(_.z=o);break;case\"d\":r[c]!==void 0&&(_.z=-o);break;default:return null}return _}function q3(e){var t={x:e[0],y:e[1]};return e.length>2&&(t.z=e[2]),e.length>3&&(t.m=e[3]),t}function yZ(e){_Z(e.x),_Z(e.y)}function _Z(e){if(typeof Number.isFinite==\"function\"){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(typeof e!=\"number\"||e!==e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}function lAt(e,t){return(e.datum.datum_type===uf||e.datum.datum_type===hf||e.datum.datum_type===Tp)&&t.datumCode!==\"WGS84\"||(t.datum.datum_type===uf||t.datum.datum_type===hf||t.datum.datum_type===Tp)&&e.datumCode!==\"WGS84\"}function Vg(e,t,r,i){var s;Array.isArray(r)?r=q3(r):r={x:r.x,y:r.y,z:r.z,m:r.m};var n=r.z!==void 0;if(yZ(r),e.datum&&t.datum&&lAt(e,t)&&(s=new wm(\"WGS84\"),r=Vg(e,s,r,i),e=s),i&&e.axis!==\"enu\"&&(r=hB(e,!1,r)),e.projName===\"longlat\")r={x:r.x*vs,y:r.y*vs,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),r=e.inverse(r),!r)return;if(e.from_greenwich&&(r.x+=e.from_greenwich),r=gZ(e.datum,t.datum,r),!!r)return t.from_greenwich&&(r={x:r.x-t.from_greenwich,y:r.y,z:r.z||0}),t.projName===\"longlat\"?r={x:r.x*yc,y:r.y*yc,z:r.z||0}:(r=t.forward(r),t.to_meter&&(r={x:r.x/t.to_meter,y:r.y/t.to_meter,z:r.z||0})),i&&t.axis!==\"enu\"?hB(t,!0,r):(r&&!n&&delete r.z,r)}var vZ=wm(\"WGS84\");function fB(e,t,r,i){var s,n,o;return Array.isArray(r)?(s=Vg(e,t,r,i)||{x:NaN,y:NaN},r.length>2?typeof e.name<\"u\"&&e.name===\"geocent\"||typeof t.name<\"u\"&&t.name===\"geocent\"?typeof s.z==\"number\"?[s.x,s.y,s.z].concat(r.splice(3)):[s.x,s.y,r[2]].concat(r.splice(3)):[s.x,s.y].concat(r.splice(2)):[s.x,s.y]):(n=Vg(e,t,r,i),o=Object.keys(r),o.length===2||o.forEach(function(c){if(typeof e.name<\"u\"&&e.name===\"geocent\"||typeof t.name<\"u\"&&t.name===\"geocent\"){if(c===\"x\"||c===\"y\"||c===\"z\")return}else if(c===\"x\"||c===\"y\")return;n[c]=r[c]}),n)}function xZ(e){return e instanceof wm?e:e.oProj?e.oProj:wm(e)}function cAt(e,t,r){e=xZ(e);var i=!1,s;return typeof t>\"u\"?(t=e,e=vZ,i=!0):(typeof t.x<\"u\"||Array.isArray(t))&&(r=t,t=e,e=vZ,i=!0),t=xZ(t),r?fB(e,t,r):(s={forward:function(n,o){return fB(e,t,n,o)},inverse:function(n,o){return fB(t,e,n,o)}},i&&(s.oProj=t),s)}var vc=cAt;var bZ=6,SZ=\"AJSAJS\",TZ=\"AFAFAF\",Jv=65,xc=73,Ju=79,rS=86,iS=90,MZ={forward:pB,inverse:uAt,toPoint:AB};function pB(e,t){return t=t||5,dAt(hAt({lat:e[1],lon:e[0]}),t)}function uAt(e){var t=mB(PZ(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat,t.lon,t.lat]:[t.left,t.bottom,t.right,t.top]}function AB(e){var t=mB(PZ(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat]:[(t.left+t.right)/2,(t.top+t.bottom)/2]}function dB(e){return e*(Math.PI/180)}function wZ(e){return 180*(e/Math.PI)}function hAt(e){var t=e.lat,r=e.lon,i=6378137,s=.00669438,n=.9996,o,c,f,_,w,C,R,N=dB(t),j=dB(r),Y,rt;rt=Math.floor((r+180)/6)+1,r===180&&(rt=60),t>=56&&t<64&&r>=3&&r<12&&(rt=32),t>=72&&t<84&&(r>=0&&r<9?rt=31:r>=9&&r<21?rt=33:r>=21&&r<33?rt=35:r>=33&&r<42&&(rt=37)),o=(rt-1)*6-180+3,Y=dB(o),c=s/(1-s),f=i/Math.sqrt(1-s*Math.sin(N)*Math.sin(N)),_=Math.tan(N)*Math.tan(N),w=c*Math.cos(N)*Math.cos(N),C=Math.cos(N)*(j-Y),R=i*((1-s/4-3*s*s/64-5*s*s*s/256)*N-(3*s/8+3*s*s/32+45*s*s*s/1024)*Math.sin(2*N)+(15*s*s/256+45*s*s*s/1024)*Math.sin(4*N)-35*s*s*s/3072*Math.sin(6*N));var $=n*f*(C+(1-_+w)*C*C*C/6+(5-18*_+_*_+72*w-58*c)*C*C*C*C*C/120)+5e5,K=n*(R+f*Math.tan(N)*(C*C/2+(5-_+9*w+4*w*w)*C*C*C*C/24+(61-58*_+_*_+600*w-330*c)*C*C*C*C*C*C/720));return t<0&&(K+=1e7),{northing:Math.round(K),easting:Math.round($),zoneNumber:rt,zoneLetter:fAt(t)}}function mB(e){var t=e.northing,r=e.easting,i=e.zoneLetter,s=e.zoneNumber;if(s<0||s>60)return null;var n=.9996,o=6378137,c=.00669438,f,_=(1-Math.sqrt(1-c))/(1+Math.sqrt(1-c)),w,C,R,N,j,Y,rt,$,K,tt=r-5e5,ut=t;i<\"N\"&&(ut-=1e7),rt=(s-1)*6-180+3,f=c/(1-c),Y=ut/n,$=Y/(o*(1-c/4-3*c*c/64-5*c*c*c/256)),K=$+(3*_/2-27*_*_*_/32)*Math.sin(2*$)+(21*_*_/16-55*_*_*_*_/32)*Math.sin(4*$)+151*_*_*_/96*Math.sin(6*$),w=o/Math.sqrt(1-c*Math.sin(K)*Math.sin(K)),C=Math.tan(K)*Math.tan(K),R=f*Math.cos(K)*Math.cos(K),N=o*(1-c)/Math.pow(1-c*Math.sin(K)*Math.sin(K),1.5),j=tt/(w*n);var Pt=K-w*Math.tan(K)/N*(j*j/2-(5+3*C+10*R-4*R*R-9*f)*j*j*j*j/24+(61+90*C+298*R+45*C*C-252*f-3*R*R)*j*j*j*j*j*j/720);Pt=wZ(Pt);var Ot=(j-(1+2*C+R)*j*j*j/6+(5-2*R+28*C-3*R*R+8*f+24*C*C)*j*j*j*j*j/120)/Math.cos(K);Ot=rt+wZ(Ot);var Kt;if(e.accuracy){var Zt=mB({northing:e.northing+e.accuracy,easting:e.easting+e.accuracy,zoneLetter:e.zoneLetter,zoneNumber:e.zoneNumber});Kt={top:Zt.lat,right:Zt.lon,bottom:Pt,left:Ot}}else Kt={lat:Pt,lon:Ot};return Kt}function fAt(e){var t=\"Z\";return 84>=e&&e>=72?t=\"X\":72>e&&e>=64?t=\"W\":64>e&&e>=56?t=\"V\":56>e&&e>=48?t=\"U\":48>e&&e>=40?t=\"T\":40>e&&e>=32?t=\"S\":32>e&&e>=24?t=\"R\":24>e&&e>=16?t=\"Q\":16>e&&e>=8?t=\"P\":8>e&&e>=0?t=\"N\":0>e&&e>=-8?t=\"M\":-8>e&&e>=-16?t=\"L\":-16>e&&e>=-24?t=\"K\":-24>e&&e>=-32?t=\"J\":-32>e&&e>=-40?t=\"H\":-40>e&&e>=-48?t=\"G\":-48>e&&e>=-56?t=\"F\":-56>e&&e>=-64?t=\"E\":-64>e&&e>=-72?t=\"D\":-72>e&&e>=-80&&(t=\"C\"),t}function dAt(e,t){var r=\"00000\"+e.easting,i=\"00000\"+e.northing;return e.zoneNumber+e.zoneLetter+pAt(e.easting,e.northing,e.zoneNumber)+r.substr(r.length-5,t)+i.substr(i.length-5,t)}function pAt(e,t,r){var i=EZ(r),s=Math.floor(e/1e5),n=Math.floor(t/1e5)%20;return AAt(s,n,i)}function EZ(e){var t=e%bZ;return t===0&&(t=bZ),t}function AAt(e,t,r){var i=r-1,s=SZ.charCodeAt(i),n=TZ.charCodeAt(i),o=s+e-1,c=n+t,f=!1;o>iS&&(o=o-iS+Jv-1,f=!0),(o===xc||sxc||(o>xc||sJu||(o>Ju||siS&&(o=o-iS+Jv-1),c>rS?(c=c-rS+Jv-1,f=!0):f=!1,(c===xc||nxc||(c>xc||nJu||(c>Ju||nrS&&(c=c-rS+Jv-1);var _=String.fromCharCode(o)+String.fromCharCode(c);return _}function PZ(e){if(e&&e.length===0)throw\"MGRSPoint coverting from nothing\";for(var t=e.length,r=null,i=\"\",s,n=0;!/[A-Z]/.test(s=e.charAt(n));){if(n>=2)throw\"MGRSPoint bad conversion from: \"+e;i+=s,n++}var o=parseInt(i,10);if(n===0||n+3>t)throw\"MGRSPoint bad conversion from: \"+e;var c=e.charAt(n++);if(c<=\"A\"||c===\"B\"||c===\"Y\"||c>=\"Z\"||c===\"I\"||c===\"O\")throw\"MGRSPoint zone letter \"+c+\" not handled: \"+e;r=e.substring(n,n+=2);for(var f=EZ(o),_=mAt(r.charAt(0),f),w=gAt(r.charAt(1),f);w<_At(c);)w+=2e6;var C=t-n;if(C%2!==0)throw`MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters`+e;var R=C/2,N=0,j=0,Y,rt,$,K,tt;return R>0&&(Y=1e5/Math.pow(10,R),rt=e.substring(n,n+R),N=parseFloat(rt)*Y,$=e.substring(n+R),j=parseFloat($)*Y),K=N+_,tt=j+w,{easting:K,northing:tt,zoneLetter:c,zoneNumber:o,accuracy:Y}}function mAt(e,t){for(var r=SZ.charCodeAt(t-1),i=1e5,s=!1;r!==e.charCodeAt(0);){if(r++,r===xc&&r++,r===Ju&&r++,r>iS){if(s)throw\"Bad character: \"+e;r=Jv,s=!0}i+=1e5}return i}function gAt(e,t){if(e>\"V\")throw\"MGRSPoint given invalid Northing \"+e;for(var r=TZ.charCodeAt(t-1),i=0,s=!1;r!==e.charCodeAt(0);){if(r++,r===xc&&r++,r===Ju&&r++,r>rS){if(s)throw\"Bad character: \"+e;r=Jv,s=!0}i+=1e5}return i}function _At(e){var t;switch(e){case\"C\":t=11e5;break;case\"D\":t=2e6;break;case\"E\":t=28e5;break;case\"F\":t=37e5;break;case\"G\":t=46e5;break;case\"H\":t=55e5;break;case\"J\":t=64e5;break;case\"K\":t=73e5;break;case\"L\":t=82e5;break;case\"M\":t=91e5;break;case\"N\":t=0;break;case\"P\":t=8e5;break;case\"Q\":t=17e5;break;case\"R\":t=26e5;break;case\"S\":t=35e5;break;case\"T\":t=44e5;break;case\"U\":t=53e5;break;case\"V\":t=62e5;break;case\"W\":t=7e6;break;case\"X\":t=79e5;break;default:t=-1}if(t>=0)return t;throw\"Invalid zone letter: \"+e}function tx(e,t,r){if(!(this instanceof tx))return new tx(e,t,r);if(Array.isArray(e))this.x=e[0],this.y=e[1],this.z=e[2]||0;else if(typeof e==\"object\")this.x=e.x,this.y=e.y,this.z=e.z||0;else if(typeof e==\"string\"&&typeof t>\"u\"){var i=e.split(\",\");this.x=parseFloat(i[0],10),this.y=parseFloat(i[1],10),this.z=parseFloat(i[2],10)||0}else this.x=e,this.y=t,this.z=r||0;console.warn(\"proj4.Point will be removed in version 3, use proj4.toPoint\")}tx.fromMGRS=function(e){return new tx(AB(e))};tx.prototype.toMGRS=function(e){return pB([this.x,this.y],e)};var IZ=tx;var yAt=1,vAt=.25,CZ=.046875,LZ=.01953125,kZ=.01068115234375,xAt=.75,bAt=.46875,wAt=.013020833333333334,SAt=.007120768229166667,TAt=.3645833333333333,MAt=.005696614583333333,EAt=.3076171875;function Z3(e){var t=[];t[0]=yAt-e*(vAt+e*(CZ+e*(LZ+e*kZ))),t[1]=e*(xAt-e*(CZ+e*(LZ+e*kZ)));var r=e*e;return t[2]=r*(bAt-e*(wAt+e*SAt)),r*=e,t[3]=r*(TAt-e*MAt),t[4]=r*e*EAt,t}function jg(e,t,r,i){return r*=t,t*=t,i[0]*e-r*(i[1]+t*(i[2]+t*(i[3]+t*i[4])))}var PAt=20;function Y3(e,t,r){for(var i=1/(1-t),s=e,n=PAt;n;--n){var o=Math.sin(s),c=1-t*o*o;if(c=(jg(s,o,Math.cos(s),r)-e)*(c*Math.sqrt(c))*i,s-=c,Math.abs(c)we?Math.tan(r):0,Y=Math.pow(j,2),rt=Math.pow(Y,2);s=1-this.es*Math.pow(c,2),w=w/Math.sqrt(s);var $=jg(r,c,f,this.en);n=this.a*(this.k0*w*(1+C/6*(1-Y+R+C/20*(5-18*Y+rt+14*R-58*Y*R+C/42*(61+179*rt-rt*Y-479*Y)))))+this.x0,o=this.a*(this.k0*($-this.ml0+c*i*w/2*(1+C/12*(5-Y+9*R+4*N+C/30*(61+rt-58*Y+270*R-330*Y*R+C/56*(1385+543*rt-rt*Y-3111*Y))))))+this.y0}else{var _=f*Math.sin(i);if(Math.abs(Math.abs(_)-1)=1){if(_-1>we)return 93;o=0}else o=Math.acos(o);r<0&&(o=-o),o=this.a*this.k0*(o-this.lat0)+this.y0}return e.x=n,e.y=o,e}function LAt(e){var t,r,i,s,n=(e.x-this.x0)*(1/this.a),o=(e.y-this.y0)*(1/this.a);if(this.es)if(t=this.ml0+o/this.k0,r=Y3(t,this.es,this.en),Math.abs(r)we?Math.tan(r):0,j=this.ep2*Math.pow(R,2),Y=Math.pow(j,2),rt=Math.pow(N,2),$=Math.pow(rt,2);t=1-this.es*Math.pow(C,2);var K=n*Math.sqrt(t)/this.k0,tt=Math.pow(K,2);t=t*N,i=r-t*tt/(1-this.es)*.5*(1-tt/12*(5+3*rt-9*j*rt+j-4*Y-tt/30*(61+90*rt-252*j*rt+45*$+46*j-tt/56*(1385+3633*rt+4095*$+1574*$*rt)))),s=Ie(this.long0+K*(1-tt/6*(1+2*rt+j-tt/20*(5+28*rt+24*$+8*j*rt+6*j-tt/42*(61+662*rt+1320*$+720*$*rt))))/R)}else i=de*hd(o),s=0;else{var c=Math.exp(n/this.k0),f=.5*(c-1/c),_=this.lat0+o/this.k0,w=Math.cos(_);t=Math.sqrt((1-Math.pow(w,2))/(1+Math.pow(f,2))),i=Math.asin(t),o<0&&(i=-i),f===0&&w===0?s=0:s=Ie(Math.atan2(f,w)+this.long0)}return e.x=s,e.y=i,e}var kAt=[\"Fast_Transverse_Mercator\",\"Fast Transverse Mercator\"],ex={init:IAt,forward:CAt,inverse:LAt,names:kAt};function Q3(e){var t=Math.exp(e);return t=(t-1/t)/2,t}function Sa(e,t){e=Math.abs(e),t=Math.abs(t);var r=Math.max(e,t),i=Math.min(e,t)/(r||1);return r*Math.sqrt(1+Math.pow(i,2))}function RZ(e){var t=1+e,r=t-1;return r===0?e:e*Math.log(t)/r}function DZ(e){var t=Math.abs(e);return t=RZ(t*(1+t/(Sa(1,t)+1))),e<0?-t:t}function $3(e,t){for(var r=2*Math.cos(2*t),i=e.length-1,s=e[i],n=0,o;--i>=0;)o=-n+r*s+e[i],n=s,s=o;return t+o*Math.sin(2*t)}function OZ(e,t){for(var r=2*Math.cos(t),i=e.length-1,s=e[i],n=0,o;--i>=0;)o=-n+r*s+e[i],n=s,s=o;return Math.sin(t)*o}function BZ(e){var t=Math.exp(e);return t=(t+1/t)/2,t}function gB(e,t,r){for(var i=Math.sin(t),s=Math.cos(t),n=Q3(r),o=BZ(r),c=2*s*o,f=-2*i*n,_=e.length-1,w=e[_],C=0,R=0,N=0,j,Y;--_>=0;)j=R,Y=C,R=w,C=N,w=-j+c*R-f*C+e[_],N=-Y+f*R+c*C;return c=i*o,f=s*n,[c*w-f*N,c*N+f*w]}function RAt(){if(!this.approx&&(isNaN(this.es)||this.es<=0))throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');this.approx&&(ex.init.apply(this),this.forward=ex.forward,this.inverse=ex.inverse),this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var e=this.es/(1+Math.sqrt(1-this.es)),t=e/(2-e),r=t;this.cgb[0]=t*(2+t*(-2/3+t*(-2+t*(116/45+t*(26/45+t*(-2854/675)))))),this.cbg[0]=t*(-2+t*(2/3+t*(4/3+t*(-82/45+t*(32/45+t*(4642/4725)))))),r=r*t,this.cgb[1]=r*(7/3+t*(-8/5+t*(-227/45+t*(2704/315+t*(2323/945))))),this.cbg[1]=r*(5/3+t*(-16/15+t*(-13/9+t*(904/315+t*(-1522/945))))),r=r*t,this.cgb[2]=r*(56/15+t*(-136/35+t*(-1262/105+t*(73814/2835)))),this.cbg[2]=r*(-26/15+t*(34/21+t*(8/5+t*(-12686/2835)))),r=r*t,this.cgb[3]=r*(4279/630+t*(-332/35+t*(-399572/14175))),this.cbg[3]=r*(1237/630+t*(-12/5+t*(-24832/14175))),r=r*t,this.cgb[4]=r*(4174/315+t*(-144838/6237)),this.cbg[4]=r*(-734/315+t*(109598/31185)),r=r*t,this.cgb[5]=r*(601676/22275),this.cbg[5]=r*(444337/155925),r=Math.pow(t,2),this.Qn=this.k0/(1+t)*(1+r*(1/4+r*(1/64+r/256))),this.utg[0]=t*(-.5+t*(2/3+t*(-37/96+t*(1/360+t*(81/512+t*(-96199/604800)))))),this.gtu[0]=t*(.5+t*(-2/3+t*(5/16+t*(41/180+t*(-127/288+t*(7891/37800)))))),this.utg[1]=r*(-1/48+t*(-1/15+t*(437/1440+t*(-46/105+t*(1118711/3870720))))),this.gtu[1]=r*(13/48+t*(-3/5+t*(557/1440+t*(281/630+t*(-1983433/1935360))))),r=r*t,this.utg[2]=r*(-17/480+t*(37/840+t*(209/4480+t*(-5569/90720)))),this.gtu[2]=r*(61/240+t*(-103/140+t*(15061/26880+t*(167603/181440)))),r=r*t,this.utg[3]=r*(-4397/161280+t*(11/504+t*(830251/7257600))),this.gtu[3]=r*(49561/161280+t*(-179/168+t*(6601661/7257600))),r=r*t,this.utg[4]=r*(-4583/161280+t*(108847/3991680)),this.gtu[4]=r*(34729/80640+t*(-3418889/1995840)),r=r*t,this.utg[5]=r*(-20648693/638668800),this.gtu[5]=r*(212378941/319334400);var i=$3(this.cbg,this.lat0);this.Zb=-this.Qn*(i+OZ(this.gtu,2*i))}function DAt(e){var t=Ie(e.x-this.long0),r=e.y;r=$3(this.cbg,r);var i=Math.sin(r),s=Math.cos(r),n=Math.sin(t),o=Math.cos(t);r=Math.atan2(i,o*s),t=Math.atan2(n*s,Sa(i,s*o)),t=DZ(Math.tan(t));var c=gB(this.gtu,2*r,2*t);r=r+c[0],t=t+c[1];var f,_;return Math.abs(t)<=2.623395162778?(f=this.a*(this.Qn*t)+this.x0,_=this.a*(this.Qn*r+this.Zb)+this.y0):(f=1/0,_=1/0),e.x=f,e.y=_,e}function OAt(e){var t=(e.x-this.x0)*(1/this.a),r=(e.y-this.y0)*(1/this.a);r=(r-this.Zb)/this.Qn,t=t/this.Qn;var i,s;if(Math.abs(t)<=2.623395162778){var n=gB(this.utg,2*r,2*t);r=r+n[0],t=t+n[1],t=Math.atan(Q3(t));var o=Math.sin(r),c=Math.cos(r),f=Math.sin(t),_=Math.cos(t);r=Math.atan2(o*_,Sa(f,_*c)),t=Math.atan2(f,_*c),i=Ie(t+this.long0),s=$3(this.cgb,r)}else i=1/0,s=1/0;return e.x=i,e.y=s,e}var BAt=[\"Extended_Transverse_Mercator\",\"Extended Transverse Mercator\",\"etmerc\",\"Transverse_Mercator\",\"Transverse Mercator\",\"Gauss Kruger\",\"Gauss_Kruger\",\"tmerc\"],rx={init:RAt,forward:DAt,inverse:OAt,names:BAt};function FZ(e,t){if(e===void 0){if(e=Math.floor((Ie(t)+Math.PI)*30/Math.PI)+1,e<0)return 0;if(e>60)return 60}return e}var FAt=\"etmerc\";function zAt(){var e=FZ(this.zone,this.long0);if(e===void 0)throw new Error(\"unknown utm zone\");this.lat0=0,this.long0=(6*Math.abs(e)-183)*vs,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,rx.init.apply(this),this.forward=rx.forward,this.inverse=rx.inverse}var NAt=[\"Universal Transverse Mercator System\",\"utm\"],zZ={init:zAt,names:NAt,dependsOn:FAt};function X3(e,t){return Math.pow((1-e)/(1+e),t)}var UAt=20;function VAt(){var e=Math.sin(this.lat0),t=Math.cos(this.lat0);t*=t,this.rc=Math.sqrt(1-this.es)/(1-this.es*e*e),this.C=Math.sqrt(1+this.es*t*t/(1-this.es)),this.phic0=Math.asin(e/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+Fi)/(Math.pow(Math.tan(.5*this.lat0+Fi),this.C)*X3(this.e*e,this.ratexp))}function jAt(e){var t=e.x,r=e.y;return e.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*r+Fi),this.C)*X3(this.e*Math.sin(r),this.ratexp))-de,e.x=this.C*t,e}function GAt(e){for(var t=1e-14,r=e.x/this.C,i=e.y,s=Math.pow(Math.tan(.5*i+Fi)/this.K,1/this.C),n=UAt;n>0&&(i=2*Math.atan(s*X3(this.e*Math.sin(e.y),-.5*this.e))-de,!(Math.abs(i-e.y)0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=we&&Math.abs(Math.cos(this.lat_ts))>we&&(this.k0=.5*this.cons*il(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/kl(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=il(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-de,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))}function XAt(e){var t=e.x,r=e.y,i=Math.sin(r),s=Math.cos(r),n,o,c,f,_,w,C=Ie(t-this.long0);return Math.abs(Math.abs(t-this.long0)-Math.PI)<=we&&Math.abs(r+this.lat0)<=we?(e.x=NaN,e.y=NaN,e):this.sphere?(n=2*this.k0/(1+this.sinlat0*i+this.coslat0*s*Math.cos(C)),e.x=this.a*n*s*Math.sin(C)+this.x0,e.y=this.a*n*(this.coslat0*i-this.sinlat0*s*Math.cos(C))+this.y0,e):(o=2*Math.atan(this.ssfn_(r,i,this.e))-de,f=Math.cos(o),c=Math.sin(o),Math.abs(this.coslat0)<=we?(_=kl(this.e,r*this.con,this.con*i),w=2*this.a*this.k0*_/this.cons,e.x=this.x0+w*Math.sin(t-this.long0),e.y=this.y0-this.con*w*Math.cos(t-this.long0),e):(Math.abs(this.sinlat0)0?t=Ie(this.long0+Math.atan2(e.x,-1*e.y)):t=Ie(this.long0+Math.atan2(e.x,e.y)):t=Ie(this.long0+Math.atan2(e.x*Math.sin(c),o*this.coslat0*Math.cos(c)-e.y*this.sinlat0*Math.sin(c))),e.x=t,e.y=r,e)}else if(Math.abs(this.coslat0)<=we){if(o<=we)return r=this.lat0,t=this.long0,e.x=t,e.y=r,e;e.x*=this.con,e.y*=this.con,i=o*this.cons/(2*this.a*this.k0),r=this.con*Ep(this.e,i),t=this.con*Ie(this.con*this.long0+Math.atan2(e.x,-1*e.y))}else s=2*Math.atan(o*this.cosX0/(2*this.a*this.k0*this.ms1)),t=this.long0,o<=we?n=this.X0:(n=Math.asin(Math.cos(s)*this.sinX0+e.y*Math.sin(s)*this.cosX0/o),t=Ie(this.long0+Math.atan2(e.x*Math.sin(s),o*this.cosX0*Math.cos(s)-e.y*this.sinX0*Math.sin(s)))),r=-1*Ep(this.e,Math.tan(.5*(de+n)));return e.x=t,e.y=r,e}var JAt=[\"stere\",\"Stereographic_South_Pole\",\"Polar Stereographic (variant B)\",\"Polar_Stereographic\"],UZ={init:$At,forward:XAt,inverse:KAt,names:JAt,ssfn_:QAt};function tmt(){var e=this.lat0;this.lambda0=this.long0;var t=Math.sin(e),r=this.a,i=this.rf,s=1/i,n=2*s-Math.pow(s,2),o=this.e=Math.sqrt(n);this.R=this.k0*r*Math.sqrt(1-n)/(1-n*Math.pow(t,2)),this.alpha=Math.sqrt(1+n/(1-n)*Math.pow(Math.cos(e),4)),this.b0=Math.asin(t/this.alpha);var c=Math.log(Math.tan(Math.PI/4+this.b0/2)),f=Math.log(Math.tan(Math.PI/4+e/2)),_=Math.log((1+o*t)/(1-o*t));this.K=c-this.alpha*f+this.alpha*o/2*_}function emt(e){var t=Math.log(Math.tan(Math.PI/4-e.y/2)),r=this.e/2*Math.log((1+this.e*Math.sin(e.y))/(1-this.e*Math.sin(e.y))),i=-this.alpha*(t+r)+this.K,s=2*(Math.atan(Math.exp(i))-Math.PI/4),n=this.alpha*(e.x-this.lambda0),o=Math.atan(Math.sin(n)/(Math.sin(this.b0)*Math.tan(s)+Math.cos(this.b0)*Math.cos(n))),c=Math.asin(Math.cos(this.b0)*Math.sin(s)-Math.sin(this.b0)*Math.cos(s)*Math.cos(n));return e.y=this.R/2*Math.log((1+Math.sin(c))/(1-Math.sin(c)))+this.y0,e.x=this.R*o+this.x0,e}function rmt(e){for(var t=e.x-this.x0,r=e.y-this.y0,i=t/this.R,s=2*(Math.atan(Math.exp(r/this.R))-Math.PI/4),n=Math.asin(Math.cos(this.b0)*Math.sin(s)+Math.sin(this.b0)*Math.cos(s)*Math.cos(i)),o=Math.atan(Math.sin(i)/(Math.cos(this.b0)*Math.cos(i)-Math.sin(this.b0)*Math.tan(s))),c=this.lambda0+o/this.alpha,f=0,_=n,w=-1e3,C=0;Math.abs(_-w)>1e-7;){if(++C>20)return;f=1/this.alpha*(Math.log(Math.tan(Math.PI/4+n/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(_))/2)),w=_,_=2*Math.atan(Math.exp(f))-Math.PI/2}return e.x=c,e.y=_,e}var imt=[\"somerc\"],VZ={init:tmt,forward:emt,inverse:rmt,names:imt};var ix=1e-7;function nmt(e){var t=[\"Hotine_Oblique_Mercator\",\"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\"],r=typeof e.PROJECTION==\"object\"?Object.keys(e.PROJECTION)[0]:e.PROJECTION;return\"no_uoff\"in e||\"no_off\"in e||t.indexOf(r)!==-1}function smt(){var e,t,r,i,s,n,o,c,f,_,w=0,C,R=0,N=0,j=0,Y=0,rt=0,$=0,K;this.no_off=nmt(this),this.no_rot=\"no_rot\"in this;var tt=!1;\"alpha\"in this&&(tt=!0);var ut=!1;if(\"rectified_grid_angle\"in this&&(ut=!0),tt&&($=this.alpha),ut&&(w=this.rectified_grid_angle*vs),tt||ut)R=this.longc;else if(N=this.long1,Y=this.lat1,j=this.long2,rt=this.lat2,Math.abs(Y-rt)<=ix||(e=Math.abs(Y))<=ix||Math.abs(e-de)<=ix||Math.abs(Math.abs(this.lat0)-de)<=ix||Math.abs(Math.abs(rt)-de)<=ix)throw new Error;var Pt=1-this.es;t=Math.sqrt(Pt),Math.abs(this.lat0)>we?(c=Math.sin(this.lat0),r=Math.cos(this.lat0),e=1-this.es*c*c,this.B=r*r,this.B=Math.sqrt(1+this.es*this.B*this.B/Pt),this.A=this.B*this.k0*t/e,i=this.B*t/(r*Math.sqrt(e)),s=i*i-1,s<=0?s=0:(s=Math.sqrt(s),this.lat0<0&&(s=-s)),this.E=s+=i,this.E*=Math.pow(kl(this.e,this.lat0,c),this.B)):(this.B=1/t,this.A=this.k0,this.E=i=s=1),tt||ut?(tt?(C=Math.asin(Math.sin($)/i),ut||(w=$)):(C=w,$=Math.asin(i*Math.sin(C))),this.lam0=R-Math.asin(.5*(s-1/s)*Math.tan(C))/this.B):(n=Math.pow(kl(this.e,Y,Math.sin(Y)),this.B),o=Math.pow(kl(this.e,rt,Math.sin(rt)),this.B),s=this.E/n,f=(o-n)/(o+n),_=this.E*this.E,_=(_-o*n)/(_+o*n),e=N-j,e<-Math.pi?j-=bm:e>Math.pi&&(j+=bm),this.lam0=Ie(.5*(N+j)-Math.atan(_*Math.tan(.5*this.B*(N-j))/f)/this.B),C=Math.atan(2*Math.sin(this.B*Ie(N-this.lam0))/(s-1/s)),w=$=Math.asin(i*Math.sin(C))),this.singam=Math.sin(C),this.cosgam=Math.cos(C),this.sinrot=Math.sin(w),this.cosrot=Math.cos(w),this.rB=1/this.B,this.ArB=this.A*this.rB,this.BrA=1/this.ArB,K=this.A*this.B,this.no_off?this.u_0=0:(this.u_0=Math.abs(this.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos($))),this.lat0<0&&(this.u_0=-this.u_0)),s=.5*C,this.v_pole_n=this.ArB*Math.log(Math.tan(Fi-s)),this.v_pole_s=this.ArB*Math.log(Math.tan(Fi+s))}function omt(e){var t={},r,i,s,n,o,c,f,_;if(e.x=e.x-this.lam0,Math.abs(Math.abs(e.y)-de)>we){if(o=this.E/Math.pow(kl(this.e,e.y,Math.sin(e.y)),this.B),c=1/o,r=.5*(o-c),i=.5*(o+c),n=Math.sin(this.B*e.x),s=(r*this.singam-n*this.cosgam)/i,Math.abs(Math.abs(s)-1)0?this.v_pole_n:this.v_pole_s,f=this.ArB*e.y;return this.no_rot?(t.x=f,t.y=_):(f-=this.u_0,t.x=_*this.cosrot+f*this.sinrot,t.y=f*this.cosrot-_*this.sinrot),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t}function amt(e){var t,r,i,s,n,o,c,f={};if(e.x=(e.x-this.x0)*(1/this.a),e.y=(e.y-this.y0)*(1/this.a),this.no_rot?(r=e.y,t=e.x):(r=e.x*this.cosrot-e.y*this.sinrot,t=e.y*this.cosrot+e.x*this.sinrot+this.u_0),i=Math.exp(-this.BrA*r),s=.5*(i-1/i),n=.5*(i+1/i),o=Math.sin(this.BrA*t),c=(o*this.cosgam+s*this.singam)/n,Math.abs(Math.abs(c)-1)we?this.ns=Math.log(i/c)/Math.log(s/f):this.ns=t,isNaN(this.ns)&&(this.ns=t),this.f0=i/(this.ns*Math.pow(s,this.ns)),this.rh=this.a*this.f0*Math.pow(_,this.ns),this.title||(this.title=\"Lambert Conformal Conic\")}}function umt(e){var t=e.x,r=e.y;Math.abs(2*Math.abs(r)-Math.PI)<=we&&(r=hd(r)*(de-2*we));var i=Math.abs(Math.abs(r)-de),s,n;if(i>we)s=kl(this.e,r,Math.sin(r)),n=this.a*this.f0*Math.pow(s,this.ns);else{if(i=r*this.ns,i<=0)return null;n=0}var o=this.ns*Ie(t-this.long0);return e.x=this.k0*(n*Math.sin(o))+this.x0,e.y=this.k0*(this.rh-n*Math.cos(o))+this.y0,e}function hmt(e){var t,r,i,s,n,o=(e.x-this.x0)/this.k0,c=this.rh-(e.y-this.y0)/this.k0;this.ns>0?(t=Math.sqrt(o*o+c*c),r=1):(t=-Math.sqrt(o*o+c*c),r=-1);var f=0;if(t!==0&&(f=Math.atan2(r*o,r*c)),t!==0||this.ns>0){if(r=1/this.ns,i=Math.pow(t/(this.a*this.f0),r),s=Ep(this.e,i),s===-9999)return null}else s=-de;return n=Ie(f/this.ns+this.long0),e.x=n,e.y=s,e}var fmt=[\"Lambert Tangential Conformal Conic Projection\",\"Lambert_Conformal_Conic\",\"Lambert_Conformal_Conic_1SP\",\"Lambert_Conformal_Conic_2SP\",\"lcc\",\"Lambert Conic Conformal (1SP)\",\"Lambert Conic Conformal (2SP)\"],GZ={init:cmt,forward:umt,inverse:hmt,names:fmt};function dmt(){this.a=6377397155e-3,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.7417649320975901-.308341501185665),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq}function pmt(e){var t,r,i,s,n,o,c,f=e.x,_=e.y,w=Ie(f-this.long0);return t=Math.pow((1+this.e*Math.sin(_))/(1-this.e*Math.sin(_)),this.alfa*this.e/2),r=2*(Math.atan(this.k*Math.pow(Math.tan(_/2+this.s45),this.alfa)/t)-this.s45),i=-w*this.alfa,s=Math.asin(Math.cos(this.ad)*Math.sin(r)+Math.sin(this.ad)*Math.cos(r)*Math.cos(i)),n=Math.asin(Math.cos(r)*Math.sin(i)/Math.cos(s)),o=this.n*n,c=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(s/2+this.s45),this.n),e.y=c*Math.cos(o)/1,e.x=c*Math.sin(o)/1,this.czech||(e.y*=-1,e.x*=-1),e}function Amt(e){var t,r,i,s,n,o,c,f,_=e.x;e.x=e.y,e.y=_,this.czech||(e.y*=-1,e.x*=-1),o=Math.sqrt(e.x*e.x+e.y*e.y),n=Math.atan2(e.y,e.x),s=n/Math.sin(this.s0),i=2*(Math.atan(Math.pow(this.ro0/o,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),t=Math.asin(Math.cos(this.ad)*Math.sin(i)-Math.sin(this.ad)*Math.cos(i)*Math.cos(s)),r=Math.asin(Math.cos(i)*Math.sin(s)/Math.cos(t)),e.x=this.long0-r/this.alfa,c=t,f=0;var w=0;do e.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(t/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(c))/(1-this.e*Math.sin(c)),this.e/2))-this.s45),Math.abs(c-e.y)<1e-10&&(f=1),c=e.y,w+=1;while(f===0&&w<15);return w>=15?null:e}var mmt=[\"Krovak\",\"krovak\"],WZ={init:dmt,forward:pmt,inverse:Amt,names:mmt};function Lo(e,t,r,i,s){return e*s-t*Math.sin(2*s)+r*Math.sin(4*s)-i*Math.sin(6*s)}function Pp(e){return 1-.25*e*(1+e/16*(3+1.25*e))}function Ip(e){return .375*e*(1+.25*e*(1+.46875*e))}function Cp(e){return .05859375*e*e*(1+.75*e)}function Lp(e){return e*e*e*(35/3072)}function kp(e,t,r){var i=t*r;return e/Math.sqrt(1-i*i)}function ff(e){return Math.abs(e)1e-7?(r=e*t,(1-e*e)*(t/(1-r*r)-.5/e*Math.log((1-r)/(1+r)))):2*t}var xmt=1,bmt=2,wmt=3,Smt=4;function Tmt(){var e=Math.abs(this.lat0);if(Math.abs(e-de)0){var t;switch(this.qp=df(this.e,1),this.mmf=.5/(1-this.es),this.apa=Dmt(this.es),this.mode){case this.N_POLE:this.dd=1;break;case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=df(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd;break}}else this.mode===this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))}function Mmt(e){var t,r,i,s,n,o,c,f,_,w,C=e.x,R=e.y;if(C=Ie(C-this.long0),this.sphere){if(n=Math.sin(R),w=Math.cos(R),i=Math.cos(C),this.mode===this.OBLIQ||this.mode===this.EQUIT){if(r=this.mode===this.EQUIT?1+w*i:1+this.sinph0*n+this.cosph0*w*i,r<=we)return null;r=Math.sqrt(2/r),t=r*w*Math.sin(C),r*=this.mode===this.EQUIT?n:this.cosph0*n-this.sinph0*w*i}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(i=-i),Math.abs(R+this.lat0)=0?(t=(_=Math.sqrt(o))*s,r=i*(this.mode===this.S_POLE?_:-_)):t=r=0;break}}return e.x=this.a*t+this.x0,e.y=this.a*r+this.y0,e}function Emt(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,r=e.y/this.a,i,s,n,o,c,f,_;if(this.sphere){var w=0,C,R=0;if(C=Math.sqrt(t*t+r*r),s=C*.5,s>1)return null;switch(s=2*Math.asin(s),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(R=Math.sin(s),w=Math.cos(s)),this.mode){case this.EQUIT:s=Math.abs(C)<=we?0:Math.asin(r*R/C),t*=R,r=w*C;break;case this.OBLIQ:s=Math.abs(C)<=we?this.lat0:Math.asin(w*this.sinph0+r*R*this.cosph0/C),t*=R*this.cosph0,r=(w-Math.sin(s)*this.sinph0)*C;break;case this.N_POLE:r=-r,s=de-s;break;case this.S_POLE:s-=de;break}i=r===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(t,r)}else{if(_=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(t/=this.dd,r*=this.dd,f=Math.sqrt(t*t+r*r),f1&&(e=e>1?1:-1),Math.asin(e)}function Fmt(){Math.abs(this.lat1+this.lat2)we?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)}function zmt(e){var t=e.x,r=e.y;this.sin_phi=Math.sin(r),this.cos_phi=Math.cos(r);var i=df(this.e3,this.sin_phi),s=this.a*Math.sqrt(this.c-this.ns0*i)/this.ns0,n=this.ns0*Ie(t-this.long0),o=s*Math.sin(n)+this.x0,c=this.rh-s*Math.cos(n)+this.y0;return e.x=o,e.y=c,e}function Nmt(e){var t,r,i,s,n,o;return e.x-=this.x0,e.y=this.rh-e.y+this.y0,this.ns0>=0?(t=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(t=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),s=0,t!==0&&(s=Math.atan2(i*e.x,i*e.y)),i=t*this.ns0/this.a,this.sphere?o=Math.asin((this.c-i*i)/(2*this.ns0)):(r=(this.c-i*i)/this.ns0,o=this.phi1z(this.e3,r)),n=Ie(s/this.ns0+this.long0),e.x=n,e.y=o,e}function Umt(e,t){var r,i,s,n,o,c=bc(.5*t);if(e0||Math.abs(o)<=we?(c=this.x0+this.a*n*r*Math.sin(i)/o,f=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*s)/o):(c=this.x0+this.infinity_dist*r*Math.sin(i),f=this.y0+this.infinity_dist*(this.cos_p14*t-this.sin_p14*r*s)),e.x=c,e.y=f,e}function Wmt(e){var t,r,i,s,n,o;return e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,(t=Math.sqrt(e.x*e.x+e.y*e.y))?(s=Math.atan2(t,this.rc),r=Math.sin(s),i=Math.cos(s),o=bc(i*this.sin_p14+e.y*r*this.cos_p14/t),n=Math.atan2(e.x*r,t*this.cos_p14*i-e.y*this.sin_p14*r),n=Ie(this.long0+n)):(o=this.phic0,n=0),e.x=n,e.y=o,e}var Hmt=[\"gnom\"],YZ={init:jmt,forward:Gmt,inverse:Wmt,names:Hmt};function QZ(e,t){var r=1-(1-e*e)/(2*e)*Math.log((1-e)/(1+e));if(Math.abs(Math.abs(t)-r)<1e-6)return t<0?-1*de:de;for(var i=Math.asin(.5*t),s,n,o,c,f=0;f<30;f++)if(n=Math.sin(i),o=Math.cos(i),c=e*n,s=Math.pow(1-c*c,2)/(2*o)*(t/(1-e*e)-n/(1-c*c)+.5/e*Math.log((1-c)/(1+c))),i+=s,Math.abs(s)<=1e-10)return i;return NaN}function qmt(){this.sphere||(this.k0=il(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))}function Zmt(e){var t=e.x,r=e.y,i,s,n=Ie(t-this.long0);if(this.sphere)i=this.x0+this.a*n*Math.cos(this.lat_ts),s=this.y0+this.a*Math.sin(r)/Math.cos(this.lat_ts);else{var o=df(this.e,Math.sin(r));i=this.x0+this.a*this.k0*n,s=this.y0+this.a*o*.5/this.k0}return e.x=i,e.y=s,e}function Ymt(e){e.x-=this.x0,e.y-=this.y0;var t,r;return this.sphere?(t=Ie(this.long0+e.x/this.a/Math.cos(this.lat_ts)),r=Math.asin(e.y/this.a*Math.cos(this.lat_ts))):(r=QZ(this.e,2*e.y*this.k0/this.a),t=Ie(this.long0+e.x/(this.a*this.k0))),e.x=t,e.y=r,e}var Qmt=[\"cea\"],$Z={init:qmt,forward:Zmt,inverse:Ymt,names:Qmt};function $mt(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||\"Equidistant Cylindrical (Plate Carre)\",this.rc=Math.cos(this.lat_ts)}function Xmt(e){var t=e.x,r=e.y,i=Ie(t-this.long0),s=ff(r-this.lat0);return e.x=this.x0+this.a*i*this.rc,e.y=this.y0+this.a*s,e}function Kmt(e){var t=e.x,r=e.y;return e.x=Ie(this.long0+(t-this.x0)/(this.a*this.rc)),e.y=ff(this.lat0+(r-this.y0)/this.a),e}var Jmt=[\"Equirectangular\",\"Equidistant_Cylindrical\",\"eqc\"],XZ={init:$mt,forward:Xmt,inverse:Kmt,names:Jmt};var KZ=20;function t0t(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Pp(this.es),this.e1=Ip(this.es),this.e2=Cp(this.es),this.e3=Lp(this.es),this.ml0=this.a*Lo(this.e0,this.e1,this.e2,this.e3,this.lat0)}function e0t(e){var t=e.x,r=e.y,i,s,n,o=Ie(t-this.long0);if(n=o*Math.sin(r),this.sphere)Math.abs(r)<=we?(i=this.a*o,s=-1*this.a*this.lat0):(i=this.a*Math.sin(n)/Math.tan(r),s=this.a*(ff(r-this.lat0)+(1-Math.cos(n))/Math.tan(r)));else if(Math.abs(r)<=we)i=this.a*o,s=-1*this.ml0;else{var c=kp(this.a,this.e,Math.sin(r))/Math.tan(r);i=c*Math.sin(n),s=this.a*Lo(this.e0,this.e1,this.e2,this.e3,r)-this.ml0+c*(1-Math.cos(n))}return e.x=i+this.x0,e.y=s+this.y0,e}function r0t(e){var t,r,i,s,n,o,c,f,_;if(i=e.x-this.x0,s=e.y-this.y0,this.sphere)if(Math.abs(s+this.a*this.lat0)<=we)t=Ie(i/this.a+this.long0),r=0;else{o=this.lat0+s/this.a,c=i*i/this.a/this.a+o*o,f=o;var w;for(n=KZ;n;--n)if(w=Math.tan(f),_=-1*(o*(f*w+1)-f-.5*(f*f+c)*w)/((f-o)/w-1),f+=_,Math.abs(_)<=we){r=f;break}t=Ie(this.long0+Math.asin(i*Math.tan(f)/this.a)/Math.sin(r))}else if(Math.abs(s+this.ml0)<=we)r=0,t=Ie(this.long0+i/this.a);else{o=(this.ml0+s)/this.a,c=i*i/this.a/this.a+o*o,f=o;var C,R,N,j,Y;for(n=KZ;n;--n)if(Y=this.e*Math.sin(f),C=Math.sqrt(1-Y*Y)*Math.tan(f),R=this.a*Lo(this.e0,this.e1,this.e2,this.e3,f),N=this.e0-2*this.e1*Math.cos(2*f)+4*this.e2*Math.cos(4*f)-6*this.e3*Math.cos(6*f),j=R/this.a,_=(o*(C*j+1)-j-.5*C*(j*j+c))/(this.es*Math.sin(2*f)*(j*j+c-2*o*j)/(4*C)+(o-j)*(C*N-2/Math.sin(2*f))-N),f-=_,Math.abs(_)<=we){r=f;break}C=Math.sqrt(1-this.es*Math.pow(Math.sin(r),2))*Math.tan(r),t=Ie(this.long0+Math.asin(i*C/this.a)/Math.sin(r))}return e.x=t,e.y=r,e}var i0t=[\"Polyconic\",\"poly\"],JZ={init:t0t,forward:e0t,inverse:r0t,names:i0t};function n0t(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013}function s0t(e){var t,r=e.x,i=e.y,s=i-this.lat0,n=r-this.long0,o=s/Ng*1e-5,c=n,f=1,_=0;for(t=1;t<=10;t++)f=f*o,_=_+this.A[t]*f;var w=_,C=c,R=1,N=0,j,Y,rt=0,$=0;for(t=1;t<=6;t++)j=R*w-N*C,Y=N*w+R*C,R=j,N=Y,rt=rt+this.B_re[t]*R-this.B_im[t]*N,$=$+this.B_im[t]*R+this.B_re[t]*N;return e.x=$*this.a+this.x0,e.y=rt*this.a+this.y0,e}function o0t(e){var t,r=e.x,i=e.y,s=r-this.x0,n=i-this.y0,o=n/this.a,c=s/this.a,f=1,_=0,w,C,R=0,N=0;for(t=1;t<=6;t++)w=f*o-_*c,C=_*o+f*c,f=w,_=C,R=R+this.C_re[t]*f-this.C_im[t]*_,N=N+this.C_im[t]*f+this.C_re[t]*_;for(var j=0;j.999999999999&&(r=.999999999999),t=Math.asin(r);var i=Ie(this.long0+e.x/(.900316316158*this.a*Math.cos(t)));i<-Math.PI&&(i=-Math.PI),i>Math.PI&&(i=Math.PI),r=(2*t+Math.sin(2*t))/Math.PI,Math.abs(r)>1&&(r=1);var s=Math.asin(r);return e.x=i,e.y=s,e}var v0t=[\"Mollweide\",\"moll\"],iY={init:g0t,forward:_0t,inverse:y0t,names:v0t};function x0t(){Math.abs(this.lat1+this.lat2)=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),t=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),t=-1);var n=0;if(r!==0&&(n=Math.atan2(t*e.x,t*e.y)),this.sphere)return s=Ie(this.long0+n/this.ns),i=ff(this.g-r/this.a),e.x=s,e.y=i,e;var o=this.g-r/this.a;return i=Gg(o,this.e0,this.e1,this.e2,this.e3),s=Ie(this.long0+n/this.ns),e.x=s,e.y=i,e}var S0t=[\"Equidistant_Conic\",\"eqdc\"],nY={init:x0t,forward:b0t,inverse:w0t,names:S0t};function T0t(){this.R=this.a}function M0t(e){var t=e.x,r=e.y,i=Ie(t-this.long0),s,n;Math.abs(r)<=we&&(s=this.x0+this.R*i,n=this.y0);var o=bc(2*Math.abs(r/Math.PI));(Math.abs(i)<=we||Math.abs(Math.abs(r)-de)<=we)&&(s=this.x0,r>=0?n=this.y0+Math.PI*this.R*Math.tan(.5*o):n=this.y0+Math.PI*this.R*-Math.tan(.5*o));var c=.5*Math.abs(Math.PI/i-i/Math.PI),f=c*c,_=Math.sin(o),w=Math.cos(o),C=w/(_+w-1),R=C*C,N=C*(2/_-1),j=N*N,Y=Math.PI*this.R*(c*(C-j)+Math.sqrt(f*(C-j)*(C-j)-(j+f)*(R-j)))/(j+f);i<0&&(Y=-Y),s=this.x0+Y;var rt=f+C;return Y=Math.PI*this.R*(N*rt-c*Math.sqrt((j+f)*(f+1)-rt*rt))/(j+f),r>=0?n=this.y0+Y:n=this.y0-Y,e.x=s,e.y=n,e}function E0t(e){var t,r,i,s,n,o,c,f,_,w,C,R,N;return e.x-=this.x0,e.y-=this.y0,C=Math.PI*this.R,i=e.x/C,s=e.y/C,n=i*i+s*s,o=-Math.abs(s)*(1+n),c=o-2*s*s+i*i,f=-2*o+1+2*s*s+n*n,N=s*s/f+(2*c*c*c/f/f/f-9*o*c/f/f)/27,_=(o-c*c/3/f)/f,w=2*Math.sqrt(-_/3),C=3*N/_/w,Math.abs(C)>1&&(C>=0?C=1:C=-1),R=Math.acos(C)/3,e.y>=0?r=(-w*Math.cos(R+Math.PI/3)-c/3/f)*Math.PI:r=-(-w*Math.cos(R+Math.PI/3)-c/3/f)*Math.PI,Math.abs(i)2*de*this.a?void 0:(r=t/this.a,i=Math.sin(r),s=Math.cos(r),n=this.long0,Math.abs(t)<=we?o=this.lat0:(o=bc(s*this.sin_p12+e.y*i*this.cos_p12/t),c=Math.abs(this.lat0)-de,Math.abs(c)<=we?this.lat0>=0?n=Ie(this.long0+Math.atan2(e.x,-e.y)):n=Ie(this.long0-Math.atan2(-e.x,e.y)):n=Ie(this.long0+Math.atan2(e.x*i,t*this.cos_p12*s-e.y*this.sin_p12*i))),e.x=n,e.y=o,e)):(f=Pp(this.es),_=Ip(this.es),w=Cp(this.es),C=Lp(this.es),Math.abs(this.sin_p12-1)<=we?(R=this.a*Lo(f,_,w,C,de),t=Math.sqrt(e.x*e.x+e.y*e.y),N=R-t,o=Gg(N/this.a,f,_,w,C),n=Ie(this.long0+Math.atan2(e.x,-1*e.y)),e.x=n,e.y=o,e):Math.abs(this.sin_p12+1)<=we?(R=this.a*Lo(f,_,w,C,de),t=Math.sqrt(e.x*e.x+e.y*e.y),N=t-R,o=Gg(N/this.a,f,_,w,C),n=Ie(this.long0+Math.atan2(e.x,e.y)),e.x=n,e.y=o,e):(t=Math.sqrt(e.x*e.x+e.y*e.y),rt=Math.atan2(e.x,e.y),j=kp(this.a,this.e,this.sin_p12),$=Math.cos(rt),K=this.e*this.cos_p12*$,tt=-K*K/(1-this.es),ut=3*this.es*(1-tt)*this.sin_p12*this.cos_p12*$/(1-this.es),Pt=t/j,Ot=Pt-tt*(1+tt)*Math.pow(Pt,3)/6-ut*(1+3*tt)*Math.pow(Pt,4)/24,Kt=1-tt*Ot*Ot/2-Pt*Ot*Ot*Ot/6,Y=Math.asin(this.sin_p12*Math.cos(Ot)+this.cos_p12*Math.sin(Ot)*$),n=Ie(this.long0+Math.asin(Math.sin(rt)*Math.sin(Ot)/Math.cos(Y))),Zt=Math.sin(Y),o=Math.atan2((Zt-this.es*Kt*this.sin_p12)*Math.tan(Y),Zt*(1-this.es)),e.x=n,e.y=o,e))}var k0t=[\"Azimuthal_Equidistant\",\"aeqd\"],oY={init:I0t,forward:C0t,inverse:L0t,names:k0t};function R0t(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)}function D0t(e){var t,r,i,s,n,o,c,f,_=e.x,w=e.y;return i=Ie(_-this.long0),t=Math.sin(w),r=Math.cos(w),s=Math.cos(i),o=this.sin_p14*t+this.cos_p14*r*s,n=1,(o>0||Math.abs(o)<=we)&&(c=this.a*n*r*Math.sin(i),f=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*s)),e.x=c,e.y=f,e}function O0t(e){var t,r,i,s,n,o,c;return e.x-=this.x0,e.y-=this.y0,t=Math.sqrt(e.x*e.x+e.y*e.y),r=bc(t/this.a),i=Math.sin(r),s=Math.cos(r),o=this.long0,Math.abs(t)<=we?(c=this.lat0,e.x=o,e.y=c,e):(c=bc(s*this.sin_p14+e.y*i*this.cos_p14/t),n=Math.abs(this.lat0)-de,Math.abs(n)<=we?(this.lat0>=0?o=Ie(this.long0+Math.atan2(e.x,-e.y)):o=Ie(this.long0-Math.atan2(-e.x,e.y)),e.x=o,e.y=c,e):(o=Ie(this.long0+Math.atan2(e.x*i,t*this.cos_p14*s-e.y*this.sin_p14*i)),e.x=o,e.y=c,e))}var B0t=[\"ortho\"],aY={init:R0t,forward:D0t,inverse:O0t,names:B0t};var bs={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},hn={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function F0t(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||\"Quadrilateralized Spherical Cube\",this.lat0>=de-Fi/2?this.face=bs.TOP:this.lat0<=-(de-Fi/2)?this.face=bs.BOTTOM:Math.abs(this.long0)<=Fi?this.face=bs.FRONT:Math.abs(this.long0)<=de+Fi?this.face=this.long0>0?bs.RIGHT:bs.LEFT:this.face=bs.BACK,this.es!==0&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)}function z0t(e){var t={x:0,y:0},r,i,s,n,o,c,f={value:0};if(e.x-=this.long0,this.es!==0?r=Math.atan(this.one_minus_f_squared*Math.tan(e.y)):r=e.y,i=e.x,this.face===bs.TOP)n=de-r,i>=Fi&&i<=de+Fi?(f.value=hn.AREA_0,s=i-de):i>de+Fi||i<=-(de+Fi)?(f.value=hn.AREA_1,s=i>0?i-xs:i+xs):i>-(de+Fi)&&i<=-Fi?(f.value=hn.AREA_2,s=i+de):(f.value=hn.AREA_3,s=i);else if(this.face===bs.BOTTOM)n=de+r,i>=Fi&&i<=de+Fi?(f.value=hn.AREA_0,s=-i+de):i=-Fi?(f.value=hn.AREA_1,s=-i):i<-Fi&&i>=-(de+Fi)?(f.value=hn.AREA_2,s=-i-de):(f.value=hn.AREA_3,s=i>0?-i+xs:-i-xs);else{var _,w,C,R,N,j,Y;this.face===bs.RIGHT?i=nx(i,+de):this.face===bs.BACK?i=nx(i,+xs):this.face===bs.LEFT&&(i=nx(i,-de)),R=Math.sin(r),N=Math.cos(r),j=Math.sin(i),Y=Math.cos(i),_=N*Y,w=N*j,C=R,this.face===bs.FRONT?(n=Math.acos(_),s=J3(n,C,w,f)):this.face===bs.RIGHT?(n=Math.acos(w),s=J3(n,C,-_,f)):this.face===bs.BACK?(n=Math.acos(-_),s=J3(n,C,-w,f)):this.face===bs.LEFT?(n=Math.acos(-w),s=J3(n,C,_,f)):(n=s=0,f.value=hn.AREA_0)}return c=Math.atan(12/xs*(s+Math.acos(Math.sin(s)*Math.cos(Fi))-de)),o=Math.sqrt((1-Math.cos(n))/(Math.cos(c)*Math.cos(c))/(1-Math.cos(Math.atan(1/Math.cos(s))))),f.value===hn.AREA_1?c+=de:f.value===hn.AREA_2?c+=xs:f.value===hn.AREA_3&&(c+=1.5*xs),t.x=o*Math.cos(c),t.y=o*Math.sin(c),t.x=t.x*this.a+this.x0,t.y=t.y*this.a+this.y0,e.x=t.x,e.y=t.y,e}function N0t(e){var t={lam:0,phi:0},r,i,s,n,o,c,f,_,w,C={value:0};if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,i=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),r=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?C.value=hn.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(C.value=hn.AREA_1,r-=de):e.x<0&&-e.x>=Math.abs(e.y)?(C.value=hn.AREA_2,r=r<0?r+xs:r-xs):(C.value=hn.AREA_3,r+=de),w=xs/12*Math.tan(r),o=Math.sin(w)/(Math.cos(w)-1/Math.sqrt(2)),c=Math.atan(o),s=Math.cos(r),n=Math.tan(i),f=1-s*s*n*n*(1-Math.cos(Math.atan(1/Math.cos(c)))),f<-1?f=-1:f>1&&(f=1),this.face===bs.TOP)_=Math.acos(f),t.phi=de-_,C.value===hn.AREA_0?t.lam=c+de:C.value===hn.AREA_1?t.lam=c<0?c+xs:c-xs:C.value===hn.AREA_2?t.lam=c-de:t.lam=c;else if(this.face===bs.BOTTOM)_=Math.acos(f),t.phi=_-de,C.value===hn.AREA_0?t.lam=-c+de:C.value===hn.AREA_1?t.lam=-c:C.value===hn.AREA_2?t.lam=-c-de:t.lam=c<0?-c-xs:-c+xs;else{var R,N,j;R=f,w=R*R,w>=1?j=0:j=Math.sqrt(1-w)*Math.sin(c),w+=j*j,w>=1?N=0:N=Math.sqrt(1-w),C.value===hn.AREA_1?(w=N,N=-j,j=w):C.value===hn.AREA_2?(N=-N,j=-j):C.value===hn.AREA_3&&(w=N,N=j,j=-w),this.face===bs.RIGHT?(w=R,R=-N,N=w):this.face===bs.BACK?(R=-R,N=-N):this.face===bs.LEFT&&(w=R,R=N,N=-w),t.phi=Math.acos(-j)-de,t.lam=Math.atan2(N,R),this.face===bs.RIGHT?t.lam=nx(t.lam,-de):this.face===bs.BACK?t.lam=nx(t.lam,-xs):this.face===bs.LEFT&&(t.lam=nx(t.lam,+de))}if(this.es!==0){var Y,rt,$;Y=t.phi<0?1:0,rt=Math.tan(t.phi),$=this.b/Math.sqrt(rt*rt+this.one_minus_f_squared),t.phi=Math.atan(Math.sqrt(this.a*this.a-$*$)/(this.one_minus_f*$)),Y&&(t.phi=-t.phi)}return t.lam+=this.long0,e.x=t.lam,e.y=t.phi,e}function J3(e,t,r,i){var s;return eFi&&s<=de+Fi?(i.value=hn.AREA_1,s-=de):s>de+Fi||s<=-(de+Fi)?(i.value=hn.AREA_2,s=s>=0?s-xs:s+xs):(i.value=hn.AREA_3,s+=de)),s}function nx(e,t){var r=e+t;return r<-xs?r+=bm:r>+xs&&(r-=bm),r}var U0t=[\"Quadrilateralized Spherical Cube\",\"Quadrilateralized_Spherical_Cube\",\"qsc\"],lY={init:F0t,forward:z0t,inverse:N0t,names:U0t};var _B=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],nS=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],cY=.8487,uY=1.3523,hY=yc/5,V0t=1/hY,sx=18,tI=function(e,t){return e[0]+t*(e[1]+t*(e[2]+t*e[3]))},j0t=function(e,t){return e[1]+t*(2*e[2]+t*3*e[3])};function G0t(e,t,r,i){for(var s=t;i;--i){var n=e(s);if(s-=n,Math.abs(n)=sx&&(i=sx-1),r=yc*(r-V0t*i);var s={x:tI(_B[i],r)*t,y:tI(nS[i],r)};return e.y<0&&(s.y=-s.y),s.x=s.x*this.a*cY+this.x0,s.y=s.y*this.a*uY+this.y0,s}function q0t(e){var t={x:(e.x-this.x0)/(this.a*cY),y:Math.abs(e.y-this.y0)/(this.a*uY)};if(t.y>=1)t.x/=_B[sx][0],t.y=e.y<0?-de:de;else{var r=Math.floor(t.y*sx);for(r<0?r=0:r>=sx&&(r=sx-1);;)if(nS[r][0]>t.y)--r;else if(nS[r+1][0]<=t.y)++r;else break;var i=nS[r],s=5*(t.y-i[0])/(nS[r+1][0]-i[0]);s=G0t(function(n){return(tI(i,n)-t.y)/j0t(i,n)},s,we,100),t.x/=tI(_B[r],s),t.y=(5*r+s)*vs,e.y<0&&(t.y=-t.y)}return t.x=Ie(t.x+this.long0),t}var Z0t=[\"Robinson\",\"robin\"],fY={init:W0t,forward:H0t,inverse:q0t,names:Z0t};function Y0t(){this.name=\"geocent\"}function Q0t(e){var t=G3(e,this.es,this.a);return t}function $0t(e){var t=W3(e,this.es,this.a,this.b);return t}var X0t=[\"Geocentric\",\"geocentric\",\"geocent\",\"Geocent\"],dY={init:Y0t,forward:Q0t,inverse:$0t,names:X0t};var nl={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3},sS={h:{def:1e5,num:!0},azi:{def:0,num:!0,degrees:!0},tilt:{def:0,num:!0,degrees:!0},long0:{def:0,num:!0},lat0:{def:0,num:!0}};function K0t(){if(Object.keys(sS).forEach(function(r){if(typeof this[r]>\"u\")this[r]=sS[r].def;else{if(sS[r].num&&isNaN(this[r]))throw new Error(\"Invalid parameter value, must be numeric \"+r+\" = \"+this[r]);sS[r].num&&(this[r]=parseFloat(this[r]))}sS[r].degrees&&(this[r]=this[r]*vs)}.bind(this)),Math.abs(Math.abs(this.lat0)-de)1e10)throw new Error(\"Invalid height\");this.p=1+this.pn1,this.rp=1/this.p,this.h1=1/this.pn1,this.pfact=(this.p+1)*this.h1,this.es=0;var e=this.tilt,t=this.azi;this.cg=Math.cos(t),this.sg=Math.sin(t),this.cw=Math.cos(e),this.sw=Math.sin(e)}function J0t(e){e.x-=this.long0;var t=Math.sin(e.y),r=Math.cos(e.y),i=Math.cos(e.x),s,n;switch(this.mode){case nl.OBLIQ:n=this.sinph0*t+this.cosph0*r*i;break;case nl.EQUIT:n=r*i;break;case nl.S_POLE:n=-t;break;case nl.N_POLE:n=t;break}switch(n=this.pn1/(this.p-n),s=n*r*Math.sin(e.x),this.mode){case nl.OBLIQ:n*=this.cosph0*t-this.sinph0*r*i;break;case nl.EQUIT:n*=t;break;case nl.N_POLE:n*=-(r*i);break;case nl.S_POLE:n*=r*i;break}var o,c;return o=n*this.cg+s*this.sg,c=1/(o*this.sw*this.h1+this.cw),s=(s*this.cg-n*this.sg)*this.cw*c,n=o*c,e.x=s*this.a,e.y=n*this.a,e}function tgt(e){e.x/=this.a,e.y/=this.a;var t={x:e.x,y:e.y},r,i,s;s=1/(this.pn1-e.y*this.sw),r=this.pn1*e.x*s,i=this.pn1*e.y*this.cw*s,e.x=r*this.cg+i*this.sg,e.y=i*this.cg-r*this.sg;var n=Sa(e.x,e.y);if(Math.abs(n)1e10)throw new Error;if(this.radius_g=1+this.radius_g_1,this.C=this.radius_g*this.radius_g-1,this.es!==0){var e=1-this.es,t=1/e;this.radius_p=Math.sqrt(e),this.radius_p2=e,this.radius_p_inv2=t,this.shape=\"ellipse\"}else this.radius_p=1,this.radius_p2=1,this.radius_p_inv2=1,this.shape=\"sphere\";this.title||(this.title=\"Geostationary Satellite View\")}function igt(e){var t=e.x,r=e.y,i,s,n,o;if(t=t-this.long0,this.shape===\"ellipse\"){r=Math.atan(this.radius_p2*Math.tan(r));var c=this.radius_p/Sa(this.radius_p*Math.cos(r),Math.sin(r));if(s=c*Math.cos(t)*Math.cos(r),n=c*Math.sin(t)*Math.cos(r),o=c*Math.sin(r),(this.radius_g-s)*s-n*n-o*o*this.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=this.radius_g-s,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Sa(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Sa(n,i)))}else this.shape===\"sphere\"&&(i=Math.cos(r),s=Math.cos(t)*i,n=Math.sin(t)*i,o=Math.sin(r),i=this.radius_g-s,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Sa(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Sa(n,i))));return e.x=e.x*this.a,e.y=e.y*this.a,e}function ngt(e){var t=-1,r=0,i=0,s,n,o,c;if(e.x=e.x/this.a,e.y=e.y/this.a,this.shape===\"ellipse\"){this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Sa(1,i)):(r=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Sa(1,r));var f=i/this.radius_p;if(s=r*r+f*f+t*t,n=2*this.radius_g*t,o=n*n-4*s*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-n-Math.sqrt(o))/(2*s),t=this.radius_g+c*t,r*=c,i*=c,e.x=Math.atan2(r,t),e.y=Math.atan(i*Math.cos(e.x)/t),e.y=Math.atan(this.radius_p_inv2*Math.tan(e.y))}else if(this.shape===\"sphere\"){if(this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Math.sqrt(1+i*i)):(r=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Math.sqrt(1+r*r)),s=r*r+i*i+t*t,n=2*this.radius_g*t,o=n*n-4*s*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-n-Math.sqrt(o))/(2*s),t=this.radius_g+c*t,r*=c,i*=c,e.x=Math.atan2(r,t),e.y=Math.atan(i*Math.cos(e.x)/t)}return e.x=e.x+this.long0,e}var sgt=[\"Geostationary Satellite View\",\"Geostationary_Satellite\",\"geos\"],AY={init:rgt,forward:igt,inverse:ngt,names:sgt};function mY(e){e.Proj.projections.add(ex),e.Proj.projections.add(rx),e.Proj.projections.add(zZ),e.Proj.projections.add(NZ),e.Proj.projections.add(UZ),e.Proj.projections.add(VZ),e.Proj.projections.add(jZ),e.Proj.projections.add(GZ),e.Proj.projections.add(WZ),e.Proj.projections.add(HZ),e.Proj.projections.add(qZ),e.Proj.projections.add(ZZ),e.Proj.projections.add(YZ),e.Proj.projections.add($Z),e.Proj.projections.add(XZ),e.Proj.projections.add(JZ),e.Proj.projections.add(tY),e.Proj.projections.add(eY),e.Proj.projections.add(rY),e.Proj.projections.add(iY),e.Proj.projections.add(nY),e.Proj.projections.add(sY),e.Proj.projections.add(oY),e.Proj.projections.add(aY),e.Proj.projections.add(lY),e.Proj.projections.add(fY),e.Proj.projections.add(dY),e.Proj.projections.add(pY),e.Proj.projections.add(AY)}vc.defaultDatum=\"WGS84\";vc.Proj=wm;vc.WGS84=new vc.Proj(\"WGS84\");vc.Point=IZ;vc.toPoint=q3;vc.defs=$v;vc.nadgrid=uB;vc.transform=Vg;vc.mgrs=MZ;vc.version=\"__VERSION__\";mY(vc);var gY=vc;function lS(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function cS(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function ox(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function ogt(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function agt(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function sI(e){return\"data\"in e?e.getChildAt(0):e.children[0]}var Oi=Object.freeze({__proto__:null,getLineStringChild:cS,getMultiLineStringChild:agt,getMultiPointChild:ogt,getMultiPolygonChild:sI,getPointChild:lS,getPolygonChild:ox});function oI(e,t){let r=e.valueOffsets,i=ox(e),s=i.valueOffsets,n=cS(i),o=n.type.listSize,c=lS(n),f=r[t],_=r[t+1],w=s[f],C=s[_],R=c.values.subarray(w*o,C*o);return new Yv(R,{size:o,isClosed:!0})}function yY(e){if(\"data\"in e)return new wr(e.data.map(r=>yY(r)));let t=new Float64Array(e.length);for(let r=0;rvY(r)));let t=new Float64Array(e.length);for(let r=0;rxY(n));let t=[],r=0;for(let n=0;nbY(t))):ox(e)}function wY(e){return\"data\"in e?new wr(e.data.map(t=>wY(t))):sI(e)}function aI(e){return Ne.isFixedSizeList(e)?!(![2,3,4].includes(e.listSize)||!Ne.isFloat(e.children[0])):Ne.isStruct(e)?!(![2,3,4].includes(e.children.length)||!e.children.every(t=>[\"x\",\"y\",\"z\",\"m\"].includes(t.name))||!e.children.every(t=>Ne.isFloat(t))):!1}function lI(e){return!(!Ne.isList(e)||!aI(e.children[0].type))}function bB(e){return!(!Ne.isList(e)||!lI(e.children[0].type))}function SY(e){return!(!Ne.isList(e)||!aI(e.children[0].type))}function TY(e){return!(!Ne.isList(e)||!lI(e.children[0].type))}function MY(e){return!(!Ne.isList(e)||!bB(e.children[0].type))}function cgt(e){return aI(e.type)}function ugt(e){return lI(e.type)}function hgt(e){return bB(e.type)}function fgt(e){return SY(e.type)}function dgt(e){return TY(e.type)}function pgt(e){return MY(e.type)}function Agt(e,t){if(!e)throw new Error(`assertion failed ${t}`)}function mgt(){throw new Error(\"assertion failed\")}function EY(e,t){if(cgt(e))return PY(e,t);if(ugt(e))return yB(e,t);if(hgt(e))return vB(e,t);if(fgt(e))return yB(e,t);if(dgt(e))return vB(e,t);if(pgt(e))return ggt(e,t);mgt()}function PY(e,t){Agt(e.type.listSize===2,\"expected 2D\");let r=lS(e),i=r.values,s=new Float64Array(i.length);for(let o=0;o_Y(s,i))):_Y(e,i)}function _Y(e,t){let r=[0,0];return EY(e,(s,n)=>(r[0]=s,r[1]=n,t.forward(r)))}var Sm;(function(e){e.POINT=\"geoarrow.point\",e.LINESTRING=\"geoarrow.linestring\",e.POLYGON=\"geoarrow.polygon\",e.MULTIPOINT=\"geoarrow.multipoint\",e.MULTILINESTRING=\"geoarrow.multilinestring\",e.MULTIPOLYGON=\"geoarrow.multipolygon\"})(Sm||(Sm={}));var nI=class{minX;minY;maxX;maxY;constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}updateBbox(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.maxY>this.maxY&&(this.maxY=t.maxY)}updateCoord(t,r){tthis.maxX&&(this.maxX=t),r>this.maxY&&(this.maxY=r)}};function ygt(e,t){switch(t.metadata.get(\"ARROW:extension:name\")){case Sm.POINT:return IY(e);case Sm.LINESTRING:case Sm.MULTIPOINT:return CY(e);case Sm.POLYGON:case Sm.MULTILINESTRING:return LY(e);case Sm.MULTIPOLYGON:return xgt(e);default:throw new Error(\"Unknown ext type name\")}}function vgt(e){let r=lS(e).values,i=new nI;for(let s=0;skY(r)));let t=new fm({type:new oc,nullValues:[null]});t.set(e.length-1,null);for(let r=0;rRY(r,t));return}for(let r=0;raS(n,t)));let r=[];for(let n of e.children)r.push(aS(n,t));let i;e.dictionary!==void 0&&(i=aS(e.dictionary,t));let s={[Ci.OFFSET]:eI(e.buffers[Ci.OFFSET],t),[Ci.DATA]:eI(e.buffers[Ci.DATA],t),[Ci.VALIDITY]:eI(e.buffers[Ci.VALIDITY],t),[Ci.TYPE]:eI(e.buffers[Ci.TYPE],t)};return new Di(e.type,e.offset,e.length,e._nullCount,s,r,i)}function rI(e){if(\"data\"in e)return e.data.some(r=>rI(r));for(let r of e.children)if(rI(r))return!0;if(e.dictionary!==void 0&&rI(e.dictionary))return!0;let t=[Ci.OFFSET,Ci.DATA,Ci.VALIDITY,Ci.TYPE];for(let r of t)if(e.buffers[r]!==void 0&&DY(e.buffers[r]))return!0;return!1}function DY(e){return!(e.byteOffset===0&&e.byteLength===e.buffer.byteLength)}function eI(e,t){return e===void 0||!t&&!DY(e)?e:e.slice()}function iI(e,t=!1){if(\"data\"in e){let i=[],s=[];for(let o of e.data){let[c,f]=iI(o);i.push(c),s.push(...f)}return[new wr(i),s]}e=aS(e,t);let r=[];for(let i=0;i1)throw new Error(\"expected 1 field\");return new lc(t[0])}case Rt.Struct:{let t=e.children.map(oS);return new un(t)}case Rt.Union:{let t=e.children.map(oS);return new cc(e.mode,e.typeIds,t)}case Rt.FixedSizeBinary:return new Zu(e.byteWidth);case Rt.FixedSizeList:{let t=e.children.map(oS);if(t.length>1)throw new Error(\"expected 1 field\");return new Il(e.listSize,t[0])}case Rt.Map:{let t=e.children.map(oS);if(t.length>1)throw new Error(\"expected 1 field\");let r=t[0];return new uc(r,e.keysSorted)}case Rt.Duration:return new qu(e.unit);default:throw new Error(`unknown type ${e}`)}}function oS(e){let t=OY(e.type);return new si(e.name,t,e.nullable,e.metadata)}function SB(e){let t=e.children.map(s=>SB(s)),r=e.dictionary?BY(e.dictionary):void 0,i={[Ci.OFFSET]:e.valueOffsets,[Ci.DATA]:e.values,[Ci.VALIDITY]:e.nullBitmap,[Ci.TYPE]:e.typeIds};return new Di(OY(e.type),e.offset,e.length,e._nullCount,i,t,r)}function BY(e){return new wr(e.data.map(t=>SB(t)))}var TB=Object.freeze({__proto__:null,hardClone:aS,isShared:rI,preparePostMessage:iI,rehydrateData:SB,rehydrateVector:BY});function Pgt(e,t,r){let i=e.fields.findIndex(s=>s.name===r||s.metadata.get(\"ARROW:extension:name\")===t);return i!==-1?i:null}function Igt(e,t){let{index:r,data:i}=e,s=r;i.invertedGeomOffsets!==void 0&&(s=i.invertedGeomOffsets[r]);let n={data:i.data,length:i.length,attributes:i.attributes},o={index:s,data:n,target:e.target};return t(o)}function ko(e){let{props:t,propName:r,propInput:i,chunkIdx:s,geomCoordOffsets:n}=e;if(i!==void 0)if(i instanceof wr){let o=i.data[s];if(Ne.isFixedSizeList(o)){br(o.children.length===1);let c=o.children[0].values;n&&(c=cI(c,o.type.listSize,n)),t.data.attributes[r]={value:c,size:o.type.listSize,normalized:!0}}else if(Ne.isFloat(o)){let c=o.values;n&&(c=cI(c,1,n)),t.data.attributes[r]={value:c,size:1}}}else typeof i==\"function\"?t[r]=(o,c)=>r===\"getPolygonOffset\"?i(o,c):Igt(c,i):t[r]=i}function cI(e,t,r){let i=r[r.length-1],s=new e.constructor(i*t);for(let n=0;n(t[i+1]=t[i]+r.length,t),new Uint32Array(e.length+1))}function Oo(e,t){let r=[],i=[];for(let[s,n]of Object.entries(e))s.startsWith(\"get\")&&n instanceof wr&&(r.push(n),s.endsWith(\"Color\")&&i.push(n));Cgt(t,r);for(let s of i)Lgt(s)}function Cgt(e,t){for(let r of t)br(e.batches.length===r.data.length);for(let r of t)for(let i=0;ithis.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let t=this.content?this.content.byteLength:0;return Number.isFinite(t)||console.error(\"byteLength not defined in tile data\"),t}async _loadData({getData:t,requestScheduler:r,onLoad:i,onError:s}){let{index:n,id:o,bbox:c,userData:f,zoom:_}=this,w=this._loaderId;this._abortController=new AbortController;let{signal:C}=this._abortController,R=await r.scheduleRequest(this,Y=>Y.isSelected?1:-1);if(!R){this._isCancelled=!0;return}if(this._isCancelled){R.done();return}let N=null,j;try{N=await t({index:n,id:o,bbox:c,userData:f,zoom:_,signal:C})}catch(Y){j=Y||!0}finally{R.done()}if(w===this._loaderId){if(this._loader=void 0,this.content=N,this._isCancelled&&!N){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,j?s(j,this):i(this)}}loadData(t){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(t),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){var t;this.isLoaded||(this._isCancelled=!0,(t=this._abortController)===null||t===void 0||t.abort())}};var Js={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var VY=new Fe,Bgt=new Fe,Wg=class e{constructor(t=[0,0,0],r=[0,0,0],i){G(this,\"center\",void 0),G(this,\"halfDiagonal\",void 0),G(this,\"minimum\",void 0),G(this,\"maximum\",void 0),i=i||VY.copy(t).add(r).scale(.5),this.center=new Fe(i),this.halfDiagonal=new Fe(r).subtract(this.center),this.minimum=new Fe(t),this.maximum=new Fe(r)}clone(){return new e(this.minimum,this.maximum,this.center)}equals(t){return this===t||!!t&&this.minimum.equals(t.minimum)&&this.maximum.equals(t.maximum)}transform(t){return this.center.transformAsPoint(t),this.halfDiagonal.transform(t),this.minimum.transform(t),this.maximum.transform(t),this}intersectPlane(t){let{halfDiagonal:r}=this,i=Bgt.from(t.normal),s=r.x*Math.abs(i.x)+r.y*Math.abs(i.y)+r.z*Math.abs(i.z),n=this.center.dot(i)+t.distance;return n-s>0?Js.INSIDE:n+s<0?Js.OUTSIDE:Js.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=VY.from(t).subtract(this.center),{halfDiagonal:i}=this,s=0,n;return n=Math.abs(r.x)-i.x,n>0&&(s+=n*n),n=Math.abs(r.y)-i.y,n>0&&(s+=n*n),n=Math.abs(r.z)-i.z,n>0&&(s+=n*n),s}};var fS=new Fe,jY=new Fe,Hg=class e{constructor(t=[0,0,0],r=0){G(this,\"center\",void 0),G(this,\"radius\",void 0),this.radius=-0,this.center=new Fe,this.fromCenterRadius(t,r)}fromCenterRadius(t,r){return this.center.from(t),this.radius=r,this}fromCornerPoints(t,r){return r=fS.from(r),this.center=new Fe().from(t).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new e(this.center,this.radius)}union(t){let r=this.center,i=this.radius,s=t.center,n=t.radius,o=fS.copy(s).subtract(r),c=o.magnitude();if(i>=c+n)return this.clone();if(n>=c+i)return t.clone();let f=(i+c+n)*.5;return jY.copy(o).scale((-i+f)/c).add(r),this.center.copy(jY),this.radius=f,this}expand(t){let i=fS.from(t).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(t){this.center.transform(t);let r=jj(fS,t);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(t){let r=this.distanceTo(t);return r*r}distanceTo(t){let i=fS.from(t).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(t){let r=this.center,i=this.radius,n=t.normal.dot(r)+t.distance;return n<-i?Js.OUTSIDE:n=f?Js.INSIDE:Js.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=zgt.from(t).subtract(this.center),i=this.halfAxes,s=i.getColumn(0,hI),n=i.getColumn(1,fI),o=i.getColumn(2,dI),c=s.magnitude(),f=n.magnitude(),_=o.magnitude();s.normalize(),n.normalize(),o.normalize();let w=0,C;return C=Math.abs(r.dot(s))-c,C>0&&(w+=C*C),C=Math.abs(r.dot(n))-f,C>0&&(w+=C*C),C=Math.abs(r.dot(o))-_,C>0&&(w+=C*C),w}computePlaneDistances(t,r,i=[-0,-0]){let s=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,o=this.center,c=this.halfAxes,f=c.getColumn(0,hI),_=c.getColumn(1,fI),w=c.getColumn(2,dI),C=Ngt.copy(f).add(_).add(w).add(o),R=Ugt.copy(C).subtract(t),N=r.dot(R);return s=Math.min(N,s),n=Math.max(N,n),C.copy(o).add(f).add(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),C.copy(o).add(f).subtract(_).add(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),C.copy(o).add(f).subtract(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).add(_).add(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).add(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).subtract(_).add(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(C).subtract(f).subtract(_).subtract(w),R.copy(C).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),i[0]=s,i[1]=n,i}transform(t){this.center.transformAsPoint(t);let r=this.halfAxes.getColumn(0,hI);r.transformAsPoint(t);let i=this.halfAxes.getColumn(1,fI);i.transformAsPoint(t);let s=this.halfAxes.getColumn(2,dI);return s.transformAsPoint(t),this.halfAxes=new rs([...r,...i,...s]),this}getTransform(){throw new Error(\"not implemented\")}};var GY=new Fe,WY=new Fe,pf=class e{constructor(t=[0,0,1],r=0){G(this,\"normal\",void 0),G(this,\"distance\",void 0),this.normal=new Fe,this.distance=-0,this.fromNormalDistance(t,r)}fromNormalDistance(t,r){return Oh(Number.isFinite(r)),this.normal.from(t).normalize(),this.distance=r,this}fromPointNormal(t,r){t=GY.from(t),this.normal.from(r).normalize();let i=-this.normal.dot(t);return this.distance=i,this}fromCoefficients(t,r,i,s){return this.normal.set(t,r,i),Oh(To(this.normal.len(),1)),this.distance=s,this}clone(){return new e(this.normal,this.distance)}equals(t){return To(this.distance,t.distance)&&To(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let r=WY.copy(this.normal).transformAsVector(t).normalize(),i=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(i,r)}projectPointOntoPlane(t,r=[0,0,0]){t=GY.from(t);let i=this.getPointDistance(t),s=WY.copy(this.normal).scale(i);return t.subtract(s).to(r)}};var HY=[new Fe([1,0,0]),new Fe([0,1,0]),new Fe([0,0,1])],qY=new Fe,Vgt=new Fe,$ie=new pf(new Fe(1,0,0),0),dd=class e{constructor(t=[]){G(this,\"planes\",void 0),this.planes=t}fromBoundingSphere(t){this.planes.length=2*HY.length;let r=t.center,i=t.radius,s=0;for(let n of HY){let o=this.planes[s],c=this.planes[s+1];o||(o=this.planes[s]=new pf),c||(c=this.planes[s+1]=new pf);let f=qY.copy(n).scale(-i).add(r),_=-n.dot(f);o.fromPointNormal(f,n);let w=qY.copy(n).scale(i).add(r),C=Vgt.copy(n).negate(),R=-C.dot(w);c.fromPointNormal(w,C),s+=2}return this}computeVisibility(t){let r=Js.INSIDE;for(let i of this.planes)switch(t.intersectPlane(i)){case Js.OUTSIDE:return Js.OUTSIDE;case Js.INTERSECTING:r=Js.INTERSECTING;break;default:}return r}computeVisibilityWithPlaneMask(t,r){if(Oh(Number.isFinite(r),\"parentPlaneMask is required.\"),r===e.MASK_OUTSIDE||r===e.MASK_INSIDE)return r;let i=e.MASK_INSIDE,s=this.planes;for(let n=0;nf;)Zgt(c,pI),ZY.copy(pI).transpose(),c.multiplyRight(pI),c.multiplyLeft(ZY),o.multiplyRight(pI),++s>2&&(++n,s=0);return t.unitary=o.toTarget(t.unitary),t.diagonal=c.toTarget(t.diagonal),t}function Hgt(e){let t=0;for(let r=0;r<9;++r){let i=e[r];t+=i*i}return Math.sqrt(t)}var EB=[1,0,0],PB=[2,2,1];function qgt(e){let t=0;for(let r=0;r<3;++r){let i=e[pd.getElementIndex(PB[r],EB[r])];t+=2*i*i}return Math.sqrt(t)}function Zgt(e,t){let r=RE.EPSILON15,i=0,s=1;for(let _=0;_<3;++_){let w=Math.abs(e[pd.getElementIndex(PB[_],EB[_])]);w>i&&(s=_,i=w)}let n=EB[s],o=PB[s],c=1,f=0;if(Math.abs(e[pd.getElementIndex(o,n)])>r){let _=e[pd.getElementIndex(o,o)],w=e[pd.getElementIndex(n,n)],C=e[pd.getElementIndex(o,n)],R=(_-w)/2/C,N;R<0?N=-1/(-R+Math.sqrt(1+R*R)):N=1/(R+Math.sqrt(1+R*R)),c=1/Math.sqrt(1+N*N),f=N*c}return rs.IDENTITY.to(t),t[pd.getElementIndex(n,n)]=t[pd.getElementIndex(o,o)]=c,t[pd.getElementIndex(o,n)]=f,t[pd.getElementIndex(n,o)]=-f,t}var Tm=new Fe,Ygt=new Fe,Qgt=new Fe,$gt=new Fe,Xgt=new Fe,Kgt=new rs,Jgt={diagonal:new rs,unitary:new rs};function IB(e,t=new lx){if(!e||e.length===0)return t.halfAxes=new rs([0,0,0,0,0,0,0,0,0]),t.center=new Fe,t;let r=e.length,i=new Fe(0,0,0);for(let le of e)i.add(le);let s=1/r;i.multiplyByScalar(s);let n=0,o=0,c=0,f=0,_=0,w=0;for(let le of e){let ue=Tm.copy(le).subtract(i);n+=ue.x*ue.x,o+=ue.x*ue.y,c+=ue.x*ue.z,f+=ue.y*ue.y,_+=ue.y*ue.z,w+=ue.z*ue.z}n*=s,o*=s,c*=s,f*=s,_*=s,w*=s;let C=Kgt;C[0]=n,C[1]=o,C[2]=c,C[3]=o,C[4]=f,C[5]=_,C[6]=c,C[7]=_,C[8]=w;let{unitary:R}=AI(C,Jgt),N=t.halfAxes.copy(R),j=N.getColumn(0,Qgt),Y=N.getColumn(1,$gt),rt=N.getColumn(2,Xgt),$=-Number.MAX_VALUE,K=-Number.MAX_VALUE,tt=-Number.MAX_VALUE,ut=Number.MAX_VALUE,Pt=Number.MAX_VALUE,Ot=Number.MAX_VALUE;for(let le of e)Tm.copy(le),$=Math.max(Tm.dot(j),$),K=Math.max(Tm.dot(Y),K),tt=Math.max(Tm.dot(rt),tt),ut=Math.min(Tm.dot(j),ut),Pt=Math.min(Tm.dot(Y),Pt),Ot=Math.min(Tm.dot(rt),Ot);j=j.multiplyByScalar(.5*(ut+$)),Y=Y.multiplyByScalar(.5*(Pt+K)),rt=rt.multiplyByScalar(.5*(Ot+tt)),t.center.copy(j).add(Y).add(rt);let Kt=Ygt.set($-ut,K-Pt,tt-Ot).multiplyByScalar(.5),Zt=new rs([Kt[0],0,0,0,Kt[1],0,0,0,Kt[2]]);return t.halfAxes.multiplyRight(Zt),t}var cx=512,YY=3,QY=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],$Y=QY.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),t_t=$Y.concat([[.25,.5],[.75,.5]]),CB=class e{constructor(t,r,i){G(this,\"x\",void 0),G(this,\"y\",void 0),G(this,\"z\",void 0),G(this,\"childVisible\",void 0),G(this,\"selected\",void 0),G(this,\"_children\",void 0),this.x=t,this.y=r,this.z=i}get children(){if(!this._children){let t=this.x*2,r=this.y*2,i=this.z+1;this._children=[new e(t,r,i),new e(t,r+1,i),new e(t+1,r,i),new e(t+1,r+1,i)]}return this._children}update(t){let{viewport:r,cullingVolume:i,elevationBounds:s,minZ:n,maxZ:o,bounds:c,offset:f,project:_}=t,w=this.getBoundingVolume(s,f,_);if(c&&!this.insideBounds(c)||i.computeVisibility(w)<0)return!1;if(!this.childVisible){let{z:R}=this;if(R=n){let N=w.distanceTo(r.cameraPosition)*r.scale/r.height;R+=Math.floor(Math.log2(N))}if(R>=o)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(let R of this.children)R.update(t);return!0}getSelected(t=[]){if(this.selected&&t.push(this),this._children)for(let r of this._children)r.getSelected(t);return t}insideBounds([t,r,i,s]){let n=Math.pow(2,this.z),o=cx/n;return this.x*ot&&(this.y+1)*o>r}getBoundingVolume(t,r,i){if(i){let f=this.z<1?t_t:this.z<2?$Y:QY,_=[];for(let w of f){let C=mI(this.x+w[0],this.y+w[1],this.z);C[2]=t[0],_.push(i(C)),t[0]!==t[1]&&(C[2]=t[1],_.push(i(C)))}return IB(_)}let s=Math.pow(2,this.z),n=cx/s,o=this.x*n+r*cx,c=cx-(this.y+1)*n;return new Wg([o,c,t[0]],[o+n,c+n,t[1]])}};function XY(e,t,r,i){let s=e instanceof qy&&e.resolution?e.projectPosition:null,n=Object.values(e.getFrustumPlanes()).map(({normal:N,distance:j})=>new pf(N.clone().negate(),j)),o=new dd(n),c=e.distanceScales.unitsPerMeter[2],f=r&&r[0]*c||0,_=r&&r[1]*c||0,w=e instanceof nc&&e.pitch<=60?t:0;if(i){let[N,j,Y,rt]=i,$=El([N,rt]),K=El([Y,j]);i=[$[0],cx-$[1],K[0],cx-K[1]]}let C=new CB(0,0,0),R={viewport:e,project:s,cullingVolume:o,elevationBounds:[f,_],minZ:w,maxZ:t,bounds:i,offset:0};if(C.update(R),e instanceof nc&&e.subViewports&&e.subViewports.length>1){for(R.offset=-1;C.update(R)&&!(--R.offset<-YY););for(R.offset=1;C.update(R)&&!(++R.offset>YY););}return C.getSelected()}var Dp=512,e_t=[-1/0,-1/0,1/0,1/0],kB={type:\"object\",value:null,validate:(e,t)=>t.optional&&e===null||typeof e==\"string\"||Array.isArray(e)&&e.every(r=>typeof r==\"string\"),equal:(e,t)=>{if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t))return!1;let r=e.length;if(r!==t.length)return!1;for(let i=0;is[0])),Math.min(...r.map(s=>s[1])),Math.max(...r.map(s=>s[0])),Math.max(...r.map(s=>s[1]))]}function r_t(e){return Math.abs(e.split(\"\").reduce((t,r)=>(t<<5)-t+r.charCodeAt(0)|0,0))}function RB(e,t){if(!e||!e.length)return null;let{index:r,id:i}=t;if(Array.isArray(e)){let n=r_t(i)%e.length;e=e[n]}let s=e;for(let n of Object.keys(r)){let o=new RegExp(\"{\".concat(n,\"}\"),\"g\");s=s.replace(o,String(r[n]))}return Number.isInteger(r.y)&&Number.isInteger(r.z)&&(s=s.replace(/\\{-y\\}/g,String(Math.pow(2,r.z)-r.y-1))),s}function i_t(e,t,r){let i;if(t&&t.length===2){let[s,n]=t,o=e.getBounds({z:s}),c=e.getBounds({z:n});i=[Math.min(o[0],c[0]),Math.min(o[1],c[1]),Math.max(o[2],c[2]),Math.max(o[3],c[3])]}else i=e.getBounds();return e.isGeospatial?[Math.max(i[0],r[0]),Math.max(i[1],r[1]),Math.min(i[2],r[2]),Math.min(i[3],r[3])]:[Math.max(Math.min(i[0],r[2]),r[0]),Math.max(Math.min(i[1],r[3]),r[1]),Math.min(Math.max(i[2],r[0]),r[2]),Math.min(Math.max(i[3],r[1]),r[3])]}function tQ({viewport:e,z:t=0,cullRect:r}){return(e.subViewports||[e]).map(s=>LB(s,t,r))}function LB(e,t,r){if(!Array.isArray(t)){let n=r.x-e.x,o=r.y-e.y,{width:c,height:f}=r,_={targetZ:t},w=e.unproject([n,o],_),C=e.unproject([n+c,o],_),R=e.unproject([n,o+f],_),N=e.unproject([n+c,o+f],_);return[Math.min(w[0],C[0],R[0],N[0]),Math.min(w[1],C[1],R[1],N[1]),Math.max(w[0],C[0],R[0],N[0]),Math.max(w[1],C[1],R[1],N[1])]}let i=LB(e,t[0],r),s=LB(e,t[1],r);return[Math.min(i[0],s[0]),Math.min(i[1],s[1]),Math.max(i[2],s[2]),Math.max(i[3],s[3])]}function n_t(e,t,r){return r?JY(e,r).map(s=>s*t/Dp):e.map(i=>i*t/Dp)}function DB(e,t){return Math.pow(2,e)*Dp/t}function mI(e,t,r){let i=DB(r,Dp),s=e/i*360-180,n=Math.PI-2*Math.PI*t/i,o=180/Math.PI*Math.atan(.5*(Math.exp(n)-Math.exp(-n)));return[s,o]}function KY(e,t,r,i){let s=DB(r,i);return[e/s*Dp,t/s*Dp]}function OB(e,t,r,i,s=Dp){if(e.isGeospatial){let[_,w]=mI(t,r,i),[C,R]=mI(t+1,r+1,i);return{west:_,north:w,east:C,south:R}}let[n,o]=KY(t,r,i,s),[c,f]=KY(t+1,r+1,i,s);return{left:n,top:o,right:c,bottom:f}}function s_t(e,t,r,i,s){let n=i_t(e,null,i),o=DB(t,r),[c,f,_,w]=n_t(n,o,s),C=[];for(let R=Math.floor(c);R<_;R++)for(let N=Math.floor(f);Nt&&(_=t);let w=s;return o&&c&&s&&!e.isGeospatial&&(w=JY(s,o)),e.isGeospatial?XY(e,_,i,s):s_t(e,_,n,w||e_t,c)}function eQ(e){let t={},r;return i=>{for(let s in i)if(!o_t(i[s],t[s])){r=e(i),t=i;break}return r}}function o_t(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i{}},h_t={extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:\"best-available\",zRange:null,maxRequests:6,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{}},dS=class{constructor(t){G(this,\"opts\",void 0),G(this,\"_requestScheduler\",void 0),G(this,\"_cache\",void 0),G(this,\"_dirty\",void 0),G(this,\"_tiles\",void 0),G(this,\"_cacheByteSize\",void 0),G(this,\"_viewport\",void 0),G(this,\"_zRange\",void 0),G(this,\"_selectedTiles\",void 0),G(this,\"_frameNumber\",void 0),G(this,\"_modelMatrix\",void 0),G(this,\"_modelMatrixInverse\",void 0),G(this,\"_maxZoom\",void 0),G(this,\"_minZoom\",void 0),G(this,\"onTileLoad\",void 0),G(this,\"_getCullBounds\",eQ(tQ)),this.opts={...h_t,...t},this.onTileLoad=r=>{var i,s;(i=(s=this.opts).onTileLoad)===null||i===void 0||i.call(s,r),this.opts.maxCacheByteSize&&(this._cacheByteSize+=r.byteLength,this._resizeCache())},this._requestScheduler=new iy({maxRequests:t.maxRequests,throttleRequests:!!(t.maxRequests&&t.maxRequests>0)}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._viewport=null,this._selectedTiles=null,this._frameNumber=0,this._modelMatrix=new wn,this._modelMatrixInverse=new wn,this.setOptions(t)}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(t=>t.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(t=>t.needsReload)}setOptions(t){Object.assign(this.opts,t),Number.isFinite(t.maxZoom)&&(this._maxZoom=Math.floor(t.maxZoom)),Number.isFinite(t.minZoom)&&(this._minZoom=Math.ceil(t.minZoom))}finalize(){for(let t of this._cache.values())t.isLoading&&t.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(let t of this._cache.keys()){let r=this._cache.get(t);!this._selectedTiles||!this._selectedTiles.includes(r)?this._cache.delete(t):r.setNeedsReload()}}update(t,{zRange:r,modelMatrix:i}={}){let s=new wn(i),n=!s.equals(this._modelMatrix);if(!this._viewport||!t.equals(this._viewport)||!To(this._zRange,r)||n){n&&(this._modelMatrixInverse=s.clone().invert(),this._modelMatrix=s),this._viewport=t,this._zRange=r;let c=this.getTileIndices({viewport:t,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:r,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=c.map(f=>this._getTile(f,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(c=>this._getTile(c.index,!0)));let o=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),o&&this._frameNumber++,this._frameNumber}isTileVisible(t,r){if(!t.isVisible)return!1;if(r&&this._viewport){let i=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:r}),{bbox:s}=t;for(let[n,o,c,f]of i){let _;if(\"west\"in s)_=s.westn&&s.southo;else{let w=Math.min(s.top,s.bottom),C=Math.max(s.top,s.bottom);_=s.leftn&&wo}if(_)return!0}return!1}return!0}getTileIndices({viewport:t,maxZoom:r,minZoom:i,zRange:s,modelMatrix:n,modelMatrixInverse:o}){let{tileSize:c,extent:f,zoomOffset:_}=this.opts;return BB({viewport:t,maxZoom:r,minZoom:i,zRange:s,tileSize:c,extent:f,modelMatrix:n,modelMatrixInverse:o,zoomOffset:_})}getTileId(t){return\"\".concat(t.x,\"-\").concat(t.y,\"-\").concat(t.z)}getTileZoom(t){return t.z}getTileMetadata(t){let{tileSize:r}=this.opts;return{bbox:OB(this._viewport,t.x,t.y,t.z,r)}}getParentIndex(t){let r=Math.floor(t.x/2),i=Math.floor(t.y/2),s=t.z-1;return{x:r,y:i,z:s}}updateTileStates(){let t=this.opts.refinementStrategy||pS,r=new Array(this._cache.size),i=0;for(let s of this._cache.values())r[i++]=s.isVisible,s.isSelected=!1,s.isVisible=!1;for(let s of this._selectedTiles)s.isSelected=!0,s.isVisible=!0;(typeof t==\"function\"?t:u_t[t])(Array.from(this._cache.values())),i=0;for(let s of this._cache.values())if(r[i++]!==s.isVisible)return!0;return!1}_pruneRequests(){let{maxRequests:t=0}=this.opts,r=[],i=0;for(let s of this._cache.values())s.isLoading&&(i++,!s.isSelected&&!s.isVisible&&r.push(s));for(;t>0&&i>t&&r.length>0;)r.shift().abort(),i--}_rebuildTree(){let{_cache:t}=this;for(let r of t.values())r.parent=null,r.children&&(r.children.length=0);for(let r of t.values()){let i=this._getNearestAncestor(r);r.parent=i,i!=null&&i.children&&i.children.push(r)}}_resizeCache(){let{_cache:t,opts:r}=this,i=r.maxCacheSize||(r.maxCacheByteSize?1/0:c_t*this.selectedTiles.length),s=r.maxCacheByteSize||1/0;if(t.size>i||this._cacheByteSize>s){for(let[f,_]of t){if(!_.isVisible&&!_.isSelected){var o,c;this._cacheByteSize-=r.maxCacheByteSize?_.byteLength:0,t.delete(f),(o=(c=this.opts).onTileUnload)===null||o===void 0||o.call(c,_)}if(t.size<=i&&this._cacheByteSize<=s)break}this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((f,_)=>f.zoom-_.zoom),this._dirty=!1)}_getTile(t,r){let i=this.getTileId(t),s=this._cache.get(i),n=!1;return!s&&r?(s=new uI(t),Object.assign(s,this.getTileMetadata(s.index)),Object.assign(s,{id:i,zoom:this.getTileZoom(s.index)}),n=!0,this._cache.set(i,s),this._dirty=!0):s&&s.needsReload&&(n=!0),s&&n&&s.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),s}_getNearestAncestor(t){let{_minZoom:r=0}=this,i=t.index;for(;this.getTileZoom(i)>r;){i=this.getParentIndex(i);let s=this._getTile(i);if(s)return s}return null}};function f_t(e){for(let t of e)t.state=0;for(let t of e)t.isSelected&&!iQ(t)&&FB(t);for(let t of e)t.isVisible=!!(t.state&gI)}function d_t(e){for(let r of e)r.state=0;for(let r of e)r.isSelected&&iQ(r);let t=Array.from(e).sort((r,i)=>r.zoom-i.zoom);for(let r of t)if(r.isVisible=!!(r.state&gI),r.children&&(r.isVisible||r.state&rQ))for(let i of r.children)i.state=rQ;else r.isSelected&&FB(r)}function iQ(e){let t=e;for(;t;){if(t.isLoaded||t.content)return t.state|=gI,!0;t=t.parent}return!1}function FB(e){for(let t of e.children)t.isLoaded||t.content?t.state|=gI:FB(t)}var p_t={TilesetClass:dS,data:{type:\"data\",value:[]},dataComparator:kB.equal,renderSubLayers:{type:\"function\",value:e=>new xm(e)},getTileData:{type:\"function\",optional:!0,value:null},onViewportLoad:{type:\"function\",optional:!0,value:null},onTileLoad:{type:\"function\",value:e=>{}},onTileUnload:{type:\"function\",value:e=>{}},onTileError:{type:\"function\",value:e=>console.error(e)},extent:{type:\"array\",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:pS,zRange:null,maxRequests:6,zoomOffset:0},Mm=class extends tn{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){var t,r;(t=this.state)===null||t===void 0||(r=t.tileset)===null||r===void 0||r.finalize()}get isLoaded(){var t,r,i;return(t=this.state)===null||t===void 0||(r=t.tileset)===null||r===void 0||(i=r.selectedTiles)===null||i===void 0?void 0:i.every(s=>s.isLoaded&&s.layers&&s.layers.every(n=>n.isLoaded))}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState({changeFlags:t}){let{tileset:r}=this.state,i=t.propsOrDataChanged||t.updateTriggersChanged,s=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getTileData);r?i&&(r.setOptions(this._getTilesetOptions()),s?r.reloadAll():this.state.tileset.tiles.forEach(n=>{n.layers=null})):(r=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:r})),this._updateTileset()}_getTilesetOptions(){let{tileSize:t,maxCacheSize:r,maxCacheByteSize:i,refinementStrategy:s,extent:n,maxZoom:o,minZoom:c,maxRequests:f,zoomOffset:_}=this.props;return{maxCacheSize:r,maxCacheByteSize:i,maxZoom:o,minZoom:c,tileSize:t,refinementStrategy:s,extent:n,maxRequests:f,zoomOffset:_,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){let{tileset:t}=this.state,{zRange:r,modelMatrix:i}=this.props,s=t.update(this.context.viewport,{zRange:r,modelMatrix:i}),{isLoaded:n}=t,o=this.state.isLoaded!==n,c=this.state.frameNumber!==s;n&&(o||c)&&this._onViewportLoad(),c&&this.setState({frameNumber:s}),this.state.isLoaded=n}_onViewportLoad(){let{tileset:t}=this.state,{onViewportLoad:r}=this.props;r&&r(t.selectedTiles)}_onTileLoad(t){this.props.onTileLoad(t),t.layers=null,this.setNeedsUpdate()}_onTileError(t,r){this.props.onTileError(t),r.layers=null,this.setNeedsUpdate()}_onTileUnload(t){this.props.onTileUnload(t)}getTileData(t){let{data:r,getTileData:i,fetch:s}=this.props,{signal:n}=t;return t.url=typeof r==\"string\"||Array.isArray(r)?RB(r,t):null,i?i(t):s&&t.url?s(t.url,{propName:\"data\",layer:this,signal:n}):null}renderSubLayers(t){return this.props.renderSubLayers(t)}getSubLayerPropsByTile(t){return null}getPickingInfo({info:t,sourceLayer:r}){let i=r.props.tile;return t.picked&&(t.tile=i),t.sourceTile=i,t}_updateAutoHighlight(t){let r=t.sourceTile;if(r&&r.layers)for(let i of r.layers)i.updateAutoHighlight(t)}renderLayers(){return this.state.tileset.tiles.map(t=>{let r=this.getSubLayerPropsByTile(t);if(!(!t.isLoaded&&!t.content))if(t.layers)r&&t.layers[0]&&Object.keys(r).some(i=>t.layers[0].props[i]!==r[i])&&(t.layers=t.layers.map(i=>i.clone(r)));else{let i=this.renderSubLayers({...this.props,...this.getSubLayerProps({id:t.id,updateTriggers:this.props.updateTriggers}),data:t.content,_offset:0,tile:t});t.layers=np(i,Boolean).map(s=>s.clone({tile:t,...r}))}return t.layers})}filterSubLayer({layer:t,cullRect:r}){let{tile:i}=t.props;return this.state.tileset.isTileVisible(i,r)}};G(Mm,\"defaultProps\",p_t);G(Mm,\"layerName\",\"TileLayer\");var Tc=function(e){e=e||{};var t=typeof e<\"u\"?e:{},r={},i;for(i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);var s=[],n=\"\";function o(Ht){return t.locateFile?t.locateFile(Ht,n):n+Ht}var c;document.currentScript&&(n=document.currentScript.src),n.indexOf(\"blob:\")!==0?n=n.substr(0,n.lastIndexOf(\"/\")+1):n=\"\",c=function(fe,De,vr){var g=new XMLHttpRequest;g.open(\"GET\",fe,!0),g.responseType=\"arraybuffer\",g.onload=function(){if(g.status==200||g.status==0&&g.response){De(g.response);return}var Si=ht(fe);if(Si){De(Si.buffer);return}vr()},g.onerror=vr,g.send(null)};var f=t.print||console.log.bind(console),_=t.printErr||console.warn.bind(console);for(i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);r=null,t.arguments&&(s=t.arguments);var w=0,C=function(Ht){w=Ht},R=function(){return w},N=8;function j(Ht,fe,De,vr){switch(De=De||\"i8\",De.charAt(De.length-1)===\"*\"&&(De=\"i32\"),De){case\"i1\":Lr[Ht>>0]=fe;break;case\"i8\":Lr[Ht>>0]=fe;break;case\"i16\":Bo[Ht>>1]=fe;break;case\"i32\":Fo[Ht>>2]=fe;break;case\"i64\":ve=[fe>>>0,(Ao=fe,+Ol(Ao)>=1?Ao>0?(fn(+os(Ao/4294967296),4294967295)|0)>>>0:~~+te((Ao-+(~~Ao>>>0))/4294967296)>>>0:0)],Fo[Ht>>2]=ve[0],Fo[Ht+4>>2]=ve[1];break;case\"float\":zo[Ht>>2]=fe;break;case\"double\":wi[Ht>>3]=fe;break;default:sh(\"invalid type for setValue: \"+De)}}function Y(Ht,fe,De){switch(fe=fe||\"i8\",fe.charAt(fe.length-1)===\"*\"&&(fe=\"i32\"),fe){case\"i1\":return Lr[Ht>>0];case\"i8\":return Lr[Ht>>0];case\"i16\":return Bo[Ht>>1];case\"i32\":return Fo[Ht>>2];case\"i64\":return Fo[Ht>>2];case\"float\":return zo[Ht>>2];case\"double\":return wi[Ht>>3];default:sh(\"invalid type for getValue: \"+fe)}return null}var rt=!1;function $(Ht,fe){Ht||sh(\"Assertion failed: \"+fe)}function K(Ht){var fe=t[\"_\"+Ht];return $(fe,\"Cannot call unknown function \"+Ht+\", make sure it is exported\"),fe}function tt(Ht,fe,De,vr,g){var Ni={string:function(Ur){var hi=0;if(Ur!=null&&Ur!==0){var go=(Ur.length<<2)+1;hi=jp(go),le(Ur,hi,go)}return hi},array:function(Ur){var hi=jp(Ur.length);return Ge(Ur,hi),hi}};function Si(Ur){return fe===\"string\"?Kt(Ur):fe===\"boolean\"?!!Ur:Ur}var Tt=K(Ht),Ts=[],as=0;if(vr)for(var li=0;li=vr);)++g;if(g-fe>16&&Ht.subarray&&Pt)return Pt.decode(Ht.subarray(fe,g));for(var Ni=\"\";fe>10,56320|as&1023)}}return Ni}function Kt(Ht,fe){return Ht?Ot(zi,Ht,fe):\"\"}function Zt(Ht,fe,De,vr){if(!(vr>0))return 0;for(var g=De,Ni=De+vr-1,Si=0;Si=55296&&Tt<=57343){var Ts=Ht.charCodeAt(++Si);Tt=65536+((Tt&1023)<<10)|Ts&1023}if(Tt<=127){if(De>=Ni)break;fe[De++]=Tt}else if(Tt<=2047){if(De+1>=Ni)break;fe[De++]=192|Tt>>6,fe[De++]=128|Tt&63}else if(Tt<=65535){if(De+2>=Ni)break;fe[De++]=224|Tt>>12,fe[De++]=128|Tt>>6&63,fe[De++]=128|Tt&63}else{if(De+3>=Ni)break;fe[De++]=240|Tt>>18,fe[De++]=128|Tt>>12&63,fe[De++]=128|Tt>>6&63,fe[De++]=128|Tt&63}}return fe[De]=0,De-g}function le(Ht,fe,De){return Zt(Ht,zi,fe,De)}var ue=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function Ge(Ht,fe){Lr.set(Ht,fe)}function tr(Ht,fe){return Ht%fe>0&&(Ht+=fe-Ht%fe),Ht}var er,Lr,zi,Bo,Pc,Fo,rh,zo,wi;function Ds(Ht){er=Ht,t.HEAP8=Lr=new Int8Array(Ht),t.HEAP16=Bo=new Int16Array(Ht),t.HEAP32=Fo=new Int32Array(Ht),t.HEAPU8=zi=new Uint8Array(Ht),t.HEAPU16=Pc=new Uint16Array(Ht),t.HEAPU32=rh=new Uint32Array(Ht),t.HEAPF32=zo=new Float32Array(Ht),t.HEAPF64=wi=new Float64Array(Ht)}var sl=5266928,Ic=24016,Cc=t.TOTAL_MEMORY||33554432;t.buffer?er=t.buffer:er=new ArrayBuffer(Cc),Cc=er.byteLength,Ds(er),Fo[Ic>>2]=sl;function Zi(Ht){for(;Ht.length>0;){var fe=Ht.shift();if(typeof fe==\"function\"){fe();continue}var De=fe.func;typeof De==\"number\"?fe.arg===void 0?t.dynCall_v(De):t.dynCall_vi(De,fe.arg):De(fe.arg===void 0?null:fe.arg)}}var $n=[],Ii=[],Xn=[],No=[];function ol(){if(t.preRun)for(typeof t.preRun==\"function\"&&(t.preRun=[t.preRun]);t.preRun.length;)ss(t.preRun.shift());Zi($n)}function fo(){Zi(Ii)}function Ea(){Zi(Xn)}function na(){if(t.postRun)for(typeof t.postRun==\"function\"&&(t.postRun=[t.postRun]);t.postRun.length;)to(t.postRun.shift());Zi(No)}function ss(Ht){$n.unshift(Ht)}function to(Ht){No.unshift(Ht)}var Ol=Math.abs,te=Math.ceil,os=Math.floor,fn=Math.min,gi=0,oi=null,eo=null;function uu(Ht){gi++,t.monitorRunDependencies&&t.monitorRunDependencies(gi)}function al(Ht){if(gi--,t.monitorRunDependencies&&t.monitorRunDependencies(gi),gi==0&&(oi!==null&&(clearInterval(oi),oi=null),eo)){var fe=eo;eo=null,fe()}}t.preloadedImages={},t.preloadedAudios={};var po=null,ll=\"data:application/octet-stream;base64,\";function Pa(Ht){return String.prototype.startsWith?Ht.startsWith(ll):Ht.indexOf(ll)===0}var Ao,ve;po=\"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAgAAAAAAAAACAAAAAQAAABMAAAACAAAAAgAAAAAAAAAFAAAACgAAAAAAAAACAAAAAgAAAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABEAAAACAAAAAAAAAAIAAAABAAAADwAAAAIAAAACAAAAAAAAAAUAAAALAAAAAAAAAAIAAAACAAAAAwAAABEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAIAAAAAAAAAAgAAAAEAAAAQAAAAAgAAAAIAAAAAAAAABQAAAAwAAAAAAAAAAgAAAAIAAAADAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAACAAAAAQAAABEAAAACAAAAAgAAAAAAAAAFAAAADQAAAAAAAAACAAAAAgAAAAMAAAATAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAACAAAAAAAAAAIAAAABAAAAEgAAAAIAAAACAAAAAAAAAAUAAAAOAAAAAAAAAAIAAAACAAAAAwAAAAIAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAACAAAAAQAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAgAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAQAAAAUAAAAEAAAAAAAAAAUAAAAAAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAACAAAAAQAAAAAAAAACAAAAAgAAAAAAAAABAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAQAAAAUAAAAEAAAAAAAAAAUAAAAFAAAAAAAAAAEAAAAAAAAAAAAAAMuhRbbsNlBBYqHW9OmHIkF9XBuqnS31QAK37uYhNMhAOSo3UUupm0DC+6pc6JxvQHV9eseEEEJAzURsCyqlFEB8BQ4NMJjnPyy3tBoS97o/xawXQznRjj89J2K2CZxhP6vX43RIIDQ/S8isgygEBz+LvFHQkmzaPjFFFO7wMq4+AADMLkTtjkIAAOgkJqxhQgAAU7B0MjRCAADwpBcVB0IAAACYP2HaQQAAAIn/Ja5BzczM4Eg6gUHNzMxMU7BTQTMzMzNfgCZBAAAAAEi3+UAAAAAAwGPNQDMzMzMzy6BAmpmZmZkxc0AzMzMzM/NFQDMzMzMzMxlAzczMzMzM7D+ygXSx2U6RQKimJOvQKnpA23hmONTHY0A/AGcxyudNQNb3K647mzZA+S56rrwWIUAm4kUQ+9UJQKre9hGzh/M/BLvoy9WG3T+LmqMf8VHGP2m3nYNV37A/gbFHcyeCmT+cBPWBckiDP61tZACjKW0/q2RbYVUYVj8uDypVyLNAP6jGS5cA5zBBwcqhBdCNGUEGEhQ/JVEDQT6WPnRbNO1AB/AWSJgT1kDfUWNCNLDAQNk+5C33OqlAchWL34QSk0DKvtDIrNV8QNF0G3kFzGVASSeWhBl6UED+/0mNGuk4QGjA/dm/1CJALPLPMql6DEDSHoDrwpP1P2jouzWST+A/egAAAAAAAABKAwAAAAAAAPoWAAAAAAAAyqAAAAAAAAB6ZQQAAAAAAErGHgAAAAAA+mvXAAAAAADK8+MFAAAAAHqqOykAAAAASqmhIAEAAAD6oGvkBwAAAMpm8T43AAAAes+ZuIIBAABKrDQMkwoAAPq1cFUFSgAAyvkUViUGAgAAAAAAAwAAAAYAAAACAAAABQAAAAEAAAAEAAAAAAAAAAAAAAAFAAAAAwAAAAEAAAAGAAAABAAAAAIAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAA/////wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAP////8AAAAAAAAAAAEAAAABAAAAAAAAAAAAAAD/////AAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAA/////wUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";var Uo=24032;function dn(Ht){return Ht}function Bl(Ht){var fe=/\\b__Z[\\w\\d_]+/g;return Ht.replace(fe,function(De){var vr=De;return De===vr?De:vr+\" [\"+De+\"]\"})}function Ia(){var Ht=new Error;if(!Ht.stack){try{throw new Error(0)}catch(fe){Ht=fe}if(!Ht.stack)return\"(no stack trace available)\"}return Ht.stack.toString()}function Se(){var Ht=Ia();return t.extraStackTrace&&(Ht+=`\n`+t.extraStackTrace()),Bl(Ht)}function Dr(Ht,fe,De,vr){sh(\"Assertion failed: \"+Kt(Ht)+\", at: \"+[fe?Kt(fe):\"unknown filename\",De,vr?Kt(vr):\"unknown function\"])}function mr(){return Lr.length}function Os(Ht,fe,De){zi.set(zi.subarray(fe,fe+De),Ht)}function Ca(Ht){return t.___errno_location&&(Fo[t.___errno_location()>>2]=Ht),Ht}function Tr(Ht){sh(\"OOM\")}function sa(Ht){try{var fe=new ArrayBuffer(Ht);return fe.byteLength!=Ht?void 0:(new Int8Array(fe).set(Lr),vi(fe),Ds(fe),1)}catch{}}function gt(Ht){var fe=mr(),De=16777216,vr=2147483648-De;if(Ht>vr)return!1;for(var g=16777216,Ni=Math.max(fe,g);Ni>4,g=(Tt&15)<<4|Ts>>2,Ni=(Ts&3)<<6|as,De=De+String.fromCharCode(vr),Ts!==64&&(De=De+String.fromCharCode(g)),as!==64&&(De=De+String.fromCharCode(Ni));while(li>2]=p,g[k+4>>2]=m,k=(I|0)!=0,k&&(g[I>>2]=0),Ui(p,m)|0)return zt=1,wt=Gt,zt|0;g[zt>>2]=0;t:do if((y|0)>=1)if(k)for(it=0,ot=1,Ct=1,L=0,k=p;;){if(!(L|it)){if(k=jn(k,m,4,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(Ui(k,m)|0){k=1;break t}}if(k=jn(k,m,g[16+(it<<2)>>2]|0,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(p=S+(Ct<<3)|0,g[p>>2]=k,g[p+4>>2]=m,g[I+(Ct<<2)>>2]=ot,L=L+1|0,p=(L|0)==(ot|0),z=it+1|0,H=(z|0)==6,Ui(k,m)|0){k=1;break t}if(ot=ot+(H&p&1)|0,(ot|0)>(y|0)){k=0;break}else it=p?H?0:z:it,Ct=Ct+1|0,L=p?0:L}else for(it=0,ot=1,Ct=1,L=0,k=p;;){if(!(L|it)){if(k=jn(k,m,4,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(Ui(k,m)|0){k=1;break t}}if(k=jn(k,m,g[16+(it<<2)>>2]|0,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(p=S+(Ct<<3)|0,g[p>>2]=k,g[p+4>>2]=m,L=L+1|0,p=(L|0)==(ot|0),z=it+1|0,H=(z|0)==6,Ui(k,m)|0){k=1;break t}if(ot=ot+(H&p&1)|0,(ot|0)>(y|0)){k=0;break}else it=p?H?0:z:it,Ct=Ct+1|0,L=p?0:L}else k=0;while(!1);return zt=k,wt=Gt,zt|0}function Oa(p,m,y,S,I,k,L){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0,k=k|0,L=L|0;var z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0;if(Ct=wt,wt=wt+16|0,ot=Ct,(p|0)==0&(m|0)==0){wt=Ct;return}if(z=qo(p|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0,It()|0,H=S+(z<<3)|0,zt=H,Gt=g[zt>>2]|0,zt=g[zt+4>>2]|0,it=(Gt|0)==(p|0)&(zt|0)==(m|0),!((Gt|0)==0&(zt|0)==0|it))do z=(z+1|0)%(k|0)|0,H=S+(z<<3)|0,Gt=H,zt=g[Gt>>2]|0,Gt=g[Gt+4>>2]|0,it=(zt|0)==(p|0)&(Gt|0)==(m|0);while(!((zt|0)==0&(Gt|0)==0|it));if(z=I+(z<<2)|0,it&&(g[z>>2]|0)<=(L|0)){wt=Ct;return}if(Gt=H,g[Gt>>2]=p,g[Gt+4>>2]=m,g[z>>2]=L,(L|0)>=(y|0)){wt=Ct;return}Gt=L+1|0,g[ot>>2]=0,zt=jn(p,m,2,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,3,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,1,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,5,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,4,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),g[ot>>2]=0,zt=jn(p,m,6,ot)|0,Oa(zt,It()|0,y,S,I,k,Gt),wt=Ct}function jn(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0;if((g[S>>2]|0)>0){I=0;do y=za(y)|0,I=I+1|0;while((I|0)<(g[S>>2]|0))}z=me(p|0,m|0,45)|0,It()|0,H=z&127,k=Ms(p,m)|0,I=me(p|0,m|0,52)|0,It()|0,I=I&15;t:do if(!I)L=6;else for(;;){if(Ct=(15-I|0)*3|0,zt=me(p|0,m|0,Ct|0)|0,It()|0,zt=zt&7,Gt=(Go(I)|0)==0,I=I+-1|0,ot=Le(7,0,Ct|0)|0,m=m&~(It()|0),Ct=Le(g[(Gt?464:48)+(zt*28|0)+(y<<2)>>2]|0,0,Ct|0)|0,it=It()|0,y=g[(Gt?672:256)+(zt*28|0)+(y<<2)>>2]|0,p=Ct|p&~ot,m=it|m,!y){y=0;break t}if(!I){L=6;break}}while(!1);(L|0)==6&&(Gt=g[880+(H*28|0)+(y<<2)>>2]|0,zt=Le(Gt|0,0,45)|0,p=zt|p,m=It()|0|m&-1040385,y=g[4304+(H*28|0)+(y<<2)>>2]|0,(Gt&127|0)==127&&(Gt=Le(g[880+(H*28|0)+20>>2]|0,0,45)|0,m=It()|0|m&-1040385,y=g[4304+(H*28|0)+20>>2]|0,p=jo(Gt|p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+1)),L=me(p|0,m|0,45)|0,It()|0,L=L&127;t:do if(fi(L)|0){e:do if((Ms(p,m)|0)==1){if((H|0)!=(L|0))if(lh(L,g[7728+(H*28|0)>>2]|0)|0){p=Od(p,m)|0,k=1,m=It()|0;break}else{p=jo(p,m)|0,k=1,m=It()|0;break}switch(k|0){case 5:{p=Od(p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+5,k=0;break e}case 3:{p=jo(p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+1,k=0;break e}default:return zt=0,Gt=0,$e(zt|0),Gt|0}}else k=0;while(!1);if((y|0)>0){I=0;do p=mh(p,m)|0,m=It()|0,I=I+1|0;while((I|0)!=(y|0))}if((H|0)!=(L|0)){if(!(du(L)|0)){if((k|0)!=0|(Ms(p,m)|0)!=5)break;g[S>>2]=(g[S>>2]|0)+1;break}switch(z&127){case 8:case 118:break t;default:}(Ms(p,m)|0)!=3&&(g[S>>2]=(g[S>>2]|0)+1)}}else if((y|0)>0){I=0;do p=jo(p,m)|0,m=It()|0,I=I+1|0;while((I|0)!=(y|0))}while(!1);return g[S>>2]=((g[S>>2]|0)+y|0)%6|0,zt=m,Gt=p,$e(zt|0),Gt|0}function i_(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0;if(Ct=wt,wt=wt+16|0,ot=Ct,!y)return ot=S,g[ot>>2]=p,g[ot+4>>2]=m,ot=0,wt=Ct,ot|0;g[ot>>2]=0;t:do if(Ui(p,m)|0)p=1;else{if(k=(y|0)>0,k){I=0,it=p;do{if(it=jn(it,m,4,ot)|0,m=It()|0,(it|0)==0&(m|0)==0){p=2;break t}if(I=I+1|0,Ui(it,m)|0){p=1;break t}}while((I|0)<(y|0));if(H=S,g[H>>2]=it,g[H+4>>2]=m,H=y+-1|0,k){k=0,L=1,I=it,p=m;do{if(I=jn(I,p,2,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(L<<3)|0,g[z>>2]=I,g[z+4>>2]=p,L=L+1|0,Ui(I,p)|0){p=1;break t}k=k+1|0}while((k|0)<(y|0));z=0,k=L;do{if(I=jn(I,p,3,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(L=S+(k<<3)|0,g[L>>2]=I,g[L+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}z=z+1|0}while((z|0)<(y|0));L=0;do{if(I=jn(I,p,1,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));L=0;do{if(I=jn(I,p,5,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));L=0;do{if(I=jn(I,p,4,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,k=k+1|0,Ui(I,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));for(L=0;;){if(I=jn(I,p,6,ot)|0,p=It()|0,(I|0)==0&(p|0)==0){p=2;break t}if((L|0)!=(H|0))if(z=S+(k<<3)|0,g[z>>2]=I,g[z+4>>2]=p,!(Ui(I,p)|0))k=k+1|0;else{p=1;break t}if(L=L+1|0,(L|0)>=(y|0)){L=it,k=m;break}}}else L=it,I=it,k=m,p=m}else L=S,g[L>>2]=p,g[L+4>>2]=m,L=p,I=p,k=m,p=m;p=((L|0)!=(I|0)|(k|0)!=(p|0))&1}while(!1);return ot=p,wt=Ct,ot|0}function Pd(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;if(k=wt,wt=wt+48|0,I=k+8|0,S=k,z=p,L=g[z+4>>2]|0,y=S,g[y>>2]=g[z>>2],g[y+4>>2]=L,Me(S,I),I=ch(I,m)|0,m=g[S>>2]|0,S=g[p+8>>2]|0,(S|0)<=0)return z=m,L=(I|0)<(z|0),z=L?z:I,z=z+12|0,wt=k,z|0;y=g[p+12>>2]|0,p=0;do m=(g[y+(p<<3)>>2]|0)+m|0,p=p+1|0;while((p|0)<(S|0));return z=(I|0)<(m|0),z=z?m:I,z=z+12|0,wt=k,z|0}function Zp(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0;if(z=wt,wt=wt+48|0,S=z+8|0,I=z,!(Yp(p,m,y)|0)){wt=z;return}if(H=p,k=g[H+4>>2]|0,L=I,g[L>>2]=g[H>>2],g[L+4>>2]=k,Me(I,S),L=ch(S,m)|0,m=g[I>>2]|0,k=g[p+8>>2]|0,(k|0)>0){I=g[p+12>>2]|0,S=0;do m=(g[I+(S<<3)>>2]|0)+m|0,S=S+1|0;while((S|0)!=(k|0))}if(m=(L|0)<(m|0)?m:L,(m|0)<=-12){wt=z;return}H=m+11|0,Dc(y|0,0,(((H|0)>0?H:0)<<3)+8|0)|0,wt=z}function Yp(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0,Ei=0,vn=0,An=0,Or=0;if(Or=wt,wt=wt+112|0,cn=Or+80|0,H=Or+72|0,Ei=Or,vn=Or+56|0,it=p+8|0,An=no((g[it>>2]<<5)+32|0)|0,An||Ti(22848,22448,800,22456),dr(p,An),k=p,S=g[k+4>>2]|0,z=H,g[z>>2]=g[k>>2],g[z+4>>2]=S,Me(H,cn),z=ch(cn,m)|0,S=g[H>>2]|0,k=g[it>>2]|0,(k|0)>0){L=g[p+12>>2]|0,I=0;do S=(g[L+(I<<3)>>2]|0)+S|0,I=I+1|0;while((I|0)!=(k|0))}if(z=(z|0)<(S|0)?S:z,Mi=z+12|0,I=Na(Mi,8)|0,ot=Na(Mi,8)|0,g[cn>>2]=0,Zr=p,Gi=g[Zr+4>>2]|0,S=H,g[S>>2]=g[Zr>>2],g[S+4>>2]=Gi,S=Km(H,Mi,m,cn,I,ot)|0,S|0)return Gr(I),Gr(ot),Gr(An),An=S,wt=Or,An|0;t:do if((g[it>>2]|0)>0){for(k=p+12|0,S=0;L=Km((g[k>>2]|0)+(S<<3)|0,Mi,m,cn,I,ot)|0,S=S+1|0,!(L|0);)if((S|0)>=(g[it>>2]|0))break t;return Gr(I),Gr(ot),Gr(An),An=L,wt=Or,An|0}while(!1);(z|0)>-12&&Dc(ot|0,0,((Mi|0)>1?Mi:1)<<3|0)|0;t:do if((g[cn>>2]|0)>0){Gi=((Mi|0)<0)<<31>>31,Nt=I,Ze=ot,Ke=I,be=I,ze=ot,Zr=I,S=I,Ce=I,Ve=ot,Jt=ot,_e=ot,I=ot;e:for(;;){for(ie=g[cn>>2]|0,Gt=0,ee=0,k=0;;){L=Ei,z=L+56|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(z|0));if(m=Nt+(Gt<<3)|0,H=g[m>>2]|0,m=g[m+4>>2]|0,gf(H,m,1,Ei,0)|0){L=Ei,z=L+56|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(z|0));L=Na(7,4)|0,L|0&&(Oa(H,m,1,Ei,L,7,0),Gr(L))}zt=0;do{Ct=Ei+(zt<<3)|0,ot=g[Ct>>2]|0,Ct=g[Ct+4>>2]|0;r:do if(!((ot|0)==0&(Ct|0)==0)){if(H=qo(ot|0,Ct|0,Mi|0,Gi|0)|0,It()|0,L=y+(H<<3)|0,z=L,m=g[z>>2]|0,z=g[z+4>>2]|0,!((m|0)==0&(z|0)==0))for(it=0;;){if((it|0)>(Mi|0))break e;if((m|0)==(ot|0)&(z|0)==(Ct|0))break r;if(H=(H+1|0)%(Mi|0)|0,L=y+(H<<3)|0,z=L,m=g[z>>2]|0,z=g[z+4>>2]|0,(m|0)==0&(z|0)==0)break;it=it+1|0}(ot|0)==0&(Ct|0)==0||(l(ot,Ct,vn),Xe(p,An,vn)|0&&(it=L,g[it>>2]=ot,g[it+4>>2]=Ct,it=Ze+(k<<3)|0,g[it>>2]=ot,g[it+4>>2]=Ct,k=k+1|0))}while(!1);zt=zt+1|0}while(zt>>>0<7);if(ee=ee+1|0,(ee|0)>=(ie|0))break;Gt=Gt+1|0}if((ie|0)>0&&Dc(Ke|0,0,ie<<3|0)|0,g[cn>>2]=k,(k|0)>0)ot=I,Ct=_e,zt=Zr,Gt=Jt,ee=Ve,ie=Ze,I=Ce,_e=S,Jt=be,Ve=Ke,Ce=ot,S=Ct,Zr=ze,ze=zt,be=Gt,Ke=ee,Ze=Nt,Nt=ie;else break t}return Gr(be),Gr(ze),Gr(An),An=-1,wt=Or,An|0}else S=ot;while(!1);return Gr(An),Gr(I),Gr(S),An=0,wt=Or,An|0}function Km(p,m,y,S,I,k){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0,k=k|0;var L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0;if(Gi=wt,wt=wt+48|0,Ke=Gi+32|0,be=Gi+16|0,ze=Gi,L=g[p>>2]|0,(L|0)<=0)return Zr=0,wt=Gi,Zr|0;Ve=p+4|0,Jt=Ke+8|0,_e=be+8|0,Nt=ze+8|0,Ze=((m|0)<0)<<31>>31,Ce=0;t:for(;;){z=g[Ve>>2]|0,ee=z+(Ce<<4)|0,g[Ke>>2]=g[ee>>2],g[Ke+4>>2]=g[ee+4>>2],g[Ke+8>>2]=g[ee+8>>2],g[Ke+12>>2]=g[ee+12>>2],(Ce|0)==(L+-1|0)?(g[be>>2]=g[z>>2],g[be+4>>2]=g[z+4>>2],g[be+8>>2]=g[z+8>>2],g[be+12>>2]=g[z+12>>2]):(ee=z+(Ce+1<<4)|0,g[be>>2]=g[ee>>2],g[be+4>>2]=g[ee+4>>2],g[be+8>>2]=g[ee+8>>2],g[be+12>>2]=g[ee+12>>2]),ee=la(Ke,be,y)|0;e:do if((ee|0)>0){ie=+(ee|0),Gt=0;r:for(;;){cn=+(ee-Gt|0),Mi=+(Gt|0),Tt[ze>>3]=+Tt[Ke>>3]*cn/ie+ +Tt[be>>3]*Mi/ie,Tt[Nt>>3]=+Tt[Jt>>3]*cn/ie+ +Tt[_e>>3]*Mi/ie,Ct=sA(ze,y)|0,zt=It()|0,z=qo(Ct|0,zt|0,m|0,Ze|0)|0,It()|0,L=k+(z<<3)|0,H=L,it=g[H>>2]|0,H=g[H+4>>2]|0;i:do if((it|0)==0&(H|0)==0)Zr=14;else for(ot=0;;){if((ot|0)>(m|0)){L=1;break i}if((it|0)==(Ct|0)&(H|0)==(zt|0)){L=7;break i}if(z=(z+1|0)%(m|0)|0,L=k+(z<<3)|0,H=L,it=g[H>>2]|0,H=g[H+4>>2]|0,(it|0)==0&(H|0)==0){Zr=14;break}else ot=ot+1|0}while(!1);switch((Zr|0)==14&&(Zr=0,(Ct|0)==0&(zt|0)==0?L=7:(g[L>>2]=Ct,g[L+4>>2]=zt,L=g[S>>2]|0,ot=I+(L<<3)|0,g[ot>>2]=Ct,g[ot+4>>2]=zt,g[S>>2]=L+1,L=0)),L&7){case 7:case 0:break;default:break r}if(Gt=Gt+1|0,(ee|0)<=(Gt|0)){Zr=8;break e}}if(L|0){L=-1,Zr=20;break t}}else Zr=8;while(!1);if((Zr|0)==8&&(Zr=0),Ce=Ce+1|0,L=g[p>>2]|0,(Ce|0)>=(L|0)){L=0,Zr=20;break}}return(Zr|0)==20?(wt=Gi,L|0):0}function Pn(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(it=wt,wt=wt+176|0,H=it,(m|0)<1){gu(y,0,0),wt=it;return}L=p,L=me(g[L>>2]|0,g[L+4>>2]|0,52)|0,It()|0,gu(y,(m|0)>6?m:6,L&15),L=0;do{if(S=p+(L<<3)|0,d(g[S>>2]|0,g[S+4>>2]|0,H),S=g[H>>2]|0,(S|0)>0){z=0;do k=H+8+(z<<4)|0,z=z+1|0,S=H+8+(((z|0)%(S|0)|0)<<4)|0,I=_h(y,S,k)|0,I?Es(y,I)|0:yo(y,k,S)|0,S=g[H>>2]|0;while((z|0)<(S|0))}L=L+1|0}while((L|0)!=(m|0));wt=it}function oh(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if(k=wt,wt=wt+32|0,S=k,I=k+16|0,Pn(p,m,I),g[y>>2]=0,g[y+4>>2]=0,g[y+8>>2]=0,p=Ns(I)|0,!p){Wt(y)|0,gh(I),wt=k;return}do{m=yt(y)|0;do dt(m,p)|0,L=p+16|0,g[S>>2]=g[L>>2],g[S+4>>2]=g[L+4>>2],g[S+8>>2]=g[L+8>>2],g[S+12>>2]=g[L+12>>2],Es(I,p)|0,p=On(I,S)|0;while(p|0);p=Ns(I)|0}while(p|0);Wt(y)|0,gh(I),wt=k}function fi(p){return p=p|0,g[7728+(p*28|0)+16>>2]|0}function du(p){return p=p|0,(p|0)==4|(p|0)==117|0}function _f(p){return p=p|0,g[11152+((g[p>>2]|0)*216|0)+((g[p+4>>2]|0)*72|0)+((g[p+8>>2]|0)*24|0)+(g[p+12>>2]<<3)>>2]|0}function Qp(p){return p=p|0,g[11152+((g[p>>2]|0)*216|0)+((g[p+4>>2]|0)*72|0)+((g[p+8>>2]|0)*24|0)+(g[p+12>>2]<<3)+4>>2]|0}function ah(p,m){p=p|0,m=m|0,p=7728+(p*28|0)|0,g[m>>2]=g[p>>2],g[m+4>>2]=g[p+4>>2],g[m+8>>2]=g[p+8>>2],g[m+12>>2]=g[p+12>>2]}function Id(p,m){p=p|0,m=m|0;var y=0,S=0;if(m>>>0>20)return m=-1,m|0;do if((g[11152+(m*216|0)>>2]|0)!=(p|0))if((g[11152+(m*216|0)+8>>2]|0)!=(p|0))if((g[11152+(m*216|0)+16>>2]|0)!=(p|0))if((g[11152+(m*216|0)+24>>2]|0)!=(p|0))if((g[11152+(m*216|0)+32>>2]|0)!=(p|0))if((g[11152+(m*216|0)+40>>2]|0)!=(p|0))if((g[11152+(m*216|0)+48>>2]|0)!=(p|0))if((g[11152+(m*216|0)+56>>2]|0)!=(p|0))if((g[11152+(m*216|0)+64>>2]|0)!=(p|0))if((g[11152+(m*216|0)+72>>2]|0)!=(p|0))if((g[11152+(m*216|0)+80>>2]|0)!=(p|0))if((g[11152+(m*216|0)+88>>2]|0)!=(p|0))if((g[11152+(m*216|0)+96>>2]|0)!=(p|0))if((g[11152+(m*216|0)+104>>2]|0)!=(p|0))if((g[11152+(m*216|0)+112>>2]|0)!=(p|0))if((g[11152+(m*216|0)+120>>2]|0)!=(p|0))if((g[11152+(m*216|0)+128>>2]|0)!=(p|0))if((g[11152+(m*216|0)+136>>2]|0)==(p|0))p=2,y=1,S=2;else{if((g[11152+(m*216|0)+144>>2]|0)==(p|0)){p=0,y=2,S=0;break}if((g[11152+(m*216|0)+152>>2]|0)==(p|0)){p=0,y=2,S=1;break}if((g[11152+(m*216|0)+160>>2]|0)==(p|0)){p=0,y=2,S=2;break}if((g[11152+(m*216|0)+168>>2]|0)==(p|0)){p=1,y=2,S=0;break}if((g[11152+(m*216|0)+176>>2]|0)==(p|0)){p=1,y=2,S=1;break}if((g[11152+(m*216|0)+184>>2]|0)==(p|0)){p=1,y=2,S=2;break}if((g[11152+(m*216|0)+192>>2]|0)==(p|0)){p=2,y=2,S=0;break}if((g[11152+(m*216|0)+200>>2]|0)==(p|0)){p=2,y=2,S=1;break}if((g[11152+(m*216|0)+208>>2]|0)==(p|0)){p=2,y=2,S=2;break}else p=-1;return p|0}else p=2,y=1,S=1;else p=2,y=1,S=0;else p=1,y=1,S=2;else p=1,y=1,S=1;else p=1,y=1,S=0;else p=0,y=1,S=2;else p=0,y=1,S=1;else p=0,y=1,S=0;else p=2,y=0,S=2;else p=2,y=0,S=1;else p=2,y=0,S=0;else p=1,y=0,S=2;else p=1,y=0,S=1;else p=1,y=0,S=0;else p=0,y=0,S=2;else p=0,y=0,S=1;else p=0,y=0,S=0;while(!1);return m=g[11152+(m*216|0)+(y*72|0)+(p*24|0)+(S<<3)+4>>2]|0,m|0}function lh(p,m){return p=p|0,m=m|0,(g[7728+(p*28|0)+20>>2]|0)==(m|0)?(m=1,m|0):(m=(g[7728+(p*28|0)+24>>2]|0)==(m|0),m|0)}function $p(p,m){return p=p|0,m=m|0,g[880+(p*28|0)+(m<<2)>>2]|0}function Xp(p,m){return p=p|0,m=m|0,(g[880+(p*28|0)>>2]|0)==(m|0)?(m=0,m|0):(g[880+(p*28|0)+4>>2]|0)==(m|0)?(m=1,m|0):(g[880+(p*28|0)+8>>2]|0)==(m|0)?(m=2,m|0):(g[880+(p*28|0)+12>>2]|0)==(m|0)?(m=3,m|0):(g[880+(p*28|0)+16>>2]|0)==(m|0)?(m=4,m|0):(g[880+(p*28|0)+20>>2]|0)==(m|0)?(m=5,m|0):((g[880+(p*28|0)+24>>2]|0)==(m|0)?6:7)|0}function n_(){return 122}function s_(p){p=p|0;var m=0,y=0,S=0;m=0;do Le(m|0,0,45)|0,S=It()|0|134225919,y=p+(m<<3)|0,g[y>>2]=-1,g[y+4>>2]=S,m=m+1|0;while((m|0)!=122)}function Jm(p){return p=p|0,+Tt[p+16>>3]<+Tt[p+24>>3]|0}function hl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;return y=+Tt[m>>3],!(y>=+Tt[p+8>>3])||!(y<=+Tt[p>>3])?(m=0,m|0):(S=+Tt[p+16>>3],y=+Tt[p+24>>3],I=+Tt[m+8>>3],m=I>=y,p=I<=S&1,S>2]=0,k=k+4|0;while((k|0)<(z|0));return O(m,I),k=I,z=g[k>>2]|0,k=g[k+4>>2]|0,l(z,k,y),d(z,k,S),H=+Rc(y,S+8|0),Tt[y>>3]=+Tt[p>>3],k=y+8|0,Tt[k>>3]=+Tt[p+16>>3],Tt[S>>3]=+Tt[p+8>>3],z=S+8|0,Tt[z>>3]=+Tt[p+24>>3],it=+Rc(y,S),z=~~+Qi(+(it*it/+dl(+ +li(+((+Tt[k>>3]-+Tt[z>>3])/(+Tt[y>>3]-+Tt[S>>3]))),3)/(H*(H*2.59807621135)*.8))),wt=L,(z|0?z:1)|0}function la(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0;z=wt,wt=wt+288|0,S=z+264|0,I=z+96|0,k=z,L=k,H=L+96|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(H|0));return O(y,k),H=k,L=g[H>>2]|0,H=g[H+4>>2]|0,l(L,H,S),d(L,H,I),it=+Rc(S,I+8|0),H=~~+Qi(+(+Rc(p,m)/(it*2))),wt=z,(H|0?H:1)|0}function Cd(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0,g[p>>2]=m,g[p+4>>2]=y,g[p+8>>2]=S}function o_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;Ct=m+8|0,g[Ct>>2]=0,H=+Tt[p>>3],L=+li(+H),it=+Tt[p+8>>3],z=+li(+it)/.8660254037844386,L=L+z*.5,y=~~L,p=~~z,L=L-+(y|0),z=z-+(p|0);do if(L<.5)if(L<.3333333333333333)if(g[m>>2]=y,z<(L+1)*.5){g[m+4>>2]=p;break}else{p=p+1|0,g[m+4>>2]=p;break}else if(zt=1-L,p=(!(z>2]=p,zt<=z&z>2]=y;break}else{g[m>>2]=y;break}else{if(!(L<.6666666666666666))if(y=y+1|0,g[m>>2]=y,z>2]=p;break}else{p=p+1|0,g[m+4>>2]=p;break}if(z<1-L){if(g[m+4>>2]=p,L*2+-1>2]=y;break}}else p=p+1|0,g[m+4>>2]=p;y=y+1|0,g[m>>2]=y}while(!1);do if(H<0)if(p&1){ot=(p+1|0)/2|0,ot=Bd(y|0,((y|0)<0)<<31>>31|0,ot|0,((ot|0)<0)<<31>>31|0)|0,y=~~(+(y|0)-((+(ot>>>0)+4294967296*+(It()|0))*2+1)),g[m>>2]=y;break}else{ot=(p|0)/2|0,ot=Bd(y|0,((y|0)<0)<<31>>31|0,ot|0,((ot|0)<0)<<31>>31|0)|0,y=~~(+(y|0)-(+(ot>>>0)+4294967296*+(It()|0))*2),g[m>>2]=y;break}while(!1);ot=m+4|0,it<0&&(y=y-((p<<1|1|0)/2|0)|0,g[m>>2]=y,p=0-p|0,g[ot>>2]=p),S=p-y|0,(y|0)<0?(I=0-y|0,g[ot>>2]=S,g[Ct>>2]=I,g[m>>2]=0,p=S,y=0):I=0,(p|0)<0&&(y=y-p|0,g[m>>2]=y,I=I-p|0,g[Ct>>2]=I,g[ot>>2]=0,p=0),k=y-I|0,S=p-I|0,(I|0)<0&&(g[m>>2]=k,g[ot>>2]=S,g[Ct>>2]=0,p=S,y=k,I=0),S=(p|0)<(y|0)?p:y,S=(I|0)<(S|0)?I:S,!((S|0)<=0)&&(g[m>>2]=y-S,g[ot>>2]=p-S,g[Ct>>2]=I-S)}function Fs(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,(m|0)<0&&(y=y-m|0,g[L>>2]=y,k=p+8|0,g[k>>2]=(g[k>>2]|0)-m,g[p>>2]=0,m=0),(y|0)<0?(m=m-y|0,g[p>>2]=m,k=p+8|0,I=(g[k>>2]|0)-y|0,g[k>>2]=I,g[L>>2]=0,y=0):(I=p+8|0,k=I,I=g[I>>2]|0),(I|0)<0&&(m=m-I|0,g[p>>2]=m,y=y-I|0,g[L>>2]=y,g[k>>2]=0,I=0),S=(y|0)<(m|0)?y:m,S=(I|0)<(S|0)?I:S,!((S|0)<=0)&&(g[p>>2]=m-S,g[L>>2]=y-S,g[k>>2]=I-S)}function pu(p,m){p=p|0,m=m|0;var y=0,S=0;S=g[p+8>>2]|0,y=+((g[p+4>>2]|0)-S|0),Tt[m>>3]=+((g[p>>2]|0)-S|0)-y*.5,Tt[m+8>>3]=y*.8660254037844386}function In(p,m,y){p=p|0,m=m|0,y=y|0,g[y>>2]=(g[m>>2]|0)+(g[p>>2]|0),g[y+4>>2]=(g[m+4>>2]|0)+(g[p+4>>2]|0),g[y+8>>2]=(g[m+8>>2]|0)+(g[p+8>>2]|0)}function Kp(p,m,y){p=p|0,m=m|0,y=y|0,g[y>>2]=(g[p>>2]|0)-(g[m>>2]|0),g[y+4>>2]=(g[p+4>>2]|0)-(g[m+4>>2]|0),g[y+8>>2]=(g[p+8>>2]|0)-(g[m+8>>2]|0)}function ca(p,m){p=p|0,m=m|0;var y=0,S=0;y=kc(g[p>>2]|0,m)|0,g[p>>2]=y,y=p+4|0,S=kc(g[y>>2]|0,m)|0,g[y>>2]=S,p=p+8|0,m=kc(g[p>>2]|0,m)|0,g[p>>2]=m}function Ba(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;L=g[p>>2]|0,z=(L|0)<0,S=(g[p+4>>2]|0)-(z?L:0)|0,k=(S|0)<0,I=(k?0-S|0:0)+((g[p+8>>2]|0)-(z?L:0))|0,y=(I|0)<0,p=y?0:I,m=(k?0:S)-(y?I:0)|0,I=(z?0:L)-(k?S:0)-(y?I:0)|0,y=(m|0)<(I|0)?m:I,y=(p|0)<(y|0)?p:y,S=(y|0)>0,p=p-(S?y:0)|0,m=m-(S?y:0)|0;t:do switch(I-(S?y:0)|0){case 0:switch(m|0){case 0:return z=p|0?(p|0)==1?1:7:0,z|0;case 1:return z=p|0?(p|0)==1?3:7:2,z|0;default:break t}case 1:switch(m|0){case 0:return z=p|0?(p|0)==1?5:7:4,z|0;case 1:{if(!p)p=6;else break t;return p|0}default:break t}default:}while(!1);return z=7,z|0}function Ld(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;L=p+8|0,y=g[L>>2]|0,m=(g[p>>2]|0)-y|0,z=p+4|0,y=(g[z>>2]|0)-y|0,S=pn(+((m*3|0)-y|0)/7)|0,g[p>>2]=S,m=pn(+((y<<1)+m|0)/7)|0,g[z>>2]=m,g[L>>2]=0,y=m-S|0,(S|0)<0?(k=0-S|0,g[z>>2]=y,g[L>>2]=k,g[p>>2]=0,m=y,S=0,y=k):y=0,(m|0)<0&&(S=S-m|0,g[p>>2]=S,y=y-m|0,g[L>>2]=y,g[z>>2]=0,m=0),k=S-y|0,I=m-y|0,(y|0)<0?(g[p>>2]=k,g[z>>2]=I,g[L>>2]=0,m=I,I=k,y=0):I=S,S=(m|0)<(I|0)?m:I,S=(y|0)<(S|0)?y:S,!((S|0)<=0)&&(g[p>>2]=I-S,g[z>>2]=m-S,g[L>>2]=y-S)}function fl(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;L=p+8|0,y=g[L>>2]|0,m=(g[p>>2]|0)-y|0,z=p+4|0,y=(g[z>>2]|0)-y|0,S=pn(+((m<<1)+y|0)/7)|0,g[p>>2]=S,m=pn(+((y*3|0)-m|0)/7)|0,g[z>>2]=m,g[L>>2]=0,y=m-S|0,(S|0)<0?(k=0-S|0,g[z>>2]=y,g[L>>2]=k,g[p>>2]=0,m=y,S=0,y=k):y=0,(m|0)<0&&(S=S-m|0,g[p>>2]=S,y=y-m|0,g[L>>2]=y,g[z>>2]=0,m=0),k=S-y|0,I=m-y|0,(y|0)<0?(g[p>>2]=k,g[z>>2]=I,g[L>>2]=0,m=I,I=k,y=0):I=S,S=(m|0)<(I|0)?m:I,S=(y|0)<(S|0)?y:S,!((S|0)<=0)&&(g[p>>2]=I-S,g[z>>2]=m-S,g[L>>2]=y-S)}function Fa(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,z=p+8|0,S=g[z>>2]|0,I=y+(m*3|0)|0,g[p>>2]=I,y=S+(y*3|0)|0,g[L>>2]=y,m=(S*3|0)+m|0,g[z>>2]=m,S=y-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=S,g[z>>2]=m,g[p>>2]=0,y=S,S=0):S=I,(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function uh(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=(m*3|0)+I|0,I=y+(I*3|0)|0,g[p>>2]=I,g[L>>2]=S,m=(y*3|0)+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,I=0):y=S,(y|0)<0&&(I=I-y|0,g[p>>2]=I,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=I-m|0,S=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=S,g[z>>2]=0,I=k,m=0):S=y,y=(S|0)<(I|0)?S:I,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=I-y,g[L>>2]=S-y,g[z>>2]=m-y)}function Jp(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;(m+-1|0)>>>0>=6||(I=(g[15472+(m*12|0)>>2]|0)+(g[p>>2]|0)|0,g[p>>2]=I,z=p+4|0,S=(g[15472+(m*12|0)+4>>2]|0)+(g[z>>2]|0)|0,g[z>>2]=S,L=p+8|0,m=(g[15472+(m*12|0)+8>>2]|0)+(g[L>>2]|0)|0,g[L>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[z>>2]=y,g[L>>2]=m,g[p>>2]=0,S=0):(y=S,S=I),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[L>>2]=m,g[z>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[z>>2]=I,g[L>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[z>>2]=I-y,g[L>>2]=m-y))}function t0(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=m+I|0,I=y+I|0,g[p>>2]=I,g[L>>2]=S,m=y+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,S=0):(y=S,S=I),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function hh(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,S=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,I=S+m|0,g[p>>2]=I,S=y+S|0,g[L>>2]=S,m=y+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,S=0):(y=S,S=I),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function za(p){switch(p=p|0,p|0){case 1:{p=5;break}case 5:{p=4;break}case 4:{p=6;break}case 6:{p=2;break}case 2:{p=3;break}case 3:{p=1;break}default:}return p|0}function ro(p){switch(p=p|0,p|0){case 1:{p=3;break}case 3:{p=2;break}case 2:{p=6;break}case 6:{p=4;break}case 4:{p=5;break}case 5:{p=1;break}default:}return p|0}function Ue(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,z=p+8|0,S=g[z>>2]|0,I=y+(m<<1)|0,g[p>>2]=I,y=S+(y<<1)|0,g[L>>2]=y,m=(S<<1)+m|0,g[z>>2]=m,S=y-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=S,g[z>>2]=m,g[p>>2]=0,y=S,S=0):S=I,(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,I=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=I,g[z>>2]=0,S=k,m=0):I=y,y=(I|0)<(S|0)?I:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=I-y,g[z>>2]=m-y)}function kd(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=(m<<1)+I|0,I=y+(I<<1)|0,g[p>>2]=I,g[L>>2]=S,m=(y<<1)+m|0,g[z>>2]=m,y=S-I|0,(I|0)<0?(m=m-I|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,I=0):y=S,(y|0)<0&&(I=I-y|0,g[p>>2]=I,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=I-m|0,S=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=S,g[z>>2]=0,I=k,m=0):S=y,y=(S|0)<(I|0)?S:I,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=I-y,g[L>>2]=S-y,g[z>>2]=m-y)}function Vl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;return L=(g[p>>2]|0)-(g[m>>2]|0)|0,z=(L|0)<0,S=(g[p+4>>2]|0)-(g[m+4>>2]|0)-(z?L:0)|0,k=(S|0)<0,I=(z?0-L|0:0)+(g[p+8>>2]|0)-(g[m+8>>2]|0)+(k?0-S|0:0)|0,p=(I|0)<0,m=p?0:I,y=(k?0:S)-(p?I:0)|0,I=(z?0:L)-(k?S:0)-(p?I:0)|0,p=(y|0)<(I|0)?y:I,p=(m|0)<(p|0)?m:p,S=(p|0)>0,m=m-(S?p:0)|0,y=y-(S?p:0)|0,p=I-(S?p:0)|0,p=(p|0)>-1?p:0-p|0,y=(y|0)>-1?y:0-y|0,m=(m|0)>-1?m:0-m|0,m=(y|0)>(m|0)?y:m,((p|0)>(m|0)?p:m)|0}function yf(p,m){p=p|0,m=m|0;var y=0;y=g[p+8>>2]|0,g[m>>2]=(g[p>>2]|0)-y,g[m+4>>2]=(g[p+4>>2]|0)-y}function a_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;S=g[p>>2]|0,g[m>>2]=S,p=g[p+4>>2]|0,L=m+4|0,g[L>>2]=p,z=m+8|0,g[z>>2]=0,y=p-S|0,(S|0)<0?(p=0-S|0,g[L>>2]=y,g[z>>2]=p,g[m>>2]=0,S=0):(y=p,p=0),(y|0)<0&&(S=S-y|0,g[m>>2]=S,p=p-y|0,g[z>>2]=p,g[L>>2]=0,y=0),k=S-p|0,I=y-p|0,(p|0)<0?(g[m>>2]=k,g[L>>2]=I,g[z>>2]=0,y=I,I=k,p=0):I=S,S=(y|0)<(I|0)?y:I,S=(p|0)<(S|0)?p:S,!((S|0)<=0)&&(g[m>>2]=I-S,g[L>>2]=y-S,g[z>>2]=p-S)}function Re(p){p=p|0;var m=0,y=0,S=0,I=0;m=p+8|0,I=g[m>>2]|0,y=I-(g[p>>2]|0)|0,g[p>>2]=y,S=p+4|0,p=(g[S>>2]|0)-I|0,g[S>>2]=p,g[m>>2]=0-(p+y)}function e0(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;y=g[p>>2]|0,m=0-y|0,g[p>>2]=m,L=p+8|0,g[L>>2]=0,z=p+4|0,S=g[z>>2]|0,I=S+y|0,(y|0)>0?(g[z>>2]=I,g[L>>2]=y,g[p>>2]=0,m=0,S=I):y=0,(S|0)<0?(k=m-S|0,g[p>>2]=k,y=y-S|0,g[L>>2]=y,g[z>>2]=0,I=k-y|0,m=0-y|0,(y|0)<0?(g[p>>2]=I,g[z>>2]=m,g[L>>2]=0,S=m,y=0):(S=0,I=k)):I=m,m=(S|0)<(I|0)?S:I,m=(y|0)<(m|0)?y:m,!((m|0)<=0)&&(g[p>>2]=I-m,g[z>>2]=S-m,g[L>>2]=y-m)}function r0(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;S=wt,wt=wt+16|0,I=S,Ix(p,m,y,I),o_(I,y+4|0),wt=S}function Ix(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0;if(H=wt,wt=wt+32|0,k=H,jl(p,k),g[y>>2]=0,I=+jr(15888,k),L=+jr(15912,k),L>2]=1,I=L),L=+jr(15936,k),L>2]=2,I=L),L=+jr(15960,k),L>2]=3,I=L),L=+jr(15984,k),L>2]=4,I=L),L=+jr(16008,k),L>2]=5,I=L),L=+jr(16032,k),L>2]=6,I=L),L=+jr(16056,k),L>2]=7,I=L),L=+jr(16080,k),L>2]=8,I=L),L=+jr(16104,k),L>2]=9,I=L),L=+jr(16128,k),L>2]=10,I=L),L=+jr(16152,k),L>2]=11,I=L),L=+jr(16176,k),L>2]=12,I=L),L=+jr(16200,k),L>2]=13,I=L),L=+jr(16224,k),L>2]=14,I=L),L=+jr(16248,k),L>2]=15,I=L),L=+jr(16272,k),L>2]=16,I=L),L=+jr(16296,k),L>2]=17,I=L),L=+jr(16320,k),L>2]=18,I=L),L=+jr(16344,k),L>2]=19,I=L),L=+mf(+(1-I*.5)),L<1e-16){g[S>>2]=0,g[S+4>>2]=0,g[S+8>>2]=0,g[S+12>>2]=0,wt=H;return}if(y=g[y>>2]|0,I=+Tt[16368+(y*24|0)>>3],I=+dh(I-+dh(+Rd(15568+(y<<4)|0,p))),Go(m)|0?z=+dh(I+-.3334731722518321):z=I,I=+go(+L)/.381966011250105,(m|0)>0){k=0;do I=I*2.6457513110645907,k=k+1|0;while((k|0)!=(m|0))}L=+Ur(+z)*I,Tt[S>>3]=L,z=+hi(+z)*I,Tt[S+8>>3]=z,wt=H}function fh(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0;if(k=+cs(p),k<1e-16){m=15568+(m<<4)|0,g[I>>2]=g[m>>2],g[I+4>>2]=g[m+4>>2],g[I+8>>2]=g[m+8>>2],g[I+12>>2]=g[m+12>>2];return}if(L=+qr(+ +Tt[p+8>>3],+ +Tt[p>>3]),(y|0)>0){p=0;do k=k/2.6457513110645907,p=p+1|0;while((p|0)!=(y|0))}S?(k=k/3,y=(Go(y)|0)==0,k=+Sd(+((y?k:k/2.6457513110645907)*.381966011250105))):(k=+Sd(+(k*.381966011250105)),Go(y)|0&&(L=+dh(L+.3334731722518321))),a0(15568+(m<<4)|0,+dh(+Tt[16368+(m*24|0)>>3]-L),k,I)}function l_(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;S=wt,wt=wt+16|0,I=S,pu(p+4|0,I),fh(I,g[p>>2]|0,m,0,y),wt=S}function i0(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0,Ei=0,vn=0,An=0,Or=0;if(vn=wt,wt=wt+272|0,k=vn+256|0,Jt=vn+240|0,Mi=vn,cn=vn+224|0,Ei=vn+208|0,_e=vn+176|0,Nt=vn+160|0,Ze=vn+192|0,Ke=vn+144|0,be=vn+128|0,ze=vn+112|0,Zr=vn+96|0,Gi=vn+80|0,g[k>>2]=m,g[Jt>>2]=g[p>>2],g[Jt+4>>2]=g[p+4>>2],g[Jt+8>>2]=g[p+8>>2],g[Jt+12>>2]=g[p+12>>2],n0(Jt,k,Mi),g[I>>2]=0,Jt=S+y+((S|0)==5&1)|0,(Jt|0)<=(y|0)){wt=vn;return}H=g[k>>2]|0,it=cn+4|0,ot=_e+4|0,Ct=y+5|0,zt=16848+(H<<2)|0,Gt=16928+(H<<2)|0,ee=be+8|0,ie=ze+8|0,Ce=Zr+8|0,Ve=Ei+4|0,z=y;t:for(;;){L=Mi+(((z|0)%5|0)<<4)|0,g[Ei>>2]=g[L>>2],g[Ei+4>>2]=g[L+4>>2],g[Ei+8>>2]=g[L+8>>2],g[Ei+12>>2]=g[L+12>>2];do;while((vf(Ei,H,0,1)|0)==2);if((z|0)>(y|0)&(Go(m)|0)!=0){if(g[_e>>2]=g[Ei>>2],g[_e+4>>2]=g[Ei+4>>2],g[_e+8>>2]=g[Ei+8>>2],g[_e+12>>2]=g[Ei+12>>2],pu(it,Nt),S=g[_e>>2]|0,k=g[17008+(S*80|0)+(g[cn>>2]<<2)>>2]|0,g[_e>>2]=g[18608+(S*80|0)+(k*20|0)>>2],L=g[18608+(S*80|0)+(k*20|0)+16>>2]|0,(L|0)>0){p=0;do t0(ot),p=p+1|0;while((p|0)<(L|0))}switch(L=18608+(S*80|0)+(k*20|0)+4|0,g[Ze>>2]=g[L>>2],g[Ze+4>>2]=g[L+4>>2],g[Ze+8>>2]=g[L+8>>2],ca(Ze,(g[zt>>2]|0)*3|0),In(ot,Ze,ot),Fs(ot),pu(ot,Ke),An=+(g[Gt>>2]|0),Tt[be>>3]=An*3,Tt[ee>>3]=0,Or=An*-1.5,Tt[ze>>3]=Or,Tt[ie>>3]=An*2.598076211353316,Tt[Zr>>3]=Or,Tt[Ce>>3]=An*-2.598076211353316,g[17008+((g[_e>>2]|0)*80|0)+(g[Ei>>2]<<2)>>2]|0){case 1:{p=ze,S=be;break}case 3:{p=Zr,S=ze;break}case 2:{p=be,S=Zr;break}default:{p=12;break t}}Dn(Nt,Ke,S,p,Gi),fh(Gi,g[_e>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1}if((z|0)<(Ct|0)&&(pu(Ve,_e),fh(_e,g[Ei>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1),g[cn>>2]=g[Ei>>2],g[cn+4>>2]=g[Ei+4>>2],g[cn+8>>2]=g[Ei+8>>2],g[cn+12>>2]=g[Ei+12>>2],z=z+1|0,(z|0)>=(Jt|0)){p=3;break}}if((p|0)==3){wt=vn;return}else(p|0)==12&&Ti(22474,22521,581,22531)}function n0(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0;H=wt,wt=wt+128|0,S=H+64|0,I=H,k=S,L=20208,z=k+60|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));k=I,L=20272,z=k+60|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));z=(Go(g[m>>2]|0)|0)==0,S=z?S:I,I=p+4|0,Ue(I),kd(I),Go(g[m>>2]|0)|0&&(uh(I),g[m>>2]=(g[m>>2]|0)+1),g[y>>2]=g[p>>2],m=y+4|0,In(I,S,m),Fs(m),g[y+16>>2]=g[p>>2],m=y+20|0,In(I,S+12|0,m),Fs(m),g[y+32>>2]=g[p>>2],m=y+36|0,In(I,S+24|0,m),Fs(m),g[y+48>>2]=g[p>>2],m=y+52|0,In(I,S+36|0,m),Fs(m),g[y+64>>2]=g[p>>2],y=y+68|0,In(I,S+48|0,y),Fs(y),wt=H}function vf(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0;if(ee=wt,wt=wt+32|0,zt=ee+12|0,z=ee,Gt=p+4|0,Ct=g[16928+(m<<2)>>2]|0,ot=(S|0)!=0,Ct=ot?Ct*3|0:Ct,I=g[Gt>>2]|0,it=p+8|0,L=g[it>>2]|0,ot){if(k=p+12|0,S=g[k>>2]|0,I=L+I+S|0,(I|0)==(Ct|0))return Gt=1,wt=ee,Gt|0;H=k}else H=p+12|0,S=g[H>>2]|0,I=L+I+S|0;if((I|0)<=(Ct|0))return Gt=0,wt=ee,Gt|0;do if((S|0)>0){if(S=g[p>>2]|0,(L|0)>0){k=18608+(S*80|0)+60|0,S=p;break}S=18608+(S*80|0)+40|0,y?(Cd(zt,Ct,0,0),Kp(Gt,zt,z),hh(z),In(z,zt,Gt),k=S,S=p):(k=S,S=p)}else k=18608+((g[p>>2]|0)*80|0)+20|0,S=p;while(!1);if(g[S>>2]=g[k>>2],I=k+16|0,(g[I>>2]|0)>0){S=0;do t0(Gt),S=S+1|0;while((S|0)<(g[I>>2]|0))}return p=k+4|0,g[zt>>2]=g[p>>2],g[zt+4>>2]=g[p+4>>2],g[zt+8>>2]=g[p+8>>2],m=g[16848+(m<<2)>>2]|0,ca(zt,ot?m*3|0:m),In(Gt,zt,Gt),Fs(Gt),ot?S=((g[it>>2]|0)+(g[Gt>>2]|0)+(g[H>>2]|0)|0)==(Ct|0)?1:2:S=2,Gt=S,wt=ee,Gt|0}function s0(p,m){p=p|0,m=m|0;var y=0;do y=vf(p,m,0,1)|0;while((y|0)==2);return y|0}function tA(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0;if(Zr=wt,wt=wt+240|0,k=Zr+224|0,Ze=Zr+208|0,Ke=Zr,be=Zr+192|0,ze=Zr+176|0,Ce=Zr+160|0,Ve=Zr+144|0,Jt=Zr+128|0,_e=Zr+112|0,Nt=Zr+96|0,g[k>>2]=m,g[Ze>>2]=g[p>>2],g[Ze+4>>2]=g[p+4>>2],g[Ze+8>>2]=g[p+8>>2],g[Ze+12>>2]=g[p+12>>2],eA(Ze,k,Ke),g[I>>2]=0,ie=S+y+((S|0)==6&1)|0,(ie|0)<=(y|0)){wt=Zr;return}H=g[k>>2]|0,it=y+6|0,ot=16928+(H<<2)|0,Ct=Ve+8|0,zt=Jt+8|0,Gt=_e+8|0,ee=be+4|0,L=0,z=y,S=-1;t:for(;;){if(k=(z|0)%6|0,p=Ke+(k<<4)|0,g[be>>2]=g[p>>2],g[be+4>>2]=g[p+4>>2],g[be+8>>2]=g[p+8>>2],g[be+12>>2]=g[p+12>>2],p=L,L=vf(be,H,0,1)|0,(z|0)>(y|0)&(Go(m)|0)!=0&&(p|0)!=1&&(g[be>>2]|0)!=(S|0)){switch(pu(Ke+(((k+5|0)%6|0)<<4)+4|0,ze),pu(Ke+(k<<4)+4|0,Ce),Gi=+(g[ot>>2]|0),Tt[Ve>>3]=Gi*3,Tt[Ct>>3]=0,Mi=Gi*-1.5,Tt[Jt>>3]=Mi,Tt[zt>>3]=Gi*2.598076211353316,Tt[_e>>3]=Mi,Tt[Gt>>3]=Gi*-2.598076211353316,k=g[Ze>>2]|0,g[17008+(k*80|0)+(((S|0)==(k|0)?g[be>>2]|0:S)<<2)>>2]|0){case 1:{p=Jt,S=Ve;break}case 3:{p=_e,S=Jt;break}case 2:{p=Ve,S=_e;break}default:{p=8;break t}}Dn(ze,Ce,S,p,Nt),!(Wo(ze,Nt)|0)&&!(Wo(Ce,Nt)|0)&&(fh(Nt,g[Ze>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1)}if((z|0)<(it|0)&&(pu(ee,ze),fh(ze,g[be>>2]|0,H,1,I+8+(g[I>>2]<<4)|0),g[I>>2]=(g[I>>2]|0)+1),z=z+1|0,(z|0)>=(ie|0)){p=3;break}else S=g[be>>2]|0}if((p|0)==3){wt=Zr;return}else(p|0)==8&&Ti(22557,22521,746,22602)}function eA(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0;H=wt,wt=wt+160|0,S=H+80|0,I=H,k=S,L=20336,z=k+72|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));k=I,L=20416,z=k+72|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));z=(Go(g[m>>2]|0)|0)==0,S=z?S:I,I=p+4|0,Ue(I),kd(I),Go(g[m>>2]|0)|0&&(uh(I),g[m>>2]=(g[m>>2]|0)+1),g[y>>2]=g[p>>2],m=y+4|0,In(I,S,m),Fs(m),g[y+16>>2]=g[p>>2],m=y+20|0,In(I,S+12|0,m),Fs(m),g[y+32>>2]=g[p>>2],m=y+36|0,In(I,S+24|0,m),Fs(m),g[y+48>>2]=g[p>>2],m=y+52|0,In(I,S+36|0,m),Fs(m),g[y+64>>2]=g[p>>2],m=y+68|0,In(I,S+48|0,m),Fs(m),g[y+80>>2]=g[p>>2],y=y+84|0,In(I,S+60|0,y),Fs(y),wt=H}function dh(p){p=+p;var m=0;return m=p<0?p+6.283185307179586:p,+(p>=6.283185307179586?m+-6.283185307179586:m)}function ls(p,m){return p=p|0,m=m|0,+li(+(+Tt[p>>3]-+Tt[m>>3]))<17453292519943298e-27?(m=+li(+(+Tt[p+8>>3]-+Tt[m+8>>3]))<17453292519943298e-27,m|0):(m=0,m|0)}function Au(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;return I=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((I-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+I)*+Ur(+S)*y),+(+qr(+ +_n(+y),+ +_n(+(1-y)))*2)}function Rc(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;return I=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((I-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+I)*+Ur(+S)*y),+(+qr(+ +_n(+y),+ +_n(+(1-y)))*2*6371.007180918475)}function o0(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;return I=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((I-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+I)*+Ur(+S)*y),+(+qr(+ +_n(+y),+ +_n(+(1-y)))*2*6371.007180918475*1e3)}function Rd(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;return k=+Tt[m>>3],S=+Ur(+k),I=+Tt[m+8>>3]-+Tt[p+8>>3],L=S*+hi(+I),y=+Tt[p>>3],+ +qr(+L,+(+hi(+k)*+Ur(+y)-+Ur(+I)*(S*+hi(+y))))}function a0(p,m,y,S){p=p|0,m=+m,y=+y,S=S|0;var I=0,k=0,L=0,z=0;if(y<1e-16){g[S>>2]=g[p>>2],g[S+4>>2]=g[p+4>>2],g[S+8>>2]=g[p+8>>2],g[S+12>>2]=g[p+12>>2];return}k=m<0?m+6.283185307179586:m,k=m>=6.283185307179586?k+-6.283185307179586:k;do if(k<1e-16)m=+Tt[p>>3]+y,Tt[S>>3]=m,I=S;else{if(I=+li(+(k+-3.141592653589793))<1e-16,m=+Tt[p>>3],I){m=m-y,Tt[S>>3]=m,I=S;break}if(L=+Ur(+y),y=+hi(+y),m=L*+hi(+m)+ +Ur(+k)*(y*+Ur(+m)),m=m>1?1:m,m=+t_(+(m<-1?-1:m)),Tt[S>>3]=m,+li(+(m+-1.5707963267948966))<1e-16){Tt[S>>3]=1.5707963267948966,Tt[S+8>>3]=0;return}if(+li(+(m+1.5707963267948966))<1e-16){Tt[S>>3]=-1.5707963267948966,Tt[S+8>>3]=0;return}if(z=+Ur(+m),k=y*+hi(+k)/z,y=+Tt[p>>3],m=(L-+hi(+m)*+hi(+y))/+Ur(+y)/z,L=k>1?1:k,m=m>1?1:m,m=+Tt[p+8>>3]+ +qr(+(L<-1?-1:L),+(m<-1?-1:m)),m>3.141592653589793)do m=m+-6.283185307179586;while(m>3.141592653589793);if(m<-3.141592653589793)do m=m+6.283185307179586;while(m<-3.141592653589793);Tt[S+8>>3]=m;return}while(!1);if(+li(+(m+-1.5707963267948966))<1e-16){Tt[I>>3]=1.5707963267948966,Tt[S+8>>3]=0;return}if(+li(+(m+1.5707963267948966))<1e-16){Tt[I>>3]=-1.5707963267948966,Tt[S+8>>3]=0;return}if(m=+Tt[p+8>>3],m>3.141592653589793)do m=m+-6.283185307179586;while(m>3.141592653589793);if(m<-3.141592653589793)do m=m+6.283185307179586;while(m<-3.141592653589793);Tt[S+8>>3]=m}function c_(p){return p=p|0,+ +Tt[20496+(p<<3)>>3]}function ua(p){return p=p|0,+ +Tt[20624+(p<<3)>>3]}function ln(p){return p=p|0,+ +Tt[20752+(p<<3)>>3]}function rA(p){return p=p|0,+ +Tt[20880+(p<<3)>>3]}function l0(p){p=p|0;var m=0;return m=21008+(p<<3)|0,p=g[m>>2]|0,$e(g[m+4>>2]|0),p|0}function ph(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;return zt=+Tt[m>>3],ot=+Tt[p>>3],H=+hi(+((zt-ot)*.5)),k=+Tt[m+8>>3],it=+Tt[p+8>>3],L=+hi(+((k-it)*.5)),z=+Ur(+ot),Ct=+Ur(+zt),L=H*H+L*(Ct*z*L),L=+qr(+ +_n(+L),+ +_n(+(1-L)))*2,H=+Tt[y>>3],zt=+hi(+((H-zt)*.5)),S=+Tt[y+8>>3],k=+hi(+((S-k)*.5)),I=+Ur(+H),k=zt*zt+k*(Ct*I*k),k=+qr(+ +_n(+k),+ +_n(+(1-k)))*2,H=+hi(+((ot-H)*.5)),S=+hi(+((it-S)*.5)),S=H*H+S*(z*I*S),S=+qr(+ +_n(+S),+ +_n(+(1-S)))*2,I=(L+k+S)*.5,+(+Sd(+ +_n(+(+go(+(I*.5))*+go(+((I-L)*.5))*+go(+((I-k)*.5))*+go(+((I-S)*.5)))))*4)}function u_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,I=k,l(p,m,S),d(p,m,I),m=g[I>>2]|0,(m|0)<=0)return y=0,wt=k,+y;if(y=+ph(I+8|0,I+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)==1)return wt=k,+y;p=1;do L=p,p=p+1|0,y=y+ +ph(I+8+(L<<4)|0,I+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0));return wt=k,+y}function h_(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,I=k,l(p,m,S),d(p,m,I),m=g[I>>2]|0,(m|0)>0){if(y=+ph(I+8|0,I+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)!=1){p=1;do L=p,p=p+1|0,y=y+ +ph(I+8+(L<<4)|0,I+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0))}}else y=0;return wt=k,+(y*6371.007180918475*6371.007180918475)}function Cx(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,I=k,l(p,m,S),d(p,m,I),m=g[I>>2]|0,(m|0)>0){if(y=+ph(I+8|0,I+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)!=1){p=1;do L=p,p=p+1|0,y=y+ +ph(I+8+(L<<4)|0,I+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0))}}else y=0;return wt=k,+(y*6371.007180918475*6371.007180918475*1e3*1e3)}function _o(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return I=0,wt=L,+I;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],I=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=I,I=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((I-z)*.5)),z=it*it+z*(+Ur(+S)*+Ur(+H)*z),y=y+ +qr(+ +_n(+z),+ +_n(+(1-z)))*2;while((p|0)<(m|0));return wt=L,+y}function iA(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return I=0,wt=L,+I;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],I=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=I,I=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((I-z)*.5)),z=it*it+z*(+Ur(+H)*+Ur(+S)*z),y=y+ +qr(+ +_n(+z),+ +_n(+(1-z)))*2;while((p|0)!=(m|0));return it=y*6371.007180918475,wt=L,+it}function rr(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return I=0,wt=L,+I;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],I=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=I,I=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((I-z)*.5)),z=it*it+z*(+Ur(+H)*+Ur(+S)*z),y=y+ +qr(+ +_n(+z),+ +_n(+(1-z)))*2;while((p|0)!=(m|0));return it=y*6371.007180918475*1e3,wt=L,+it}function fr(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,52)|0,It()|0,m&15|0}function xf(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,45)|0,It()|0,m&127|0}function nA(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0;if(!(!0&(m&-16777216|0)==134217728)||(L=me(p|0,m|0,45)|0,It()|0,L=L&127,L>>>0>121))return m=0,m|0;y=me(p|0,m|0,52)|0,It()|0,y=y&15;do if(y|0){for(I=1,S=0;;){if(k=me(p|0,m|0,(15-I|0)*3|0)|0,It()|0,k=k&7,(k|0)!=0&(S^1))if((k|0)==1&(fi(L)|0)!=0){z=0,S=13;break}else S=1;if((k|0)==7){z=0,S=13;break}if(I>>>0>>0)I=I+1|0;else{S=9;break}}if((S|0)==9){if((y|0)==15)z=1;else break;return z|0}else if((S|0)==13)return z|0}while(!1);for(;;){if(z=me(p|0,m|0,(14-y|0)*3|0)|0,It()|0,!((z&7|0)==7&!0)){z=0,S=13;break}if(y>>>0<14)y=y+1|0;else{z=1,S=13;break}}return(S|0)==13?z|0:0}function Dd(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,(S|0)>=(y|0)){if((S|0)!=(y|0))if(y>>>0<=15){if(I=Le(y|0,0,52)|0,p=I|p,m=It()|0|m&-15728641,(S|0)>(y|0))do I=Le(7,0,(14-y|0)*3|0)|0,y=y+1|0,p=I|p,m=It()|0|m;while((y|0)<(S|0))}else m=0,p=0}else m=0,p=0;return $e(m|0),p|0}function Gn(p,m,y){return p=p|0,m=m|0,y=y|0,p=me(p|0,m|0,52)|0,It()|0,p=p&15,(y|0)<16&(p|0)<=(y|0)?(y=We(7,y-p|0)|0,y|0):(y=0,y|0)}function io(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(L=me(p|0,m|0,52)|0,It()|0,L=L&15,!!((y|0)<16&(L|0)<=(y|0))){if((L|0)==(y|0)){y=S,g[y>>2]=p,g[y+4>>2]=m;return}if(H=We(7,y-L|0)|0,it=(H|0)/7|0,z=me(p|0,m|0,45)|0,It()|0,!(fi(z&127)|0))k=0;else{t:do if(!L)I=0;else for(k=1;;){if(I=me(p|0,m|0,(15-k|0)*3|0)|0,It()|0,I=I&7,I|0)break t;if(k>>>0>>0)k=k+1|0;else{I=0;break}}while(!1);k=(I|0)==0}if(ot=Le(L+1|0,0,52)|0,I=It()|0|m&-15728641,z=(14-L|0)*3|0,m=Le(7,0,z|0)|0,m=(ot|p)&~m,L=I&~(It()|0),io(m,L,y,S),I=S+(it<<3)|0,!k){ot=Le(1,0,z|0)|0,io(ot|m,It()|0|L,y,I),ot=I+(it<<3)|0,H=Le(2,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(3,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(4,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(5,0,z|0)|0,io(H|m,It()|0|L,y,ot),H=Le(6,0,z|0)|0,io(H|m,It()|0|L,y,ot+(it<<3)|0);return}k=I+(it<<3)|0,(H|0)>6&&(H=I+8|0,ot=(k>>>0>H>>>0?k:H)+-1+(0-I)|0,Dc(I|0,0,ot+8&-8|0)|0,I=H+(ot>>>3<<3)|0),ot=Le(2,0,z|0)|0,io(ot|m,It()|0|L,y,I),ot=I+(it<<3)|0,H=Le(3,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(4,0,z|0)|0,io(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(5,0,z|0)|0,io(H|m,It()|0|L,y,ot),H=Le(6,0,z|0)|0,io(H|m,It()|0|L,y,ot+(it<<3)|0)}}function Ui(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;if(I=me(p|0,m|0,45)|0,It()|0,!(fi(I&127)|0))return I=0,I|0;I=me(p|0,m|0,52)|0,It()|0,I=I&15;t:do if(!I)y=0;else for(S=1;;){if(y=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,y=y&7,y|0)break t;if(S>>>0>>0)S=S+1|0;else{y=0;break}}while(!1);return I=(y|0)==0&1,I|0}function f_(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,(y|0)<16&(S|0)<=(y|0)){if((S|0)!=(y|0)&&(I=Le(y|0,0,52)|0,p=I|p,m=It()|0|m&-15728641,(S|0)<(y|0)))do I=Le(7,0,(14-S|0)*3|0)|0,S=S+1|0,p=p&~I,m=m&~(It()|0);while((S|0)<(y|0))}else m=0,p=0;return $e(m|0),p|0}function Ah(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0;if(!y)return be=0,be|0;if(I=p,S=g[I>>2]|0,I=g[I+4>>2]|0,!0&(I&15728640|0)==0){if((y|0)<=0||(be=m,g[be>>2]=S,g[be+4>>2]=I,(y|0)==1))return be=0,be|0;S=1;do Ze=p+(S<<3)|0,Ke=g[Ze+4>>2]|0,be=m+(S<<3)|0,g[be>>2]=g[Ze>>2],g[be+4>>2]=Ke,S=S+1|0;while((S|0)!=(y|0));return S=0,S|0}if(Ze=y<<3,Ke=no(Ze)|0,!Ke)return be=-3,be|0;if(Ua(Ke|0,p|0,Ze|0)|0,Nt=Na(y,8)|0,!Nt)return Gr(Ke),be=-3,be|0;S=y;t:for(;;){L=Ke,ot=g[L>>2]|0,L=g[L+4>>2]|0,Jt=me(ot|0,L|0,52)|0,It()|0,Jt=Jt&15,_e=Jt+-1|0,Ve=(S|0)>0;e:do if(Ve){if(Ce=((S|0)<0)<<31>>31,ee=Le(_e|0,0,52)|0,ie=It()|0,_e>>>0>15)for(I=0,p=ot,y=L;;){if(!((p|0)==0&(y|0)==0)){if(k=me(p|0,y|0,52)|0,It()|0,k=k&15,z=(k|0)<(_e|0),k=(k|0)==(_e|0),it=z?0:k?p:0,p=z?0:k?y:0,y=qo(it|0,p|0,S|0,Ce|0)|0,It()|0,k=Nt+(y<<3)|0,z=k,H=g[z>>2]|0,z=g[z+4>>2]|0,(H|0)==0&(z|0)==0)y=it;else for(ee=0,Gt=y,zt=z,y=it;;){if((ee|0)>(S|0)){be=41;break t}if((H|0)==(y|0)&(zt&-117440513|0)==(p|0)){it=me(H|0,zt|0,56)|0,It()|0,it=it&7,Ct=it+1|0,ie=me(H|0,zt|0,45)|0,It()|0;r:do if(!(fi(ie&127)|0))z=7;else{if(H=me(H|0,zt|0,52)|0,It()|0,H=H&15,!H){z=6;break}for(z=1;;){if(ie=Le(7,0,(15-z|0)*3|0)|0,!((ie&y|0)==0&((It()|0)&p|0)==0)){z=7;break r}if(z>>>0>>0)z=z+1|0;else{z=6;break}}}while(!1);if((it+2|0)>>>0>z>>>0){be=51;break t}ie=Le(Ct|0,0,56)|0,p=It()|0|p&-117440513,z=k,g[z>>2]=0,g[z+4>>2]=0,z=Gt,y=ie|y}else z=(Gt+1|0)%(S|0)|0;if(k=Nt+(z<<3)|0,zt=k,H=g[zt>>2]|0,zt=g[zt+4>>2]|0,(H|0)==0&(zt|0)==0)break;ee=ee+1|0,Gt=z}ie=k,g[ie>>2]=y,g[ie+4>>2]=p}if(I=I+1|0,(I|0)>=(S|0))break e;y=Ke+(I<<3)|0,p=g[y>>2]|0,y=g[y+4>>2]|0}for(I=0,p=ot,y=L;;){if(!((p|0)==0&(y|0)==0)){if(z=me(p|0,y|0,52)|0,It()|0,z=z&15,(z|0)>=(_e|0)){if((z|0)!=(_e|0)&&(p=p|ee,y=y&-15728641|ie,z>>>0>=Jt>>>0)){k=_e;do Gt=Le(7,0,(14-k|0)*3|0)|0,k=k+1|0,p=Gt|p,y=It()|0|y;while(k>>>0>>0)}}else p=0,y=0;if(z=qo(p|0,y|0,S|0,Ce|0)|0,It()|0,k=Nt+(z<<3)|0,H=k,it=g[H>>2]|0,H=g[H+4>>2]|0,!((it|0)==0&(H|0)==0))for(Gt=0;;){if((Gt|0)>(S|0)){be=41;break t}if((it|0)==(p|0)&(H&-117440513|0)==(y|0)){Ct=me(it|0,H|0,56)|0,It()|0,Ct=Ct&7,zt=Ct+1|0,ze=me(it|0,H|0,45)|0,It()|0;r:do if(!(fi(ze&127)|0))H=7;else{if(it=me(it|0,H|0,52)|0,It()|0,it=it&15,!it){H=6;break}for(H=1;;){if(ze=Le(7,0,(15-H|0)*3|0)|0,!((ze&p|0)==0&((It()|0)&y|0)==0)){H=7;break r}if(H>>>0>>0)H=H+1|0;else{H=6;break}}}while(!1);if((Ct+2|0)>>>0>H>>>0){be=51;break t}ze=Le(zt|0,0,56)|0,y=It()|0|y&-117440513,zt=k,g[zt>>2]=0,g[zt+4>>2]=0,p=ze|p}else z=(z+1|0)%(S|0)|0;if(k=Nt+(z<<3)|0,H=k,it=g[H>>2]|0,H=g[H+4>>2]|0,(it|0)==0&(H|0)==0)break;Gt=Gt+1|0}ze=k,g[ze>>2]=p,g[ze+4>>2]=y}if(I=I+1|0,(I|0)>=(S|0))break e;y=Ke+(I<<3)|0,p=g[y>>2]|0,y=g[y+4>>2]|0}}while(!1);if((S+5|0)>>>0<11){be=99;break}if(ie=Na((S|0)/6|0,8)|0,!ie){be=58;break}e:do if(Ve){Gt=0,zt=0;do{if(z=Nt+(Gt<<3)|0,p=z,I=g[p>>2]|0,p=g[p+4>>2]|0,!((I|0)==0&(p|0)==0)){H=me(I|0,p|0,56)|0,It()|0,H=H&7,y=H+1|0,it=p&-117440513,ze=me(I|0,p|0,45)|0,It()|0;r:do if(fi(ze&127)|0){if(Ct=me(I|0,p|0,52)|0,It()|0,Ct=Ct&15,Ct|0)for(k=1;;){if(ze=Le(7,0,(15-k|0)*3|0)|0,!((I&ze|0)==0&(it&(It()|0)|0)==0))break r;if(k>>>0>>0)k=k+1|0;else break}p=Le(y|0,0,56)|0,I=p|I,p=It()|0|it,y=z,g[y>>2]=I,g[y+4>>2]=p,y=H+2|0}while(!1);(y|0)==7&&(ze=ie+(zt<<3)|0,g[ze>>2]=I,g[ze+4>>2]=p&-117440513,zt=zt+1|0)}Gt=Gt+1|0}while((Gt|0)!=(S|0));if(Ve){if(ee=((S|0)<0)<<31>>31,Ct=Le(_e|0,0,52)|0,Gt=It()|0,_e>>>0>15)for(p=0,I=0;;){do if(!((ot|0)==0&(L|0)==0)){for(H=me(ot|0,L|0,52)|0,It()|0,H=H&15,k=(H|0)<(_e|0),H=(H|0)==(_e|0),z=k?0:H?ot:0,H=k?0:H?L:0,k=qo(z|0,H|0,S|0,ee|0)|0,It()|0,y=0;;){if((y|0)>(S|0)){be=98;break t}if(ze=Nt+(k<<3)|0,it=g[ze+4>>2]|0,(it&-117440513|0)==(H|0)&&(g[ze>>2]|0)==(z|0)){be=70;break}if(k=(k+1|0)%(S|0)|0,ze=Nt+(k<<3)|0,(g[ze>>2]|0)==(z|0)&&(g[ze+4>>2]|0)==(H|0))break;y=y+1|0}if((be|0)==70&&(be=0,!0&(it&117440512|0)==100663296))break;ze=m+(I<<3)|0,g[ze>>2]=ot,g[ze+4>>2]=L,I=I+1|0}while(!1);if(p=p+1|0,(p|0)>=(S|0)){S=zt;break e}L=Ke+(p<<3)|0,ot=g[L>>2]|0,L=g[L+4>>2]|0}for(p=0,I=0;;){do if(!((ot|0)==0&(L|0)==0)){if(H=me(ot|0,L|0,52)|0,It()|0,H=H&15,(H|0)>=(_e|0))if((H|0)!=(_e|0))if(y=ot|Ct,k=L&-15728641|Gt,H>>>0>>0)H=k;else{z=_e;do ze=Le(7,0,(14-z|0)*3|0)|0,z=z+1|0,y=ze|y,k=It()|0|k;while(z>>>0>>0);H=k}else y=ot,H=L;else y=0,H=0;for(z=qo(y|0,H|0,S|0,ee|0)|0,It()|0,k=0;;){if((k|0)>(S|0)){be=98;break t}if(ze=Nt+(z<<3)|0,it=g[ze+4>>2]|0,(it&-117440513|0)==(H|0)&&(g[ze>>2]|0)==(y|0)){be=93;break}if(z=(z+1|0)%(S|0)|0,ze=Nt+(z<<3)|0,(g[ze>>2]|0)==(y|0)&&(g[ze+4>>2]|0)==(H|0))break;k=k+1|0}if((be|0)==93&&(be=0,!0&(it&117440512|0)==100663296))break;ze=m+(I<<3)|0,g[ze>>2]=ot,g[ze+4>>2]=L,I=I+1|0}while(!1);if(p=p+1|0,(p|0)>=(S|0)){S=zt;break e}L=Ke+(p<<3)|0,ot=g[L>>2]|0,L=g[L+4>>2]|0}}else I=0,S=zt}else I=0,S=0;while(!1);if(Dc(Nt|0,0,Ze|0)|0,Ua(Ke|0,ie|0,S<<3|0)|0,Gr(ie),S)m=m+(I<<3)|0;else break}return(be|0)==41?(Gr(Ke),Gr(Nt),ze=-1,ze|0):(be|0)==51?(Gr(Ke),Gr(Nt),ze=-2,ze|0):(be|0)==58?(Gr(Ke),Gr(Nt),ze=-3,ze|0):(be|0)==98?(Gr(ie),Gr(Ke),Gr(Nt),ze=-1,ze|0):((be|0)==99&&Ua(m|0,Ke|0,S<<3|0)|0,Gr(Ke),Gr(Nt),ze=0,ze|0)}function Cn(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0;if((m|0)<=0)return I=0,I|0;if((I|0)>=16){for(k=0;;){if(ot=p+(k<<3)|0,!((g[ot>>2]|0)==0&(g[ot+4>>2]|0)==0)){k=14;break}if(k=k+1|0,(k|0)>=(m|0)){L=0,k=16;break}}if((k|0)==14)return((S|0)>0?-2:-1)|0;if((k|0)==16)return L|0}k=0,ot=0;t:for(;;){it=p+(ot<<3)|0,z=it,L=g[z>>2]|0,z=g[z+4>>2]|0;do if(!((L|0)==0&(z|0)==0)){if((k|0)>=(S|0)){L=-1,k=16;break t}if(H=me(L|0,z|0,52)|0,It()|0,H=H&15,(H|0)>(I|0)){L=-2,k=16;break t}if((H|0)==(I|0)){it=y+(k<<3)|0,g[it>>2]=L,g[it+4>>2]=z,k=k+1|0;break}if(L=(We(7,I-H|0)|0)+k|0,(L|0)>(S|0)){L=-1,k=16;break t}io(g[it>>2]|0,g[it+4>>2]|0,I,y+(k<<3)|0),k=L}while(!1);if(ot=ot+1|0,(ot|0)>=(m|0)){L=0,k=16;break}}return(k|0)==16?L|0:0}function yn(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if((m|0)<=0)return y=0,y|0;if((y|0)>=16){for(S=0;;){if(L=p+(S<<3)|0,!((g[L>>2]|0)==0&(g[L+4>>2]|0)==0)){S=-1,I=13;break}if(S=S+1|0,(S|0)>=(m|0)){S=0,I=13;break}}if((I|0)==13)return S|0}S=0,L=0;t:for(;;){I=p+(L<<3)|0,k=g[I>>2]|0,I=g[I+4>>2]|0;do if(!((k|0)==0&(I|0)==0)){if(I=me(k|0,I|0,52)|0,It()|0,I=I&15,(I|0)>(y|0)){S=-1,I=13;break t}if((I|0)==(y|0)){S=S+1|0;break}else{S=(We(7,y-I|0)|0)+S|0;break}}while(!1);if(L=L+1|0,(L|0)>=(m|0)){I=13;break}}return(I|0)==13?S|0:0}function bf(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,52)|0,It()|0,m&1|0}function Ms(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;if(I=me(p|0,m|0,52)|0,It()|0,I=I&15,!I)return I=0,I|0;for(S=1;;){if(y=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,y=y&7,y|0){S=5;break}if(S>>>0>>0)S=S+1|0;else{y=0,S=5;break}}return(S|0)==5?y|0:0}function mh(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(H=me(p|0,m|0,52)|0,It()|0,H=H&15,!H)return z=m,H=p,$e(z|0),H|0;for(z=1,y=0;;){k=(15-z|0)*3|0,S=Le(7,0,k|0)|0,I=It()|0,L=me(p|0,m|0,k|0)|0,It()|0,k=Le(za(L&7)|0,0,k|0)|0,L=It()|0,p=k|p&~S,m=L|m&~I;t:do if(!y)if((k&S|0)==0&(L&I|0)==0)y=0;else if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)y=1;else{y=1;e:for(;;){switch(L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,L&7){case 1:break e;case 0:break;default:{y=1;break t}}if(y>>>0>>0)y=y+1|0;else{y=1;break t}}for(y=1;;)if(L=(15-y|0)*3|0,I=me(p|0,m|0,L|0)|0,It()|0,k=Le(7,0,L|0)|0,m=m&~(It()|0),L=Le(za(I&7)|0,0,L|0)|0,p=p&~k|L,m=m|(It()|0),y>>>0>>0)y=y+1|0;else{y=1;break}}while(!1);if(z>>>0>>0)z=z+1|0;else break}return $e(m|0),p|0}function jo(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return y=m,S=p,$e(y|0),S|0;for(y=1;k=(15-y|0)*3|0,L=me(p|0,m|0,k|0)|0,It()|0,I=Le(7,0,k|0)|0,m=m&~(It()|0),k=Le(za(L&7)|0,0,k|0)|0,p=k|p&~I,m=It()|0|m,y>>>0>>0;)y=y+1|0;return $e(m|0),p|0}function c0(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(H=me(p|0,m|0,52)|0,It()|0,H=H&15,!H)return z=m,H=p,$e(z|0),H|0;for(z=1,y=0;;){k=(15-z|0)*3|0,S=Le(7,0,k|0)|0,I=It()|0,L=me(p|0,m|0,k|0)|0,It()|0,k=Le(ro(L&7)|0,0,k|0)|0,L=It()|0,p=k|p&~S,m=L|m&~I;t:do if(!y)if((k&S|0)==0&(L&I|0)==0)y=0;else if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)y=1;else{y=1;e:for(;;){switch(L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,L&7){case 1:break e;case 0:break;default:{y=1;break t}}if(y>>>0>>0)y=y+1|0;else{y=1;break t}}for(y=1;;)if(I=(15-y|0)*3|0,k=Le(7,0,I|0)|0,L=m&~(It()|0),m=me(p|0,m|0,I|0)|0,It()|0,m=Le(ro(m&7)|0,0,I|0)|0,p=p&~k|m,m=L|(It()|0),y>>>0>>0)y=y+1|0;else{y=1;break}}while(!1);if(z>>>0>>0)z=z+1|0;else break}return $e(m|0),p|0}function Od(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return y=m,S=p,$e(y|0),S|0;for(y=1;L=(15-y|0)*3|0,k=Le(7,0,L|0)|0,I=m&~(It()|0),m=me(p|0,m|0,L|0)|0,It()|0,m=Le(ro(m&7)|0,0,L|0)|0,p=m|p&~k,m=It()|0|I,y>>>0>>0;)y=y+1|0;return $e(m|0),p|0}function wf(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(H=wt,wt=wt+64|0,z=H+40|0,S=H+24|0,I=H+12|0,k=H,Le(m|0,0,52)|0,y=It()|0|134225919,!m)return(g[p+4>>2]|0)>2||(g[p+8>>2]|0)>2||(g[p+12>>2]|0)>2?(L=0,z=0,$e(L|0),wt=H,z|0):(Le(_f(p)|0,0,45)|0,L=It()|0|y,z=-1,$e(L|0),wt=H,z|0);if(g[z>>2]=g[p>>2],g[z+4>>2]=g[p+4>>2],g[z+8>>2]=g[p+8>>2],g[z+12>>2]=g[p+12>>2],L=z+4|0,(m|0)>0)for(p=-1;g[S>>2]=g[L>>2],g[S+4>>2]=g[L+4>>2],g[S+8>>2]=g[L+8>>2],m&1?(Ld(L),g[I>>2]=g[L>>2],g[I+4>>2]=g[L+4>>2],g[I+8>>2]=g[L+8>>2],Fa(I)):(fl(L),g[I>>2]=g[L>>2],g[I+4>>2]=g[L+4>>2],g[I+8>>2]=g[L+8>>2],uh(I)),Kp(S,I,k),Fs(k),ot=(15-m|0)*3|0,it=Le(7,0,ot|0)|0,y=y&~(It()|0),ot=Le(Ba(k)|0,0,ot|0)|0,p=ot|p&~it,y=It()|0|y,(m|0)>1;)m=m+-1|0;else p=-1;t:do if((g[L>>2]|0)<=2&&(g[z+8>>2]|0)<=2&&(g[z+12>>2]|0)<=2){if(S=_f(z)|0,m=Le(S|0,0,45)|0,m=m|p,p=It()|0|y&-1040385,k=Qp(z)|0,!(fi(S)|0)){if((k|0)<=0)break;for(I=0;;){if(S=me(m|0,p|0,52)|0,It()|0,S=S&15,S)for(y=1;ot=(15-y|0)*3|0,z=me(m|0,p|0,ot|0)|0,It()|0,it=Le(7,0,ot|0)|0,p=p&~(It()|0),ot=Le(za(z&7)|0,0,ot|0)|0,m=m&~it|ot,p=p|(It()|0),y>>>0>>0;)y=y+1|0;if(I=I+1|0,(I|0)==(k|0))break t}}I=me(m|0,p|0,52)|0,It()|0,I=I&15;e:do if(I){y=1;r:for(;;){switch(ot=me(m|0,p|0,(15-y|0)*3|0)|0,It()|0,ot&7){case 1:break r;case 0:break;default:break e}if(y>>>0>>0)y=y+1|0;else break e}if(lh(S,g[z>>2]|0)|0)for(y=1;z=(15-y|0)*3|0,it=Le(7,0,z|0)|0,ot=p&~(It()|0),p=me(m|0,p|0,z|0)|0,It()|0,p=Le(ro(p&7)|0,0,z|0)|0,m=m&~it|p,p=ot|(It()|0),y>>>0>>0;)y=y+1|0;else for(y=1;ot=(15-y|0)*3|0,z=me(m|0,p|0,ot|0)|0,It()|0,it=Le(7,0,ot|0)|0,p=p&~(It()|0),ot=Le(za(z&7)|0,0,ot|0)|0,m=m&~it|ot,p=p|(It()|0),y>>>0>>0;)y=y+1|0}while(!1);if((k|0)>0){y=0;do m=mh(m,p)|0,p=It()|0,y=y+1|0;while((y|0)!=(k|0))}}else m=0,p=0;while(!1);return it=p,ot=m,$e(it|0),wt=H,ot|0}function Go(p){return p=p|0,(p|0)%2|0|0}function sA(p,m){p=p|0,m=m|0;var y=0,S=0;return S=wt,wt=wt+16|0,y=S,m>>>0<=15&&(g[p+4>>2]&2146435072|0)!=2146435072&&(g[p+8+4>>2]&2146435072|0)!=2146435072?(r0(p,m,y),m=wf(y,m)|0,p=It()|0):(p=0,m=0),$e(p|0),wt=S,m|0}function xi(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if(I=y+4|0,k=me(p|0,m|0,52)|0,It()|0,k=k&15,L=me(p|0,m|0,45)|0,It()|0,S=(k|0)==0,fi(L&127)|0){if(S)return L=1,L|0;S=1}else{if(S)return L=0,L|0;!(g[I>>2]|0)&&!(g[y+8>>2]|0)?S=(g[y+12>>2]|0)!=0&1:S=1}for(y=1;y&1?Fa(I):uh(I),L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,Jp(I,L&7),y>>>0>>0;)y=y+1|0;return S|0}function T(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0;ot=wt,wt=wt+16|0,H=ot,it=me(p|0,m|0,45)|0,It()|0,it=it&127;t:do if(fi(it)|0&&(k=me(p|0,m|0,52)|0,It()|0,k=k&15,(k|0)!=0)){S=1;e:for(;;){switch(z=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,z&7){case 5:break e;case 0:break;default:{S=m;break t}}if(S>>>0>>0)S=S+1|0;else{S=m;break t}}for(I=1,S=m;m=(15-I|0)*3|0,L=Le(7,0,m|0)|0,z=S&~(It()|0),S=me(p|0,S|0,m|0)|0,It()|0,S=Le(ro(S&7)|0,0,m|0)|0,p=p&~L|S,S=z|(It()|0),I>>>0>>0;)I=I+1|0}else S=m;while(!1);if(z=7728+(it*28|0)|0,g[y>>2]=g[z>>2],g[y+4>>2]=g[z+4>>2],g[y+8>>2]=g[z+8>>2],g[y+12>>2]=g[z+12>>2],!(xi(p,S,y)|0)){wt=ot;return}if(L=y+4|0,g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],k=me(p|0,S|0,52)|0,It()|0,z=k&15,k&1?(uh(L),k=z+1|0):k=z,!(fi(it)|0))S=0;else{t:do if(!z)S=0;else for(m=1;;){if(I=me(p|0,S|0,(15-m|0)*3|0)|0,It()|0,I=I&7,I|0){S=I;break t}if(m>>>0>>0)m=m+1|0;else{S=0;break}}while(!1);S=(S|0)==4&1}if(!(vf(y,k,S,0)|0))(k|0)!=(z|0)&&(g[L>>2]=g[H>>2],g[L+4>>2]=g[H+4>>2],g[L+8>>2]=g[H+8>>2]);else{if(fi(it)|0)do;while(vf(y,k,0,0)|0);(k|0)!=(z|0)&&fl(L)}wt=ot}function l(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;S=wt,wt=wt+16|0,I=S,T(p,m,I),m=me(p|0,m|0,52)|0,It()|0,l_(I,m&15,y),wt=S}function d(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0;L=wt,wt=wt+16|0,k=L,T(p,m,k),S=me(p|0,m|0,45)|0,It()|0,S=(fi(S&127)|0)==0,I=me(p|0,m|0,52)|0,It()|0,I=I&15;t:do if(!S){if(I|0)for(S=1;;){if(z=Le(7,0,(15-S|0)*3|0)|0,!((z&p|0)==0&((It()|0)&m|0)==0))break t;if(S>>>0>>0)S=S+1|0;else break}i0(k,I,0,5,y),wt=L;return}while(!1);tA(k,I,0,6,y),wt=L}function v(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;if(S=me(p|0,m|0,45)|0,It()|0,!(fi(S&127)|0))return S=2,S|0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return S=5,S|0;for(y=1;;){if(I=Le(7,0,(15-y|0)*3|0)|0,!((I&p|0)==0&((It()|0)&m|0)==0)){y=2,p=6;break}if(y>>>0>>0)y=y+1|0;else{y=5,p=6;break}}return(p|0)==6?y|0:0}function b(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0;Ct=wt,wt=wt+128|0,it=Ct+112|0,k=Ct+96|0,ot=Ct,I=me(p|0,m|0,52)|0,It()|0,z=I&15,g[it>>2]=z,L=me(p|0,m|0,45)|0,It()|0,L=L&127;t:do if(fi(L)|0){if(z|0)for(S=1;;){if(H=Le(7,0,(15-S|0)*3|0)|0,!((H&p|0)==0&((It()|0)&m|0)==0)){I=0;break t}if(S>>>0>>0)S=S+1|0;else break}if(I&1)I=1;else{H=Le(z+1|0,0,52)|0,ot=It()|0|m&-15728641,it=Le(7,0,(14-z|0)*3|0)|0,b((H|p)&~it,ot&~(It()|0),y),wt=Ct;return}}else I=0;while(!1);T(p,m,k),I?(n0(k,it,ot),H=5):(eA(k,it,ot),H=6);t:do if(fi(L)|0)if(!z)S=20;else for(S=1;;){if(L=Le(7,0,(15-S|0)*3|0)|0,!((L&p|0)==0&((It()|0)&m|0)==0)){S=8;break t}if(S>>>0>>0)S=S+1|0;else{S=20;break}}else S=8;while(!1);if(Dc(y|0,-1,S|0)|0,I){I=0;do{for(k=ot+(I<<4)|0,s0(k,g[it>>2]|0)|0,k=g[k>>2]|0,S=0;L=y+(S<<2)|0,z=g[L>>2]|0,!((z|0)==-1|(z|0)==(k|0));)S=S+1|0;g[L>>2]=k,I=I+1|0}while((I|0)!=(H|0))}else{I=0;do{for(k=ot+(I<<4)|0,vf(k,g[it>>2]|0,0,1)|0,k=g[k>>2]|0,S=0;L=y+(S<<2)|0,z=g[L>>2]|0,!((z|0)==-1|(z|0)==(k|0));)S=S+1|0;g[L>>2]=k,I=I+1|0}while((I|0)!=(H|0))}wt=Ct}function M(){return 12}function O(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(Le(p|0,0,52)|0,z=It()|0|134225919,(p|0)<1){S=0,y=0;do fi(S)|0&&(Le(S|0,0,45)|0,L=z|(It()|0),p=m+(y<<3)|0,g[p>>2]=-1,g[p+4>>2]=L,y=y+1|0),S=S+1|0;while((S|0)!=122);return}L=0,y=0;do{if(fi(L)|0){for(Le(L|0,0,45)|0,S=1,I=-1,k=z|(It()|0);H=Le(7,0,(15-S|0)*3|0)|0,I=I&~H,k=k&~(It()|0),(S|0)!=(p|0);)S=S+1|0;H=m+(y<<3)|0,g[H>>2]=I,g[H+4>>2]=k,y=y+1|0}L=L+1|0}while((L|0)!=122)}function B(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0;if(z=wt,wt=wt+64|0,L=z,(p|0)==(y|0)&(m|0)==(S|0)|(!1|(m&2013265920|0)!=134217728|(!1|(S&2013265920|0)!=134217728))||(I=me(p|0,m|0,52)|0,It()|0,I=I&15,k=me(y|0,S|0,52)|0,It()|0,(I|0)!=(k&15|0)))return L=0,wt=z,L|0;if(k=I+-1|0,I>>>0>1&&(it=Dd(p,m,k)|0,H=It()|0,k=Dd(y,S,k)|0,(it|0)==(k|0)&(H|0)==(It()|0))&&(k=(I^15)*3|0,I=me(p|0,m|0,k|0)|0,It()|0,I=I&7,k=me(y|0,S|0,k|0)|0,It()|0,k=k&7,(I|0)==0|(k|0)==0||(g[21136+(I<<2)>>2]|0)==(k|0)||(g[21168+(I<<2)>>2]|0)==(k|0)))return it=1,wt=z,it|0;I=L,k=I+56|0;do g[I>>2]=0,I=I+4|0;while((I|0)<(k|0));return e_(p,m,1,L),it=L,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0))&&(it=L+8|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+16|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+24|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+32|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+40|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))?(I=L+48|0,I=((g[I>>2]|0)==(y|0)?(g[I+4>>2]|0)==(S|0):0)&1):I=1,it=I,wt=z,it|0}function U(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(it=wt,wt=wt+16|0,L=it,!(B(p,m,y,S)|0))return z=0,H=0,$e(z|0),wt=it,H|0;for(z=m&-2130706433,I=(Ui(p,m)|0)==0,I=I?1:2;g[L>>2]=0,ot=jn(p,m,I,L)|0,k=I+1|0,!((ot|0)==(y|0)&(It()|0)==(S|0));)if(k>>>0<7)I=k;else{I=0,p=0,H=6;break}return(H|0)==6?($e(I|0),wt=it,p|0):(ot=Le(I|0,0,56)|0,H=z|(It()|0)|268435456,ot=p|ot,$e(H|0),wt=it,ot|0)}function W(p,m){p=p|0,m=m|0;var y=0;return y=!0&(m&2013265920|0)==268435456,$e((y?m&-2130706433|134217728:0)|0),(y?p:0)|0}function Z(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;return S=wt,wt=wt+16|0,y=S,!0&(m&2013265920|0)==268435456?(I=me(p|0,m|0,56)|0,It()|0,g[y>>2]=0,y=jn(p,m&-2130706433|134217728,I&7,y)|0,m=It()|0,$e(m|0),wt=S,y|0):(m=0,y=0,$e(m|0),wt=S,y|0)}function Q(p,m){p=p|0,m=m|0;var y=0;if(!(!0&(m&2013265920|0)==268435456))return y=0,y|0;switch(y=me(p|0,m|0,56)|0,It()|0,y&7){case 0:case 7:return y=0,y|0;default:}return y=m&-2130706433|134217728,!0&(m&117440512|0)==16777216&(Ui(p,y)|0)!=0?(y=0,y|0):(y=nA(p,y)|0,y|0)}function st(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0;k=wt,wt=wt+16|0,S=k,L=!0&(m&2013265920|0)==268435456,I=m&-2130706433|134217728,z=y,g[z>>2]=L?p:0,g[z+4>>2]=L?I:0,L?(m=me(p|0,m|0,56)|0,It()|0,g[S>>2]=0,p=jn(p,I,m&7,S)|0,m=It()|0):(p=0,m=0),z=y+8|0,g[z>>2]=p,g[z+4>>2]=m,wt=k}function At(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;I=(Ui(p,m)|0)==0,m=m&-2130706433,S=y,g[S>>2]=I?p:0,g[S+4>>2]=I?m|285212672:0,S=y+8|0,g[S>>2]=p,g[S+4>>2]=m|301989888,S=y+16|0,g[S>>2]=p,g[S+4>>2]=m|318767104,S=y+24|0,g[S>>2]=p,g[S+4>>2]=m|335544320,S=y+32|0,g[S>>2]=p,g[S+4>>2]=m|352321536,y=y+40|0,g[y>>2]=p,g[y+4>>2]=m|369098752}function pt(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0;if(L=wt,wt=wt+16|0,k=L,S=me(p|0,m|0,56)|0,It()|0,z=!0&(m&2013265920|0)==268435456,I=z?p:0,p=z?m&-2130706433|134217728:0,m=mu(I,p,S&7)|0,(m|0)==-1){g[y>>2]=0,wt=L;return}T(I,p,k),S=me(I|0,p|0,52)|0,It()|0,S=S&15,Ui(I,p)|0?i0(k,S,m,2,y):tA(k,S,m,2,y),wt=L}function yt(p){p=p|0;var m=0,y=0,S=0;return m=Na(1,12)|0,m||Ti(22691,22646,49,22704),y=p+4|0,S=g[y>>2]|0,S|0?(S=S+8|0,g[S>>2]=m,g[y>>2]=m,m|0):(g[p>>2]|0&&Ti(22721,22646,61,22744),S=p,g[S>>2]=m,g[y>>2]=m,m|0)}function dt(p,m){p=p|0,m=m|0;var y=0,S=0;return S=no(24)|0,S||Ti(22758,22646,78,22772),g[S>>2]=g[m>>2],g[S+4>>2]=g[m+4>>2],g[S+8>>2]=g[m+8>>2],g[S+12>>2]=g[m+12>>2],g[S+16>>2]=0,m=p+4|0,y=g[m>>2]|0,y|0?(g[y+16>>2]=S,g[m>>2]=S,S|0):(g[p>>2]|0&&Ti(22787,22646,82,22772),g[p>>2]=S,g[m>>2]=S,S|0)}function Ft(p){p=p|0;var m=0,y=0,S=0,I=0;if(p)for(S=1;;){if(m=g[p>>2]|0,m|0)do{if(y=g[m>>2]|0,y|0)do I=y,y=g[y+16>>2]|0,Gr(I);while(y|0);I=m,m=g[m+8>>2]|0,Gr(I)}while(m|0);if(m=p,p=g[p+8>>2]|0,S||Gr(m),p)S=0;else break}}function Wt(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Gi=0,Mi=0,cn=0,Ei=0,vn=0,An=0,Or=0;if(I=p+8|0,g[I>>2]|0)return Or=1,Or|0;if(S=g[p>>2]|0,!S)return Or=0,Or|0;m=S,y=0;do y=y+1|0,m=g[m+8>>2]|0;while(m|0);if(y>>>0<2)return Or=0,Or|0;vn=no(y<<2)|0,vn||Ti(22807,22646,317,22826),Ei=no(y<<5)|0,Ei||Ti(22848,22646,321,22826),g[p>>2]=0,Ke=p+4|0,g[Ke>>2]=0,g[I>>2]=0,y=0,cn=0,Ze=0,Ct=0;t:for(;;){if(ot=g[S>>2]|0,ot){k=0,L=ot;do{if(H=+Tt[L+8>>3],m=L,L=g[L+16>>2]|0,it=(L|0)==0,I=it?ot:L,z=+Tt[I+8>>3],+li(+(H-z))>3.141592653589793){Or=14;break}k=k+(z-H)*(+Tt[m>>3]+ +Tt[I>>3])}while(!it);if((Or|0)==14){Or=0,k=0,m=ot;do Nt=+Tt[m+8>>3],Mi=m+16|0,Gi=g[Mi>>2]|0,Gi=Gi|0?Gi:ot,_e=+Tt[Gi+8>>3],k=k+(+Tt[m>>3]+ +Tt[Gi>>3])*((_e<0?_e+6.283185307179586:_e)-(Nt<0?Nt+6.283185307179586:Nt)),m=g[(m|0?Mi:S)>>2]|0;while(m|0)}k>0?(g[vn+(cn<<2)>>2]=S,cn=cn+1|0,I=Ze,m=Ct):Or=19}else Or=19;if((Or|0)==19){Or=0;do if(y){if(m=y+8|0,g[m>>2]|0){Or=21;break t}if(y=Na(1,12)|0,!y){Or=23;break t}g[m>>2]=y,I=y+4|0,L=y,m=Ct}else if(Ct){I=Ke,L=Ct+8|0,m=S,y=p;break}else if(g[p>>2]|0){Or=27;break t}else{I=Ke,L=p,m=S,y=p;break}while(!1);if(g[L>>2]=S,g[I>>2]=S,L=Ei+(Ze<<5)|0,it=g[S>>2]|0,it){for(ot=Ei+(Ze<<5)+8|0,Tt[ot>>3]=17976931348623157e292,Ct=Ei+(Ze<<5)+24|0,Tt[Ct>>3]=17976931348623157e292,Tt[L>>3]=-17976931348623157e292,zt=Ei+(Ze<<5)+16|0,Tt[zt>>3]=-17976931348623157e292,Ve=17976931348623157e292,Jt=-17976931348623157e292,I=0,Gt=it,H=17976931348623157e292,ie=17976931348623157e292,Ce=-17976931348623157e292,z=-17976931348623157e292;k=+Tt[Gt>>3],Nt=+Tt[Gt+8>>3],Gt=g[Gt+16>>2]|0,ee=(Gt|0)==0,_e=+Tt[(ee?it:Gt)+8>>3],k>3]=k,H=k),Nt>3]=Nt,ie=Nt),k>Ce?Tt[L>>3]=k:k=Ce,Nt>z&&(Tt[zt>>3]=Nt,z=Nt),Ve=Nt>0&NtJt?Nt:Jt,I=I|+li(+(Nt-_e))>3.141592653589793,!ee;)Ce=k;I&&(Tt[zt>>3]=Jt,Tt[Ct>>3]=Ve)}else g[L>>2]=0,g[L+4>>2]=0,g[L+8>>2]=0,g[L+12>>2]=0,g[L+16>>2]=0,g[L+20>>2]=0,g[L+24>>2]=0,g[L+28>>2]=0;I=Ze+1|0}if(Mi=S+8|0,S=g[Mi>>2]|0,g[Mi>>2]=0,S)Ze=I,Ct=m;else{Or=45;break}}if((Or|0)==21)Ti(22624,22646,35,22658);else if((Or|0)==23)Ti(22678,22646,37,22658);else if((Or|0)==27)Ti(22721,22646,61,22744);else if((Or|0)==45){t:do if((cn|0)>0){for(Mi=(I|0)==0,Zr=I<<2,Gi=(p|0)==0,ze=0,m=0;;){if(be=g[vn+(ze<<2)>>2]|0,Mi)Or=73;else{if(Ze=no(Zr)|0,!Ze){Or=50;break}if(Ke=no(Zr)|0,!Ke){Or=52;break}e:do if(Gi)y=0;else{for(I=0,y=0,L=p;S=Ei+(I<<5)|0,St(g[L>>2]|0,S,g[be>>2]|0)|0?(g[Ze+(y<<2)>>2]=L,g[Ke+(y<<2)>>2]=S,ee=y+1|0):ee=y,L=g[L+8>>2]|0,L;)I=I+1|0,y=ee;if((ee|0)>0)if(S=g[Ze>>2]|0,(ee|0)==1)y=S;else for(zt=0,Gt=-1,y=S,Ct=S;;){for(it=g[Ct>>2]|0,S=0,L=0;I=g[g[Ze+(L<<2)>>2]>>2]|0,(I|0)==(it|0)?ot=S:ot=S+((St(I,g[Ke+(L<<2)>>2]|0,g[it>>2]|0)|0)&1)|0,L=L+1|0,(L|0)!=(ee|0);)S=ot;if(I=(ot|0)>(Gt|0),y=I?Ct:y,S=zt+1|0,(S|0)==(ee|0))break e;zt=S,Gt=I?ot:Gt,Ct=g[Ze+(S<<2)>>2]|0}else y=0}while(!1);if(Gr(Ze),Gr(Ke),y){if(I=y+4|0,S=g[I>>2]|0,S)y=S+8|0;else if(g[y>>2]|0){Or=70;break}g[y>>2]=be,g[I>>2]=be}else Or=73}if((Or|0)==73){if(Or=0,m=g[be>>2]|0,m|0)do Ke=m,m=g[m+16>>2]|0,Gr(Ke);while(m|0);Gr(be),m=2}if(ze=ze+1|0,(ze|0)>=(cn|0)){An=m;break t}}(Or|0)==50?Ti(22863,22646,249,22882):(Or|0)==52?Ti(22901,22646,252,22882):(Or|0)==70&&Ti(22721,22646,61,22744)}else An=0;while(!1);return Gr(vn),Gr(Ei),Or=An,Or|0}return 0}function St(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(!(hl(m,y)|0)||(m=Jm(m)|0,it=+Tt[y>>3],S=+Tt[y+8>>3],S=m&S<0?S+6.283185307179586:S,p=g[p>>2]|0,!p))return p=0,p|0;if(m){m=0,y=p;t:for(;;){for(;L=+Tt[y>>3],H=+Tt[y+8>>3],y=y+16|0,ot=g[y>>2]|0,ot=ot|0?ot:p,k=+Tt[ot>>3],I=+Tt[ot+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(itz);)if(y=g[y>>2]|0,!y){y=22;break t}if(H=I<0?I+6.283185307179586:I,L=L<0?L+6.283185307179586:L,S=L==S|H==S?S+-2220446049250313e-31:S,H=H+(it-k)/(z-k)*(L-H),(H<0?H+6.283185307179586:H)>S&&(m=m^1),y=g[y>>2]|0,!y){y=22;break}}if((y|0)==22)return m|0}else{m=0,y=p;t:for(;;){for(;L=+Tt[y>>3],H=+Tt[y+8>>3],y=y+16|0,ot=g[y>>2]|0,ot=ot|0?ot:p,k=+Tt[ot>>3],I=+Tt[ot+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(itz);)if(y=g[y>>2]|0,!y){y=22;break t}if(S=L==S|I==S?S+-2220446049250313e-31:S,I+(it-k)/(z-k)*(L-I)>S&&(m=m^1),y=g[y>>2]|0,!y){y=22;break}}if((y|0)==22)return m|0}return 0}function Bt(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(Jt=wt,wt=wt+32|0,Ve=Jt+16|0,Ce=Jt,k=me(p|0,m|0,52)|0,It()|0,k=k&15,Gt=me(y|0,S|0,52)|0,It()|0,(k|0)!=(Gt&15|0))return Ve=1,wt=Jt,Ve|0;if(it=me(p|0,m|0,45)|0,It()|0,it=it&127,ot=me(y|0,S|0,45)|0,It()|0,ot=ot&127,Gt=(it|0)!=(ot|0),Gt){if(z=Xp(it,ot)|0,(z|0)==7)return Ve=2,wt=Jt,Ve|0;H=Xp(ot,it)|0,(H|0)==7?Ti(22925,22949,151,22959):(ee=z,L=H)}else ee=0,L=0;Ct=fi(it)|0,zt=fi(ot)|0,g[Ve>>2]=0,g[Ve+4>>2]=0,g[Ve+8>>2]=0,g[Ve+12>>2]=0;do if(ee){if(ot=g[4304+(it*28|0)+(ee<<2)>>2]|0,z=(ot|0)>0,zt)if(z){it=0,H=y,z=S;do H=c0(H,z)|0,z=It()|0,L=ro(L)|0,(L|0)==1&&(L=ro(1)|0),it=it+1|0;while((it|0)!=(ot|0));ot=L,it=H,H=z}else ot=L,it=y,H=S;else if(z){it=0,H=y,z=S;do H=Od(H,z)|0,z=It()|0,L=ro(L)|0,it=it+1|0;while((it|0)!=(ot|0));ot=L,it=H,H=z}else ot=L,it=y,H=S;if(xi(it,H,Ve)|0,Gt||Ti(22972,22949,181,22959),z=(Ct|0)!=0,L=(zt|0)!=0,z&L&&Ti(22999,22949,182,22959),z){if(L=Ms(p,m)|0,vr[22032+(L*7|0)+ee>>0]|0){k=3;break}H=g[21200+(L*28|0)+(ee<<2)>>2]|0,it=H,ie=26}else if(L){if(L=Ms(it,H)|0,vr[22032+(L*7|0)+ot>>0]|0){k=4;break}it=0,H=g[21200+(ot*28|0)+(L<<2)>>2]|0,ie=26}else L=0;if((ie|0)==26)if((H|0)<=-1&&Ti(23030,22949,212,22959),(it|0)<=-1&&Ti(23053,22949,213,22959),(H|0)>0){z=Ve+4|0,L=0;do hh(z),L=L+1|0;while((L|0)!=(H|0));L=it}else L=it;if(g[Ce>>2]=0,g[Ce+4>>2]=0,g[Ce+8>>2]=0,Jp(Ce,ee),k|0)for(;Go(k)|0?Fa(Ce):uh(Ce),(k|0)>1;)k=k+-1|0;if((L|0)>0){k=0;do hh(Ce),k=k+1|0;while((k|0)!=(L|0))}ie=Ve+4|0,In(ie,Ce,ie),Fs(ie),ie=50}else if(xi(y,S,Ve)|0,(Ct|0)!=0&(zt|0)!=0)if((ot|0)!=(it|0)&&Ti(23077,22949,243,22959),L=Ms(p,m)|0,k=Ms(y,S)|0,vr[22032+(L*7|0)+k>>0]|0)k=5;else if(L=g[21200+(L*28|0)+(k<<2)>>2]|0,(L|0)>0){z=Ve+4|0,k=0;do hh(z),k=k+1|0;while((k|0)!=(L|0));ie=50}else ie=50;else ie=50;while(!1);return(ie|0)==50&&(k=Ve+4|0,g[I>>2]=g[k>>2],g[I+4>>2]=g[k+4>>2],g[I+8>>2]=g[k+8>>2],k=0),Ve=k,wt=Jt,Ve|0}function Yt(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(ee=wt,wt=wt+48|0,L=ee+36|0,z=ee+24|0,H=ee+12|0,it=ee,k=me(p|0,m|0,52)|0,It()|0,k=k&15,zt=me(p|0,m|0,45)|0,It()|0,zt=zt&127,ot=fi(zt)|0,Le(k|0,0,52)|0,Ce=It()|0|134225919,ie=S,g[ie>>2]=-1,g[ie+4>>2]=Ce,!k)return(g[y>>2]|0)>1||(g[y+4>>2]|0)>1||(g[y+8>>2]|0)>1||(I=$p(zt,Ba(y)|0)|0,(I|0)==127)?(Ce=1,wt=ee,Ce|0):(Gt=Le(I|0,0,45)|0,ie=It()|0,zt=S,ie=g[zt+4>>2]&-1040385|ie,Ce=S,g[Ce>>2]=g[zt>>2]|Gt,g[Ce+4>>2]=ie,Ce=0,wt=ee,Ce|0);for(g[L>>2]=g[y>>2],g[L+4>>2]=g[y+4>>2],g[L+8>>2]=g[y+8>>2];g[z>>2]=g[L>>2],g[z+4>>2]=g[L+4>>2],g[z+8>>2]=g[L+8>>2],Go(k)|0?(Ld(L),g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],Fa(H)):(fl(L),g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],uh(H)),Kp(z,H,it),Fs(it),ie=S,Ve=g[ie>>2]|0,ie=g[ie+4>>2]|0,Jt=(15-k|0)*3|0,y=Le(7,0,Jt|0)|0,ie=ie&~(It()|0),Jt=Le(Ba(it)|0,0,Jt|0)|0,ie=It()|0|ie,Ce=S,g[Ce>>2]=Jt|Ve&~y,g[Ce+4>>2]=ie,(k|0)>1;)k=k+-1|0;t:do if((g[L>>2]|0)<=1&&(g[L+4>>2]|0)<=1&&(g[L+8>>2]|0)<=1){k=Ba(L)|0,z=$p(zt,k)|0,(z|0)==127?it=0:it=fi(z)|0;e:do if(k){if(ot){if(L=21408+((Ms(p,m)|0)*28|0)+(k<<2)|0,L=g[L>>2]|0,(L|0)>0){y=0;do k=za(k)|0,y=y+1|0;while((y|0)!=(L|0))}if((k|0)==1){I=3;break t}y=$p(zt,k)|0,(y|0)==127&&Ti(23104,22949,376,23134),fi(y)|0?Ti(23147,22949,377,23134):(Gt=L,Ct=k,I=y)}else Gt=0,Ct=k,I=z;if(H=g[4304+(zt*28|0)+(Ct<<2)>>2]|0,(H|0)<=-1&&Ti(23178,22949,384,23134),!it){if((Gt|0)<=-1&&Ti(23030,22949,417,23134),Gt|0){L=S,k=0,y=g[L>>2]|0,L=g[L+4>>2]|0;do y=jo(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,k=k+1|0;while((k|0)<(Gt|0))}if((H|0)<=0){k=54;break}for(L=S,k=0,y=g[L>>2]|0,L=g[L+4>>2]|0;;)if(y=jo(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,k=k+1|0,(k|0)==(H|0)){k=54;break e}}if(z=Xp(I,zt)|0,(z|0)==7&&Ti(22925,22949,393,23134),k=S,y=g[k>>2]|0,k=g[k+4>>2]|0,(H|0)>0){L=0;do y=jo(y,k)|0,k=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=k,L=L+1|0;while((L|0)!=(H|0))}if(y=Ms(y,k)|0,Jt=du(I)|0,y=g[(Jt?21824:21616)+(z*28|0)+(y<<2)>>2]|0,(y|0)<=-1&&Ti(23030,22949,412,23134),!y)k=54;else{z=S,k=0,L=g[z>>2]|0,z=g[z+4>>2]|0;do L=mh(L,z)|0,z=It()|0,Jt=S,g[Jt>>2]=L,g[Jt+4>>2]=z,k=k+1|0;while((k|0)<(y|0));k=54}}else if((ot|0)!=0&(it|0)!=0)if(Jt=Ms(p,m)|0,k=S,k=21408+(Jt*28|0)+((Ms(g[k>>2]|0,g[k+4>>2]|0)|0)<<2)|0,k=g[k>>2]|0,(k|0)<=-1&&Ti(23201,22949,433,23134),!k)I=z,k=55;else{L=S,I=0,y=g[L>>2]|0,L=g[L+4>>2]|0;do y=jo(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,I=I+1|0;while((I|0)<(k|0));I=z,k=54}else I=z,k=54;while(!1);if((k|0)==54&&it&&(k=55),(k|0)==55&&(Jt=S,(Ms(g[Jt>>2]|0,g[Jt+4>>2]|0)|0)==1)){I=4;break}Jt=S,Ce=g[Jt>>2]|0,Jt=g[Jt+4>>2]&-1040385,Ve=Le(I|0,0,45)|0,Jt=Jt|(It()|0),I=S,g[I>>2]=Ce|Ve,g[I+4>>2]=Jt,I=0}else I=2;while(!1);return Jt=I,wt=ee,Jt|0}function Qt(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0;return L=wt,wt=wt+16|0,k=L,p=Bt(p,m,y,S,k)|0,p||(yf(k,I),p=0),wt=L,p|0}function se(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0;return I=wt,wt=wt+16|0,k=I,a_(y,k),S=Yt(p,m,k,S)|0,wt=I,S|0}function pe(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0;return L=wt,wt=wt+32|0,I=L+12|0,k=L,!(Bt(p,m,p,m,I)|0)&&!(Bt(p,m,y,S,k)|0)?p=Vl(I,k)|0:p=-1,wt=L,p|0}function he(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0,L=0;return L=wt,wt=wt+32|0,I=L+12|0,k=L,!(Bt(p,m,p,m,I)|0)&&!(Bt(p,m,y,S,k)|0)?p=Vl(I,k)|0:p=-1,wt=L,(p>>>31^1)+p|0}function xe(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0;if(Ze=wt,wt=wt+48|0,k=Ze+24|0,L=Ze+12|0,Nt=Ze,!(Bt(p,m,p,m,k)|0)&&!(Bt(p,m,y,S,L)|0)){if(_e=Vl(k,L)|0,(_e|0)<0)return Nt=_e,wt=Ze,Nt|0;for(g[k>>2]=0,g[k+4>>2]=0,g[k+8>>2]=0,g[L>>2]=0,g[L+4>>2]=0,g[L+8>>2]=0,Bt(p,m,p,m,k)|0,Bt(p,m,y,S,L)|0,Re(k),Re(L),_e?(ot=g[k>>2]|0,Gt=+(_e|0),Ce=k+4|0,Ct=g[Ce>>2]|0,Ve=k+8|0,zt=g[Ve>>2]|0,Jt=k,y=ot,S=Ct,k=zt,ee=+((g[L>>2]|0)-ot|0)/Gt,ie=+((g[L+4>>2]|0)-Ct|0)/Gt,Gt=+((g[L+8>>2]|0)-zt|0)/Gt):(S=k+4|0,zt=k+8|0,Ce=S,Ve=zt,Jt=k,y=g[k>>2]|0,S=g[S>>2]|0,k=g[zt>>2]|0,ee=0,ie=0,Gt=0),g[Nt>>2]=y,zt=Nt+4|0,g[zt>>2]=S,Ct=Nt+8|0,g[Ct>>2]=k,ot=0;;){H=+(ot|0),Ke=ee*H+ +(y|0),z=ie*H+ +(g[Ce>>2]|0),H=Gt*H+ +(g[Ve>>2]|0),S=~~+Sf(+Ke),L=~~+Sf(+z),y=~~+Sf(+H),Ke=+li(+(+(S|0)-Ke)),z=+li(+(+(L|0)-z)),H=+li(+(+(y|0)-H));do if(Ke>z&Ke>H)S=0-(L+y)|0,k=L;else if(it=0-S|0,z>H){k=it-y|0;break}else{k=L,y=it-L|0;break}while(!1);if(g[Nt>>2]=S,g[zt>>2]=k,g[Ct>>2]=y,e0(Nt),Yt(p,m,Nt,I+(ot<<3)|0)|0,(ot|0)==(_e|0))break;ot=ot+1|0,y=g[Jt>>2]|0}return Nt=0,wt=Ze,Nt|0}return Nt=-1,wt=Ze,Nt|0}function We(p,m){p=p|0,m=m|0;var y=0;if(!m)return y=1,y|0;y=p,p=1;do p=kc(m&1|0?y:1,p)|0,m=m>>1,y=kc(y,y)|0;while(m|0);return p|0}function Kr(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;if(!(hl(m,y)|0)||(m=Jm(m)|0,zt=+Tt[y>>3],S=+Tt[y+8>>3],S=m&S<0?S+6.283185307179586:S,Ct=g[p>>2]|0,(Ct|0)<=0))return Ct=0,Ct|0;if(ot=g[p+4>>2]|0,m){m=0,y=-1,p=0;t:for(;;){for(it=p;L=+Tt[ot+(it<<4)>>3],H=+Tt[ot+(it<<4)+8>>3],p=(y+2|0)%(Ct|0)|0,k=+Tt[ot+(p<<4)>>3],I=+Tt[ot+(p<<4)+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(ztz);)if(y=it+1|0,(y|0)<(Ct|0))p=it,it=y,y=p;else{y=22;break t}if(H=I<0?I+6.283185307179586:I,L=L<0?L+6.283185307179586:L,S=L==S|H==S?S+-2220446049250313e-31:S,H=H+(zt-k)/(z-k)*(L-H),(H<0?H+6.283185307179586:H)>S&&(m=m^1),p=it+1|0,(p|0)>=(Ct|0)){y=22;break}else y=it}if((y|0)==22)return m|0}else{m=0,y=-1,p=0;t:for(;;){for(it=p;L=+Tt[ot+(it<<4)>>3],H=+Tt[ot+(it<<4)+8>>3],p=(y+2|0)%(Ct|0)|0,k=+Tt[ot+(p<<4)>>3],I=+Tt[ot+(p<<4)+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=I,I=H),!!(ztz);)if(y=it+1|0,(y|0)<(Ct|0))p=it,it=y,y=p;else{y=22;break t}if(S=L==S|I==S?S+-2220446049250313e-31:S,I+(zt-k)/(z-k)*(L-I)>S&&(m=m^1),p=it+1|0,(p|0)>=(Ct|0)){y=22;break}else y=it}if((y|0)==22)return m|0}return 0}function Me(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(ee=g[p>>2]|0,!ee){g[m>>2]=0,g[m+4>>2]=0,g[m+8>>2]=0,g[m+12>>2]=0,g[m+16>>2]=0,g[m+20>>2]=0,g[m+24>>2]=0,g[m+28>>2]=0;return}if(ie=m+8|0,Tt[ie>>3]=17976931348623157e292,Ce=m+24|0,Tt[Ce>>3]=17976931348623157e292,Tt[m>>3]=-17976931348623157e292,Ve=m+16|0,Tt[Ve>>3]=-17976931348623157e292,!((ee|0)<=0)){for(zt=g[p+4>>2]|0,it=17976931348623157e292,ot=-17976931348623157e292,Ct=0,p=-1,k=17976931348623157e292,L=17976931348623157e292,H=-17976931348623157e292,S=-17976931348623157e292,Gt=0;y=+Tt[zt+(Gt<<4)>>3],z=+Tt[zt+(Gt<<4)+8>>3],p=p+2|0,I=+Tt[zt+(((p|0)==(ee|0)?0:p)<<4)+8>>3],y>3]=y,k=y),z>3]=z,L=z),y>H?Tt[m>>3]=y:y=H,z>S&&(Tt[Ve>>3]=z,S=z),it=z>0&zot?z:ot,Ct=Ct|+li(+(z-I))>3.141592653589793,p=Gt+1|0,(p|0)!=(ee|0);)Jt=Gt,H=y,Gt=p,p=Jt;Ct&&(Tt[Ve>>3]=ot,Tt[Ce>>3]=it)}}function dr(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0;if(ee=g[p>>2]|0,ee){if(ie=m+8|0,Tt[ie>>3]=17976931348623157e292,Ce=m+24|0,Tt[Ce>>3]=17976931348623157e292,Tt[m>>3]=-17976931348623157e292,Ve=m+16|0,Tt[Ve>>3]=-17976931348623157e292,(ee|0)>0){for(I=g[p+4>>2]|0,zt=17976931348623157e292,Gt=-17976931348623157e292,S=0,y=-1,H=17976931348623157e292,it=17976931348623157e292,Ct=-17976931348623157e292,L=-17976931348623157e292,Jt=0;k=+Tt[I+(Jt<<4)>>3],ot=+Tt[I+(Jt<<4)+8>>3],Ke=y+2|0,z=+Tt[I+(((Ke|0)==(ee|0)?0:Ke)<<4)+8>>3],k>3]=k,H=k),ot>3]=ot,it=ot),k>Ct?Tt[m>>3]=k:k=Ct,ot>L&&(Tt[Ve>>3]=ot,L=ot),zt=ot>0&otGt?ot:Gt,S=S|+li(+(ot-z))>3.141592653589793,y=Jt+1|0,(y|0)!=(ee|0);)Ke=Jt,Ct=k,Jt=y,y=Ke;S&&(Tt[Ve>>3]=Gt,Tt[Ce>>3]=zt)}}else g[m>>2]=0,g[m+4>>2]=0,g[m+8>>2]=0,g[m+12>>2]=0,g[m+16>>2]=0,g[m+20>>2]=0,g[m+24>>2]=0,g[m+28>>2]=0;if(Ke=p+8|0,y=g[Ke>>2]|0,!((y|0)<=0)){Ze=p+12|0,Nt=0;do if(I=g[Ze>>2]|0,S=Nt,Nt=Nt+1|0,Ce=m+(Nt<<5)|0,Ve=g[I+(S<<3)>>2]|0,Ve){if(Jt=m+(Nt<<5)+8|0,Tt[Jt>>3]=17976931348623157e292,p=m+(Nt<<5)+24|0,Tt[p>>3]=17976931348623157e292,Tt[Ce>>3]=-17976931348623157e292,_e=m+(Nt<<5)+16|0,Tt[_e>>3]=-17976931348623157e292,(Ve|0)>0){for(ee=g[I+(S<<3)+4>>2]|0,zt=17976931348623157e292,Gt=-17976931348623157e292,I=0,S=-1,ie=0,H=17976931348623157e292,it=17976931348623157e292,ot=-17976931348623157e292,L=-17976931348623157e292;k=+Tt[ee+(ie<<4)>>3],Ct=+Tt[ee+(ie<<4)+8>>3],S=S+2|0,z=+Tt[ee+(((S|0)==(Ve|0)?0:S)<<4)+8>>3],k>3]=k,H=k),Ct>3]=Ct,it=Ct),k>ot?Tt[Ce>>3]=k:k=ot,Ct>L&&(Tt[_e>>3]=Ct,L=Ct),zt=Ct>0&CtGt?Ct:Gt,I=I|+li(+(Ct-z))>3.141592653589793,S=ie+1|0,(S|0)!=(Ve|0);)be=ie,ie=S,ot=k,S=be;I&&(Tt[_e>>3]=Gt,Tt[p>>3]=zt)}}else g[Ce>>2]=0,g[Ce+4>>2]=0,g[Ce+8>>2]=0,g[Ce+12>>2]=0,g[Ce+16>>2]=0,g[Ce+20>>2]=0,g[Ce+24>>2]=0,g[Ce+28>>2]=0,y=g[Ke>>2]|0;while((Nt|0)<(y|0))}}function Xe(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0;if(!(Kr(p,m,y)|0))return I=0,I|0;if(I=p+8|0,(g[I>>2]|0)<=0)return I=1,I|0;for(S=p+12|0,p=0;;){if(k=p,p=p+1|0,Kr((g[S>>2]|0)+(k<<3)|0,m+(p<<5)|0,y)|0){p=0,S=6;break}if((p|0)>=(g[I>>2]|0)){p=1,S=6;break}}return(S|0)==6?p|0:0}function Vi(){return 8}function Jr(){return 16}function Vr(){return 168}function ei(){return 8}function Rn(){return 16}function $i(){return 12}function zs(){return 8}function cs(p){p=p|0;var m=0,y=0;return y=+Tt[p>>3],m=+Tt[p+8>>3],+ +_n(+(y*y+m*m))}function Dn(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;it=+Tt[p>>3],H=+Tt[m>>3]-it,z=+Tt[p+8>>3],L=+Tt[m+8>>3]-z,Ct=+Tt[y>>3],k=+Tt[S>>3]-Ct,zt=+Tt[y+8>>3],ot=+Tt[S+8>>3]-zt,k=(k*(z-zt)-(it-Ct)*ot)/(H*ot-L*k),Tt[I>>3]=it+H*k,Tt[I+8>>3]=z+L*k}function Wo(p,m){return p=p|0,m=m|0,+Tt[p>>3]!=+Tt[m>>3]?(m=0,m|0):(m=+Tt[p+8>>3]==+Tt[m+8>>3],m|0)}function jr(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;return I=+Tt[p>>3]-+Tt[m>>3],S=+Tt[p+8>>3]-+Tt[m+8>>3],y=+Tt[p+16>>3]-+Tt[m+16>>3],+(I*I+S*S+y*y)}function jl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0;y=+Tt[p>>3],S=+Ur(+y),y=+hi(+y),Tt[m+16>>3]=y,y=+Tt[p+8>>3],I=S*+Ur(+y),Tt[m>>3]=I,y=S*+hi(+y),Tt[m+8>>3]=y}function Gl(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0;if(it=wt,wt=wt+32|0,I=it+16|0,k=it,T(p,m,I),L=xf(p,m)|0,H=Ms(p,m)|0,ah(L,k),m=Id(L,g[I>>2]|0)|0,!(fi(L)|0))return H=m,wt=it,H|0;do switch(L|0){case 4:{p=0,y=14;break}case 14:{p=1,y=14;break}case 24:{p=2,y=14;break}case 38:{p=3,y=14;break}case 49:{p=4,y=14;break}case 58:{p=5,y=14;break}case 63:{p=6,y=14;break}case 72:{p=7,y=14;break}case 83:{p=8,y=14;break}case 97:{p=9,y=14;break}case 107:{p=10,y=14;break}case 117:{p=11,y=14;break}default:z=0,S=0}while(!1);return(y|0)==14&&(z=g[22096+(p*24|0)+8>>2]|0,S=g[22096+(p*24|0)+16>>2]|0),p=g[I>>2]|0,(p|0)!=(g[k>>2]|0)&&(L=du(L)|0,p=g[I>>2]|0,L|(p|0)==(S|0)&&(m=(m+1|0)%6|0)),(H|0)==3&(p|0)==(S|0)?(H=(m+5|0)%6|0,wt=it,H|0):(H|0)==5&(p|0)==(z|0)?(H=(m+1|0)%6|0,wt=it,H|0):(H=m,wt=it,H|0)}function mu(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;return S=Ui(p,m)|0,(y+-1|0)>>>0>5||(I=(S|0)!=0,(y|0)==1&I)?(y=-1,y|0):(S=Gl(p,m)|0,I?(y=(5-S+(g[22384+(y<<2)>>2]|0)|0)%5|0,y|0):(y=(6-S+(g[22416+(y<<2)>>2]|0)|0)%6|0,y|0))}function gu(p,m,y){p=p|0,m=m|0,y=y|0;var S=0;(m|0)>0?(S=Na(m,4)|0,g[p>>2]=S,S||Ti(23230,23253,40,23267)):g[p>>2]=0,g[p+4>>2]=m,g[p+8>>2]=0,g[p+12>>2]=y}function gh(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0;I=p+4|0,k=p+12|0,L=p+8|0;t:for(;;){for(y=g[I>>2]|0,m=0;;){if((m|0)>=(y|0))break t;if(S=g[p>>2]|0,z=g[S+(m<<2)>>2]|0,!z)m=m+1|0;else break}m=S+(~~(+li(+(+ul(10,+ +(15-(g[k>>2]|0)|0))*(+Tt[z>>3]+ +Tt[z+8>>3])))%+(y|0))>>>0<<2)|0,y=g[m>>2]|0;e:do if(y|0){if(S=z+32|0,(y|0)==(z|0))g[m>>2]=g[S>>2];else{if(y=y+32|0,m=g[y>>2]|0,!m)break;for(;(m|0)!=(z|0);)if(y=m+32|0,m=g[y>>2]|0,!m)break e;g[y>>2]=g[S>>2]}Gr(z),g[L>>2]=(g[L>>2]|0)+-1}while(!1)}Gr(g[p>>2]|0)}function Ns(p){p=p|0;var m=0,y=0,S=0;for(S=g[p+4>>2]|0,y=0;;){if((y|0)>=(S|0)){m=0,y=4;break}if(m=g[(g[p>>2]|0)+(y<<2)>>2]|0,!m)y=y+1|0;else{y=4;break}}return(y|0)==4?m|0:0}function Es(p,m){p=p|0,m=m|0;var y=0,S=0,I=0,k=0;if(y=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,y=(g[p>>2]|0)+(y<<2)|0,S=g[y>>2]|0,!S)return k=1,k|0;k=m+32|0;do if((S|0)!=(m|0)){if(y=g[S+32>>2]|0,!y)return k=1,k|0;for(I=y;;){if((I|0)==(m|0)){I=8;break}if(y=g[I+32>>2]|0,y)S=I,I=y;else{y=1,I=10;break}}if((I|0)==8){g[S+32>>2]=g[k>>2];break}else if((I|0)==10)return y|0}else g[y>>2]=g[k>>2];while(!1);return Gr(m),k=p+8|0,g[k>>2]=(g[k>>2]|0)+-1,k=0,k|0}function yo(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;k=no(40)|0,k||Ti(23283,23253,98,23296),g[k>>2]=g[m>>2],g[k+4>>2]=g[m+4>>2],g[k+8>>2]=g[m+8>>2],g[k+12>>2]=g[m+12>>2],I=k+16|0,g[I>>2]=g[y>>2],g[I+4>>2]=g[y+4>>2],g[I+8>>2]=g[y+8>>2],g[I+12>>2]=g[y+12>>2],g[k+32>>2]=0,I=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,I=(g[p>>2]|0)+(I<<2)|0,S=g[I>>2]|0;do if(!S)g[I>>2]=k;else{for(;!(ls(S,m)|0&&ls(S+16|0,y)|0);)if(I=g[S+32>>2]|0,S=I|0?I:S,!(g[S+32>>2]|0)){L=10;break}if((L|0)==10){g[S+32>>2]=k;break}return Gr(k),L=S,L|0}while(!1);return L=p+8|0,g[L>>2]=(g[L>>2]|0)+1,L=k,L|0}function _h(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0;if(I=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,I=g[(g[p>>2]|0)+(I<<2)>>2]|0,!I)return y=0,y|0;if(!y){for(p=I;;){if(ls(p,m)|0){S=10;break}if(p=g[p+32>>2]|0,!p){p=0,S=10;break}}if((S|0)==10)return p|0}for(p=I;;){if(ls(p,m)|0&&ls(p+16|0,y)|0){S=10;break}if(p=g[p+32>>2]|0,!p){p=0,S=10;break}}return(S|0)==10?p|0:0}function On(p,m){p=p|0,m=m|0;var y=0;if(y=~~(+li(+(+ul(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,p=g[(g[p>>2]|0)+(y<<2)>>2]|0,!p)return y=0,y|0;for(;;){if(ls(p,m)|0){m=5;break}if(p=g[p+32>>2]|0,!p){p=0,m=5;break}}return(m|0)==5?p|0:0}function us(){return 23312}function Ho(p){return p=+p,+ +Lx(+p)}function pn(p){return p=+p,~~+Ho(p)|0}function no(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0;Ze=wt,wt=wt+16|0,zt=Ze;do if(p>>>0<245){if(it=p>>>0<11?16:p+11&-8,p=it>>>3,Ct=g[5829]|0,y=Ct>>>p,y&3|0)return m=(y&1^1)+p|0,p=23356+(m<<1<<2)|0,y=p+8|0,S=g[y>>2]|0,I=S+8|0,k=g[I>>2]|0,(k|0)==(p|0)?g[5829]=Ct&~(1<>2]=p,g[y>>2]=k),Nt=m<<3,g[S+4>>2]=Nt|3,Nt=S+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1,Nt=I,wt=Ze,Nt|0;if(ot=g[5831]|0,it>>>0>ot>>>0){if(y|0)return m=2<>>12&16,m=m>>>z,y=m>>>5&8,m=m>>>y,k=m>>>2&4,m=m>>>k,p=m>>>1&2,m=m>>>p,S=m>>>1&1,S=(y|z|k|p|S)+(m>>>S)|0,m=23356+(S<<1<<2)|0,p=m+8|0,k=g[p>>2]|0,z=k+8|0,y=g[z>>2]|0,(y|0)==(m|0)?(p=Ct&~(1<>2]=m,g[p>>2]=y,p=Ct),Nt=S<<3,L=Nt-it|0,g[k+4>>2]=it|3,I=k+it|0,g[I+4>>2]=L|1,g[k+Nt>>2]=L,ot|0&&(S=g[5834]|0,m=ot>>>3,y=23356+(m<<1<<2)|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=S,g[m+12>>2]=S,g[S+8>>2]=m,g[S+12>>2]=y),g[5831]=L,g[5834]=I,Nt=z,wt=Ze,Nt|0;if(k=g[5830]|0,k){for(y=(k&0-k)+-1|0,I=y>>>12&16,y=y>>>I,S=y>>>5&8,y=y>>>S,L=y>>>2&4,y=y>>>L,z=y>>>1&2,y=y>>>z,H=y>>>1&1,H=g[23620+((S|I|L|z|H)+(y>>>H)<<2)>>2]|0,y=H,z=H,H=(g[H+4>>2]&-8)-it|0;p=g[y+16>>2]|0,!(!p&&(p=g[y+20>>2]|0,!p));)L=(g[p+4>>2]&-8)-it|0,I=L>>>0>>0,y=p,z=I?p:z,H=I?L:H;if(L=z+it|0,L>>>0>z>>>0){I=g[z+24>>2]|0,m=g[z+12>>2]|0;do if((m|0)==(z|0)){if(p=z+20|0,m=g[p>>2]|0,!m&&(p=z+16|0,m=g[p>>2]|0,!m)){y=0;break}for(;;)if(S=m+20|0,y=g[S>>2]|0,y)m=y,p=S;else if(S=m+16|0,y=g[S>>2]|0,y)m=y,p=S;else break;g[p>>2]=0,y=m}else y=g[z+8>>2]|0,g[y+12>>2]=m,g[m+8>>2]=y,y=m;while(!1);do if(I|0){if(m=g[z+28>>2]|0,p=23620+(m<<2)|0,(z|0)==(g[p>>2]|0)){if(g[p>>2]=y,!y){g[5830]=k&~(1<>2]|0)==(z|0)?Nt:I+20|0)>>2]=y,!y)break;g[y+24>>2]=I,m=g[z+16>>2]|0,m|0&&(g[y+16>>2]=m,g[m+24>>2]=y),m=g[z+20>>2]|0,m|0&&(g[y+20>>2]=m,g[m+24>>2]=y)}while(!1);return H>>>0<16?(Nt=H+it|0,g[z+4>>2]=Nt|3,Nt=z+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1):(g[z+4>>2]=it|3,g[L+4>>2]=H|1,g[L+H>>2]=H,ot|0&&(S=g[5834]|0,m=ot>>>3,y=23356+(m<<1<<2)|0,m=1<>2]|0):(g[5829]=m|Ct,m=y,p=y+8|0),g[p>>2]=S,g[m+12>>2]=S,g[S+8>>2]=m,g[S+12>>2]=y),g[5831]=H,g[5834]=L),Nt=z+8|0,wt=Ze,Nt|0}else Ct=it}else Ct=it}else Ct=it}else if(p>>>0<=4294967231)if(p=p+11|0,it=p&-8,S=g[5830]|0,S){I=0-it|0,p=p>>>8,p?it>>>0>16777215?H=31:(Ct=(p+1048320|0)>>>16&8,ie=p<>>16&4,ie=ie<>>16&2,H=14-(z|Ct|H)+(ie<>>15)|0,H=it>>>(H+7|0)&1|H<<1):H=0,y=g[23620+(H<<2)>>2]|0;t:do if(!y)y=0,p=0,ie=61;else for(p=0,z=it<<((H|0)==31?0:25-(H>>>1)|0),k=0;;){if(L=(g[y+4>>2]&-8)-it|0,L>>>0>>0)if(L)p=y,I=L;else{p=y,I=0,ie=65;break t}if(ie=g[y+20>>2]|0,y=g[y+16+(z>>>31<<2)>>2]|0,k=(ie|0)==0|(ie|0)==(y|0)?k:ie,y)z=z<<1;else{y=k,ie=61;break}}while(!1);if((ie|0)==61){if((y|0)==0&(p|0)==0){if(p=2<>>12&16,Ct=Ct>>>L,k=Ct>>>5&8,Ct=Ct>>>k,z=Ct>>>2&4,Ct=Ct>>>z,H=Ct>>>1&2,Ct=Ct>>>H,y=Ct>>>1&1,p=0,y=g[23620+((k|L|z|H|y)+(Ct>>>y)<<2)>>2]|0}y?ie=65:(z=p,L=I)}if((ie|0)==65)for(k=y;;)if(Ct=(g[k+4>>2]&-8)-it|0,y=Ct>>>0>>0,I=y?Ct:I,p=y?k:p,y=g[k+16>>2]|0,y||(y=g[k+20>>2]|0),y)k=y;else{z=p,L=I;break}if(z|0&&L>>>0<((g[5831]|0)-it|0)>>>0&&(ot=z+it|0,ot>>>0>z>>>0)){k=g[z+24>>2]|0,m=g[z+12>>2]|0;do if((m|0)==(z|0)){if(p=z+20|0,m=g[p>>2]|0,!m&&(p=z+16|0,m=g[p>>2]|0,!m)){m=0;break}for(;;)if(I=m+20|0,y=g[I>>2]|0,y)m=y,p=I;else if(I=m+16|0,y=g[I>>2]|0,y)m=y,p=I;else break;g[p>>2]=0}else Nt=g[z+8>>2]|0,g[Nt+12>>2]=m,g[m+8>>2]=Nt;while(!1);do if(k){if(p=g[z+28>>2]|0,y=23620+(p<<2)|0,(z|0)==(g[y>>2]|0)){if(g[y>>2]=m,!m){S=S&~(1<>2]|0)==(z|0)?Nt:k+20|0)>>2]=m,!m)break;g[m+24>>2]=k,p=g[z+16>>2]|0,p|0&&(g[m+16>>2]=p,g[p+24>>2]=m),p=g[z+20>>2]|0,p&&(g[m+20>>2]=p,g[p+24>>2]=m)}while(!1);t:do if(L>>>0<16)Nt=L+it|0,g[z+4>>2]=Nt|3,Nt=z+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1;else{if(g[z+4>>2]=it|3,g[ot+4>>2]=L|1,g[ot+L>>2]=L,m=L>>>3,L>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=ot,g[m+12>>2]=ot,g[ot+8>>2]=m,g[ot+12>>2]=y;break}if(m=L>>>8,m?L>>>0>16777215?y=31:(_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,y=14-(Jt|_e|y)+(Nt<>>15)|0,y=L>>>(y+7|0)&1|y<<1):y=0,m=23620+(y<<2)|0,g[ot+28>>2]=y,p=ot+16|0,g[p+4>>2]=0,g[p>>2]=0,p=1<>2]=ot,g[ot+24>>2]=m,g[ot+12>>2]=ot,g[ot+8>>2]=ot;break}m=g[m>>2]|0;e:do if((g[m+4>>2]&-8|0)!=(L|0)){for(S=L<<((y|0)==31?0:25-(y>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(L|0)){m=p;break e}else S=S<<1,m=p;g[y>>2]=ot,g[ot+24>>2]=m,g[ot+12>>2]=ot,g[ot+8>>2]=ot;break t}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=ot,g[_e>>2]=ot,g[ot+8>>2]=Nt,g[ot+12>>2]=m,g[ot+24>>2]=0}while(!1);return Nt=z+8|0,wt=Ze,Nt|0}else Ct=it}else Ct=it;else Ct=-1;while(!1);if(y=g[5831]|0,y>>>0>=Ct>>>0)return m=y-Ct|0,p=g[5834]|0,m>>>0>15?(Nt=p+Ct|0,g[5834]=Nt,g[5831]=m,g[Nt+4>>2]=m|1,g[p+y>>2]=m,g[p+4>>2]=Ct|3):(g[5831]=0,g[5834]=0,g[p+4>>2]=y|3,Nt=p+y+4|0,g[Nt>>2]=g[Nt>>2]|1),Nt=p+8|0,wt=Ze,Nt|0;if(L=g[5832]|0,L>>>0>Ct>>>0)return Jt=L-Ct|0,g[5832]=Jt,Nt=g[5835]|0,_e=Nt+Ct|0,g[5835]=_e,g[_e+4>>2]=Jt|1,g[Nt+4>>2]=Ct|3,Nt=Nt+8|0,wt=Ze,Nt|0;if(g[5947]|0?p=g[5949]|0:(g[5949]=4096,g[5948]=4096,g[5950]=-1,g[5951]=-1,g[5952]=0,g[5940]=0,g[5947]=zt&-16^1431655768,p=4096),z=Ct+48|0,H=Ct+47|0,k=p+H|0,I=0-p|0,it=k&I,it>>>0<=Ct>>>0||(p=g[5939]|0,p|0&&(ot=g[5937]|0,zt=ot+it|0,zt>>>0<=ot>>>0|zt>>>0>p>>>0)))return Nt=0,wt=Ze,Nt|0;t:do if(g[5940]&4)m=0,ie=143;else{y=g[5835]|0;e:do if(y){for(S=23764;zt=g[S>>2]|0,!(zt>>>0<=y>>>0&&(zt+(g[S+4>>2]|0)|0)>>>0>y>>>0);)if(p=g[S+8>>2]|0,p)S=p;else{ie=128;break e}if(m=k-L&I,m>>>0<2147483647)if(p=Xi(m|0)|0,(p|0)==((g[S>>2]|0)+(g[S+4>>2]|0)|0)){if((p|0)!=-1){L=m,k=p,ie=145;break t}}else S=p,ie=136;else m=0}else ie=128;while(!1);do if((ie|0)==128)if(y=Xi(0)|0,(y|0)!=-1&&(m=y,Gt=g[5948]|0,ee=Gt+-1|0,m=(ee&m|0?(ee+m&0-Gt)-m|0:0)+it|0,Gt=g[5937]|0,ee=m+Gt|0,m>>>0>Ct>>>0&m>>>0<2147483647)){if(zt=g[5939]|0,zt|0&&ee>>>0<=Gt>>>0|ee>>>0>zt>>>0){m=0;break}if(p=Xi(m|0)|0,(p|0)==(y|0)){L=m,k=y,ie=145;break t}else S=p,ie=136}else m=0;while(!1);do if((ie|0)==136){if(y=0-m|0,!(z>>>0>m>>>0&(m>>>0<2147483647&(S|0)!=-1)))if((S|0)==-1){m=0;break}else{L=m,k=S,ie=145;break t}if(p=g[5949]|0,p=H-m+p&0-p,p>>>0>=2147483647){L=m,k=S,ie=145;break t}if((Xi(p|0)|0)==-1){Xi(y|0)|0,m=0;break}else{L=p+m|0,k=S,ie=145;break t}}while(!1);g[5940]=g[5940]|4,ie=143}while(!1);if((ie|0)==143&&it>>>0<2147483647&&(Jt=Xi(it|0)|0,ee=Xi(0)|0,Ce=ee-Jt|0,Ve=Ce>>>0>(Ct+40|0)>>>0,!((Jt|0)==-1|Ve^1|Jt>>>0>>0&((Jt|0)!=-1&(ee|0)!=-1)^1))&&(L=Ve?Ce:m,k=Jt,ie=145),(ie|0)==145){m=(g[5937]|0)+L|0,g[5937]=m,m>>>0>(g[5938]|0)>>>0&&(g[5938]=m),H=g[5835]|0;t:do if(H){for(m=23764;;){if(p=g[m>>2]|0,y=g[m+4>>2]|0,(k|0)==(p+y|0)){ie=154;break}if(S=g[m+8>>2]|0,S)m=S;else break}if((ie|0)==154&&(_e=m+4|0,(g[m+12>>2]&8|0)==0)&&k>>>0>H>>>0&p>>>0<=H>>>0){g[_e>>2]=y+L,Nt=(g[5832]|0)+L|0,Jt=H+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=H+Jt|0,Jt=Nt-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[H+Nt+4>>2]=40,g[5836]=g[5951];break}for(k>>>0<(g[5833]|0)>>>0&&(g[5833]=k),y=k+L|0,m=23764;;){if((g[m>>2]|0)==(y|0)){ie=162;break}if(p=g[m+8>>2]|0,p)m=p;else break}if((ie|0)==162&&!(g[m+12>>2]&8|0)){g[m>>2]=k,ot=m+4|0,g[ot>>2]=(g[ot>>2]|0)+L,ot=k+8|0,ot=k+(ot&7|0?0-ot&7:0)|0,m=y+8|0,m=y+(m&7|0?0-m&7:0)|0,it=ot+Ct|0,z=m-ot-Ct|0,g[ot+4>>2]=Ct|3;e:do if((H|0)==(m|0))Nt=(g[5832]|0)+z|0,g[5832]=Nt,g[5835]=it,g[it+4>>2]=Nt|1;else{if((g[5834]|0)==(m|0)){Nt=(g[5831]|0)+z|0,g[5831]=Nt,g[5834]=it,g[it+4>>2]=Nt|1,g[it+Nt>>2]=Nt;break}if(p=g[m+4>>2]|0,(p&3|0)==1){L=p&-8,S=p>>>3;r:do if(p>>>0<256)if(p=g[m+8>>2]|0,y=g[m+12>>2]|0,(y|0)==(p|0)){g[5829]=g[5829]&~(1<>2]=y,g[y+8>>2]=p;break}else{k=g[m+24>>2]|0,p=g[m+12>>2]|0;do if((p|0)==(m|0)){if(y=m+16|0,S=y+4|0,p=g[S>>2]|0,p)y=S;else if(p=g[y>>2]|0,!p){p=0;break}for(;;)if(I=p+20|0,S=g[I>>2]|0,S)p=S,y=I;else if(I=p+16|0,S=g[I>>2]|0,S)p=S,y=I;else break;g[y>>2]=0}else Nt=g[m+8>>2]|0,g[Nt+12>>2]=p,g[p+8>>2]=Nt;while(!1);if(!k)break;y=g[m+28>>2]|0,S=23620+(y<<2)|0;do if((g[S>>2]|0)!=(m|0)){if(Nt=k+16|0,g[((g[Nt>>2]|0)==(m|0)?Nt:k+20|0)>>2]=p,!p)break r}else{if(g[S>>2]=p,p|0)break;g[5830]=g[5830]&~(1<>2]=k,y=m+16|0,S=g[y>>2]|0,S|0&&(g[p+16>>2]=S,g[S+24>>2]=p),y=g[y+4>>2]|0,!y)break;g[p+20>>2]=y,g[y+24>>2]=p}while(!1);m=m+L|0,I=L+z|0}else I=z;if(m=m+4|0,g[m>>2]=g[m>>2]&-2,g[it+4>>2]=I|1,g[it+I>>2]=I,m=I>>>3,I>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=it,g[m+12>>2]=it,g[it+8>>2]=m,g[it+12>>2]=y;break}m=I>>>8;do if(!m)S=0;else{if(I>>>0>16777215){S=31;break}_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,S=14-(Jt|_e|S)+(Nt<>>15)|0,S=I>>>(S+7|0)&1|S<<1}while(!1);if(m=23620+(S<<2)|0,g[it+28>>2]=S,p=it+16|0,g[p+4>>2]=0,g[p>>2]=0,p=g[5830]|0,y=1<>2]=it,g[it+24>>2]=m,g[it+12>>2]=it,g[it+8>>2]=it;break}m=g[m>>2]|0;r:do if((g[m+4>>2]&-8|0)!=(I|0)){for(S=I<<((S|0)==31?0:25-(S>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(I|0)){m=p;break r}else S=S<<1,m=p;g[y>>2]=it,g[it+24>>2]=m,g[it+12>>2]=it,g[it+8>>2]=it;break e}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=it,g[_e>>2]=it,g[it+8>>2]=Nt,g[it+12>>2]=m,g[it+24>>2]=0}while(!1);return Nt=ot+8|0,wt=Ze,Nt|0}for(m=23764;p=g[m>>2]|0,!(p>>>0<=H>>>0&&(Nt=p+(g[m+4>>2]|0)|0,Nt>>>0>H>>>0));)m=g[m+8>>2]|0;I=Nt+-47|0,p=I+8|0,p=I+(p&7|0?0-p&7:0)|0,I=H+16|0,p=p>>>0>>0?H:p,m=p+8|0,y=L+-40|0,Jt=k+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=k+Jt|0,Jt=y-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[k+y+4>>2]=40,g[5836]=g[5951],y=p+4|0,g[y>>2]=27,g[m>>2]=g[5941],g[m+4>>2]=g[5942],g[m+8>>2]=g[5943],g[m+12>>2]=g[5944],g[5941]=k,g[5942]=L,g[5944]=0,g[5943]=m,m=p+24|0;do _e=m,m=m+4|0,g[m>>2]=7;while((_e+8|0)>>>0>>0);if((p|0)!=(H|0)){if(k=p-H|0,g[y>>2]=g[y>>2]&-2,g[H+4>>2]=k|1,g[p>>2]=k,m=k>>>3,k>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=H,g[m+12>>2]=H,g[H+8>>2]=m,g[H+12>>2]=y;break}if(m=k>>>8,m?k>>>0>16777215?S=31:(_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,S=14-(Jt|_e|S)+(Nt<>>15)|0,S=k>>>(S+7|0)&1|S<<1):S=0,y=23620+(S<<2)|0,g[H+28>>2]=S,g[H+20>>2]=0,g[I>>2]=0,m=g[5830]|0,p=1<>2]=H,g[H+24>>2]=y,g[H+12>>2]=H,g[H+8>>2]=H;break}m=g[y>>2]|0;e:do if((g[m+4>>2]&-8|0)!=(k|0)){for(S=k<<((S|0)==31?0:25-(S>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(k|0)){m=p;break e}else S=S<<1,m=p;g[y>>2]=H,g[H+24>>2]=m,g[H+12>>2]=H,g[H+8>>2]=H;break t}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=H,g[_e>>2]=H,g[H+8>>2]=Nt,g[H+12>>2]=m,g[H+24>>2]=0}}else Nt=g[5833]|0,(Nt|0)==0|k>>>0>>0&&(g[5833]=k),g[5941]=k,g[5942]=L,g[5944]=0,g[5838]=g[5947],g[5837]=-1,g[5842]=23356,g[5841]=23356,g[5844]=23364,g[5843]=23364,g[5846]=23372,g[5845]=23372,g[5848]=23380,g[5847]=23380,g[5850]=23388,g[5849]=23388,g[5852]=23396,g[5851]=23396,g[5854]=23404,g[5853]=23404,g[5856]=23412,g[5855]=23412,g[5858]=23420,g[5857]=23420,g[5860]=23428,g[5859]=23428,g[5862]=23436,g[5861]=23436,g[5864]=23444,g[5863]=23444,g[5866]=23452,g[5865]=23452,g[5868]=23460,g[5867]=23460,g[5870]=23468,g[5869]=23468,g[5872]=23476,g[5871]=23476,g[5874]=23484,g[5873]=23484,g[5876]=23492,g[5875]=23492,g[5878]=23500,g[5877]=23500,g[5880]=23508,g[5879]=23508,g[5882]=23516,g[5881]=23516,g[5884]=23524,g[5883]=23524,g[5886]=23532,g[5885]=23532,g[5888]=23540,g[5887]=23540,g[5890]=23548,g[5889]=23548,g[5892]=23556,g[5891]=23556,g[5894]=23564,g[5893]=23564,g[5896]=23572,g[5895]=23572,g[5898]=23580,g[5897]=23580,g[5900]=23588,g[5899]=23588,g[5902]=23596,g[5901]=23596,g[5904]=23604,g[5903]=23604,Nt=L+-40|0,Jt=k+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=k+Jt|0,Jt=Nt-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[k+Nt+4>>2]=40,g[5836]=g[5951];while(!1);if(m=g[5832]|0,m>>>0>Ct>>>0)return Jt=m-Ct|0,g[5832]=Jt,Nt=g[5835]|0,_e=Nt+Ct|0,g[5835]=_e,g[_e+4>>2]=Jt|1,g[Nt+4>>2]=Ct|3,Nt=Nt+8|0,wt=Ze,Nt|0}return Nt=us()|0,g[Nt>>2]=12,Nt=0,wt=Ze,Nt|0}function Gr(p){p=p|0;var m=0,y=0,S=0,I=0,k=0,L=0,z=0,H=0;if(p){y=p+-8|0,I=g[5833]|0,p=g[p+-4>>2]|0,m=p&-8,H=y+m|0;do if(p&1)z=y,L=y;else{if(S=g[y>>2]|0,!(p&3)||(L=y+(0-S)|0,k=S+m|0,L>>>0>>0))return;if((g[5834]|0)==(L|0)){if(p=H+4|0,m=g[p>>2]|0,(m&3|0)!=3){z=L,m=k;break}g[5831]=k,g[p>>2]=m&-2,g[L+4>>2]=k|1,g[L+k>>2]=k;return}if(y=S>>>3,S>>>0<256)if(p=g[L+8>>2]|0,m=g[L+12>>2]|0,(m|0)==(p|0)){g[5829]=g[5829]&~(1<>2]=m,g[m+8>>2]=p,z=L,m=k;break}I=g[L+24>>2]|0,p=g[L+12>>2]|0;do if((p|0)==(L|0)){if(m=L+16|0,y=m+4|0,p=g[y>>2]|0,p)m=y;else if(p=g[m>>2]|0,!p){p=0;break}for(;;)if(S=p+20|0,y=g[S>>2]|0,y)p=y,m=S;else if(S=p+16|0,y=g[S>>2]|0,y)p=y,m=S;else break;g[m>>2]=0}else z=g[L+8>>2]|0,g[z+12>>2]=p,g[p+8>>2]=z;while(!1);if(I){if(m=g[L+28>>2]|0,y=23620+(m<<2)|0,(g[y>>2]|0)==(L|0)){if(g[y>>2]=p,!p){g[5830]=g[5830]&~(1<>2]|0)==(L|0)?z:I+20|0)>>2]=p,!p){z=L,m=k;break}g[p+24>>2]=I,m=L+16|0,y=g[m>>2]|0,y|0&&(g[p+16>>2]=y,g[y+24>>2]=p),m=g[m+4>>2]|0,m?(g[p+20>>2]=m,g[m+24>>2]=p,z=L,m=k):(z=L,m=k)}else z=L,m=k}while(!1);if(!(L>>>0>=H>>>0)&&(p=H+4|0,S=g[p>>2]|0,!!(S&1))){if(S&2)g[p>>2]=S&-2,g[z+4>>2]=m|1,g[L+m>>2]=m,I=m;else{if((g[5835]|0)==(H|0)){if(H=(g[5832]|0)+m|0,g[5832]=H,g[5835]=z,g[z+4>>2]=H|1,(z|0)!=(g[5834]|0))return;g[5834]=0,g[5831]=0;return}if((g[5834]|0)==(H|0)){H=(g[5831]|0)+m|0,g[5831]=H,g[5834]=L,g[z+4>>2]=H|1,g[L+H>>2]=H;return}I=(S&-8)+m|0,y=S>>>3;do if(S>>>0<256)if(m=g[H+8>>2]|0,p=g[H+12>>2]|0,(p|0)==(m|0)){g[5829]=g[5829]&~(1<>2]=p,g[p+8>>2]=m;break}else{k=g[H+24>>2]|0,p=g[H+12>>2]|0;do if((p|0)==(H|0)){if(m=H+16|0,y=m+4|0,p=g[y>>2]|0,p)m=y;else if(p=g[m>>2]|0,!p){y=0;break}for(;;)if(S=p+20|0,y=g[S>>2]|0,y)p=y,m=S;else if(S=p+16|0,y=g[S>>2]|0,y)p=y,m=S;else break;g[m>>2]=0,y=p}else y=g[H+8>>2]|0,g[y+12>>2]=p,g[p+8>>2]=y,y=p;while(!1);if(k|0){if(p=g[H+28>>2]|0,m=23620+(p<<2)|0,(g[m>>2]|0)==(H|0)){if(g[m>>2]=y,!y){g[5830]=g[5830]&~(1<>2]|0)==(H|0)?S:k+20|0)>>2]=y,!y)break;g[y+24>>2]=k,p=H+16|0,m=g[p>>2]|0,m|0&&(g[y+16>>2]=m,g[m+24>>2]=y),p=g[p+4>>2]|0,p|0&&(g[y+20>>2]=p,g[p+24>>2]=y)}}while(!1);if(g[z+4>>2]=I|1,g[L+I>>2]=I,(z|0)==(g[5834]|0)){g[5831]=I;return}}if(p=I>>>3,I>>>0<256){y=23356+(p<<1<<2)|0,m=g[5829]|0,p=1<>2]|0):(g[5829]=m|p,p=y,m=y+8|0),g[m>>2]=z,g[p+12>>2]=z,g[z+8>>2]=p,g[z+12>>2]=y;return}p=I>>>8,p?I>>>0>16777215?S=31:(L=(p+1048320|0)>>>16&8,H=p<>>16&4,H=H<>>16&2,S=14-(k|L|S)+(H<>>15)|0,S=I>>>(S+7|0)&1|S<<1):S=0,p=23620+(S<<2)|0,g[z+28>>2]=S,g[z+20>>2]=0,g[z+16>>2]=0,m=g[5830]|0,y=1<>2]=z,g[z+24>>2]=p,g[z+12>>2]=z,g[z+8>>2]=z;else{p=g[p>>2]|0;e:do if((g[p+4>>2]&-8|0)!=(I|0)){for(S=I<<((S|0)==31?0:25-(S>>>1)|0);y=p+16+(S>>>31<<2)|0,m=g[y>>2]|0,!!m;)if((g[m+4>>2]&-8|0)==(I|0)){p=m;break e}else S=S<<1,p=m;g[y>>2]=z,g[z+24>>2]=p,g[z+12>>2]=z,g[z+8>>2]=z;break t}while(!1);L=p+8|0,H=g[L>>2]|0,g[H+12>>2]=z,g[L>>2]=z,g[z+8>>2]=H,g[z+12>>2]=p,g[z+24>>2]=0}while(!1);if(H=(g[5837]|0)+-1|0,g[5837]=H,!(H|0)){for(p=23772;p=g[p>>2]|0,p;)p=p+8|0;g[5837]=-1}}}}function Na(p,m){p=p|0,m=m|0;var y=0;return p?(y=kc(m,p)|0,(m|p)>>>0>65535&&(y=((y>>>0)/(p>>>0)|0|0)==(m|0)?y:-1)):y=0,p=no(y)|0,!p||!(g[p+-4>>2]&3)||Dc(p|0,0,y|0)|0,p|0}function d_(p,m,y,S){return p=p|0,m=m|0,y=y|0,S=S|0,y=p+y>>>0,$e(m+S+(y>>>0

>>0|0)>>>0|0),y|0|0}function Bd(p,m,y,S){return p=p|0,m=m|0,y=y|0,S=S|0,S=m-S-(y>>>0>p>>>0|0)>>>0,$e(S|0),p-y>>>0|0|0}function oA(p){return p=p|0,(p?31-(aa(p^p-1)|0)|0:32)|0}function Wl(p,m,y,S,I){p=p|0,m=m|0,y=y|0,S=S|0,I=I|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0;if(ot=p,H=m,it=H,L=y,zt=S,z=zt,!it)return k=(I|0)!=0,z?k?(g[I>>2]=p|0,g[I+4>>2]=m&0,zt=0,I=0,$e(zt|0),I|0):(zt=0,I=0,$e(zt|0),I|0):(k&&(g[I>>2]=(ot>>>0)%(L>>>0),g[I+4>>2]=0),zt=0,I=(ot>>>0)/(L>>>0)>>>0,$e(zt|0),I|0);k=(z|0)==0;do if(L){if(!k){if(k=(aa(z|0)|0)-(aa(it|0)|0)|0,k>>>0<=31){Ct=k+1|0,z=31-k|0,m=k-31>>31,L=Ct,p=ot>>>(Ct>>>0)&m|it<>>(Ct>>>0)&m,k=0,z=ot<>2]=p|0,g[I+4>>2]=H|m&0,zt=0,I=0,$e(zt|0),I|0):(zt=0,I=0,$e(zt|0),I|0)}if(k=L-1|0,k&L|0){z=(aa(L|0)|0)+33-(aa(it|0)|0)|0,ee=64-z|0,Ct=32-z|0,H=Ct>>31,Gt=z-32|0,m=Gt>>31,L=z,p=Ct-1>>31&it>>>(Gt>>>0)|(it<>>(z>>>0))&m,m=m&it>>>(z>>>0),k=ot<>>(Gt>>>0))&H|ot<>31;break}return I|0&&(g[I>>2]=k&ot,g[I+4>>2]=0),(L|0)==1?(Gt=H|m&0,ee=p|0|0,$e(Gt|0),ee|0):(ee=oA(L|0)|0,Gt=it>>>(ee>>>0)|0,ee=it<<32-ee|ot>>>(ee>>>0)|0,$e(Gt|0),ee|0)}else{if(k)return I|0&&(g[I>>2]=(it>>>0)%(L>>>0),g[I+4>>2]=0),Gt=0,ee=(it>>>0)/(L>>>0)>>>0,$e(Gt|0),ee|0;if(!ot)return I|0&&(g[I>>2]=0,g[I+4>>2]=(it>>>0)%(z>>>0)),Gt=0,ee=(it>>>0)/(z>>>0)>>>0,$e(Gt|0),ee|0;if(k=z-1|0,!(k&z))return I|0&&(g[I>>2]=p|0,g[I+4>>2]=k&it|m&0),Gt=0,ee=it>>>((oA(z|0)|0)>>>0),$e(Gt|0),ee|0;if(k=(aa(z|0)|0)-(aa(it|0)|0)|0,k>>>0<=30){m=k+1|0,z=31-k|0,L=m,p=it<>>(m>>>0),m=it>>>(m>>>0),k=0,z=ot<>2]=p|0,g[I+4>>2]=H|m&0,Gt=0,ee=0,$e(Gt|0),ee|0):(Gt=0,ee=0,$e(Gt|0),ee|0)}while(!1);if(!L)it=z,H=0,z=0;else{Ct=y|0|0,ot=zt|S&0,it=d_(Ct|0,ot|0,-1,-1)|0,y=It()|0,H=z,z=0;do S=H,H=k>>>31|H<<1,k=z|k<<1,S=p<<1|S>>>31|0,zt=p>>>31|m<<1|0,Bd(it|0,y|0,S|0,zt|0)|0,ee=It()|0,Gt=ee>>31|((ee|0)<0?-1:0)<<1,z=Gt&1,p=Bd(S|0,zt|0,Gt&Ct|0,(((ee|0)<0?-1:0)>>31|((ee|0)<0?-1:0)<<1)&ot|0)|0,m=It()|0,L=L-1|0;while(L|0);it=H,H=0}return L=0,I|0&&(g[I>>2]=p,g[I+4>>2]=m),Gt=(k|0)>>>31|(it|L)<<1|(L<<1|k>>>31)&0|H,ee=(k<<1|0)&-2|z,$e(Gt|0),ee|0}function qo(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var I=0,k=0;return k=wt,wt=wt+16|0,I=k|0,Wl(p,m,y,S,I)|0,wt=k,$e(g[I+4>>2]|0),g[I>>2]|0|0}function me(p,m,y){return p=p|0,m=m|0,y=y|0,(y|0)<32?($e(m>>>y|0),p>>>y|(m&(1<>>y-32|0)}function Le(p,m,y){return p=p|0,m=m|0,y=y|0,(y|0)<32?($e(m<>>32-y|0),p<=0?+as(p+.5):+Qi(p-.5)}function Ua(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0;if((y|0)>=8192)return Hp(p|0,m|0,y|0)|0,p|0;if(k=p|0,I=p+y|0,(p&3)==(m&3)){for(;p&3;){if(!y)return k|0;vr[p>>0]=vr[m>>0]|0,p=p+1|0,m=m+1|0,y=y-1|0}for(y=I&-4|0,S=y-64|0;(p|0)<=(S|0);)g[p>>2]=g[m>>2],g[p+4>>2]=g[m+4>>2],g[p+8>>2]=g[m+8>>2],g[p+12>>2]=g[m+12>>2],g[p+16>>2]=g[m+16>>2],g[p+20>>2]=g[m+20>>2],g[p+24>>2]=g[m+24>>2],g[p+28>>2]=g[m+28>>2],g[p+32>>2]=g[m+32>>2],g[p+36>>2]=g[m+36>>2],g[p+40>>2]=g[m+40>>2],g[p+44>>2]=g[m+44>>2],g[p+48>>2]=g[m+48>>2],g[p+52>>2]=g[m+52>>2],g[p+56>>2]=g[m+56>>2],g[p+60>>2]=g[m+60>>2],p=p+64|0,m=m+64|0;for(;(p|0)<(y|0);)g[p>>2]=g[m>>2],p=p+4|0,m=m+4|0}else for(y=I-4|0;(p|0)<(y|0);)vr[p>>0]=vr[m>>0]|0,vr[p+1>>0]=vr[m+1>>0]|0,vr[p+2>>0]=vr[m+2>>0]|0,vr[p+3>>0]=vr[m+3>>0]|0,p=p+4|0,m=m+4|0;for(;(p|0)<(I|0);)vr[p>>0]=vr[m>>0]|0,p=p+1|0,m=m+1|0;return k|0}function Dc(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,I=0,k=0,L=0;if(k=p+y|0,m=m&255,(y|0)>=67){for(;p&3;)vr[p>>0]=m,p=p+1|0;for(S=k&-4|0,L=m|m<<8|m<<16|m<<24,I=S-64|0;(p|0)<=(I|0);)g[p>>2]=L,g[p+4>>2]=L,g[p+8>>2]=L,g[p+12>>2]=L,g[p+16>>2]=L,g[p+20>>2]=L,g[p+24>>2]=L,g[p+28>>2]=L,g[p+32>>2]=L,g[p+36>>2]=L,g[p+40>>2]=L,g[p+44>>2]=L,g[p+48>>2]=L,g[p+52>>2]=L,g[p+56>>2]=L,g[p+60>>2]=L,p=p+64|0;for(;(p|0)<(S|0);)g[p>>2]=L,p=p+4|0}for(;(p|0)<(k|0);)vr[p>>0]=m,p=p+1|0;return k-y|0}function Lx(p){return p=+p,p>=0?+as(p+.5):+Qi(p-.5)}function Xi(p){p=p|0;var m=0,y=0,S=0;return S=Ym()|0,y=g[Ts>>2]|0,m=y+p|0,(p|0)>0&(m|0)<(y|0)|(m|0)<0?(Qm(m|0)|0,Zm(12),-1):(m|0)>(S|0)&&!(qp(m|0)|0)?(Zm(12),-1):(g[Ts>>2]=m,y|0)}return{___uremdi3:qo,_bitshift64Lshr:me,_bitshift64Shl:Le,_calloc:Na,_cellAreaKm2:h_,_cellAreaM2:Cx,_cellAreaRads2:u_,_compact:Ah,_destroyLinkedPolygon:Ft,_edgeLengthKm:ln,_edgeLengthM:rA,_emscripten_replace_memory:$m,_exactEdgeLengthKm:iA,_exactEdgeLengthM:rr,_exactEdgeLengthRads:_o,_experimentalH3ToLocalIj:Qt,_experimentalLocalIjToH3:se,_free:Gr,_geoToH3:sA,_getDestinationH3IndexFromUnidirectionalEdge:Z,_getH3IndexesFromUnidirectionalEdge:st,_getH3UnidirectionalEdge:U,_getH3UnidirectionalEdgeBoundary:pt,_getH3UnidirectionalEdgesFromHexagon:At,_getOriginH3IndexFromUnidirectionalEdge:W,_getPentagonIndexes:O,_getRes0Indexes:s_,_h3Distance:pe,_h3GetBaseCell:xf,_h3GetFaces:b,_h3GetResolution:fr,_h3IndexesAreNeighbors:B,_h3IsPentagon:Ui,_h3IsResClassIII:bf,_h3IsValid:nA,_h3Line:xe,_h3LineSize:he,_h3SetToLinkedGeo:oh,_h3ToCenterChild:f_,_h3ToChildren:io,_h3ToGeo:l,_h3ToGeoBoundary:d,_h3ToParent:Dd,_h3UnidirectionalEdgeIsValid:Q,_hexAreaKm2:c_,_hexAreaM2:ua,_hexRing:i_,_i64Subtract:Bd,_kRing:e_,_kRingDistances:r_,_llvm_minnum_f64:dl,_llvm_round_f64:Sf,_malloc:no,_maxFaceCount:v,_maxH3ToChildrenSize:Gn,_maxKringSize:Xm,_maxPolyfillSize:Pd,_maxUncompactSize:yn,_memcpy:Ua,_memset:Dc,_numHexagons:l0,_pentagonIndexCount:M,_pointDistKm:Rc,_pointDistM:o0,_pointDistRads:Au,_polyfill:Zp,_res0IndexCount:n_,_round:Lx,_sbrk:Xi,_sizeOfCoordIJ:zs,_sizeOfGeoBoundary:Vr,_sizeOfGeoCoord:Jr,_sizeOfGeoPolygon:Rn,_sizeOfGeofence:ei,_sizeOfH3Index:Vi,_sizeOfLinkedGeoPolygon:$i,_uncompact:Cn,establishStackSpace:Px,stackAlloc:Td,stackRestore:Ed,stackSave:Md}}(vt,xt,er),Dt=t.___uremdi3=_t.___uremdi3,Mt=t._bitshift64Lshr=_t._bitshift64Lshr,Ut=t._bitshift64Shl=_t._bitshift64Shl,re=t._calloc=_t._calloc,ne=t._cellAreaKm2=_t._cellAreaKm2,oe=t._cellAreaM2=_t._cellAreaM2,ar=t._cellAreaRads2=_t._cellAreaRads2,_r=t._compact=_t._compact,Ye=t._destroyLinkedPolygon=_t._destroyLinkedPolygon,lr=t._edgeLengthKm=_t._edgeLengthKm,xr=t._edgeLengthM=_t._edgeLengthM,vi=t._emscripten_replace_memory=_t._emscripten_replace_memory,Bi=t._exactEdgeLengthKm=_t._exactEdgeLengthKm,ni=t._exactEdgeLengthM=_t._exactEdgeLengthM,Hr=t._exactEdgeLengthRads=_t._exactEdgeLengthRads,Un=t._experimentalH3ToLocalIj=_t._experimentalH3ToLocalIj,Li=t._experimentalLocalIjToH3=_t._experimentalLocalIjToH3,gn=t._free=_t._free,Kn=t._geoToH3=_t._geoToH3,oa=t._getDestinationH3IndexFromUnidirectionalEdge=_t._getDestinationH3IndexFromUnidirectionalEdge,Om=t._getH3IndexesFromUnidirectionalEdge=_t._getH3IndexesFromUnidirectionalEdge,Fl=t._getH3UnidirectionalEdge=_t._getH3UnidirectionalEdge,ws=t._getH3UnidirectionalEdgeBoundary=_t._getH3UnidirectionalEdgeBoundary,ih=t._getH3UnidirectionalEdgesFromHexagon=_t._getH3UnidirectionalEdgesFromHexagon,ai=t._getOriginH3IndexFromUnidirectionalEdge=_t._getOriginH3IndexFromUnidirectionalEdge,La=t._getPentagonIndexes=_t._getPentagonIndexes,Lc=t._getRes0Indexes=_t._getRes0Indexes,on=t._h3Distance=_t._h3Distance,kn=t._h3GetBaseCell=_t._h3GetBaseCell,Bm=t._h3GetFaces=_t._h3GetFaces,Vo=t._h3GetResolution=_t._h3GetResolution,Vn=t._h3IndexesAreNeighbors=_t._h3IndexesAreNeighbors,mo=t._h3IsPentagon=_t._h3IsPentagon,zl=t._h3IsResClassIII=_t._h3IsResClassIII,Yi=t._h3IsValid=_t._h3IsValid,_i=t._h3Line=_t._h3Line,Nl=t._h3LineSize=_t._h3LineSize,an=t._h3SetToLinkedGeo=_t._h3SetToLinkedGeo,hu=t._h3ToCenterChild=_t._h3ToCenterChild,Jn=t._h3ToChildren=_t._h3ToChildren,Up=t._h3ToGeo=_t._h3ToGeo,Ul=t._h3ToGeoBoundary=_t._h3ToGeoBoundary,md=t._h3ToParent=_t._h3ToParent,gd=t._h3UnidirectionalEdgeIsValid=_t._h3UnidirectionalEdgeIsValid,_d=t._hexAreaKm2=_t._hexAreaKm2,yd=t._hexAreaM2=_t._hexAreaM2,lt=t._hexRing=_t._hexRing,ft=t._i64Subtract=_t._i64Subtract,Lt=t._kRing=_t._kRing,$t=t._kRingDistances=_t._kRingDistances,ge=t._llvm_minnum_f64=_t._llvm_minnum_f64,qe=t._llvm_round_f64=_t._llvm_round_f64,ti=t._malloc=_t._malloc,ts=t._maxFaceCount=_t._maxFaceCount,Ss=t._maxH3ToChildrenSize=_t._maxH3ToChildrenSize,Bs=t._maxKringSize=_t._maxKringSize,ka=t._maxPolyfillSize=_t._maxPolyfillSize,Fm=t._maxUncompactSize=_t._maxUncompactSize,Mx=t._memcpy=_t._memcpy,Ex=t._memset=_t._memset,Xg=t._numHexagons=_t._numHexagons,Kg=t._pentagonIndexCount=_t._pentagonIndexCount,Af=t._pointDistKm=_t._pointDistKm,zm=t._pointDistM=_t._pointDistM,cl=t._pointDistRads=_t._pointDistRads,Nm=t._polyfill=_t._polyfill,Um=t._res0IndexCount=_t._res0IndexCount,Vp=t._round=_t._round,Vm=t._sbrk=_t._sbrk,vd=t._sizeOfCoordIJ=_t._sizeOfCoordIJ,nh=t._sizeOfGeoBoundary=_t._sizeOfGeoBoundary,ui=t._sizeOfGeoCoord=_t._sizeOfGeoCoord,jm=t._sizeOfGeoPolygon=_t._sizeOfGeoPolygon,Ra=t._sizeOfGeofence=_t._sizeOfGeofence,Da=t._sizeOfH3Index=_t._sizeOfH3Index,Jg=t._sizeOfLinkedGeoPolygon=_t._sizeOfLinkedGeoPolygon,Gm=t._uncompact=_t._uncompact,Wm=t.establishStackSpace=_t.establishStackSpace,jp=t.stackAlloc=_t.stackAlloc,Hm=t.stackRestore=_t.stackRestore,Gp=t.stackSave=_t.stackSave;if(t.asm=_t,t.cwrap=ut,t.setValue=j,t.getValue=Y,t.getTempRet0=R,po){Pa(po)||(po=o(po));{uu(\"memory initializer\");var xd=function(Ht){Ht.byteLength&&(Ht=new Uint8Array(Ht)),zi.set(Ht,N),t.memoryInitializerRequest&&delete t.memoryInitializerRequest.response,al(\"memory initializer\")},Wp=function(){c(po,xd,function(){throw\"could not load memory initializer \"+po})},bd=ht(po);if(bd)xd(bd.buffer);else if(t.memoryInitializerRequest){var qm=function(){var Ht=t.memoryInitializerRequest,fe=Ht.response;if(Ht.status!==200&&Ht.status!==0){var De=ht(t.memoryInitializerRequestURL);if(De)fe=De.buffer;else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+Ht.status+\", retrying \"+po),Wp();return}}xd(fe)};t.memoryInitializerRequest.response?setTimeout(qm,0):t.memoryInitializerRequest.addEventListener(\"load\",qm)}else Wp()}}var wd;eo=function Ht(){wd||fu(),wd||(eo=Ht)};function fu(Ht){if(Ht=Ht||s,gi>0||(ol(),gi>0))return;function fe(){wd||(wd=!0,!rt&&(fo(),Ea(),t.onRuntimeInitialized&&t.onRuntimeInitialized(),na()))}t.setStatus?(t.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){t.setStatus(\"\")},1),fe()},1)):fe()}t.run=fu;function sh(Ht){throw t.onAbort&&t.onAbort(Ht),Ht+=\"\",f(Ht),_(Ht),rt=!0,\"abort(\"+Ht+\"). Build with -s ASSERTIONS=1 for more info.\"}if(t.abort=sh,t.preInit)for(typeof t.preInit==\"function\"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return fu(),e}(typeof Tc==\"object\"?Tc:{}),Sr=\"number\",AS=Sr,$r=Sr,mi=Sr,Sc=Sr,ji=Sr,A_t=[[\"sizeOfH3Index\",Sr],[\"sizeOfGeoCoord\",Sr],[\"sizeOfGeoBoundary\",Sr],[\"sizeOfGeoPolygon\",Sr],[\"sizeOfGeofence\",Sr],[\"sizeOfLinkedGeoPolygon\",Sr],[\"sizeOfCoordIJ\",Sr],[\"h3IsValid\",AS,[$r,mi]],[\"geoToH3\",$r,[Sr,Sr,Sc]],[\"h3ToGeo\",null,[$r,mi,ji]],[\"h3ToGeoBoundary\",null,[$r,mi,ji]],[\"maxKringSize\",Sr,[Sr]],[\"kRing\",null,[$r,mi,Sr,ji]],[\"kRingDistances\",null,[$r,mi,Sr,ji,ji]],[\"hexRing\",null,[$r,mi,Sr,ji]],[\"maxPolyfillSize\",Sr,[ji,Sc]],[\"polyfill\",null,[ji,Sc,ji]],[\"h3SetToLinkedGeo\",null,[ji,Sr,ji]],[\"destroyLinkedPolygon\",null,[ji]],[\"compact\",Sr,[ji,ji,Sr]],[\"uncompact\",Sr,[ji,Sr,ji,Sr,Sc]],[\"maxUncompactSize\",Sr,[ji,Sr,Sc]],[\"h3IsPentagon\",AS,[$r,mi]],[\"h3IsResClassIII\",AS,[$r,mi]],[\"h3GetBaseCell\",Sr,[$r,mi]],[\"h3GetResolution\",Sr,[$r,mi]],[\"maxFaceCount\",Sr,[$r,mi]],[\"h3GetFaces\",null,[$r,mi,ji]],[\"h3ToParent\",$r,[$r,mi,Sc]],[\"h3ToChildren\",null,[$r,mi,Sc,ji]],[\"h3ToCenterChild\",$r,[$r,mi,Sc]],[\"maxH3ToChildrenSize\",Sr,[$r,mi,Sc]],[\"h3IndexesAreNeighbors\",AS,[$r,mi,$r,mi]],[\"getH3UnidirectionalEdge\",$r,[$r,mi,$r,mi]],[\"getOriginH3IndexFromUnidirectionalEdge\",$r,[$r,mi]],[\"getDestinationH3IndexFromUnidirectionalEdge\",$r,[$r,mi]],[\"h3UnidirectionalEdgeIsValid\",AS,[$r,mi]],[\"getH3IndexesFromUnidirectionalEdge\",null,[$r,mi,ji]],[\"getH3UnidirectionalEdgesFromHexagon\",null,[$r,mi,ji]],[\"getH3UnidirectionalEdgeBoundary\",null,[$r,mi,ji]],[\"h3Distance\",Sr,[$r,mi,$r,mi]],[\"h3Line\",Sr,[$r,mi,$r,mi,ji]],[\"h3LineSize\",Sr,[$r,mi,$r,mi]],[\"experimentalH3ToLocalIj\",Sr,[$r,mi,$r,mi,ji]],[\"experimentalLocalIjToH3\",Sr,[$r,mi,ji,ji]],[\"hexAreaM2\",Sr,[Sc]],[\"hexAreaKm2\",Sr,[Sc]],[\"edgeLengthM\",Sr,[Sc]],[\"edgeLengthKm\",Sr,[Sc]],[\"pointDistM\",Sr,[ji,ji]],[\"pointDistKm\",Sr,[ji,ji]],[\"pointDistRads\",Sr,[ji,ji]],[\"cellAreaM2\",Sr,[$r,mi]],[\"cellAreaKm2\",Sr,[$r,mi]],[\"cellAreaRads2\",Sr,[$r,mi]],[\"exactEdgeLengthM\",Sr,[$r,mi]],[\"exactEdgeLengthKm\",Sr,[$r,mi]],[\"exactEdgeLengthRads\",Sr,[$r,mi]],[\"numHexagons\",Sr,[Sc]],[\"getRes0Indexes\",null,[ji]],[\"res0IndexCount\",Sr],[\"getPentagonIndexes\",null,[Sr,ji]],[\"pentagonIndexCount\",Sr]],Ta={};A_t.forEach(function(t){Ta[t[0]]=Tc.cwrap.apply(Tc,t)});var ux=16;var mS=8,bse=Ta.sizeOfH3Index(),oQ=Ta.sizeOfGeoCoord(),m_t=Ta.sizeOfGeoBoundary(),wse=Ta.sizeOfGeoPolygon(),Sse=Ta.sizeOfGeofence(),Tse=Ta.sizeOfLinkedGeoPolygon(),Mse=Ta.sizeOfCoordIJ(),nQ={m:\"m\",m2:\"m2\",km:\"km\",km2:\"km2\",rads:\"rads\",rads2:\"rads2\"};function g_t(e){if(typeof e!=\"number\"||e<0||e>15||Math.floor(e)!==e)throw new Error(\"Invalid resolution: \"+e)}var __t=/[^0-9a-fA-F]/;function hx(e){if(Array.isArray(e)&&e.length===2&&Number.isInteger(e[0])&&Number.isInteger(e[1]))return e;if(typeof e!=\"string\"||__t.test(e))return[0,0];var t=parseInt(e.substring(0,e.length-8),ux),r=parseInt(e.substring(e.length-8),ux);return[r,t]}function sQ(e){if(e>=0)return e.toString(ux);e=e&2147483647;var t=aQ(8,e.toString(ux)),r=(parseInt(t[0],ux)+8).toString(ux);return t=r+t.substring(1),t}function y_t(e,t){return sQ(t)+aQ(8,sQ(e))}function aQ(e,t){for(var r=e-t.length,i=\"\",s=0;s180?r[0]-=360:i<-180&&(r[0]+=360)}}function E_t(e,t,r){let[i,s]=yI(e),n=t.length;mQ(t,s);let o=t[0]===t[n-1]?n-1:n;for(let c=0;ce.hexagon},extruded:!0},Op=class e extends tn{constructor(...t){super(...t),G(this,\"state\",void 0)}initializeState(){e._checkH3Lib(),this.state={edgeLengthKM:0,resolution:-1}}shouldUpdateState({changeFlags:t}){return this._shouldUseHighPrecision()?t.propsOrDataChanged:t.somethingChanged}updateState({props:t,changeFlags:r}){if(t.highPrecision!==!0&&(r.dataChanged||r.updateTriggersChanged&&r.updateTriggersChanged.getHexagon)){let i=this._calculateH3DataProps();this.setState(i)}this._updateVertices(this.context.viewport)}_calculateH3DataProps(){let t=-1,r=!1,i=!1,{iterable:s,objectInfo:n}=Xc(this.props.data);for(let o of s){n.index++;let c=this.props.getHexagon(o,n),f=uQ(c);if(t<0){if(t=f,!this.props.highPrecision)break}else if(t!==f){i=!0;break}if(cQ(c)){r=!0;break}}return{resolution:t,edgeLengthKM:t>=0?pQ(t,\"km\"):0,hasMultipleRes:i,hasPentagon:r}}_shouldUseHighPrecision(){if(this.props.highPrecision===\"auto\"){let{resolution:t,hasPentagon:r,hasMultipleRes:i}=this.state,{viewport:s}=this.context;return!!s?.resolution||i||r||t>=0&&t<=5}return this.props.highPrecision}_updateVertices(t){if(this._shouldUseHighPrecision())return;let{resolution:r,edgeLengthKM:i,centerHex:s}=this.state;if(r<0)return;let n=this.props.centerHexagon||hQ(t.latitude,t.longitude,r);if(s===n)return;if(s){let R=dQ(s,n);if(R>=0&&R*i{let N=t.projectFlat(R);return[(N[0]-w)/o[0],(N[1]-C)/o[1]]}),this.setState({centerHex:n,vertices:c})}renderLayers(){return this._shouldUseHighPrecision()?this._renderPolygonLayer():this._renderColumnLayer()}_getForwardProps(){let{elevationScale:t,material:r,coverage:i,extruded:s,wireframe:n,stroked:o,filled:c,lineWidthUnits:f,lineWidthScale:_,lineWidthMinPixels:w,lineWidthMaxPixels:C,getFillColor:R,getElevation:N,getLineColor:j,getLineWidth:Y,transitions:rt,updateTriggers:$}=this.props;return{elevationScale:t,extruded:s,coverage:i,wireframe:n,stroked:o,filled:c,lineWidthUnits:f,lineWidthScale:_,lineWidthMinPixels:w,lineWidthMaxPixels:C,material:r,getElevation:N,getFillColor:R,getLineColor:j,getLineWidth:Y,transitions:rt,updateTriggers:{getFillColor:$.getFillColor,getElevation:$.getElevation,getLineColor:$.getLineColor,getLineWidth:$.getLineWidth}}}_renderPolygonLayer(){let{data:t,getHexagon:r,updateTriggers:i,coverage:s}=this.props,n=this.getSubLayerClass(\"hexagon-cell-hifi\",lf),o=this._getForwardProps();return o.updateTriggers.getPolygon=C_t(i.getHexagon,s),new n(o,this.getSubLayerProps({id:\"hexagon-cell-hifi\",updateTriggers:o.updateTriggers}),{data:t,_normalize:!1,_windingOrder:\"CCW\",positionFormat:\"XY\",getPolygon:(c,f)=>{let _=r(c,f);return I_t(AQ(_,s))}})}_renderColumnLayer(){let{data:t,getHexagon:r,updateTriggers:i}=this.props,s=this.getSubLayerClass(\"hexagon-cell\",af),n=this._getForwardProps();return n.updateTriggers.getPosition=i.getHexagon,new s(n,this.getSubLayerProps({id:\"hexagon-cell\",flatShading:!0,updateTriggers:n.updateTriggers}),{data:t,diskResolution:6,radius:1,vertices:this.state.vertices,getPosition:P_t.bind(null,r)})}};G(Op,\"defaultProps\",L_t);G(Op,\"layerName\",\"H3HexagonLayer\");G(Op,\"_checkH3Lib\",()=>{});var{data:Vse,getHexagon:jse,...k_t}=Op.defaultProps,R_t={_validate:!0},Gse={...k_t,...R_t};var gQ=[[255,255,178],[254,217,118],[254,178,76],[253,141,60],[240,59,32],[189,0,38]];function _Q(e,t=!1,r=Float32Array){let i;if(Number.isFinite(e[0]))i=new r(e);else{i=new r(e.length*4);let s=0;for(let n=0;nc[0]),r=e.map(c=>c[1]),i=Math.min.apply(null,t),s=Math.max.apply(null,t),n=Math.min.apply(null,r),o=Math.max.apply(null,r);return[i,n,s,o]}function bQ(e,t){return t[0]>=e[0]&&t[2]<=e[2]&&t[1]>=e[1]&&t[3]<=e[3]}var vQ=new Float32Array(12);function zB(e,t=2){let r=0;for(let i of e)for(let s=0;s 0.) {\n maxValue = colorDomain[1];\n minValue = colorDomain[0];\n }\n vIntensityMax = intensity / maxValue;\n vIntensityMin = intensity / minValue;\n}\n`;var EQ=`#define SHADER_NAME triangle-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D texture;\nuniform sampler2D colorTexture;\nuniform float aggregationMode;\n\nvarying vec2 vTexCoords;\nvarying float vIntensityMin;\nvarying float vIntensityMax;\n\nvec4 getLinearColor(float value) {\n float factor = clamp(value * vIntensityMax, 0., 1.);\n vec4 color = texture2D(colorTexture, vec2(factor, 0.5));\n color.a *= min(value * vIntensityMin, 1.0);\n return color;\n}\n\nvoid main(void) {\n vec4 weights = texture2D(texture, vTexCoords);\n float weight = weights.r;\n\n if (aggregationMode > 0.5) {\n weight /= max(1.0, weights.a);\n }\n if (weight <= 0.) {\n discard;\n }\n\n vec4 linearColor = getLinearColor(weight);\n linearColor.a *= opacity;\n gl_FragColor =linearColor;\n}\n`;var dx=class extends Tn{getShaders(){return{vs:MQ,fs:EQ,modules:[oo]}}initializeState({gl:t}){this.getAttributeManager().add({positions:{size:3,noAlloc:!0},texCoords:{size:2,noAlloc:!0}}),this.setState({model:this._getModel(t)})}_getModel(t){let{vertexCount:r}=this.props;return new Sn(t,{...this.getShaders(),id:this.props.id,geometry:new As({drawMode:6,vertexCount:r})})}draw({uniforms:t}){let{model:r}=this.state,{texture:i,maxTexture:s,colorTexture:n,intensity:o,threshold:c,aggregationMode:f,colorDomain:_}=this.props;r.setUniforms({...t,texture:i,maxTexture:s,colorTexture:n,intensity:o,threshold:c,aggregationMode:f,colorDomain:_}).draw()}};G(dx,\"layerName\",\"TriangleLayer\");var PQ=`attribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float weights;\nvarying vec4 weightsTexture;\nuniform float radiusPixels;\nuniform float textureWidth;\nuniform vec4 commonBounds;\nuniform float weightsScale;\nvoid main()\n{\n weightsTexture = vec4(weights * weightsScale, 0., 0., 1.);\n\n float radiusTexels = project_pixel_size(radiusPixels) * textureWidth / (commonBounds.z - commonBounds.x);\n gl_PointSize = radiusTexels * 2.;\n\n vec3 commonPosition = project_position(positions, positions64Low);\n gl_Position.xy = (commonPosition.xy - commonBounds.xy) / (commonBounds.zw - commonBounds.xy) ;\n gl_Position.xy = (gl_Position.xy * 2.) - (1.);\n}\n`;var IQ=`varying vec4 weightsTexture;\nfloat gaussianKDE(float u){\n return pow(2.71828, -u*u/0.05555)/(1.77245385*0.166666);\n}\nvoid main()\n{\n float dist = length(gl_PointCoord - vec2(0.5, 0.5));\n if (dist > 0.5) {\n discard;\n }\n gl_FragColor = weightsTexture * gaussianKDE(2. * dist);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var CQ=`attribute vec4 inTexture;\nvarying vec4 outTexture;\n\nvoid main()\n{\noutTexture = inTexture;\ngl_Position = vec4(0, 0, 0, 1.);\ngl_PointSize = 1.0;\n}\n`;var LQ=`varying vec4 outTexture;\nvoid main() {\n gl_FragColor = outTexture;\n gl_FragColor.g = outTexture.r / max(1.0, outTexture.a);\n}\n`;var O_t=2,NB={mipmaps:!1,parameters:{10240:9729,10241:9729,10242:33071,10243:33071},dataFormat:6408},kQ=[0,0],B_t={SUM:0,MEAN:1},F_t={getPosition:{type:\"accessor\",value:e=>e.position},getWeight:{type:\"accessor\",value:1},intensity:{type:\"number\",min:0,value:1},radiusPixels:{type:\"number\",min:1,max:100,value:50},colorRange:gQ,threshold:{type:\"number\",min:0,max:1,value:.05},colorDomain:{type:\"array\",value:null,optional:!0},aggregation:\"SUM\",weightsTextureSize:{type:\"number\",min:128,max:2048,value:2048},debounceTimeout:{type:\"number\",min:0,max:1e3,value:500}},z_t=[Pi.BLEND_EQUATION_MINMAX,Pi.TEXTURE_FLOAT],N_t=[Pi.COLOR_ATTACHMENT_RGBA32F,Pi.FLOAT_BLEND],U_t={data:{props:[\"radiusPixels\"]}},Bp=class extends fx{constructor(...t){super(...t),G(this,\"state\",void 0)}initializeState(){let{gl:t}=this.context;if(!Dh(t,z_t)){this.setState({supported:!1}),nr.error(\"HeatmapLayer: \".concat(this.id,\" is not supported on this browser\"))();return}super.initializeAggregationLayer(U_t),this.setState({supported:!0,colorDomain:kQ}),this._setupTextureParams(),this._setupAttributes(),this._setupResources()}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState(t){this.state.supported&&(super.updateState(t),this._updateHeatmapState(t))}_updateHeatmapState(t){let{props:r,oldProps:i}=t,s=this._getChangeFlags(t);(s.dataChanged||s.viewportChanged)&&(s.boundsChanged=this._updateBounds(s.dataChanged),this._updateTextureRenderingBounds()),s.dataChanged||s.boundsChanged?(clearTimeout(this.state.updateTimer),this.setState({isWeightMapDirty:!0})):s.viewportZoomChanged&&this._debouncedUpdateWeightmap(),r.colorRange!==i.colorRange&&this._updateColorTexture(t),this.state.isWeightMapDirty&&this._updateWeightmap(),this.setState({zoom:t.context.viewport.zoom})}renderLayers(){if(!this.state.supported)return[];let{weightsTexture:t,triPositionBuffer:r,triTexCoordBuffer:i,maxWeightsTexture:s,colorTexture:n,colorDomain:o}=this.state,{updateTriggers:c,intensity:f,threshold:_,aggregation:w}=this.props,C=this.getSubLayerClass(\"triangle\",dx);return new C(this.getSubLayerProps({id:\"triangle-layer\",updateTriggers:c}),{coordinateSystem:Yr.DEFAULT,data:{attributes:{positions:r,texCoords:i}},vertexCount:4,maxTexture:s,colorTexture:n,aggregationMode:B_t[w]||0,texture:t,intensity:f,threshold:_,colorDomain:o})}finalizeState(t){super.finalizeState(t);let{weightsTransform:r,weightsTexture:i,maxWeightTransform:s,maxWeightsTexture:n,triPositionBuffer:o,triTexCoordBuffer:c,colorTexture:f,updateTimer:_}=this.state;r?.delete(),i?.delete(),s?.delete(),n?.delete(),o?.delete(),c?.delete(),f?.delete(),_&&clearTimeout(_)}_getAttributeManager(){return new Yf(this.context.gl,{id:this.props.id,stats:this.context.stats})}_getChangeFlags(t){let r={},{dimensions:i}=this.state;r.dataChanged=this.isAttributeChanged()||this.isAggregationDirty(t,{compareAll:!0,dimension:i.data}),r.viewportChanged=t.changeFlags.viewportChanged;let{zoom:s}=this.state;return(!t.context.viewport||t.context.viewport.zoom!==s)&&(r.viewportZoomChanged=!0),r}_createTextures(){let{gl:t}=this.context,{textureSize:r,format:i,type:s}=this.state;this.setState({weightsTexture:new pi(t,{width:r,height:r,format:i,type:s,...NB}),maxWeightsTexture:new pi(t,{format:i,type:s,...NB})})}_setupAttributes(){this.getAttributeManager().add({positions:{size:3,type:5130,accessor:\"getPosition\"},weights:{size:1,accessor:\"getWeight\"}}),this.setState({positionAttributeName:\"positions\"})}_setupTextureParams(){let{gl:t}=this.context,{weightsTextureSize:r}=this.props,i=Math.min(r,fy(t,3379)),s=Dh(t,N_t),{format:n,type:o}=TQ({gl:t,floatTargetSupport:s}),c=s?1:1/255;this.setState({textureSize:i,format:n,type:o,weightsScale:c}),s||nr.warn(\"HeatmapLayer: \".concat(this.id,\" rendering to float texture not supported, fallingback to low precession format\"))()}getShaders(t){return super.getShaders(t===\"max-weights-transform\"?{vs:CQ,_fs:LQ}:{vs:PQ,_fs:IQ})}_createWeightsTransform(t={}){var r;let{gl:i}=this.context,{weightsTransform:s}=this.state,{weightsTexture:n}=this.state;(r=s)===null||r===void 0||r.delete(),s=new ec(i,{id:\"\".concat(this.id,\"-weights-transform\"),elementCount:1,_targetTexture:n,_targetTextureVarying:\"weightsTexture\",...t}),this.setState({weightsTransform:s})}_setupResources(){let{gl:t}=this.context;this._createTextures();let{textureSize:r,weightsTexture:i,maxWeightsTexture:s}=this.state,n=this.getShaders(\"weights-transform\");this._createWeightsTransform(n);let o=this.getShaders(\"max-weights-transform\"),c=new ec(t,{id:\"\".concat(this.id,\"-max-weights-transform\"),_sourceTextures:{inTexture:i},_targetTexture:s,_targetTextureVarying:\"outTexture\",...o,elementCount:r*r});this.setState({weightsTexture:i,maxWeightsTexture:s,maxWeightTransform:c,zoom:null,triPositionBuffer:new Fr(t,{byteLength:48,accessor:{size:3}}),triTexCoordBuffer:new Fr(t,{byteLength:48,accessor:{size:2}})})}updateShaders(t){this._createWeightsTransform(t)}_updateMaxWeightValue(){let{maxWeightTransform:t}=this.state;t.run({parameters:{blend:!0,depthTest:!1,blendFunc:[1,1],blendEquation:32776}})}_updateBounds(t=!1){let{viewport:r}=this.context,i=[r.unproject([0,0]),r.unproject([r.width,0]),r.unproject([r.width,r.height]),r.unproject([0,r.height])].map(c=>c.map(Math.fround)),s=xQ(i),n={visibleWorldBounds:s,viewportCorners:i},o=!1;if(t||!this.state.worldBounds||!bQ(this.state.worldBounds,s)){let c=this._worldToCommonBounds(s),f=this._commonToWorldBounds(c);this.props.coordinateSystem===Yr.LNGLAT&&(f[1]=Math.max(f[1],-85.051129),f[3]=Math.min(f[3],85.051129),f[0]=Math.max(f[0],-360),f[2]=Math.min(f[2],360));let _=this._worldToCommonBounds(f);n.worldBounds=f,n.normalizedCommonBounds=_,o=!0}return this.setState(n),o}_updateTextureRenderingBounds(){let{triPositionBuffer:t,triTexCoordBuffer:r,normalizedCommonBounds:i,viewportCorners:s}=this.state,{viewport:n}=this.context;t.subData(zB(s,3));let o=s.map(c=>SQ(n.projectPosition(c),i));r.subData(zB(o,2))}_updateColorTexture(t){let{colorRange:r}=t.props,{colorTexture:i}=this.state,s=_Q(r,!1,Uint8Array);i?i.setImageData({data:s,width:r.length}):i=new pi(this.context.gl,{data:s,width:r.length,height:1,...NB}),this.setState({colorTexture:i})}_updateWeightmap(){let{radiusPixels:t,colorDomain:r,aggregation:i}=this.props,{weightsTransform:s,worldBounds:n,textureSize:o,weightsTexture:c,weightsScale:f}=this.state;this.state.isWeightMapDirty=!1;let _=this._worldToCommonBounds(n,{useLayerCoordinateSystem:!0});if(r&&i===\"SUM\"){let{viewport:C}=this.context,R=C.distanceScales.metersPerUnit[2]*(_[2]-_[0])/o;this.state.colorDomain=r.map(N=>N*R*f)}else this.state.colorDomain=r||kQ;let w={radiusPixels:t,commonBounds:_,textureWidth:o,weightsScale:f};s.update({elementCount:this.getNumInstances()}),bn(this.context.gl,{clearColor:[0,0,0,0]},()=>{s.run({uniforms:w,parameters:{blend:!0,depthTest:!1,blendFunc:[1,1],blendEquation:32774},clearRenderTarget:!0,attributes:this.getAttributes(),moduleSettings:this.getModuleSettings()})}),this._updateMaxWeightValue(),c.setParameters({10240:9729,10241:9729})}_debouncedUpdateWeightmap(t=!1){let{updateTimer:r}=this.state,{debounceTimeout:i}=this.props;t?(r=null,this._updateBounds(!0),this._updateTextureRenderingBounds(),this.setState({isWeightMapDirty:!0})):(this.setState({isWeightMapDirty:!1}),clearTimeout(r),r=setTimeout(this._debouncedUpdateWeightmap.bind(this,!0),i)),this.setState({updateTimer:r})}_worldToCommonBounds(t,r={}){let{useLayerCoordinateSystem:i=!1}=r,[s,n,o,c]=t,{viewport:f}=this.context,{textureSize:_}=this.state,{coordinateSystem:w}=this.props,C=i&&(w===Yr.LNGLAT_OFFSETS||w===Yr.METER_OFFSETS),R=C?f.projectPosition(this.props.coordinateOrigin):[0,0],N=_*O_t/f.scale,j,Y;return i&&!C?(j=this.projectPosition([s,n,0]),Y=this.projectPosition([o,c,0])):(j=f.projectPosition([s,n,0]),Y=f.projectPosition([o,c,0])),wQ([j[0]-R[0],j[1]-R[1],Y[0]-R[0],Y[1]-R[1]],N,N)}_commonToWorldBounds(t){let[r,i,s,n]=t,{viewport:o}=this.context,c=o.unprojectPosition([r,i]),f=o.unprojectPosition([s,n]);return c.slice(0,2).concat(f.slice(0,2))}};G(Bp,\"layerName\",\"HeatmapLayer\");G(Bp,\"defaultProps\",F_t);var{data:koe,getPosition:Roe,...V_t}=Bp.defaultProps,RQ={_validate:!0},j_t={...V_t,...RQ},gS=class extends tn{static defaultProps=j_t;static layerName=\"GeoArrowHeatmapLayer\";renderLayers(){let{data:t}=this.props,r=Ro(t,Ks.POINT);if(r!==null)return this._renderLayersPoint(r);let i=this.props.getPosition;if(i!==void 0&&sn.isPointVector(i))return this._renderLayersPoint(i);throw new Error(\"getPosition not GeoArrow point\")}_renderLayersPoint(t){let{data:r}=this.props;this.props._validate&&(br(sn.isPointVector(t)),Oo(this.props,r));let[i,s]=Do(this.props,[\"getPosition\"]),n=ra(r.data),o=[];for(let c=0;cr.text()),earcutWorkerPool:null}}async initEarcutPool(){if(this.state.earcutWorkerPool)return this.state.earcutWorkerPool;let t=await this.state.earcutWorkerRequest;if(!t)return null;let r=W$(()=>j$(G$.fromText(t)),8);return this.state.earcutWorkerPool=r,this.state.earcutWorkerPool}async finalizeState(t){await this.state?.earcutWorkerPool?.terminate(),console.log(\"terminated\")}async updateData(){let{data:t}=this.props,r=await this._updateEarcut(t),i=ra(t.data);this.setState({table:this.props.data,triangles:r,tableOffsets:i})}async _updateEarcut(t){let r=Ro(t,Ks.POLYGON);if(r!==null)return this._earcutPolygonVector(r);let i=Ro(t,Ks.MULTIPOLYGON);if(i!==null)return this._earcutMultiPolygonVector(i);let s=this.props.getPolygon;if(s!==void 0&&sn.isPolygonVector(s))return this._earcutPolygonVector(s);if(s!==void 0&&sn.isMultiPolygonVector(s))return this._earcutMultiPolygonVector(s);throw new Error(\"geometryColumn not Polygon or MultiPolygon\")}async _earcutPolygonVector(t){let r=await this.initEarcutPool();if(!r)return this._earcutPolygonVectorMainThread(t);let i=new Array(t.data.length);console.time(\"earcut\");for(let s=0;s{let _=await f(A6(o,c));i[s]=_})}return await r.completed(),console.timeEnd(\"earcut\"),i}_earcutPolygonVectorMainThread(t){let r=new Array(t.data.length);for(let i=0;i{let w=await _(A6(c,f));i[s]=w})}return await r.completed(),console.timeEnd(\"earcut\"),i}_earcutMultiPolygonVectorMainThread(t){let r=new Array(t.data.length);for(let i=0;i{this.table=w2(this.model.get(t))};this.model.on(`change:${t}`,r),this.callbacks.set(`change:${t}`,r)}},BI=class extends Np{static layerType=\"arc\";greatCircle;numSegments;widthUnits;widthScale;widthMinPixels;widthMaxPixels;getSourcePosition;getTargetPosition;getSourceColor;getTargetColor;getWidth;getHeight;getTilt;constructor(t,r){super(t,r),this.initRegularAttribute(\"great_circle\",\"greatCircle\"),this.initRegularAttribute(\"num_segments\",\"numSegments\"),this.initRegularAttribute(\"width_units\",\"widthUnits\"),this.initRegularAttribute(\"width_scale\",\"widthScale\"),this.initRegularAttribute(\"width_min_pixels\",\"widthMinPixels\"),this.initRegularAttribute(\"width_max_pixels\",\"widthMaxPixels\"),this.initVectorizedAccessor(\"get_source_position\",\"getSourcePosition\"),this.initVectorizedAccessor(\"get_target_position\",\"getTargetPosition\"),this.initVectorizedAccessor(\"get_source_color\",\"getSourceColor\"),this.initVectorizedAccessor(\"get_target_color\",\"getTargetColor\"),this.initVectorizedAccessor(\"get_width\",\"getWidth\"),this.initVectorizedAccessor(\"get_height\",\"getHeight\"),this.initVectorizedAccessor(\"get_tilt\",\"getTilt\")}layerProps(){return{data:this.table,getSourcePosition:this.getSourcePosition,getTargetPosition:this.getTargetPosition,...ce(this.greatCircle)&&{greatCircle:this.greatCircle},...ce(this.numSegments)&&{numSegments:this.numSegments},...ce(this.widthUnits)&&{widthUnits:this.widthUnits},...ce(this.widthScale)&&{widthScale:this.widthScale},...ce(this.widthMinPixels)&&{widthMinPixels:this.widthMinPixels},...ce(this.widthMaxPixels)&&{widthMaxPixels:this.widthMaxPixels},...ce(this.getSourceColor)&&{getSourceColor:this.getSourceColor},...ce(this.getTargetColor)&&{getTargetColor:this.getTargetColor},...ce(this.getWidth)&&{getWidth:this.getWidth},...ce(this.getHeight)&&{getHeight:this.getHeight},...ce(this.getTilt)&&{getTilt:this.getTilt}}}render(){return new uS({...this.baseLayerProps(),...this.layerProps()})}},FI=class extends Lg{static layerType=\"bitmap\";image;bounds;desaturate;transparentColor;tintColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"image\",\"image\"),this.initRegularAttribute(\"bounds\",\"bounds\"),this.initRegularAttribute(\"desaturate\",\"desaturate\"),this.initRegularAttribute(\"transparent_color\",\"transparentColor\"),this.initRegularAttribute(\"tint_color\",\"tintColor\")}layerProps(){return{...ce(this.image)&&{image:this.image},...ce(this.bounds)&&{bounds:this.bounds},...ce(this.desaturate)&&{desaturate:this.desaturate},...ce(this.transparentColor)&&{transparentColor:this.transparentColor},...ce(this.tintColor)&&{tintColor:this.tintColor}}}render(){return new wp({...this.baseLayerProps(),...this.layerProps(),data:void 0,pickable:!1})}},zI=class extends Lg{static layerType=\"bitmap-tile\";data;tileSize;zoomOffset;maxZoom;minZoom;extent;maxCacheSize;maxCacheByteSize;refinementStrategy;maxRequests;desaturate;transparentColor;tintColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"data\",\"data\"),this.initRegularAttribute(\"tile_size\",\"tileSize\"),this.initRegularAttribute(\"zoom_offset\",\"zoomOffset\"),this.initRegularAttribute(\"max_zoom\",\"maxZoom\"),this.initRegularAttribute(\"min_zoom\",\"minZoom\"),this.initRegularAttribute(\"extent\",\"extent\"),this.initRegularAttribute(\"max_cache_size\",\"maxCacheSize\"),this.initRegularAttribute(\"max_cache_byte_size\",\"maxCacheByteSize\"),this.initRegularAttribute(\"refinement_strategy\",\"refinementStrategy\"),this.initRegularAttribute(\"max_requests\",\"maxRequests\"),this.initRegularAttribute(\"desaturate\",\"desaturate\"),this.initRegularAttribute(\"transparent_color\",\"transparentColor\"),this.initRegularAttribute(\"tint_color\",\"tintColor\")}bitmapLayerProps(){return{...ce(this.desaturate)&&{desaturate:this.desaturate},...ce(this.transparentColor)&&{transparentColor:this.transparentColor},...ce(this.tintColor)&&{tintColor:this.tintColor}}}layerProps(){return{data:this.data,...ce(this.tileSize)&&{tileSize:this.tileSize},...ce(this.zoomOffset)&&{zoomOffset:this.zoomOffset},...ce(this.maxZoom)&&{maxZoom:this.maxZoom},...ce(this.minZoom)&&{minZoom:this.minZoom},...ce(this.extent)&&{extent:this.extent},...ce(this.maxCacheSize)&&{maxCacheSize:this.maxCacheSize},...ce(this.maxCacheByteSize)&&{maxCacheByteSize:this.maxCacheByteSize},...ce(this.refinementStrategy)&&{refinementStrategy:this.refinementStrategy},...ce(this.maxRequests)&&{maxRequests:this.maxRequests}}}render(){return new Mm({...this.baseLayerProps(),...this.layerProps(),renderSubLayers:t=>{let[r,i]=t.tile.boundingBox;return new wp(t,{...this.bitmapLayerProps(),data:void 0,image:t.data,bounds:[r[0],r[1],i[0],i[1]]})}})}},NI=class extends Np{static layerType=\"column\";diskResolution;radius;angle;vertices;offset;coverage;elevationScale;filled;stroked;extruded;wireframe;flatShading;radiusUnits;lineWidthUnits;lineWidthScale;lineWidthMinPixels;lineWidthMaxPixels;material;getPosition;getFillColor;getLineColor;getElevation;getLineWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"disk_resolution\",\"diskResolution\"),this.initRegularAttribute(\"radius\",\"radius\"),this.initRegularAttribute(\"angle\",\"angle\"),this.initRegularAttribute(\"vertices\",\"vertices\"),this.initRegularAttribute(\"offset\",\"offset\"),this.initRegularAttribute(\"coverage\",\"coverage\"),this.initRegularAttribute(\"elevation_scale\",\"elevationScale\"),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"stroked\",\"stroked\"),this.initRegularAttribute(\"extruded\",\"extruded\"),this.initRegularAttribute(\"wireframe\",\"wireframe\"),this.initRegularAttribute(\"flat_shading\",\"flatShading\"),this.initRegularAttribute(\"radius_units\",\"radiusUnits\"),this.initRegularAttribute(\"line_width_units\",\"lineWidthUnits\"),this.initRegularAttribute(\"line_width_scale\",\"lineWidthScale\"),this.initRegularAttribute(\"line_width_min_pixels\",\"lineWidthMinPixels\"),this.initRegularAttribute(\"line_width_max_pixels\",\"lineWidthMaxPixels\"),this.initRegularAttribute(\"material\",\"material\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\"),this.initVectorizedAccessor(\"get_elevation\",\"getElevation\"),this.initVectorizedAccessor(\"get_line_width\",\"getLineWidth\")}layerProps(){return{data:this.table,...ce(this.diskResolution)&&{diskResolution:this.diskResolution},...ce(this.radius)&&{radius:this.radius},...ce(this.angle)&&{angle:this.angle},...ce(this.vertices)&&this.vertices!==void 0&&{vertices:this.vertices},...ce(this.offset)&&{offset:this.offset},...ce(this.coverage)&&{coverage:this.coverage},...ce(this.elevationScale)&&{elevationScale:this.elevationScale},...ce(this.filled)&&{filled:this.filled},...ce(this.stroked)&&{stroked:this.stroked},...ce(this.extruded)&&{extruded:this.extruded},...ce(this.wireframe)&&{wireframe:this.wireframe},...ce(this.flatShading)&&{flatShading:this.flatShading},...ce(this.radiusUnits)&&{radiusUnits:this.radiusUnits},...ce(this.lineWidthUnits)&&{lineWidthUnits:this.lineWidthUnits},...ce(this.lineWidthScale)&&{lineWidthScale:this.lineWidthScale},...ce(this.lineWidthMinPixels)&&{lineWidthMinPixels:this.lineWidthMinPixels},...ce(this.lineWidthMaxPixels)&&{lineWidthMaxPixels:this.lineWidthMaxPixels},...ce(this.material)&&{material:this.material},...ce(this.getPosition)&&{getPosition:this.getPosition},...ce(this.getFillColor)&&{getFillColor:this.getFillColor},...ce(this.getLineColor)&&{getLineColor:this.getLineColor},...ce(this.getElevation)&&{getElevation:this.getElevation},...ce(this.getLineWidth)&&{getLineWidth:this.getLineWidth}}}render(){return new hS({...this.baseLayerProps(),...this.layerProps()})}},UI=class extends Np{static layerType=\"heatmap\";radiusPixels;colorRange;intensity;threshold;colorDomain;aggregation;weightsTextureSize;debounceTimeout;getPosition;getWeight;constructor(t,r){super(t,r),this.initRegularAttribute(\"radius_pixels\",\"radiusPixels\"),this.initRegularAttribute(\"color_range\",\"colorRange\"),this.initRegularAttribute(\"intensity\",\"intensity\"),this.initRegularAttribute(\"threshold\",\"threshold\"),this.initRegularAttribute(\"color_domain\",\"colorDomain\"),this.initRegularAttribute(\"aggregation\",\"aggregation\"),this.initRegularAttribute(\"weights_texture_size\",\"weightsTextureSize\"),this.initRegularAttribute(\"debounce_timeout\",\"debounceTimeout\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_weight\",\"getWeight\")}layerProps(){return{data:this.table,...ce(this.radiusPixels)&&{radiusPixels:this.radiusPixels},...ce(this.colorRange)&&{colorRange:this.colorRange},...ce(this.intensity)&&{intensity:this.intensity},...ce(this.threshold)&&{threshold:this.threshold},...ce(this.colorDomain)&&{colorDomain:this.colorDomain},...ce(this.aggregation)&&{aggregation:this.aggregation},...ce(this.weightsTextureSize)&&{weightsTextureSize:this.weightsTextureSize},...ce(this.debounceTimeout)&&{debounceTimeout:this.debounceTimeout},...ce(this.getPosition)&&{getPosition:this.getPosition},...ce(this.getWeight)&&{getWeight:this.getWeight}}}render(){return new gS({...this.baseLayerProps(),...this.layerProps()})}},DS=class extends Np{static layerType=\"path\";widthUnits;widthScale;widthMinPixels;widthMaxPixels;jointRounded;capRounded;miterLimit;billboard;getColor;getWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"width_units\",\"widthUnits\"),this.initRegularAttribute(\"width_scale\",\"widthScale\"),this.initRegularAttribute(\"width_min_pixels\",\"widthMinPixels\"),this.initRegularAttribute(\"width_max_pixels\",\"widthMaxPixels\"),this.initRegularAttribute(\"joint_rounded\",\"jointRounded\"),this.initRegularAttribute(\"cap_rounded\",\"capRounded\"),this.initRegularAttribute(\"miter_limit\",\"miterLimit\"),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_width\",\"getWidth\")}layerProps(){return{data:this.table,...ce(this.widthUnits)&&{widthUnits:this.widthUnits},...ce(this.widthScale)&&{widthScale:this.widthScale},...ce(this.widthMinPixels)&&{widthMinPixels:this.widthMinPixels},...ce(this.widthMaxPixels)&&{widthMaxPixels:this.widthMaxPixels},...ce(this.jointRounded)&&{jointRounded:this.jointRounded},...ce(this.capRounded)&&{capRounded:this.capRounded},...ce(this.miterLimit)&&{miterLimit:this.miterLimit},...ce(this.billboard)&&{billboard:this.billboard},...ce(this.getColor)&&{getColor:this.getColor},...ce(this.getWidth)&&{getWidth:this.getWidth}}}render(){return new px({...this.baseLayerProps(),...this.layerProps()})}},OS=class extends Np{static layerType=\"scatterplot\";radiusUnits;radiusScale;radiusMinPixels;radiusMaxPixels;lineWidthUnits;lineWidthScale;lineWidthMinPixels;lineWidthMaxPixels;stroked;filled;billboard;antialiasing;getRadius;getFillColor;getLineColor;getLineWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"radius_units\",\"radiusUnits\"),this.initRegularAttribute(\"radius_scale\",\"radiusScale\"),this.initRegularAttribute(\"radius_min_pixels\",\"radiusMinPixels\"),this.initRegularAttribute(\"radius_max_pixels\",\"radiusMaxPixels\"),this.initRegularAttribute(\"line_width_units\",\"lineWidthUnits\"),this.initRegularAttribute(\"line_width_scale\",\"lineWidthScale\"),this.initRegularAttribute(\"line_width_min_pixels\",\"lineWidthMinPixels\"),this.initRegularAttribute(\"line_width_max_pixels\",\"lineWidthMaxPixels\"),this.initRegularAttribute(\"stroked\",\"stroked\"),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initRegularAttribute(\"antialiasing\",\"antialiasing\"),this.initVectorizedAccessor(\"get_radius\",\"getRadius\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\"),this.initVectorizedAccessor(\"get_line_width\",\"getLineWidth\")}layerProps(){return{data:this.table,...ce(this.radiusUnits)&&{radiusUnits:this.radiusUnits},...ce(this.radiusScale)&&{radiusScale:this.radiusScale},...ce(this.radiusMinPixels)&&{radiusMinPixels:this.radiusMinPixels},...ce(this.radiusMaxPixels)&&{radiusMaxPixels:this.radiusMaxPixels},...ce(this.lineWidthUnits)&&{lineWidthUnits:this.lineWidthUnits},...ce(this.lineWidthScale)&&{lineWidthScale:this.lineWidthScale},...ce(this.lineWidthMinPixels)&&{lineWidthMinPixels:this.lineWidthMinPixels},...ce(this.lineWidthMaxPixels)&&{lineWidthMaxPixels:this.lineWidthMaxPixels},...ce(this.stroked)&&{stroked:this.stroked},...ce(this.filled)&&{filled:this.filled},...ce(this.billboard)&&{billboard:this.billboard},...ce(this.antialiasing)&&{antialiasing:this.antialiasing},...ce(this.getRadius)&&{getRadius:this.getRadius},...ce(this.getFillColor)&&{getFillColor:this.getFillColor},...ce(this.getLineColor)&&{getLineColor:this.getLineColor},...ce(this.getLineWidth)&&{getLineWidth:this.getLineWidth}}}render(){return new kS({...this.baseLayerProps(),...this.layerProps()})}},BS=class extends Np{static layerType=\"solid-polygon\";filled;extruded;wireframe;elevationScale;getElevation;getFillColor;getLineColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"extruded\",\"extruded\"),this.initRegularAttribute(\"wireframe\",\"wireframe\"),this.initRegularAttribute(\"elevation_scale\",\"elevationScale\"),this.initVectorizedAccessor(\"get_elevation\",\"getElevation\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\")}layerProps(){return{data:this.table,...ce(this.filled)&&{filled:this.filled},...ce(this.extruded)&&{extruded:this.extruded},...ce(this.wireframe)&&{wireframe:this.wireframe},...ce(this.elevationScale)&&{elevationScale:this.elevationScale},...ce(this.getElevation)&&{getElevation:this.getElevation},...ce(this.getFillColor)&&{getFillColor:this.getFillColor},...ce(this.getLineColor)&&{getLineColor:this.getLineColor}}}render(){return new Tx({...this.baseLayerProps(),...this.layerProps()})}},VI=class extends Np{static layerType=\"text\";billboard;sizeScale;sizeUnits;sizeMinPixels;sizeMaxPixels;getBackgroundColor;getBorderColor;getBorderWidth;backgroundPadding;characterSet;fontFamily;fontWeight;lineHeight;outlineWidth;outlineColor;fontSettings;wordBreak;maxWidth;getText;getPosition;getColor;getSize;getAngle;getTextAnchor;getAlignmentBaseline;getPixelOffset;constructor(t,r){super(t,r),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initRegularAttribute(\"size_scale\",\"sizeScale\"),this.initRegularAttribute(\"size_units\",\"sizeUnits\"),this.initRegularAttribute(\"size_min_pixels\",\"sizeMinPixels\"),this.initRegularAttribute(\"size_max_pixels\",\"sizeMaxPixels\"),this.initRegularAttribute(\"background_padding\",\"backgroundPadding\"),this.initRegularAttribute(\"character_set\",\"characterSet\"),this.initRegularAttribute(\"font_family\",\"fontFamily\"),this.initRegularAttribute(\"font_weight\",\"fontWeight\"),this.initRegularAttribute(\"line_height\",\"lineHeight\"),this.initRegularAttribute(\"outline_width\",\"outlineWidth\"),this.initRegularAttribute(\"outline_color\",\"outlineColor\"),this.initRegularAttribute(\"font_settings\",\"fontSettings\"),this.initRegularAttribute(\"word_break\",\"wordBreak\"),this.initRegularAttribute(\"max_width\",\"maxWidth\"),this.initVectorizedAccessor(\"get_background_color\",\"getBackgroundColor\"),this.initVectorizedAccessor(\"get_border_color\",\"getBorderColor\"),this.initVectorizedAccessor(\"get_border_width\",\"getBorderWidth\"),this.initVectorizedAccessor(\"get_text\",\"getText\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_size\",\"getSize\"),this.initVectorizedAccessor(\"get_angle\",\"getAngle\"),this.initVectorizedAccessor(\"get_text_anchor\",\"getTextAnchor\"),this.initVectorizedAccessor(\"get_alignment_baseline\",\"getAlignmentBaseline\"),this.initVectorizedAccessor(\"get_pixel_offset\",\"getPixelOffset\")}layerProps(){return{data:this.table,getText:this.getText,...ce(this.billboard)&&{billboard:this.billboard},...ce(this.sizeScale)&&{sizeScale:this.sizeScale},...ce(this.sizeUnits)&&{sizeUnits:this.sizeUnits},...ce(this.sizeMinPixels)&&{sizeMinPixels:this.sizeMinPixels},...ce(this.sizeMaxPixels)&&{sizeMaxPixels:this.sizeMaxPixels},...ce(this.backgroundPadding)&&{backgroundPadding:this.backgroundPadding},...ce(this.characterSet)&&{characterSet:this.characterSet},...ce(this.fontFamily)&&{fontFamily:this.fontFamily},...ce(this.fontWeight)&&{fontWeight:this.fontWeight},...ce(this.lineHeight)&&{lineHeight:this.lineHeight},...ce(this.outlineWidth)&&{outlineWidth:this.outlineWidth},...ce(this.outlineColor)&&{outlineColor:this.outlineColor},...ce(this.fontSettings)&&{fontSettings:this.fontSettings},...ce(this.wordBreak)&&{wordBreak:this.wordBreak},...ce(this.maxWidth)&&{maxWidth:this.maxWidth},...ce(this.getBackgroundColor)&&{getBackgroundColor:this.getBackgroundColor},...ce(this.getBorderColor)&&{getBorderColor:this.getBorderColor},...ce(this.getBorderWidth)&&{getBorderWidth:this.getBorderWidth},...ce(this.getPosition)&&{getPosition:this.getPosition},...ce(this.getColor)&&{getColor:this.getColor},...ce(this.getSize)&&{getSize:this.getSize},...ce(this.getAngle)&&{getAngle:this.getAngle},...ce(this.getTextAnchor)&&{getTextAnchor:this.getTextAnchor},...ce(this.getAlignmentBaseline)&&{getAlignmentBaseline:this.getAlignmentBaseline},...ce(this.getPixelOffset)&&{getPixelOffset:this.getPixelOffset}}}render(){return new RS({...this.baseLayerProps(),...this.layerProps()})}};async function _6(e,t){let r=e.get(\"_layer_type\"),i;switch(r){case BI.layerType:i=new BI(e,t);break;case FI.layerType:i=new FI(e,t);break;case zI.layerType:i=new zI(e,t);break;case NI.layerType:i=new NI(e,t);break;case UI.layerType:i=new UI(e,t);break;case DS.layerType:i=new DS(e,t);break;case OS.layerType:i=new OS(e,t);break;case BS.layerType:i=new BS(e,t);break;case VI.layerType:i=new VI(e,t);break;default:throw new Error(`no layer supported for ${r}`)}return await i.loadSubModels(),i}var jI=Symbol.for(\"rowIndex\");function Fxt(e){return`\n \n ${Object.keys(e).map(t=>{let r=e[t];return`\n \n \n `}).join(\"\")}\n \n
${t}${r}
`}function q$({object:e}){if(e){if(e[jI]===null||e[jI]===void 0||e[jI]&&e[jI]<0)return null;let t=e.toJSON();return!t||(delete t.geometry,Object.keys(t).length===0)?null:{className:\"lonboard-tooltip\",html:Fxt(t),style:{backgroundColor:\"#fff\",boxShadow:\"0 0 15px rgba(0, 0, 0, 0.1)\",color:\"#000\",padding:\"6px\"}}}return null}var GI,zxt=new Uint8Array(16);function y6(){if(!GI&&(GI=typeof crypto<\"u\"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!GI))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return GI(zxt)}var Ma=[];for(let e=0;e<256;++e)Ma.push((e+256).toString(16).slice(1));function Z$(e,t=0){return Ma[e[t+0]]+Ma[e[t+1]]+Ma[e[t+2]]+Ma[e[t+3]]+\"-\"+Ma[e[t+4]]+Ma[e[t+5]]+\"-\"+Ma[e[t+6]]+Ma[e[t+7]]+\"-\"+Ma[e[t+8]]+Ma[e[t+9]]+\"-\"+Ma[e[t+10]]+Ma[e[t+11]]+Ma[e[t+12]]+Ma[e[t+13]]+Ma[e[t+14]]+Ma[e[t+15]]}var Nxt=typeof crypto<\"u\"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),v6={randomUUID:Nxt};function Uxt(e,t,r){if(v6.randomUUID&&!t&&!e)return v6.randomUUID();e=e||{};let i=e.random||(e.rng||y6)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t){r=r||0;for(let s=0;s<16;++s)t[r+s]=i[s];return t}return Z$(i)}var x6=Uxt;await XW();var Vxt={latitude:10,longitude:0,zoom:.5,bearing:0,pitch:0},jxt=\"https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json\";async function Gxt(e,t,r,i){let s={},n=()=>i(new Date);for(let o=0;o{(async()=>{let j=await d3(f.widget_manager,_),Y=await Gxt(j,_,o,C);c(Y)})().catch(console.error)},[_]);let R=[];for(let N of Object.values(o))R.push(N.render());return(0,$g.useEffect)(()=>{if(r)return;let j=document.getElementById(`map-${n}`)?.parentElement;if(j){let Y=window.getComputedStyle(j);(!Y.height||Y.height===\"0px\")&&(j.style.height=\"100%\",j.style.minHeight=\"500px\")}},[]),WI.createElement(\"div\",{id:`map-${n}`,style:{height:r||\"100%\"}},WI.createElement(SD,{initialViewState:[\"longitude\",\"latitude\",\"zoom\"].every(N=>Object.keys(e).includes(N))?e:Vxt,controller:!0,layers:R,getTooltip:i&&q$,pickingRadius:s},WI.createElement(j8,{mapStyle:t||jxt})))}var Hxt={render:E8(Wxt)},Bce=Hxt;export{Bce as default};\n/*! Bundled license information:\n\nreact/cjs/react.production.min.js:\n (**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nscheduler/cjs/scheduler.production.min.js:\n (**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nreact-dom/cjs/react-dom.production.min.js:\n (**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nhammerjs/hammer.js:\n (*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license *)\n*/\n", "_height": null, "_initial_view_state": { "latitude": 30.27504616188673, "longitude": 21.17458729027878, "zoom": 1 }, "_model_module": "anywidget", "_model_name": "AnyModel", "_view_name": "ErrorWidgetView", "basemap_style": "https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json", "error": {}, "layers": [ "IPY_MODEL_86c77079fb0f4064a75941af529d5f32" ], "layout": "IPY_MODEL_e113a500f0c943729217631ae3818597", "msg": "Failed to load model class 'AnyModel' from module 'anywidget'", "picking_radius": 5, "show_tooltip": true } }, "491fdd28ed9b4289b67cdaf522365135": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatRangeSliderModel", "state": { "_model_name": "FloatRangeSliderModel", "_view_name": "FloatRangeSliderView", "behavior": "drag-tap", "description": "Latency: ", "layout": "IPY_MODEL_a85708f3c39b4473b4a807ad0f437056", "max": 500, "style": "IPY_MODEL_b9c22a8ce63e40ec9df9f90f35ee9b05", "value": [ 0, 100 ] } }, "6573b575a4e54c9aaff09fda16afdfbe": { "model_module": "anywidget", "model_module_version": "0.9.3", "model_name": "AnyModel", "state": { "_anywidget_id": "lonboard._map.Map", "_css": ".lonboard-tooltip{font-family:var(--jp-ui-font-family);font-size:var(--jp-ui-font-size1)}.lonboard-tooltip table{border-collapse:collapse}.lonboard-tooltip table tr:nth-child(odd){background-color:#fff}.lonboard-tooltip table tr:nth-child(2n){background-color:#f1f1f1}.lonboard-tooltip td{border:1px solid rgb(204,204,204);padding:5px}.lonboard-tooltip td:first-child{font-weight:450}\n", "_esm": "var tJ=Object.create;var BC=Object.defineProperty;var eJ=Object.getOwnPropertyDescriptor;var rJ=Object.getOwnPropertyNames;var iJ=Object.getPrototypeOf,nJ=Object.prototype.hasOwnProperty;var Br=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mA=(e,t)=>{for(var r in t)BC(e,r,{get:t[r],enumerable:!0})},sJ=(e,t,r,i)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let s of rJ(t))!nJ.call(e,s)&&s!==r&&BC(e,s,{get:()=>t[s],enumerable:!(i=eJ(t,s))||i.enumerable});return e};var Ri=(e,t,r)=>(r=e!=null?tJ(iJ(e)):{},sJ(t||!e||!e.__esModule?BC(r,\"default\",{value:e,enumerable:!0}):r,e));var c5=Br(Di=>{\"use strict\";var $x=Symbol.for(\"react.element\"),oJ=Symbol.for(\"react.portal\"),aJ=Symbol.for(\"react.fragment\"),lJ=Symbol.for(\"react.strict_mode\"),cJ=Symbol.for(\"react.profiler\"),uJ=Symbol.for(\"react.provider\"),hJ=Symbol.for(\"react.context\"),fJ=Symbol.for(\"react.forward_ref\"),dJ=Symbol.for(\"react.suspense\"),pJ=Symbol.for(\"react.memo\"),AJ=Symbol.for(\"react.lazy\"),JF=Symbol.iterator;function mJ(e){return e===null||typeof e!=\"object\"?null:(e=JF&&e[JF]||e[\"@@iterator\"],typeof e==\"function\"?e:null)}var r5={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},i5=Object.assign,n5={};function M_(e,t,r){this.props=e,this.context=t,this.refs=n5,this.updater=r||r5}M_.prototype.isReactComponent={};M_.prototype.setState=function(e,t){if(typeof e!=\"object\"&&typeof e!=\"function\"&&e!=null)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")};M_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function s5(){}s5.prototype=M_.prototype;function zC(e,t,r){this.props=e,this.context=t,this.refs=n5,this.updater=r||r5}var NC=zC.prototype=new s5;NC.constructor=zC;i5(NC,M_.prototype);NC.isPureReactComponent=!0;var t5=Array.isArray,o5=Object.prototype.hasOwnProperty,UC={current:null},a5={key:!0,ref:!0,__self:!0,__source:!0};function l5(e,t,r){var i,s={},n=null,o=null;if(t!=null)for(i in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(n=\"\"+t.key),t)o5.call(t,i)&&!a5.hasOwnProperty(i)&&(s[i]=t[i]);var c=arguments.length-2;if(c===1)s.children=r;else if(1{\"use strict\";u5.exports=c5()});var v5=Br(Bn=>{\"use strict\";function HC(e,t){var r=e.length;e.push(t);t:for(;0>>1,s=e[i];if(0>>1;iaT(c,r))faT(_,c)?(e[i]=_,e[f]=r,i=f):(e[i]=c,e[o]=r,i=o);else if(faT(_,r))e[i]=_,e[f]=r,i=f;else break t}}return t}function aT(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}typeof performance==\"object\"&&typeof performance.now==\"function\"?(h5=performance,Bn.unstable_now=function(){return h5.now()}):(jC=Date,f5=jC.now(),Bn.unstable_now=function(){return jC.now()-f5});var h5,jC,f5,Pf=[],gA=[],xJ=1,vu=null,qa=3,uT=!1,g0=!1,Kx=!1,A5=typeof setTimeout==\"function\"?setTimeout:null,m5=typeof clearTimeout==\"function\"?clearTimeout:null,d5=typeof setImmediate<\"u\"?setImmediate:null;typeof navigator<\"u\"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function qC(e){for(var t=wh(gA);t!==null;){if(t.callback===null)cT(gA);else if(t.startTime<=e)cT(gA),t.sortIndex=t.expirationTime,HC(Pf,t);else break;t=wh(gA)}}function ZC(e){if(Kx=!1,qC(e),!g0)if(wh(Pf)!==null)g0=!0,QC(YC);else{var t=wh(gA);t!==null&&$C(ZC,t.startTime-e)}}function YC(e,t){g0=!1,Kx&&(Kx=!1,m5(Jx),Jx=-1),uT=!0;var r=qa;try{for(qC(t),vu=wh(Pf);vu!==null&&(!(vu.expirationTime>t)||e&&!y5());){var i=vu.callback;if(typeof i==\"function\"){vu.callback=null,qa=vu.priorityLevel;var s=i(vu.expirationTime<=t);t=Bn.unstable_now(),typeof s==\"function\"?vu.callback=s:vu===wh(Pf)&&cT(Pf),qC(t)}else cT(Pf);vu=wh(Pf)}if(vu!==null)var n=!0;else{var o=wh(gA);o!==null&&$C(ZC,o.startTime-t),n=!1}return n}finally{vu=null,qa=r,uT=!1}}var hT=!1,lT=null,Jx=-1,g5=5,_5=-1;function y5(){return!(Bn.unstable_now()-_5e||125i?(e.sortIndex=r,HC(gA,e),wh(Pf)===null&&e===wh(gA)&&(Kx?(m5(Jx),Jx=-1):Kx=!0,$C(ZC,r-i))):(e.sortIndex=s,HC(Pf,e),g0||uT||(g0=!0,QC(YC))),e};Bn.unstable_shouldYield=y5;Bn.unstable_wrapCallback=function(e){var t=qa;return function(){var r=qa;qa=t;try{return e.apply(this,arguments)}finally{qa=r}}}});var b5=Br((w1t,x5)=>{\"use strict\";x5.exports=v5()});var P8=Br(Hc=>{\"use strict\";var Iz=en(),Gc=b5();function Ee(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,r=1;r\"u\"||typeof window.document>\"u\"||typeof window.document.createElement>\"u\"),yL=Object.prototype.hasOwnProperty,bJ=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,w5={},S5={};function wJ(e){return yL.call(S5,e)?!0:yL.call(w5,e)?!1:bJ.test(e)?S5[e]=!0:(w5[e]=!0,!1)}function SJ(e,t,r,i){if(r!==null&&r.type===0)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return i?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!==\"data-\"&&e!==\"aria-\");default:return!1}}function TJ(e,t,r,i){if(t===null||typeof t>\"u\"||SJ(e,t,r,i))return!0;if(i)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Sl(e,t,r,i,s,n,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=i,this.attributeNamespace=s,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=n,this.removeEmptyString=o}var ga={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(e){ga[e]=new Sl(e,0,!1,e,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(e){var t=e[0];ga[t]=new Sl(t,1,!1,e[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(e){ga[e]=new Sl(e,2,!1,e.toLowerCase(),null,!1,!1)});[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(e){ga[e]=new Sl(e,2,!1,e,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(e){ga[e]=new Sl(e,3,!1,e.toLowerCase(),null,!1,!1)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(e){ga[e]=new Sl(e,3,!0,e,null,!1,!1)});[\"capture\",\"download\"].forEach(function(e){ga[e]=new Sl(e,4,!1,e,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(e){ga[e]=new Sl(e,6,!1,e,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(e){ga[e]=new Sl(e,5,!1,e.toLowerCase(),null,!1,!1)});var hk=/[\\-:]([a-z])/g;function fk(e){return e[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(e){var t=e.replace(hk,fk);ga[t]=new Sl(t,1,!1,e,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(e){var t=e.replace(hk,fk);ga[t]=new Sl(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(e){var t=e.replace(hk,fk);ga[t]=new Sl(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(e){ga[e]=new Sl(e,1,!1,e.toLowerCase(),null,!1,!1)});ga.xlinkHref=new Sl(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(e){ga[e]=new Sl(e,1,!1,e.toLowerCase(),null,!0,!0)});function dk(e,t,r,i){var s=ga.hasOwnProperty(t)?ga[t]:null;(s!==null?s.type!==0:i||!(2c||s[o]!==n[c]){var f=`\n`+s[o].replace(\" at new \",\" at \");return e.displayName&&f.includes(\"\")&&(f=f.replace(\"\",e.displayName)),f}while(1<=o&&0<=c);break}}}finally{KC=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:\"\")?l1(e):\"\"}function MJ(e){switch(e.tag){case 5:return l1(e.type);case 16:return l1(\"Lazy\");case 13:return l1(\"Suspense\");case 19:return l1(\"SuspenseList\");case 0:case 2:case 15:return e=JC(e.type,!1),e;case 11:return e=JC(e.type.render,!1),e;case 1:return e=JC(e.type,!0),e;default:return\"\"}}function wL(e){if(e==null)return null;if(typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case C_:return\"Fragment\";case I_:return\"Portal\";case vL:return\"Profiler\";case pk:return\"StrictMode\";case xL:return\"Suspense\";case bL:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case kz:return(e.displayName||\"Context\")+\".Consumer\";case Lz:return(e._context.displayName||\"Context\")+\".Provider\";case Ak:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||\"\",e=e!==\"\"?\"ForwardRef(\"+e+\")\":\"ForwardRef\"),e;case mk:return t=e.displayName||null,t!==null?t:wL(e.type)||\"Memo\";case yA:t=e._payload,e=e._init;try{return wL(e(t))}catch{}}return null}function EJ(e){var t=e.type;switch(e.tag){case 24:return\"Cache\";case 9:return(t.displayName||\"Context\")+\".Consumer\";case 10:return(t._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return e=t.render,e=e.displayName||e.name||\"\",t.displayName||(e!==\"\"?\"ForwardRef(\"+e+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return t;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return wL(t);case 8:return t===pk?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t==\"function\")return t.displayName||t.name||null;if(typeof t==\"string\")return t}return null}function RA(e){switch(typeof e){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return e;case\"object\":return e;default:return\"\"}}function Dz(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===\"input\"&&(t===\"checkbox\"||t===\"radio\")}function PJ(e){var t=Dz(e)?\"checked\":\"value\",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=\"\"+e[t];if(!e.hasOwnProperty(t)&&typeof r<\"u\"&&typeof r.get==\"function\"&&typeof r.set==\"function\"){var s=r.get,n=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(o){i=\"\"+o,n.call(this,o)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return i},setValue:function(o){i=\"\"+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function dT(e){e._valueTracker||(e._valueTracker=PJ(e))}function Oz(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),i=\"\";return e&&(i=Dz(e)?e.checked?\"true\":\"false\":e.value),e=i,e!==r?(t.setValue(e),!0):!1}function VT(e){if(e=e||(typeof document<\"u\"?document:void 0),typeof e>\"u\")return null;try{return e.activeElement||e.body}catch{return e.body}}function SL(e,t){var r=t.checked;return As({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function M5(e,t){var r=t.defaultValue==null?\"\":t.defaultValue,i=t.checked!=null?t.checked:t.defaultChecked;r=RA(t.value!=null?t.value:r),e._wrapperState={initialChecked:i,initialValue:r,controlled:t.type===\"checkbox\"||t.type===\"radio\"?t.checked!=null:t.value!=null}}function Bz(e,t){t=t.checked,t!=null&&dk(e,\"checked\",t,!1)}function TL(e,t){Bz(e,t);var r=RA(t.value),i=t.type;if(r!=null)i===\"number\"?(r===0&&e.value===\"\"||e.value!=r)&&(e.value=\"\"+r):e.value!==\"\"+r&&(e.value=\"\"+r);else if(i===\"submit\"||i===\"reset\"){e.removeAttribute(\"value\");return}t.hasOwnProperty(\"value\")?ML(e,t.type,r):t.hasOwnProperty(\"defaultValue\")&&ML(e,t.type,RA(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function E5(e,t,r){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var i=t.type;if(!(i!==\"submit\"&&i!==\"reset\"||t.value!==void 0&&t.value!==null))return;t=\"\"+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==\"\"&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,r!==\"\"&&(e.name=r)}function ML(e,t,r){(t!==\"number\"||VT(e.ownerDocument)!==e)&&(r==null?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+r&&(e.defaultValue=\"\"+r))}var c1=Array.isArray;function V_(e,t,r,i){if(e=e.options,t){t={};for(var s=0;s\"+t.valueOf().toString()+\"\",t=pT.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function b1(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var f1={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},IJ=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(f1).forEach(function(e){IJ.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),f1[t]=f1[e]})});function Uz(e,t,r){return t==null||typeof t==\"boolean\"||t===\"\"?\"\":r||typeof t!=\"number\"||t===0||f1.hasOwnProperty(e)&&f1[e]?(\"\"+t).trim():t+\"px\"}function Vz(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var i=r.indexOf(\"--\")===0,s=Uz(r,t[r],i);r===\"float\"&&(r=\"cssFloat\"),i?e.setProperty(r,s):e[r]=s}}var CJ=As({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function IL(e,t){if(t){if(CJ[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Ee(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Ee(60));if(typeof t.dangerouslySetInnerHTML!=\"object\"||!(\"__html\"in t.dangerouslySetInnerHTML))throw Error(Ee(61))}if(t.style!=null&&typeof t.style!=\"object\")throw Error(Ee(62))}}function CL(e,t){if(e.indexOf(\"-\")===-1)return typeof t.is==\"string\";switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var LL=null;function gk(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var kL=null,j_=null,G_=null;function C5(e){if(e=U1(e)){if(typeof kL!=\"function\")throw Error(Ee(280));var t=e.stateNode;t&&(t=AM(t),kL(e.stateNode,e.type,t))}}function jz(e){j_?G_?G_.push(e):G_=[e]:j_=e}function Gz(){if(j_){var e=j_,t=G_;if(G_=j_=null,C5(e),t)for(e=0;e>>=0,e===0?32:31-(VJ(e)/jJ|0)|0}var AT=64,mT=4194304;function u1(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function HT(e,t){var r=e.pendingLanes;if(r===0)return 0;var i=0,s=e.suspendedLanes,n=e.pingedLanes,o=r&268435455;if(o!==0){var c=o&~s;c!==0?i=u1(c):(n&=o,n!==0&&(i=u1(n)))}else o=r&~s,o!==0?i=u1(o):n!==0&&(i=u1(n));if(i===0)return 0;if(t!==0&&t!==i&&!(t&s)&&(s=i&-i,n=t&-t,s>=n||s===16&&(n&4194240)!==0))return t;if(i&4&&(i|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=i;0r;r++)t.push(e);return t}function z1(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ph(t),e[t]=r}function qJ(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=p1),N5=\" \",U5=!1;function cN(e,t){switch(e){case\"keyup\":return vtt.indexOf(t.keyCode)!==-1;case\"keydown\":return t.keyCode!==229;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function uN(e){return e=e.detail,typeof e==\"object\"&&\"data\"in e?e.data:null}var L_=!1;function btt(e,t){switch(e){case\"compositionend\":return uN(t);case\"keypress\":return t.which!==32?null:(U5=!0,N5);case\"textInput\":return e=t.data,e===N5&&U5?null:e;default:return null}}function wtt(e,t){if(L_)return e===\"compositionend\"||!Tk&&cN(e,t)?(e=aN(),kT=bk=wA=null,L_=!1,e):null;switch(e){case\"paste\":return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=i}t:{for(;r;){if(r.nextSibling){r=r.nextSibling;break t}r=r.parentNode}r=void 0}r=G5(r)}}function pN(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?pN(e,t.parentNode):\"contains\"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function AN(){for(var e=window,t=VT();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href==\"string\"}catch{r=!1}if(r)e=t.contentWindow;else break;t=VT(e.document)}return t}function Mk(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===\"input\"&&(e.type===\"text\"||e.type===\"search\"||e.type===\"tel\"||e.type===\"url\"||e.type===\"password\")||t===\"textarea\"||e.contentEditable===\"true\")}function ktt(e){var t=AN(),r=e.focusedElem,i=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&pN(r.ownerDocument.documentElement,r)){if(i!==null&&Mk(r)){if(t=i.start,e=i.end,e===void 0&&(e=t),\"selectionStart\"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=r.textContent.length,n=Math.min(i.start,s);i=i.end===void 0?n:Math.min(i.end,s),!e.extend&&n>i&&(s=i,i=n,n=s),s=W5(r,n);var o=W5(r,i);s&&o&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),n>i?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus==\"function\"&&r.focus(),r=0;r=document.documentMode,k_=null,zL=null,m1=null,NL=!1;function H5(e,t,r){var i=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;NL||k_==null||k_!==VT(i)||(i=k_,\"selectionStart\"in i&&Mk(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),m1&&P1(m1,i)||(m1=i,i=YT(zL,\"onSelect\"),0O_||(e.current=HL[O_],HL[O_]=null,O_--)}function Fn(e,t){O_++,HL[O_]=e.current,e.current=t}var DA={},$a=BA(DA),$l=BA(!1),T0=DA;function Y_(e,t){var r=e.type.contextTypes;if(!r)return DA;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var s={},n;for(n in r)s[n]=t[n];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function Xl(e){return e=e.childContextTypes,e!=null}function $T(){Hn($l),Hn($a)}function tz(e,t,r){if($a.current!==DA)throw Error(Ee(168));Fn($a,t),Fn($l,r)}function SN(e,t,r){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!=\"function\")return r;i=i.getChildContext();for(var s in i)if(!(s in t))throw Error(Ee(108,EJ(e)||\"Unknown\",s));return As({},r,i)}function XT(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||DA,T0=$a.current,Fn($a,e),Fn($l,$l.current),!0}function ez(e,t,r){var i=e.stateNode;if(!i)throw Error(Ee(169));r?(e=SN(e,t,T0),i.__reactInternalMemoizedMergedChildContext=e,Hn($l),Hn($a),Fn($a,e)):Hn($l),Fn($l,r)}var Wd=null,mM=!1,uL=!1;function TN(e){Wd===null?Wd=[e]:Wd.push(e)}function jtt(e){mM=!0,TN(e)}function FA(){if(!uL&&Wd!==null){uL=!0;var e=0,t=_n;try{var r=Wd;for(_n=1;e>=o,s-=o,Hd=1<<32-Ph(t)+s|r<Zt?(ce=Kt,Kt=null):ce=Kt.sibling;var ue=R(Y,Kt,J[Zt],ut);if(ue===null){Kt===null&&(Kt=ce);break}e&&Kt&&ue.alternate===null&&t(Y,Kt),K=n(ue,K,Zt),kt===null?Pt=ue:kt.sibling=ue,kt=ue,Kt=ce}if(Zt===J.length)return r(Y,Kt),rs&&_0(Y,Zt),Pt;if(Kt===null){for(;ZtZt?(ce=Kt,Kt=null):ce=Kt.sibling;var Ge=R(Y,Kt,ue.value,ut);if(Ge===null){Kt===null&&(Kt=ce);break}e&&Kt&&Ge.alternate===null&&t(Y,Kt),K=n(Ge,K,Zt),kt===null?Pt=Ge:kt.sibling=Ge,kt=Ge,Kt=ce}if(ue.done)return r(Y,Kt),rs&&_0(Y,Zt),Pt;if(Kt===null){for(;!ue.done;Zt++,ue=J.next())ue=I(Y,ue.value,ut),ue!==null&&(K=n(ue,K,Zt),kt===null?Pt=ue:kt.sibling=ue,kt=ue);return rs&&_0(Y,Zt),Pt}for(Kt=i(Y,Kt);!ue.done;Zt++,ue=J.next())ue=N(Kt,Y,Zt,ue.value,ut),ue!==null&&(e&&ue.alternate!==null&&Kt.delete(ue.key===null?Zt:ue.key),K=n(ue,K,Zt),kt===null?Pt=ue:kt.sibling=ue,kt=ue);return e&&Kt.forEach(function(tr){return t(Y,tr)}),rs&&_0(Y,Zt),Pt}function et(Y,K,J,ut){if(typeof J==\"object\"&&J!==null&&J.type===C_&&J.key===null&&(J=J.props.children),typeof J==\"object\"&&J!==null){switch(J.$$typeof){case fT:t:{for(var Pt=J.key,kt=K;kt!==null;){if(kt.key===Pt){if(Pt=J.type,Pt===C_){if(kt.tag===7){r(Y,kt.sibling),K=s(kt,J.props.children),K.return=Y,Y=K;break t}}else if(kt.elementType===Pt||typeof Pt==\"object\"&&Pt!==null&&Pt.$$typeof===yA&&lz(Pt)===kt.type){r(Y,kt.sibling),K=s(kt,J.props),K.ref=n1(Y,kt,J),K.return=Y,Y=K;break t}r(Y,kt);break}else t(Y,kt);kt=kt.sibling}J.type===C_?(K=S0(J.props.children,Y.mode,ut,J.key),K.return=Y,Y=K):(ut=UT(J.type,J.key,J.props,null,Y.mode,ut),ut.ref=n1(Y,K,J),ut.return=Y,Y=ut)}return o(Y);case I_:t:{for(kt=J.key;K!==null;){if(K.key===kt)if(K.tag===4&&K.stateNode.containerInfo===J.containerInfo&&K.stateNode.implementation===J.implementation){r(Y,K.sibling),K=s(K,J.children||[]),K.return=Y,Y=K;break t}else{r(Y,K);break}else t(Y,K);K=K.sibling}K=_L(J,Y.mode,ut),K.return=Y,Y=K}return o(Y);case yA:return kt=J._init,et(Y,K,kt(J._payload),ut)}if(c1(J))return j(Y,K,J,ut);if(t1(J))return Q(Y,K,J,ut);ET(Y,J)}return typeof J==\"string\"&&J!==\"\"||typeof J==\"number\"?(J=\"\"+J,K!==null&&K.tag===6?(r(Y,K.sibling),K=s(K,J),K.return=Y,Y=K):(r(Y,K),K=gL(J,Y.mode,ut),K.return=Y,Y=K),o(Y)):r(Y,K)}return et}var $_=RN(!0),DN=RN(!1),V1={},Rf=BA(V1),k1=BA(V1),R1=BA(V1);function b0(e){if(e===V1)throw Error(Ee(174));return e}function Ok(e,t){switch(Fn(R1,t),Fn(k1,e),Fn(Rf,V1),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:PL(null,\"\");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=PL(t,e)}Hn(Rf),Fn(Rf,t)}function X_(){Hn(Rf),Hn(k1),Hn(R1)}function ON(e){b0(R1.current);var t=b0(Rf.current),r=PL(t,e.type);t!==r&&(Fn(k1,e),Fn(Rf,r))}function Bk(e){k1.current===e&&(Hn(Rf),Hn(k1))}var ds=BA(0);function iM(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data===\"$?\"||r.data===\"$!\"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var hL=[];function Fk(){for(var e=0;er?r:4,e(!0);var i=fL.transition;fL.transition={};try{e(!1),t()}finally{_n=r,fL.transition=i}}function XN(){return Mu().memoizedState}function qtt(e,t,r){var i=LA(e);if(r={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null},KN(e))JN(t,r);else if(r=IN(e,t,r,i),r!==null){var s=wl();Ih(r,e,i,s),t8(r,t,i)}}function Ztt(e,t,r){var i=LA(e),s={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null};if(KN(e))JN(t,s);else{var n=e.alternate;if(e.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var o=t.lastRenderedState,c=n(o,r);if(s.hasEagerState=!0,s.eagerState=c,Ch(c,o)){var f=t.interleaved;f===null?(s.next=s,Rk(t)):(s.next=f.next,f.next=s),t.interleaved=s;return}}catch{}finally{}r=IN(e,t,s,i),r!==null&&(s=wl(),Ih(r,e,i,s),t8(r,t,i))}}function KN(e){var t=e.alternate;return e===ps||t!==null&&t===ps}function JN(e,t){g1=nM=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function t8(e,t,r){if(r&4194240){var i=t.lanes;i&=e.pendingLanes,r|=i,t.lanes=r,yk(e,r)}}var sM={readContext:Tu,useCallback:Za,useContext:Za,useEffect:Za,useImperativeHandle:Za,useInsertionEffect:Za,useLayoutEffect:Za,useMemo:Za,useReducer:Za,useRef:Za,useState:Za,useDebugValue:Za,useDeferredValue:Za,useTransition:Za,useMutableSource:Za,useSyncExternalStore:Za,useId:Za,unstable_isNewReconciler:!1},Ytt={readContext:Tu,useCallback:function(e,t){return Cf().memoizedState=[e,t===void 0?null:t],e},useContext:Tu,useEffect:uz,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,BT(4194308,4,qN.bind(null,t,e),r)},useLayoutEffect:function(e,t){return BT(4194308,4,e,t)},useInsertionEffect:function(e,t){return BT(4,2,e,t)},useMemo:function(e,t){var r=Cf();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var i=Cf();return t=r!==void 0?r(t):t,i.memoizedState=i.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},i.queue=e,e=e.dispatch=qtt.bind(null,ps,e),[i.memoizedState,e]},useRef:function(e){var t=Cf();return e={current:e},t.memoizedState=e},useState:cz,useDebugValue:jk,useDeferredValue:function(e){return Cf().memoizedState=e},useTransition:function(){var e=cz(!1),t=e[0];return e=Htt.bind(null,e[1]),Cf().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var i=ps,s=Cf();if(rs){if(r===void 0)throw Error(Ee(407));r=r()}else{if(r=t(),ta===null)throw Error(Ee(349));E0&30||zN(i,t,r)}s.memoizedState=r;var n={value:r,getSnapshot:t};return s.queue=n,uz(UN.bind(null,i,n,e),[e]),i.flags|=2048,B1(9,NN.bind(null,i,n,r,t),void 0,null),r},useId:function(){var e=Cf(),t=ta.identifierPrefix;if(rs){var r=qd,i=Hd;r=(i&~(1<<32-Ph(i)-1)).toString(32)+r,t=\":\"+t+\"R\"+r,r=D1++,0<\\/script>\",e=e.removeChild(e.firstChild)):typeof i.is==\"string\"?e=o.createElement(r,{is:i.is}):(e=o.createElement(r),r===\"select\"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,r),e[Lf]=t,e[L1]=i,c8(e,t,!1,!1),t.stateNode=e;t:{switch(o=CL(r,i),r){case\"dialog\":Wn(\"cancel\",e),Wn(\"close\",e),s=i;break;case\"iframe\":case\"object\":case\"embed\":Wn(\"load\",e),s=i;break;case\"video\":case\"audio\":for(s=0;sJ_&&(t.flags|=128,i=!0,s1(n,!1),t.lanes=4194304)}else{if(!i)if(e=iM(o),e!==null){if(t.flags|=128,i=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),s1(n,!0),n.tail===null&&n.tailMode===\"hidden\"&&!o.alternate&&!rs)return Ya(t),null}else 2*Ys()-n.renderingStartTime>J_&&r!==1073741824&&(t.flags|=128,i=!0,s1(n,!1),t.lanes=4194304);n.isBackwards?(o.sibling=t.child,t.child=o):(r=n.last,r!==null?r.sibling=o:t.child=o,n.last=o)}return n.tail!==null?(t=n.tail,n.rendering=t,n.tail=t.sibling,n.renderingStartTime=Ys(),t.sibling=null,r=ds.current,Fn(ds,i?r&1|2:r&1),t):(Ya(t),null);case 22:case 23:return Yk(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Uc&1073741824&&(Ya(t),t.subtreeFlags&6&&(t.flags|=8192)):Ya(t),null;case 24:return null;case 25:return null}throw Error(Ee(156,t.tag))}function ret(e,t){switch(Pk(t),t.tag){case 1:return Xl(t.type)&&$T(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return X_(),Hn($l),Hn($a),Fk(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Bk(t),null;case 13:if(Hn(ds),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ee(340));Q_()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Hn(ds),null;case 4:return X_(),null;case 10:return kk(t.type._context),null;case 22:case 23:return Yk(),null;case 24:return null;default:return null}}var IT=!1,Qa=!1,iet=typeof WeakSet==\"function\"?WeakSet:Set,cr=null;function N_(e,t){var r=e.ref;if(r!==null)if(typeof r==\"function\")try{r(null)}catch(i){Cs(e,t,i)}else r.current=null}function ik(e,t,r){try{r()}catch(i){Cs(e,t,i)}}var yz=!1;function net(e,t){if(UL=qT,e=AN(),Mk(e)){if(\"selectionStart\"in e)var r={start:e.selectionStart,end:e.selectionEnd};else t:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var s=i.anchorOffset,n=i.focusNode;i=i.focusOffset;try{r.nodeType,n.nodeType}catch{r=null;break t}var o=0,c=-1,f=-1,_=0,w=0,I=e,R=null;e:for(;;){for(var N;I!==r||s!==0&&I.nodeType!==3||(c=o+s),I!==n||i!==0&&I.nodeType!==3||(f=o+i),I.nodeType===3&&(o+=I.nodeValue.length),(N=I.firstChild)!==null;)R=I,I=N;for(;;){if(I===e)break e;if(R===r&&++_===s&&(c=o),R===n&&++w===i&&(f=o),(N=I.nextSibling)!==null)break;I=R,R=I.parentNode}I=N}r=c===-1||f===-1?null:{start:c,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(VL={focusedElem:e,selectionRange:r},qT=!1,cr=t;cr!==null;)if(t=cr,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,cr=e;else for(;cr!==null;){t=cr;try{var j=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(j!==null){var Q=j.memoizedProps,et=j.memoizedState,Y=t.stateNode,K=Y.getSnapshotBeforeUpdate(t.elementType===t.type?Q:Th(t.type,Q),et);Y.__reactInternalSnapshotBeforeUpdate=K}break;case 3:var J=t.stateNode.containerInfo;J.nodeType===1?J.textContent=\"\":J.nodeType===9&&J.documentElement&&J.removeChild(J.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Ee(163))}}catch(ut){Cs(t,t.return,ut)}if(e=t.sibling,e!==null){e.return=t.return,cr=e;break}cr=t.return}return j=yz,yz=!1,j}function _1(e,t,r){var i=t.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var s=i=i.next;do{if((s.tag&e)===e){var n=s.destroy;s.destroy=void 0,n!==void 0&&ik(t,r,n)}s=s.next}while(s!==i)}}function yM(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var i=r.create;r.destroy=i()}r=r.next}while(r!==t)}}function nk(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t==\"function\"?t(e):t.current=e}}function f8(e){var t=e.alternate;t!==null&&(e.alternate=null,f8(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Lf],delete t[L1],delete t[WL],delete t[Utt],delete t[Vtt])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function d8(e){return e.tag===5||e.tag===3||e.tag===4}function vz(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||d8(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function sk(e,t,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=QT));else if(i!==4&&(e=e.child,e!==null))for(sk(e,t,r),e=e.sibling;e!==null;)sk(e,t,r),e=e.sibling}function ok(e,t,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(ok(e,t,r),e=e.sibling;e!==null;)ok(e,t,r),e=e.sibling}var Aa=null,Mh=!1;function _A(e,t,r){for(r=r.child;r!==null;)p8(e,t,r),r=r.sibling}function p8(e,t,r){if(kf&&typeof kf.onCommitFiberUnmount==\"function\")try{kf.onCommitFiberUnmount(hM,r)}catch{}switch(r.tag){case 5:Qa||N_(r,t);case 6:var i=Aa,s=Mh;Aa=null,_A(e,t,r),Aa=i,Mh=s,Aa!==null&&(Mh?(e=Aa,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Aa.removeChild(r.stateNode));break;case 18:Aa!==null&&(Mh?(e=Aa,r=r.stateNode,e.nodeType===8?cL(e.parentNode,r):e.nodeType===1&&cL(e,r),M1(e)):cL(Aa,r.stateNode));break;case 4:i=Aa,s=Mh,Aa=r.stateNode.containerInfo,Mh=!0,_A(e,t,r),Aa=i,Mh=s;break;case 0:case 11:case 14:case 15:if(!Qa&&(i=r.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){s=i=i.next;do{var n=s,o=n.destroy;n=n.tag,o!==void 0&&(n&2||n&4)&&ik(r,t,o),s=s.next}while(s!==i)}_A(e,t,r);break;case 1:if(!Qa&&(N_(r,t),i=r.stateNode,typeof i.componentWillUnmount==\"function\"))try{i.props=r.memoizedProps,i.state=r.memoizedState,i.componentWillUnmount()}catch(c){Cs(r,t,c)}_A(e,t,r);break;case 21:_A(e,t,r);break;case 22:r.mode&1?(Qa=(i=Qa)||r.memoizedState!==null,_A(e,t,r),Qa=i):_A(e,t,r);break;default:_A(e,t,r)}}function xz(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new iet),t.forEach(function(i){var s=pet.bind(null,e,i);r.has(i)||(r.add(i),i.then(s,s))})}}function Sh(e,t){var r=t.deletions;if(r!==null)for(var i=0;is&&(s=o),i&=~n}if(i=s,i=Ys()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*oet(i/1960))-i,10e?16:e,SA===null)var i=!1;else{if(e=SA,SA=null,lM=0,Hi&6)throw Error(Ee(331));var s=Hi;for(Hi|=4,cr=e.current;cr!==null;){var n=cr,o=n.child;if(cr.flags&16){var c=n.deletions;if(c!==null){for(var f=0;fYs()-qk?w0(e,0):Hk|=r),Kl(e,t)}function b8(e,t){t===0&&(e.mode&1?(t=mT,mT<<=1,!(mT&130023424)&&(mT=4194304)):t=1);var r=wl();e=$d(e,t),e!==null&&(z1(e,t,r),Kl(e,r))}function det(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),b8(e,r)}function pet(e,t){var r=0;switch(e.tag){case 13:var i=e.stateNode,s=e.memoizedState;s!==null&&(r=s.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(Ee(314))}i!==null&&i.delete(t),b8(e,r)}var w8;w8=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||$l.current)Ql=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Ql=!1,tet(e,t,r);Ql=!!(e.flags&131072)}else Ql=!1,rs&&t.flags&1048576&&MN(t,JT,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;FT(e,t),e=t.pendingProps;var s=Y_(t,$a.current);H_(t,r),s=Nk(null,t,i,e,s,r);var n=Uk();return t.flags|=1,typeof s==\"object\"&&s!==null&&typeof s.render==\"function\"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Xl(i)?(n=!0,XT(t)):n=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Dk(t),s.updater=gM,t.stateNode=s,s._reactInternals=t,$L(t,i,e,r),t=JL(null,t,i,!0,n,r)):(t.tag=0,rs&&n&&Ek(t),bl(null,t,s,r),t=t.child),t;case 16:i=t.elementType;t:{switch(FT(e,t),e=t.pendingProps,s=i._init,i=s(i._payload),t.type=i,s=t.tag=met(i),e=Th(i,e),s){case 0:t=KL(null,t,i,e,r);break t;case 1:t=mz(null,t,i,e,r);break t;case 11:t=pz(null,t,i,e,r);break t;case 14:t=Az(null,t,i,Th(i.type,e),r);break t}throw Error(Ee(306,i,\"\"))}return t;case 0:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),KL(e,t,i,s,r);case 1:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),mz(e,t,i,s,r);case 3:t:{if(o8(t),e===null)throw Error(Ee(387));i=t.pendingProps,n=t.memoizedState,s=n.element,CN(e,t),rM(t,i,null,r);var o=t.memoizedState;if(i=o.element,n.isDehydrated)if(n={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){s=K_(Error(Ee(423)),t),t=gz(e,t,i,r,s);break t}else if(i!==s){s=K_(Error(Ee(424)),t),t=gz(e,t,i,r,s);break t}else for(Vc=PA(t.stateNode.containerInfo.firstChild),jc=t,rs=!0,Eh=null,r=DN(t,null,i,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Q_(),i===s){t=Xd(e,t,r);break t}bl(e,t,i,r)}t=t.child}return t;case 5:return ON(t),e===null&&ZL(t),i=t.type,s=t.pendingProps,n=e!==null?e.memoizedProps:null,o=s.children,jL(i,s)?o=null:n!==null&&jL(i,n)&&(t.flags|=32),s8(e,t),bl(e,t,o,r),t.child;case 6:return e===null&&ZL(t),null;case 13:return a8(e,t,r);case 4:return Ok(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=$_(t,null,i,r):bl(e,t,i,r),t.child;case 11:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),pz(e,t,i,s,r);case 7:return bl(e,t,t.pendingProps,r),t.child;case 8:return bl(e,t,t.pendingProps.children,r),t.child;case 12:return bl(e,t,t.pendingProps.children,r),t.child;case 10:t:{if(i=t.type._context,s=t.pendingProps,n=t.memoizedProps,o=s.value,Fn(tM,i._currentValue),i._currentValue=o,n!==null)if(Ch(n.value,o)){if(n.children===s.children&&!$l.current){t=Xd(e,t,r);break t}}else for(n=t.child,n!==null&&(n.return=t);n!==null;){var c=n.dependencies;if(c!==null){o=n.child;for(var f=c.firstContext;f!==null;){if(f.context===i){if(n.tag===1){f=Zd(-1,r&-r),f.tag=2;var _=n.updateQueue;if(_!==null){_=_.shared;var w=_.pending;w===null?f.next=f:(f.next=w.next,w.next=f),_.pending=f}}n.lanes|=r,f=n.alternate,f!==null&&(f.lanes|=r),YL(n.return,r,t),c.lanes|=r;break}f=f.next}}else if(n.tag===10)o=n.type===t.type?null:n.child;else if(n.tag===18){if(o=n.return,o===null)throw Error(Ee(341));o.lanes|=r,c=o.alternate,c!==null&&(c.lanes|=r),YL(o,r,t),o=n.sibling}else o=n.child;if(o!==null)o.return=n;else for(o=n;o!==null;){if(o===t){o=null;break}if(n=o.sibling,n!==null){n.return=o.return,o=n;break}o=o.return}n=o}bl(e,t,s.children,r),t=t.child}return t;case 9:return s=t.type,i=t.pendingProps.children,H_(t,r),s=Tu(s),i=i(s),t.flags|=1,bl(e,t,i,r),t.child;case 14:return i=t.type,s=Th(i,t.pendingProps),s=Th(i.type,s),Az(e,t,i,s,r);case 15:return i8(e,t,t.type,t.pendingProps,r);case 17:return i=t.type,s=t.pendingProps,s=t.elementType===i?s:Th(i,s),FT(e,t),t.tag=1,Xl(i)?(e=!0,XT(t)):e=!1,H_(t,r),kN(t,i,s),$L(t,i,s,r),JL(null,t,i,!0,e,r);case 19:return l8(e,t,r);case 22:return n8(e,t,r)}throw Error(Ee(156,t.tag))};function S8(e,t){return $z(e,t)}function Aet(e,t,r,i){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function wu(e,t,r,i){return new Aet(e,t,r,i)}function $k(e){return e=e.prototype,!(!e||!e.isReactComponent)}function met(e){if(typeof e==\"function\")return $k(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ak)return 11;if(e===mk)return 14}return 2}function kA(e,t){var r=e.alternate;return r===null?(r=wu(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function UT(e,t,r,i,s,n){var o=2;if(i=e,typeof e==\"function\")$k(e)&&(o=1);else if(typeof e==\"string\")o=5;else t:switch(e){case C_:return S0(r.children,s,n,t);case pk:o=8,s|=8;break;case vL:return e=wu(12,r,t,s|2),e.elementType=vL,e.lanes=n,e;case xL:return e=wu(13,r,t,s),e.elementType=xL,e.lanes=n,e;case bL:return e=wu(19,r,t,s),e.elementType=bL,e.lanes=n,e;case Rz:return xM(r,s,n,t);default:if(typeof e==\"object\"&&e!==null)switch(e.$$typeof){case Lz:o=10;break t;case kz:o=9;break t;case Ak:o=11;break t;case mk:o=14;break t;case yA:o=16,i=null;break t}throw Error(Ee(130,e==null?e:typeof e,\"\"))}return t=wu(o,r,t,s),t.elementType=e,t.type=i,t.lanes=n,t}function S0(e,t,r,i){return e=wu(7,e,i,t),e.lanes=r,e}function xM(e,t,r,i){return e=wu(22,e,i,t),e.elementType=Rz,e.lanes=r,e.stateNode={isHidden:!1},e}function gL(e,t,r){return e=wu(6,e,null,t),e.lanes=r,e}function _L(e,t,r){return t=wu(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function get(e,t,r,i,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=eL(0),this.expirationTimes=eL(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=eL(0),this.identifierPrefix=i,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Xk(e,t,r,i,s,n,o,c,f){return e=new get(e,t,r,c,f),t===1?(t=1,n===!0&&(t|=8)):t=0,n=wu(3,null,null,t),e.current=n,n.stateNode=e,n.memoizedState={element:i,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Dk(n),e}function _et(e,t,r){var i=3{\"use strict\";function I8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=\"function\"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(I8)}catch(e){console.error(e)}}I8(),C8.exports=P8()});var k8=Br(e4=>{\"use strict\";var L8=MM();e4.createRoot=L8.createRoot,e4.hydrateRoot=L8.hydrateRoot;var M1t});var Y8=Br((f4,d4)=>{(function(e,t){typeof f4==\"object\"&&typeof d4<\"u\"?d4.exports=t():(e=typeof globalThis<\"u\"?globalThis:e||self,e.maplibregl=t())})(f4,function(){\"use strict\";var e,t,r;function i(n,o){if(!e)e=o;else if(!t)t=o;else{var c=\"var sharedChunk = {}; (\"+e+\")(sharedChunk); (\"+t+\")(sharedChunk);\",f={};e(f),r=o(f),typeof window<\"u\"&&(r.workerUrl=window.URL.createObjectURL(new Blob([c],{type:\"text/javascript\"})))}}i([\"exports\"],function(n){\"use strict\";function o(u,a,h,A){return new(h||(h=Promise))(function(x,E){function P(V){try{F(A.next(V))}catch(q){E(q)}}function D(V){try{F(A.throw(V))}catch(q){E(q)}}function F(V){var q;V.done?x(V.value):(q=V.value,q instanceof h?q:new h(function(X){X(q)})).then(P,D)}F((A=A.apply(u,a||[])).next())})}function c(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,\"default\")?u.default:u}typeof SuppressedError==\"function\"&&SuppressedError;var f=_;function _(u,a){this.x=u,this.y=a}_.prototype={clone:function(){return new _(this.x,this.y)},add:function(u){return this.clone()._add(u)},sub:function(u){return this.clone()._sub(u)},multByPoint:function(u){return this.clone()._multByPoint(u)},divByPoint:function(u){return this.clone()._divByPoint(u)},mult:function(u){return this.clone()._mult(u)},div:function(u){return this.clone()._div(u)},rotate:function(u){return this.clone()._rotate(u)},rotateAround:function(u,a){return this.clone()._rotateAround(u,a)},matMult:function(u){return this.clone()._matMult(u)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(u){return this.x===u.x&&this.y===u.y},dist:function(u){return Math.sqrt(this.distSqr(u))},distSqr:function(u){var a=u.x-this.x,h=u.y-this.y;return a*a+h*h},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(u){return Math.atan2(this.y-u.y,this.x-u.x)},angleWith:function(u){return this.angleWithSep(u.x,u.y)},angleWithSep:function(u,a){return Math.atan2(this.x*a-this.y*u,this.x*u+this.y*a)},_matMult:function(u){var a=u[2]*this.x+u[3]*this.y;return this.x=u[0]*this.x+u[1]*this.y,this.y=a,this},_add:function(u){return this.x+=u.x,this.y+=u.y,this},_sub:function(u){return this.x-=u.x,this.y-=u.y,this},_mult:function(u){return this.x*=u,this.y*=u,this},_div:function(u){return this.x/=u,this.y/=u,this},_multByPoint:function(u){return this.x*=u.x,this.y*=u.y,this},_divByPoint:function(u){return this.x/=u.x,this.y/=u.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var u=this.y;return this.y=this.x,this.x=-u,this},_rotate:function(u){var a=Math.cos(u),h=Math.sin(u),A=h*this.x+a*this.y;return this.x=a*this.x-h*this.y,this.y=A,this},_rotateAround:function(u,a){var h=Math.cos(u),A=Math.sin(u),x=a.y+A*(this.x-a.x)+h*(this.y-a.y);return this.x=a.x+h*(this.x-a.x)-A*(this.y-a.y),this.y=x,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},_.convert=function(u){return u instanceof _?u:Array.isArray(u)?new _(u[0],u[1]):u};var w=c(f),I=R;function R(u,a,h,A){this.cx=3*u,this.bx=3*(h-u)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*a,this.by=3*(A-a)-this.cy,this.ay=1-this.cy-this.by,this.p1x=u,this.p1y=a,this.p2x=h,this.p2y=A}R.prototype={sampleCurveX:function(u){return((this.ax*u+this.bx)*u+this.cx)*u},sampleCurveY:function(u){return((this.ay*u+this.by)*u+this.cy)*u},sampleCurveDerivativeX:function(u){return(3*this.ax*u+2*this.bx)*u+this.cx},solveCurveX:function(u,a){if(a===void 0&&(a=1e-6),u<0)return 0;if(u>1)return 1;for(var h=u,A=0;A<8;A++){var x=this.sampleCurveX(h)-u;if(Math.abs(x)x?P=h:D=h,h=.5*(D-P)+P;return h},solve:function(u,a){return this.sampleCurveY(this.solveCurveX(u,a))}};var N=c(I);let j,Q;function et(){return j==null&&(j=typeof OffscreenCanvas<\"u\"&&new OffscreenCanvas(1,1).getContext(\"2d\")&&typeof createImageBitmap==\"function\"),j}function Y(){if(Q==null&&(Q=!1,et())){let a=new OffscreenCanvas(5,5).getContext(\"2d\",{willReadFrequently:!0});if(a){for(let A=0;A<5*5;A++){let x=4*A;a.fillStyle=`rgb(${x},${x+1},${x+2})`,a.fillRect(A%5,Math.floor(A/5),1,1)}let h=a.getImageData(0,0,5,5).data;for(let A=0;A<5*5*4;A++)if(A%4!=3&&h[A]!==A){Q=!0;break}}}return Q||!1}function K(u,a,h,A){let x=new N(u,a,h,A);return function(E){return x.solve(E)}}let J=K(.25,.1,.25,1);function ut(u,a,h){return Math.min(h,Math.max(a,u))}function Pt(u,a,h){let A=h-a,x=((u-a)%A+A)%A+a;return x===a?h:x}function kt(u,...a){for(let h of a)for(let A in h)u[A]=h[A];return u}let Kt=1;function Zt(u,a,h){let A={};for(let x in u)A[x]=a.call(h||this,u[x],x,u);return A}function ce(u,a,h){let A={};for(let x in u)a.call(h||this,u[x],x,u)&&(A[x]=u[x]);return A}function ue(u){return Array.isArray(u)?u.map(ue):typeof u==\"object\"&&u?Zt(u,ue):u}let Ge={};function tr(u){Ge[u]||(typeof console<\"u\"&&console.warn(u),Ge[u]=!0)}function er(u,a,h){return(h.y-u.y)*(a.x-u.x)>(a.y-u.y)*(h.x-u.x)}function Lr(u){let a=0;for(let h,A,x=0,E=u.length,P=E-1;x\"u\")throw new Error(\"VideoFrame not supported\");let E=new VideoFrame(u,{timestamp:0});try{let P=E?.format;if(!P||!P.startsWith(\"BGR\")&&!P.startsWith(\"RGB\"))throw new Error(`Unrecognized format ${P}`);let D=P.startsWith(\"BGR\"),F=new Uint8ClampedArray(A*x*4);if(yield E.copyTo(F,function(V,q,X,rt,at){let ct=4*Math.max(-q,0),mt=(Math.max(0,X)-X)*rt*4+ct,bt=4*rt,Et=Math.max(0,q),Vt=Math.max(0,X);return{rect:{x:Et,y:Vt,width:Math.min(V.width,q+rt)-Et,height:Math.min(V.height,X+at)-Vt},layout:[{offset:mt,stride:bt}]}}(u,a,h,A,x)),D)for(let V=0;VcancelAnimationFrame(a)}},getImageData(u,a=0){return this.getImageCanvasContext(u).getImageData(-a,-a,u.width+2*a,u.height+2*a)},getImageCanvasContext(u){let a=window.document.createElement(\"canvas\"),h=a.getContext(\"2d\",{willReadFrequently:!0});if(!h)throw new Error(\"failed to create canvas 2d context\");return a.width=u.width,a.height=u.height,h.drawImage(u,0,0,u.width,u.height),h},resolveURL:u=>(Bs||(Bs=document.createElement(\"a\")),Bs.href=u,Bs.href),hardwareConcurrency:typeof navigator<\"u\"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(ll==null&&(ll=matchMedia(\"(prefers-reduced-motion: reduce)\")),ll.matches)}},Lc={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:\"\"};class Qi extends Error{constructor(a,h,A,x){super(`AJAXError: ${h} (${a}): ${A}`),this.status=a,this.statusText=h,this.url=A,this.body=x}}let Xn=zi()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol===\"blob:\"?window.parent:window).location.href,Ci=u=>Lc.REGISTERED_PROTOCOLS[u.substring(0,u.indexOf(\"://\"))];function Kn(u,a){let h=new AbortController,A=new Request(u.url,{method:u.method||\"GET\",body:u.body,credentials:u.credentials,headers:u.headers,cache:u.cache,referrer:Xn(),signal:h.signal}),x=!1,E=!1;return u.type===\"json\"&&A.headers.set(\"Accept\",\"application/json\"),E||fetch(A).then(P=>P.ok?(D=>{(u.type===\"arrayBuffer\"||u.type===\"image\"?D.arrayBuffer():u.type===\"json\"?D.json():D.text()).then(F=>{E||(x=!0,a(null,F,D.headers.get(\"Cache-Control\"),D.headers.get(\"Expires\")))}).catch(F=>{E||a(new Error(F.message))})})(P):P.blob().then(D=>a(new Qi(P.status,P.statusText,u.url,D)))).catch(P=>{P.code!==20&&a(new Error(P.message))}),{cancel:()=>{E=!0,x||h.abort()}}}let jo=function(u,a){if(/:\\/\\//.test(u.url)&&!/^https?:|^file:/.test(u.url)){if(zi()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",u,a);if(!zi())return(Ci(u.url)||Kn)(u,a)}if(!(/^file:/.test(h=u.url)||/^file:/.test(Xn())&&!/^\\w+:/.test(h))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,\"signal\"))return Kn(u,a);if(zi()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",u,a,void 0,!0)}var h;return function(A,x){let E=new XMLHttpRequest;E.open(A.method||\"GET\",A.url,!0),A.type!==\"arrayBuffer\"&&A.type!==\"image\"||(E.responseType=\"arraybuffer\");for(let P in A.headers)E.setRequestHeader(P,A.headers[P]);return A.type===\"json\"&&(E.responseType=\"text\",E.setRequestHeader(\"Accept\",\"application/json\")),E.withCredentials=A.credentials===\"include\",E.onerror=()=>{x(new Error(E.statusText))},E.onload=()=>{if((E.status>=200&&E.status<300||E.status===0)&&E.response!==null){let P=E.response;if(A.type===\"json\")try{P=JSON.parse(E.response)}catch(D){return x(D)}x(null,P,E.getResponseHeader(\"Cache-Control\"),E.getResponseHeader(\"Expires\"))}else{let P=new Blob([E.response],{type:E.getResponseHeader(\"Content-Type\")});x(new Qi(E.status,E.statusText,A.url,P))}},E.send(A.body),{cancel:()=>E.abort()}}(u,a)},cl=function(u,a){return jo(kt(u,{type:\"arrayBuffer\"}),a)};function vo(u){if(!u||u.indexOf(\"://\")<=0||u.indexOf(\"data:image/\")===0||u.indexOf(\"blob:\")===0)return!0;let a=new URL(u),h=window.location;return a.protocol===h.protocol&&a.host===h.host}function Pa(u,a,h){h[u]&&h[u].indexOf(a)!==-1||(h[u]=h[u]||[],h[u].push(a))}function na(u,a,h){if(h&&h[u]){let A=h[u].indexOf(a);A!==-1&&h[u].splice(A,1)}}class os{constructor(a,h={}){kt(this,h),this.type=a}}class so extends os{constructor(a,h={}){super(\"error\",kt({error:a},h))}}class Fl{on(a,h){return this._listeners=this._listeners||{},Pa(a,h,this._listeners),this}off(a,h){return na(a,h,this._listeners),na(a,h,this._oneTimeListeners),this}once(a,h){return h?(this._oneTimeListeners=this._oneTimeListeners||{},Pa(a,h,this._oneTimeListeners),this):new Promise(A=>this.once(a,A))}fire(a,h){typeof a==\"string\"&&(a=new os(a,h||{}));let A=a.type;if(this.listens(A)){a.target=this;let x=this._listeners&&this._listeners[A]?this._listeners[A].slice():[];for(let D of x)D.call(this,a);let E=this._oneTimeListeners&&this._oneTimeListeners[A]?this._oneTimeListeners[A].slice():[];for(let D of E)na(A,D,this._oneTimeListeners),D.call(this,a);let P=this._eventedParent;P&&(kt(a,typeof this._eventedParentData==\"function\"?this._eventedParentData():this._eventedParentData),P.fire(a))}else a instanceof so&&console.error(a.error);return this}listens(a){return this._listeners&&this._listeners[a]&&this._listeners[a].length>0||this._oneTimeListeners&&this._oneTimeListeners[a]&&this._oneTimeListeners[a].length>0||this._eventedParent&&this._eventedParent.listens(a)}setEventedParent(a,h){return this._eventedParent=a,this._eventedParentData=h,this}}var te={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},terrain:{type:\"terrain\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"sprite\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{},custom:{}},default:\"mapbox\"},redFactor:{type:\"number\",default:1},blueFactor:{type:\"number\",default:1},greenFactor:{type:\"number\",default:1},baseShift:{type:\"number\",default:0},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{required:!0,type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},filter:{type:\"*\"},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"!\":\"icon-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"padding\",default:[2],units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},\"viewport-glyph\":{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-variable-anchor-offset\":{type:\"variableAnchorOffsetCollection\",requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\",{\"!\":\"text-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},terrain:{source:{type:\"string\",required:!0},exaggeration:{type:\"number\",minimum:0,default:1}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}};let as=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];function pn(u,a){let h={};for(let A in u)A!==\"ref\"&&(h[A]=u[A]);return as.forEach(A=>{A in a&&(h[A]=a[A])}),h}function gi(u,a){if(Array.isArray(u)){if(!Array.isArray(a)||u.length!==a.length)return!1;for(let h=0;h`:u.itemType.kind===\"value\"?\"array\":`array<${a}>`}return u.kind}let _t=[Ca,Se,Dr,mr,Fs,gt,La,vt(Tr),tt,nt,ht];function Ot(u,a){if(a.kind===\"error\")return null;if(u.kind===\"array\"){if(a.kind===\"array\"&&(a.N===0&&a.itemType.kind===\"value\"||!Ot(u.itemType,a.itemType))&&(typeof u.N!=\"number\"||u.N===a.N))return null}else{if(u.kind===a.kind)return null;if(u.kind===\"value\"){for(let h of _t)if(!Ot(h,a))return null}}return`Expected ${xt(u)} but found ${xt(a)} instead.`}function Mt(u,a){return a.some(h=>h.kind===u.kind)}function Ut(u,a){return a.some(h=>h===\"null\"?u===null:h===\"array\"?Array.isArray(u):h===\"object\"?u&&!Array.isArray(u)&&typeof u==\"object\":h===typeof u)}function re(u,a){return u.kind===\"array\"&&a.kind===\"array\"?u.itemType.kind===a.itemType.kind&&typeof u.N==\"number\":u.kind===a.kind}let se=.96422,ae=.82521,ar=4/29,_r=6/29,Ye=3*_r*_r,lr=_r*_r*_r,br=Math.PI/180,vi=180/Math.PI;function Bi(u){return(u%=360)<0&&(u+=360),u}function ni([u,a,h,A]){let x,E,P=Un((.2225045*(u=Hr(u))+.7168786*(a=Hr(a))+.0606169*(h=Hr(h)))/1);u===a&&a===h?x=E=P:(x=Un((.4360747*u+.3850649*a+.1430804*h)/se),E=Un((.0139322*u+.0971045*a+.7141733*h)/ae));let D=116*P-16;return[D<0?0:D,500*(x-P),200*(P-E),A]}function Hr(u){return u<=.04045?u/12.92:Math.pow((u+.055)/1.055,2.4)}function Un(u){return u>lr?Math.pow(u,1/3):u/Ye+ar}function ki([u,a,h,A]){let x=(u+16)/116,E=isNaN(a)?x:x+a/500,P=isNaN(h)?x:x-h/200;return x=1*Jn(x),E=se*Jn(E),P=ae*Jn(P),[yn(3.1338561*E-1.6168667*x-.4906146*P),yn(-.9787684*E+1.9161415*x+.033454*P),yn(.0719453*E-.2289914*x+1.4052427*P),A]}function yn(u){return(u=u<=.00304?12.92*u:1.055*Math.pow(u,1/2.4)-.055)<0?0:u>1?1:u}function Jn(u){return u>_r?u*u*u:Ye*(u-ar)}function oa(u){return parseInt(u.padEnd(2,u),16)/255}function Nm(u,a){return Nl(a?u/100:u,0,1)}function Nl(u,a,h){return Math.min(Math.max(a,u),h)}function Ss(u){return!u.some(Number.isNaN)}let ih={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class ai{constructor(a,h,A,x=1,E=!0){this.r=a,this.g=h,this.b=A,this.a=x,E||(this.r*=x,this.g*=x,this.b*=x,x||this.overwriteGetter(\"rgb\",[a,h,A,x]))}static parse(a){if(a instanceof ai)return a;if(typeof a!=\"string\")return;let h=function(A){if((A=A.toLowerCase().trim())===\"transparent\")return[0,0,0,0];let x=ih[A];if(x){let[P,D,F]=x;return[P/255,D/255,F/255,1]}if(A.startsWith(\"#\")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(A)){let P=A.length<6?1:2,D=1;return[oa(A.slice(D,D+=P)),oa(A.slice(D,D+=P)),oa(A.slice(D,D+=P)),oa(A.slice(D,D+P)||\"ff\")]}if(A.startsWith(\"rgb\")){let P=A.match(/^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(P){let[D,F,V,q,X,rt,at,ct,mt,bt,Et,Vt]=P,Rt=[q||\" \",at||\" \",bt].join(\"\");if(Rt===\" \"||Rt===\" /\"||Rt===\",,\"||Rt===\",,,\"){let jt=[V,rt,mt].join(\"\"),qt=jt===\"%%%\"?100:jt===\"\"?255:0;if(qt){let le=[Nl(+F/qt,0,1),Nl(+X/qt,0,1),Nl(+ct/qt,0,1),Et?Nm(+Et,Vt):1];if(Ss(le))return le}}return}}let E=A.match(/^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(E){let[P,D,F,V,q,X,rt,at,ct]=E,mt=[F||\" \",q||\" \",rt].join(\"\");if(mt===\" \"||mt===\" /\"||mt===\",,\"||mt===\",,,\"){let bt=[+D,Nl(+V,0,100),Nl(+X,0,100),at?Nm(+at,ct):1];if(Ss(bt))return function([Et,Vt,Rt,jt]){function qt(le){let Be=(le+Et/30)%12,Je=Vt*Math.min(Rt,1-Rt);return Rt-Je*Math.max(-1,Math.min(Be-3,9-Be,1))}return Et=Bi(Et),Vt/=100,Rt/=100,[qt(0),qt(8),qt(4),jt]}(bt)}}}(a);return h?new ai(...h,!1):void 0}get rgb(){let{r:a,g:h,b:A,a:x}=this,E=x||1/0;return this.overwriteGetter(\"rgb\",[a/E,h/E,A/E,x])}get hcl(){return this.overwriteGetter(\"hcl\",function(a){let[h,A,x,E]=ni(a),P=Math.sqrt(A*A+x*x);return[Math.round(1e4*P)?Bi(Math.atan2(x,A)*vi):NaN,P,h,E]}(this.rgb))}get lab(){return this.overwriteGetter(\"lab\",ni(this.rgb))}overwriteGetter(a,h){return Object.defineProperty(this,a,{value:h}),h}toString(){let[a,h,A,x]=this.rgb;return`rgba(${[a,h,A].map(E=>Math.round(255*E)).join(\",\")},${x})`}}ai.black=new ai(0,0,0,1),ai.white=new ai(1,1,1,1),ai.transparent=new ai(0,0,0,0),ai.red=new ai(1,0,0,1);class ka{constructor(a,h,A){this.sensitivity=a?h?\"variant\":\"case\":h?\"accent\":\"base\",this.locale=A,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"})}compare(a,h){return this.collator.compare(a,h)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class kc{constructor(a,h,A,x,E){this.text=a,this.image=h,this.scale=A,this.fontStack=x,this.textColor=E}}class on{constructor(a){this.sections=a}static fromString(a){return new on([new kc(a,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(a=>a.text.length!==0||a.image&&a.image.name.length!==0)}static factory(a){return a instanceof on?a:on.fromString(a)}toString(){return this.sections.length===0?\"\":this.sections.map(a=>a.text).join(\"\")}}class kn{constructor(a){this.values=a.slice()}static parse(a){if(a instanceof kn)return a;if(typeof a==\"number\")return new kn([a,a,a,a]);if(Array.isArray(a)&&!(a.length<1||a.length>4)){for(let h of a)if(typeof h!=\"number\")return;switch(a.length){case 1:a=[a[0],a[0],a[0],a[0]];break;case 2:a=[a[0],a[1],a[0],a[1]];break;case 3:a=[a[0],a[1],a[2],a[1]]}return new kn(a)}}toString(){return JSON.stringify(this.values)}}let Um=new Set([\"center\",\"left\",\"right\",\"top\",\"bottom\",\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"]);class Wo{constructor(a){this.values=a.slice()}static parse(a){if(a instanceof Wo)return a;if(Array.isArray(a)&&!(a.length<1)&&a.length%2==0){for(let h=0;h=0&&u<=255&&typeof a==\"number\"&&a>=0&&a<=255&&typeof h==\"number\"&&h>=0&&h<=255?A===void 0||typeof A==\"number\"&&A>=0&&A<=1?null:`Invalid rgba value [${[u,a,h,A].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof A==\"number\"?[u,a,h,A]:[u,a,h]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Ul(u){if(u===null||typeof u==\"string\"||typeof u==\"boolean\"||typeof u==\"number\"||u instanceof ai||u instanceof ka||u instanceof on||u instanceof kn||u instanceof Wo||u instanceof Vn)return!0;if(Array.isArray(u)){for(let a of u)if(!Ul(a))return!1;return!0}if(typeof u==\"object\"){for(let a in u)if(!Ul(u[a]))return!1;return!0}return!1}function $i(u){if(u===null)return Ca;if(typeof u==\"string\")return Dr;if(typeof u==\"boolean\")return mr;if(typeof u==\"number\")return Se;if(u instanceof ai)return Fs;if(u instanceof ka)return sa;if(u instanceof on)return gt;if(u instanceof kn)return tt;if(u instanceof Wo)return ht;if(u instanceof Vn)return nt;if(Array.isArray(u)){let a=u.length,h;for(let A of u){let x=$i(A);if(h){if(h===x)continue;h=Tr;break}h=x}return vt(h||Tr,a)}return La}function _i(u){let a=typeof u;return u===null?\"\":a===\"string\"||a===\"number\"||a===\"boolean\"?String(u):u instanceof ai||u instanceof on||u instanceof kn||u instanceof Wo||u instanceof Vn?u.toString():JSON.stringify(u)}class Vl{constructor(a,h){this.type=a,this.value=h}static parse(a,h){if(a.length!==2)return h.error(`'literal' expression requires exactly one argument, but found ${a.length-1} instead.`);if(!Ul(a[1]))return h.error(\"invalid value\");let A=a[1],x=$i(A),E=h.expectedType;return x.kind!==\"array\"||x.N!==0||!E||E.kind!==\"array\"||typeof E.N==\"number\"&&E.N!==0||(x=E),new Vl(x,A)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class an{constructor(a){this.name=\"ExpressionEvaluationError\",this.message=a}toJSON(){return this.message}}let hu={string:Dr,number:Se,boolean:mr,object:La};class ts{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A,x=1,E=a[0];if(E===\"array\"){let D,F;if(a.length>2){let V=a[1];if(typeof V!=\"string\"||!(V in hu)||V===\"object\")return h.error('The item type argument of \"array\" must be one of string, number, boolean',1);D=hu[V],x++}else D=Tr;if(a.length>3){if(a[2]!==null&&(typeof a[2]!=\"number\"||a[2]<0||a[2]!==Math.floor(a[2])))return h.error('The length argument to \"array\" must be a positive integer literal',2);F=a[2],x++}A=vt(D,F)}else{if(!hu[E])throw new Error(`Types doesn't contain name = ${E}`);A=hu[E]}let P=[];for(;xa.outputDefined())}}let Gp={\"to-boolean\":mr,\"to-color\":Fs,\"to-number\":Se,\"to-string\":Dr};class jl{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A=a[0];if(!Gp[A])throw new Error(`Can't parse ${A} as it is not part of the known types`);if((A===\"to-boolean\"||A===\"to-string\")&&a.length!==2)return h.error(\"Expected one argument.\");let x=Gp[A],E=[];for(let P=1;P4?`Invalid rbga value ${JSON.stringify(h)}: expected an array containing either three or four numeric values.`:wo(h[0],h[1],h[2],h[3]),!A))return new ai(h[0]/255,h[1]/255,h[2]/255,h[3])}throw new an(A||`Could not parse color from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"padding\":{let h;for(let A of this.args){h=A.evaluate(a);let x=kn.parse(h);if(x)return x}throw new an(`Could not parse padding from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"variableAnchorOffsetCollection\":{let h;for(let A of this.args){h=A.evaluate(a);let x=Wo.parse(h);if(x)return x}throw new an(`Could not parse variableAnchorOffsetCollection from value '${typeof h==\"string\"?h:JSON.stringify(h)}'`)}case\"number\":{let h=null;for(let A of this.args){if(h=A.evaluate(a),h===null)return 0;let x=Number(h);if(!isNaN(x))return x}throw new an(`Could not convert ${JSON.stringify(h)} to number.`)}case\"formatted\":return on.fromString(_i(this.args[0].evaluate(a)));case\"resolvedImage\":return Vn.fromString(_i(this.args[0].evaluate(a)));default:return _i(this.args[0].evaluate(a))}}eachChild(a){this.args.forEach(a)}outputDefined(){return this.args.every(a=>a.outputDefined())}}let _d=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class yd{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type==\"number\"?_d[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(a){let h=this._parseColorCache[a];return h||(h=this._parseColorCache[a]=ai.parse(a)),h}}class vd{constructor(a,h,A=[],x,E=new zl,P=[]){this.registry=a,this.path=A,this.key=A.map(D=>`[${D}]`).join(\"\"),this.scope=E,this.errors=P,this.expectedType=x,this._isConstant=h}parse(a,h,A,x,E={}){return h?this.concat(h,A,x)._parse(a,E):this._parse(a,E)}_parse(a,h){function A(x,E,P){return P===\"assert\"?new ts(E,[x]):P===\"coerce\"?new jl(E,[x]):x}if(a!==null&&typeof a!=\"string\"&&typeof a!=\"boolean\"&&typeof a!=\"number\"||(a=[\"literal\",a]),Array.isArray(a)){if(a.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');let x=a[0];if(typeof x!=\"string\")return this.error(`Expression name must be a string, but found ${typeof x} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;let E=this.registry[x];if(E){let P=E.parse(a,this);if(!P)return null;if(this.expectedType){let D=this.expectedType,F=P.type;if(D.kind!==\"string\"&&D.kind!==\"number\"&&D.kind!==\"boolean\"&&D.kind!==\"object\"&&D.kind!==\"array\"||F.kind!==\"value\")if(D.kind!==\"color\"&&D.kind!==\"formatted\"&&D.kind!==\"resolvedImage\"||F.kind!==\"value\"&&F.kind!==\"string\")if(D.kind!==\"padding\"||F.kind!==\"value\"&&F.kind!==\"number\"&&F.kind!==\"array\")if(D.kind!==\"variableAnchorOffsetCollection\"||F.kind!==\"value\"&&F.kind!==\"array\"){if(this.checkSubtype(D,F))return null}else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"coerce\");else P=A(P,D,h.typeAnnotation||\"assert\")}if(!(P instanceof Vl)&&P.type.kind!==\"resolvedImage\"&&this._isConstant(P)){let D=new yd;try{P=new Vl(P.type,P.evaluate(D))}catch(F){return this.error(F.message),null}}return P}return this.error(`Unknown expression \"${x}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(a===void 0?\"'undefined' value invalid. Use null instead.\":typeof a==\"object\"?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof a} instead.`)}concat(a,h,A){let x=typeof a==\"number\"?this.path.concat(a):this.path,E=A?this.scope.concat(A):this.scope;return new vd(this.registry,this._isConstant,x,h||null,E,this.errors)}error(a,...h){let A=`${this.key}${h.map(x=>`[${x}]`).join(\"\")}`;this.errors.push(new An(A,a))}checkSubtype(a,h){let A=Ot(a,h);return A&&this.error(A),A}}class xd{constructor(a,h,A){this.type=sa,this.locale=A,this.caseSensitive=a,this.diacriticSensitive=h}static parse(a,h){if(a.length!==2)return h.error(\"Expected one argument.\");let A=a[1];if(typeof A!=\"object\"||Array.isArray(A))return h.error(\"Collator options argument must be an object.\");let x=h.parse(A[\"case-sensitive\"]!==void 0&&A[\"case-sensitive\"],1,mr);if(!x)return null;let E=h.parse(A[\"diacritic-sensitive\"]!==void 0&&A[\"diacritic-sensitive\"],1,mr);if(!E)return null;let P=null;return A.locale&&(P=h.parse(A.locale,1,Dr),!P)?null:new xd(x,E,P)}evaluate(a){return new ka(this.caseSensitive.evaluate(a),this.diacriticSensitive.evaluate(a),this.locale?this.locale.evaluate(a):null)}eachChild(a){a(this.caseSensitive),a(this.diacriticSensitive),this.locale&&a(this.locale)}outputDefined(){return!1}}let lt=8192;function ft(u,a){u[0]=Math.min(u[0],a[0]),u[1]=Math.min(u[1],a[1]),u[2]=Math.max(u[2],a[0]),u[3]=Math.max(u[3],a[1])}function Lt(u,a){return!(u[0]<=a[0]||u[2]>=a[2]||u[1]<=a[1]||u[3]>=a[3])}function $t(u,a){let h=(180+u[0])/360,A=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+u[1]*Math.PI/360)))/360,x=Math.pow(2,a.z);return[Math.round(h*x*lt),Math.round(A*x*lt)]}function ge(u,a,h){let A=u[0]-a[0],x=u[1]-a[1],E=u[0]-h[0],P=u[1]-h[1];return A*P-E*x==0&&A*E<=0&&x*P<=0}function qe(u,a){let h=!1;for(let P=0,D=a.length;P(A=u)[1]!=(E=F[V+1])[1]>A[1]&&A[0]<(E[0]-x[0])*(A[1]-x[1])/(E[1]-x[1])+x[0]&&(h=!h)}}var A,x,E;return h}function ti(u,a){for(let h=0;h0&&D<0||P<0&&D>0}function Ts(u,a,h){for(let V of h)for(let q=0;qh[2]){let x=.5*A,E=u[0]-h[0]>x?-A:h[0]-u[0]>x?A:0;E===0&&(E=u[0]-h[2]>x?-A:h[2]-u[0]>x?A:0),u[0]+=E}ft(a,u)}function e_(u,a,h,A){let x=Math.pow(2,A.z)*lt,E=[A.x*lt,A.y*lt],P=[];for(let D of u)for(let F of D){let V=[F.x+E[0],F.y+E[1]];Cx(V,a,h,x),P.push(V)}return P}function r_(u,a,h,A){let x=Math.pow(2,A.z)*lt,E=[A.x*lt,A.y*lt],P=[];for(let F of u){let V=[];for(let q of F){let X=[q.x+E[0],q.y+E[1]];ft(a,X),V.push(X)}P.push(V)}if(a[2]-a[0]<=x/2){(D=a)[0]=D[1]=1/0,D[2]=D[3]=-1/0;for(let F of P)for(let V of F)Cx(V,a,h,x)}var D;return P}class mf{constructor(a,h){this.type=mr,this.geojson=a,this.geometries=h}static parse(a,h){if(a.length!==2)return h.error(`'within' expression requires exactly one argument, but found ${a.length-1} instead.`);if(Ul(a[1])){let A=a[1];if(A.type===\"FeatureCollection\")for(let x=0;x!Array.isArray(V)||V.length===a.length-1),F=null;for(let[V,q]of D){F=new vd(h.registry,Gm,h.path,null,h.scope);let X=[],rt=!1;for(let at=1;at{return rt=X,Array.isArray(rt)?`(${rt.map(xt).join(\", \")})`:`(${xt(rt.type)}...)`;var rt}).join(\" | \"),q=[];for(let X=1;X{h=a?h&&Gm(A):h&&A instanceof Vl}),!!h&&Wm(u)&&Hm(u,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}function Wm(u){if(u instanceof fl&&(u.name===\"get\"&&u.args.length===1||u.name===\"feature-state\"||u.name===\"has\"&&u.args.length===1||u.name===\"properties\"||u.name===\"geometry-type\"||u.name===\"id\"||/^filter-/.test(u.name))||u instanceof mf)return!1;let a=!0;return u.eachChild(h=>{a&&!Wm(h)&&(a=!1)}),a}function Wp(u){if(u instanceof fl&&u.name===\"feature-state\")return!1;let a=!0;return u.eachChild(h=>{a&&!Wp(h)&&(a=!1)}),a}function Hm(u,a){if(u instanceof fl&&a.indexOf(u.name)>=0)return!1;let h=!0;return u.eachChild(A=>{h&&!Hm(A,a)&&(h=!1)}),h}function bd(u,a){let h=u.length-1,A,x,E=0,P=h,D=0;for(;E<=P;)if(D=Math.floor((E+P)/2),A=u[D],x=u[D+1],A<=a){if(D===h||aa))throw new an(\"Input is not a number.\");P=D-1}return 0}class nh{constructor(a,h,A){this.type=a,this.input=h,this.labels=[],this.outputs=[];for(let[x,E]of A)this.labels.push(x),this.outputs.push(E)}static parse(a,h){if(a.length-1<4)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if((a.length-1)%2!=0)return h.error(\"Expected an even number of arguments.\");let A=h.parse(a[1],1,Se);if(!A)return null;let x=[],E=null;h.expectedType&&h.expectedType.kind!==\"value\"&&(E=h.expectedType);for(let P=1;P=D)return h.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',V);let X=h.parse(F,q,E);if(!X)return null;E=E||X.type,x.push([D,X])}return new nh(E,A,x)}evaluate(a){let h=this.labels,A=this.outputs;if(h.length===1)return A[0].evaluate(a);let x=this.input.evaluate(a);if(x<=h[0])return A[0].evaluate(a);let E=h.length;return x>=h[E-1]?A[E-1].evaluate(a):A[bd(h,x)].evaluate(a)}eachChild(a){a(this.input);for(let h of this.outputs)a(h)}outputDefined(){return this.outputs.every(a=>a.outputDefined())}}function ui(u,a,h){return u+h*(a-u)}function qm(u,a,h){return u.map((A,x)=>ui(A,a[x],h))}let Da={number:ui,color:function(u,a,h,A=\"rgb\"){switch(A){case\"rgb\":{let[x,E,P,D]=qm(u.rgb,a.rgb,h);return new ai(x,E,P,D,!1)}case\"hcl\":{let[x,E,P,D]=u.hcl,[F,V,q,X]=a.hcl,rt,at;if(isNaN(x)||isNaN(F))isNaN(x)?isNaN(F)?rt=NaN:(rt=F,P!==1&&P!==0||(at=V)):(rt=x,q!==1&&q!==0||(at=E));else{let Vt=F-x;F>x&&Vt>180?Vt-=360:F180&&(Vt+=360),rt=x+h*Vt}let[ct,mt,bt,Et]=function([Vt,Rt,jt,qt]){return Vt=isNaN(Vt)?0:Vt*br,ki([jt,Math.cos(Vt)*Rt,Math.sin(Vt)*Rt,qt])}([rt,at??ui(E,V,h),ui(P,q,h),ui(D,X,h)]);return new ai(ct,mt,bt,Et,!1)}case\"lab\":{let[x,E,P,D]=ki(qm(u.lab,a.lab,h));return new ai(x,E,P,D,!1)}}},array:qm,padding:function(u,a,h){return new kn(qm(u.values,a.values,h))},variableAnchorOffsetCollection:function(u,a,h){let A=u.values,x=a.values;if(A.length!==x.length)throw new an(`Cannot interpolate values of different length. from: ${u.toString()}, to: ${a.toString()}`);let E=[];for(let P=0;Ptypeof q!=\"number\"||q<0||q>1))return h.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);x={name:\"cubic-bezier\",controlPoints:V}}}if(a.length-1<4)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if((a.length-1)%2!=0)return h.error(\"Expected an even number of arguments.\");if(E=h.parse(E,2,Se),!E)return null;let D=[],F=null;A===\"interpolate-hcl\"||A===\"interpolate-lab\"?F=Fs:h.expectedType&&h.expectedType.kind!==\"value\"&&(F=h.expectedType);for(let V=0;V=q)return h.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',rt);let ct=h.parse(X,at,F);if(!ct)return null;F=F||ct.type,D.push([q,ct])}return re(F,Se)||re(F,Fs)||re(F,tt)||re(F,ht)||re(F,vt(Se))?new Oa(F,A,x,E,D):h.error(`Type ${xt(F)} is not interpolatable.`)}evaluate(a){let h=this.labels,A=this.outputs;if(h.length===1)return A[0].evaluate(a);let x=this.input.evaluate(a);if(x<=h[0])return A[0].evaluate(a);let E=h.length;if(x>=h[E-1])return A[E-1].evaluate(a);let P=bd(h,x),D=Oa.interpolationFactor(this.interpolation,x,h[P],h[P+1]),F=A[P].evaluate(a),V=A[P+1].evaluate(a);switch(this.operator){case\"interpolate\":return Da[this.type.kind](F,V,D);case\"interpolate-hcl\":return Da.color(F,V,D,\"hcl\");case\"interpolate-lab\":return Da.color(F,V,D,\"lab\")}}eachChild(a){a(this.input);for(let h of this.outputs)a(h)}outputDefined(){return this.outputs.every(a=>a.outputDefined())}}function i_(u,a,h,A){let x=A-h,E=u-h;return x===0?0:a===1?E/x:(Math.pow(a,E)-1)/(Math.pow(a,x)-1)}class Zm{constructor(a,h){this.type=a,this.args=h}static parse(a,h){if(a.length<2)return h.error(\"Expectected at least one argument.\");let A=null,x=h.expectedType;x&&x.kind!==\"value\"&&(A=x);let E=[];for(let D of a.slice(1)){let F=h.parse(D,1+E.length,A,void 0,{typeAnnotation:\"omit\"});if(!F)return null;A=A||F.type,E.push(F)}if(!A)throw new Error(\"No output type\");let P=x&&E.some(D=>Ot(x,D.type));return new Zm(P?Tr:A,E)}evaluate(a){let h,A=null,x=0;for(let E of this.args)if(x++,A=E.evaluate(a),A&&A instanceof Vn&&!A.available&&(h||(h=A.name),A=null,x===this.args.length&&(A=h)),A!==null)break;return A}eachChild(a){this.args.forEach(a)}outputDefined(){return this.args.every(a=>a.outputDefined())}}class Ym{constructor(a,h){this.type=h.type,this.bindings=[].concat(a),this.result=h}evaluate(a){return this.result.evaluate(a)}eachChild(a){for(let h of this.bindings)a(h[1]);a(this.result)}static parse(a,h){if(a.length<4)return h.error(`Expected at least 3 arguments, but found ${a.length-1} instead.`);let A=[];for(let E=1;E=A.length)throw new an(`Array index out of bounds: ${h} > ${A.length-1}.`);if(h!==Math.floor(h))throw new an(`Array index must be an integer, but found ${h} instead.`);return A[h]}eachChild(a){a(this.index),a(this.input)}outputDefined(){return!1}}class Qm{constructor(a,h){this.type=mr,this.needle=a,this.haystack=h}static parse(a,h){if(a.length!==3)return h.error(`Expected 2 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Tr);return A&&x?Mt(A.type,[mr,Dr,Se,Ca,Tr])?new Qm(A,x):h.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(A.type)} instead`):null}evaluate(a){let h=this.needle.evaluate(a),A=this.haystack.evaluate(a);if(!A)return!1;if(!Ut(h,[\"boolean\",\"string\",\"number\",\"null\"]))throw new an(`Expected first argument to be of type boolean, string, number or null, but found ${xt($i(h))} instead.`);if(!Ut(A,[\"string\",\"array\"]))throw new an(`Expected second argument to be of type array or string, but found ${xt($i(A))} instead.`);return A.indexOf(h)>=0}eachChild(a){a(this.needle),a(this.haystack)}outputDefined(){return!0}}class qp{constructor(a,h,A){this.type=Se,this.needle=a,this.haystack=h,this.fromIndex=A}static parse(a,h){if(a.length<=2||a.length>=5)return h.error(`Expected 3 or 4 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Tr);if(!A||!x)return null;if(!Mt(A.type,[mr,Dr,Se,Ca,Tr]))return h.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(A.type)} instead`);if(a.length===4){let E=h.parse(a[3],3,Se);return E?new qp(A,x,E):null}return new qp(A,x)}evaluate(a){let h=this.needle.evaluate(a),A=this.haystack.evaluate(a);if(!Ut(h,[\"boolean\",\"string\",\"number\",\"null\"]))throw new an(`Expected first argument to be of type boolean, string, number or null, but found ${xt($i(h))} instead.`);if(!Ut(A,[\"string\",\"array\"]))throw new an(`Expected second argument to be of type array or string, but found ${xt($i(A))} instead.`);if(this.fromIndex){let x=this.fromIndex.evaluate(a);return A.indexOf(h,x)}return A.indexOf(h)}eachChild(a){a(this.needle),a(this.haystack),this.fromIndex&&a(this.fromIndex)}outputDefined(){return!1}}class wd{constructor(a,h,A,x,E,P){this.inputType=a,this.type=h,this.input=A,this.cases=x,this.outputs=E,this.otherwise=P}static parse(a,h){if(a.length<5)return h.error(`Expected at least 4 arguments, but found only ${a.length-1}.`);if(a.length%2!=1)return h.error(\"Expected an even number of arguments.\");let A,x;h.expectedType&&h.expectedType.kind!==\"value\"&&(x=h.expectedType);let E={},P=[];for(let V=2;VNumber.MAX_SAFE_INTEGER)return rt.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof ct==\"number\"&&Math.floor(ct)!==ct)return rt.error(\"Numeric branch labels must be integer values.\");if(A){if(rt.checkSubtype(A,$i(ct)))return null}else A=$i(ct);if(E[String(ct)]!==void 0)return rt.error(\"Branch labels must be unique.\");E[String(ct)]=P.length}let at=h.parse(X,V,x);if(!at)return null;x=x||at.type,P.push(at)}let D=h.parse(a[1],1,Tr);if(!D)return null;let F=h.parse(a[a.length-1],a.length-1,x);return F?D.type.kind!==\"value\"&&h.concat(1).checkSubtype(A,D.type)?null:new wd(A,x,D,E,P,F):null}evaluate(a){let h=this.input.evaluate(a);return($i(h)===this.inputType&&this.outputs[this.cases[h]]||this.otherwise).evaluate(a)}eachChild(a){a(this.input),this.outputs.forEach(a),a(this.otherwise)}outputDefined(){return this.outputs.every(a=>a.outputDefined())&&this.otherwise.outputDefined()}}class Zp{constructor(a,h,A){this.type=a,this.branches=h,this.otherwise=A}static parse(a,h){if(a.length<4)return h.error(`Expected at least 3 arguments, but found only ${a.length-1}.`);if(a.length%2!=0)return h.error(\"Expected an odd number of arguments.\");let A;h.expectedType&&h.expectedType.kind!==\"value\"&&(A=h.expectedType);let x=[];for(let P=1;Ph.outputDefined())&&this.otherwise.outputDefined()}}class Sd{constructor(a,h,A,x){this.type=a,this.input=h,this.beginIndex=A,this.endIndex=x}static parse(a,h){if(a.length<=2||a.length>=5)return h.error(`Expected 3 or 4 arguments, but found ${a.length-1} instead.`);let A=h.parse(a[1],1,Tr),x=h.parse(a[2],2,Se);if(!A||!x)return null;if(!Mt(A.type,[vt(Tr),Dr,Tr]))return h.error(`Expected first argument to be of type array or string, but found ${xt(A.type)} instead`);if(a.length===4){let E=h.parse(a[3],3,Se);return E?new Sd(A.type,A,x,E):null}return new Sd(A.type,A,x)}evaluate(a){let h=this.input.evaluate(a),A=this.beginIndex.evaluate(a);if(!Ut(h,[\"string\",\"array\"]))throw new an(`Expected first argument to be of type array or string, but found ${xt($i(h))} instead.`);if(this.endIndex){let x=this.endIndex.evaluate(a);return h.slice(A,x)}return h.slice(A)}eachChild(a){a(this.input),a(this.beginIndex),this.endIndex&&a(this.endIndex)}outputDefined(){return!1}}function $m(u,a){return u===\"==\"||u===\"!=\"?a.kind===\"boolean\"||a.kind===\"string\"||a.kind===\"number\"||a.kind===\"null\"||a.kind===\"value\":a.kind===\"string\"||a.kind===\"number\"||a.kind===\"value\"}function Td(u,a,h,A){return A.compare(a,h)===0}function fu(u,a,h){let A=u!==\"==\"&&u!==\"!=\";return class Z8{constructor(E,P,D){this.type=mr,this.lhs=E,this.rhs=P,this.collator=D,this.hasUntypedArgument=E.type.kind===\"value\"||P.type.kind===\"value\"}static parse(E,P){if(E.length!==3&&E.length!==4)return P.error(\"Expected two or three arguments.\");let D=E[0],F=P.parse(E[1],1,Tr);if(!F)return null;if(!$m(D,F.type))return P.concat(1).error(`\"${D}\" comparisons are not supported for type '${xt(F.type)}'.`);let V=P.parse(E[2],2,Tr);if(!V)return null;if(!$m(D,V.type))return P.concat(2).error(`\"${D}\" comparisons are not supported for type '${xt(V.type)}'.`);if(F.type.kind!==V.type.kind&&F.type.kind!==\"value\"&&V.type.kind!==\"value\")return P.error(`Cannot compare types '${xt(F.type)}' and '${xt(V.type)}'.`);A&&(F.type.kind===\"value\"&&V.type.kind!==\"value\"?F=new ts(V.type,[F]):F.type.kind!==\"value\"&&V.type.kind===\"value\"&&(V=new ts(F.type,[V])));let q=null;if(E.length===4){if(F.type.kind!==\"string\"&&V.type.kind!==\"string\"&&F.type.kind!==\"value\"&&V.type.kind!==\"value\")return P.error(\"Cannot use collator to compare non-string types.\");if(q=P.parse(E[3],3,sa),!q)return null}return new Z8(F,V,q)}evaluate(E){let P=this.lhs.evaluate(E),D=this.rhs.evaluate(E);if(A&&this.hasUntypedArgument){let F=$i(P),V=$i(D);if(F.kind!==V.kind||F.kind!==\"string\"&&F.kind!==\"number\")throw new an(`Expected arguments for \"${u}\" to be (string, string) or (number, number), but found (${F.kind}, ${V.kind}) instead.`)}if(this.collator&&!A&&this.hasUntypedArgument){let F=$i(P),V=$i(D);if(F.kind!==\"string\"||V.kind!==\"string\")return a(E,P,D)}return this.collator?h(E,P,D,this.collator.evaluate(E)):a(E,P,D)}eachChild(E){E(this.lhs),E(this.rhs),this.collator&&E(this.collator)}outputDefined(){return!0}}}let sh=fu(\"==\",function(u,a,h){return a===h},Td),Ht=fu(\"!=\",function(u,a,h){return a!==h},function(u,a,h,A){return!Td(0,a,h,A)}),fe=fu(\"<\",function(u,a,h){return a\",function(u,a,h){return a>h},function(u,a,h,A){return A.compare(a,h)>0}),xr=fu(\"<=\",function(u,a,h){return a<=h},function(u,a,h,A){return A.compare(a,h)<=0}),g=fu(\">=\",function(u,a,h){return a>=h},function(u,a,h,A){return A.compare(a,h)>=0});class Ni{constructor(a,h,A,x,E){this.type=Dr,this.number=a,this.locale=h,this.currency=A,this.minFractionDigits=x,this.maxFractionDigits=E}static parse(a,h){if(a.length!==3)return h.error(\"Expected two arguments.\");let A=h.parse(a[1],1,Se);if(!A)return null;let x=a[2];if(typeof x!=\"object\"||Array.isArray(x))return h.error(\"NumberFormat options argument must be an object.\");let E=null;if(x.locale&&(E=h.parse(x.locale,1,Dr),!E))return null;let P=null;if(x.currency&&(P=h.parse(x.currency,1,Dr),!P))return null;let D=null;if(x[\"min-fraction-digits\"]&&(D=h.parse(x[\"min-fraction-digits\"],1,Se),!D))return null;let F=null;return x[\"max-fraction-digits\"]&&(F=h.parse(x[\"max-fraction-digits\"],1,Se),!F)?null:new Ni(A,E,P,D,F)}evaluate(a){return new Intl.NumberFormat(this.locale?this.locale.evaluate(a):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(a):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(a):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(a):void 0}).format(this.number.evaluate(a))}eachChild(a){a(this.number),this.locale&&a(this.locale),this.currency&&a(this.currency),this.minFractionDigits&&a(this.minFractionDigits),this.maxFractionDigits&&a(this.maxFractionDigits)}outputDefined(){return!1}}class Si{constructor(a){this.type=gt,this.sections=a}static parse(a,h){if(a.length<2)return h.error(\"Expected at least one argument.\");let A=a[1];if(!Array.isArray(A)&&typeof A==\"object\")return h.error(\"First argument must be an image or text section.\");let x=[],E=!1;for(let P=1;P<=a.length-1;++P){let D=a[P];if(E&&typeof D==\"object\"&&!Array.isArray(D)){E=!1;let F=null;if(D[\"font-scale\"]&&(F=h.parse(D[\"font-scale\"],1,Se),!F))return null;let V=null;if(D[\"text-font\"]&&(V=h.parse(D[\"text-font\"],1,vt(Dr)),!V))return null;let q=null;if(D[\"text-color\"]&&(q=h.parse(D[\"text-color\"],1,Fs),!q))return null;let X=x[x.length-1];X.scale=F,X.font=V,X.textColor=q}else{let F=h.parse(a[P],1,Tr);if(!F)return null;let V=F.type.kind;if(V!==\"string\"&&V!==\"value\"&&V!==\"null\"&&V!==\"resolvedImage\")return h.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");E=!0,x.push({content:F,scale:null,font:null,textColor:null})}}return new Si(x)}evaluate(a){return new on(this.sections.map(h=>{let A=h.content.evaluate(a);return $i(A)===nt?new kc(\"\",A,null,null,null):new kc(_i(A),null,h.scale?h.scale.evaluate(a):null,h.font?h.font.evaluate(a).join(\",\"):null,h.textColor?h.textColor.evaluate(a):null)}))}eachChild(a){for(let h of this.sections)a(h.content),h.scale&&a(h.scale),h.font&&a(h.font),h.textColor&&a(h.textColor)}outputDefined(){return!1}}class Tt{constructor(a){this.type=nt,this.input=a}static parse(a,h){if(a.length!==2)return h.error(\"Expected two arguments.\");let A=h.parse(a[1],1,Dr);return A?new Tt(A):h.error(\"No image name provided.\")}evaluate(a){let h=this.input.evaluate(a),A=Vn.fromString(h);return A&&a.availableImages&&(A.available=a.availableImages.indexOf(h)>-1),A}eachChild(a){a(this.input)}outputDefined(){return!1}}class Ms{constructor(a){this.type=Se,this.input=a}static parse(a,h){if(a.length!==2)return h.error(`Expected 1 argument, but found ${a.length-1} instead.`);let A=h.parse(a[1],1);return A?A.type.kind!==\"array\"&&A.type.kind!==\"string\"&&A.type.kind!==\"value\"?h.error(`Expected argument of type string or array, but found ${xt(A.type)} instead.`):new Ms(A):null}evaluate(a){let h=this.input.evaluate(a);if(typeof h==\"string\"||Array.isArray(h))return h.length;throw new an(`Expected value to be of type string or array, but found ${xt($i(h))} instead.`)}eachChild(a){a(this.input)}outputDefined(){return!1}}let ls={\"==\":sh,\"!=\":Ht,\">\":De,\"<\":fe,\">=\":g,\"<=\":xr,array:ts,at:Hp,boolean:ts,case:Zp,coalesce:Zm,collator:xd,format:Si,image:Tt,in:Qm,\"index-of\":qp,interpolate:Oa,\"interpolate-hcl\":Oa,\"interpolate-lab\":Oa,length:Ms,let:Ym,literal:Vl,match:wd,number:ts,\"number-format\":Ni,object:ts,slice:Sd,step:nh,string:ts,\"to-boolean\":jl,\"to-color\":jl,\"to-number\":jl,\"to-string\":jl,var:jm,within:mf};function li(u,[a,h,A,x]){a=a.evaluate(u),h=h.evaluate(u),A=A.evaluate(u);let E=x?x.evaluate(u):1,P=wo(a,h,A,E);if(P)throw new an(P);return new ai(a/255,h/255,A/255,E,!1)}function vn(u,a){return u in a}function dl(u,a){let h=a[u];return h===void 0?null:h}function Ur(u){return{type:u}}function hi(u){return{result:\"success\",value:u}}function So(u){return{result:\"error\",value:u}}function gf(u){return u[\"property-type\"]===\"data-driven\"||u[\"property-type\"]===\"cross-faded-data-driven\"}function n_(u){return!!u.expression&&u.expression.parameters.indexOf(\"zoom\")>-1}function Md(u){return!!u.expression&&u.expression.interpolated}function qr(u){return u instanceof Number?\"number\":u instanceof String?\"string\":u instanceof Boolean?\"boolean\":Array.isArray(u)?\"array\":u===null?\"null\":typeof u}function Xi(u){return typeof u==\"object\"&&u!==null&&!Array.isArray(u)}function Rc(u){return u}function ci(u,a){let h=a.type===\"color\",A=u.stops&&typeof u.stops[0][0]==\"object\",x=A||!(A||u.property!==void 0),E=u.type||(Md(a)?\"exponential\":\"interval\");if(h||a.type===\"padding\"){let q=h?ai.parse:kn.parse;(u=Go({},u)).stops&&(u.stops=u.stops.map(X=>[X[0],q(X[1])])),u.default=q(u.default?u.default:a.default)}if(u.colorSpace&&(P=u.colorSpace)!==\"rgb\"&&P!==\"hcl\"&&P!==\"lab\")throw new Error(`Unknown color space: \"${u.colorSpace}\"`);var P;let D,F,V;if(E===\"exponential\")D=Ti;else if(E===\"interval\")D=It;else if(E===\"categorical\"){D=$e,F=Object.create(null);for(let q of u.stops)F[q[0]]=q[1];V=typeof u.stops[0][0]}else{if(E!==\"identity\")throw new Error(`Unknown function type \"${E}\"`);D=Xm}if(A){let q={},X=[];for(let ct=0;ctct[0]),evaluate:({zoom:ct},mt)=>Ti({stops:rt,base:u.base},a,ct).evaluate(ct,mt)}}if(x){let q=E===\"exponential\"?{name:\"exponential\",base:u.base!==void 0?u.base:1}:null;return{kind:\"camera\",interpolationType:q,interpolationFactor:Oa.interpolationFactor.bind(void 0,q),zoomStops:u.stops.map(X=>X[0]),evaluate:({zoom:X})=>D(u,a,X,F,V)}}return{kind:\"source\",evaluate(q,X){let rt=X&&X.properties?X.properties[u.property]:void 0;return rt===void 0?aa(u.default,a.default):D(u,a,rt,F,V)}}}function aa(u,a,h){return u!==void 0?u:a!==void 0?a:h!==void 0?h:void 0}function $e(u,a,h,A,x){return aa(typeof h===x?A[h]:void 0,u.default,a.default)}function It(u,a,h){if(qr(h)!==\"number\")return aa(u.default,a.default);let A=u.stops.length;if(A===1||h<=u.stops[0][0])return u.stops[0][1];if(h>=u.stops[A-1][0])return u.stops[A-1][1];let x=bd(u.stops.map(E=>E[0]),h);return u.stops[x][1]}function Ti(u,a,h){let A=u.base!==void 0?u.base:1;if(qr(h)!==\"number\")return aa(u.default,a.default);let x=u.stops.length;if(x===1||h<=u.stops[0][0])return u.stops[0][1];if(h>=u.stops[x-1][0])return u.stops[x-1][1];let E=bd(u.stops.map(q=>q[0]),h),P=function(q,X,rt,at){let ct=at-rt,mt=q-rt;return ct===0?0:X===1?mt/ct:(Math.pow(X,mt)-1)/(Math.pow(X,ct)-1)}(h,A,u.stops[E][0],u.stops[E+1][0]),D=u.stops[E][1],F=u.stops[E+1][1],V=Da[a.type]||Rc;return typeof D.evaluate==\"function\"?{evaluate(...q){let X=D.evaluate.apply(void 0,q),rt=F.evaluate.apply(void 0,q);if(X!==void 0&&rt!==void 0)return V(X,rt,P,u.colorSpace)}}:V(D,F,P,u.colorSpace)}function Xm(u,a,h){switch(a.type){case\"color\":h=ai.parse(h);break;case\"formatted\":h=on.fromString(h.toString());break;case\"resolvedImage\":h=Vn.fromString(h.toString());break;case\"padding\":h=kn.parse(h);break;default:qr(h)===a.type||a.type===\"enum\"&&a.values[h]||(h=void 0)}return aa(h,u.default,a.default)}fl.register(ls,{error:[{kind:\"error\"},[Dr],(u,[a])=>{throw new an(a.evaluate(u))}],typeof:[Dr,[Tr],(u,[a])=>xt($i(a.evaluate(u)))],\"to-rgba\":[vt(Se,4),[Fs],(u,[a])=>{let[h,A,x,E]=a.evaluate(u).rgb;return[255*h,255*A,255*x,E]}],rgb:[Fs,[Se,Se,Se],li],rgba:[Fs,[Se,Se,Se,Se],li],has:{type:mr,overloads:[[[Dr],(u,[a])=>vn(a.evaluate(u),u.properties())],[[Dr,La],(u,[a,h])=>vn(a.evaluate(u),h.evaluate(u))]]},get:{type:Tr,overloads:[[[Dr],(u,[a])=>dl(a.evaluate(u),u.properties())],[[Dr,La],(u,[a,h])=>dl(a.evaluate(u),h.evaluate(u))]]},\"feature-state\":[Tr,[Dr],(u,[a])=>dl(a.evaluate(u),u.featureState||{})],properties:[La,[],u=>u.properties()],\"geometry-type\":[Dr,[],u=>u.geometryType()],id:[Tr,[],u=>u.id()],zoom:[Se,[],u=>u.globals.zoom],\"heatmap-density\":[Se,[],u=>u.globals.heatmapDensity||0],\"line-progress\":[Se,[],u=>u.globals.lineProgress||0],accumulated:[Tr,[],u=>u.globals.accumulated===void 0?null:u.globals.accumulated],\"+\":[Se,Ur(Se),(u,a)=>{let h=0;for(let A of a)h+=A.evaluate(u);return h}],\"*\":[Se,Ur(Se),(u,a)=>{let h=1;for(let A of a)h*=A.evaluate(u);return h}],\"-\":{type:Se,overloads:[[[Se,Se],(u,[a,h])=>a.evaluate(u)-h.evaluate(u)],[[Se],(u,[a])=>-a.evaluate(u)]]},\"/\":[Se,[Se,Se],(u,[a,h])=>a.evaluate(u)/h.evaluate(u)],\"%\":[Se,[Se,Se],(u,[a,h])=>a.evaluate(u)%h.evaluate(u)],ln2:[Se,[],()=>Math.LN2],pi:[Se,[],()=>Math.PI],e:[Se,[],()=>Math.E],\"^\":[Se,[Se,Se],(u,[a,h])=>Math.pow(a.evaluate(u),h.evaluate(u))],sqrt:[Se,[Se],(u,[a])=>Math.sqrt(a.evaluate(u))],log10:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))/Math.LN10],ln:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))],log2:[Se,[Se],(u,[a])=>Math.log(a.evaluate(u))/Math.LN2],sin:[Se,[Se],(u,[a])=>Math.sin(a.evaluate(u))],cos:[Se,[Se],(u,[a])=>Math.cos(a.evaluate(u))],tan:[Se,[Se],(u,[a])=>Math.tan(a.evaluate(u))],asin:[Se,[Se],(u,[a])=>Math.asin(a.evaluate(u))],acos:[Se,[Se],(u,[a])=>Math.acos(a.evaluate(u))],atan:[Se,[Se],(u,[a])=>Math.atan(a.evaluate(u))],min:[Se,Ur(Se),(u,a)=>Math.min(...a.map(h=>h.evaluate(u)))],max:[Se,Ur(Se),(u,a)=>Math.max(...a.map(h=>h.evaluate(u)))],abs:[Se,[Se],(u,[a])=>Math.abs(a.evaluate(u))],round:[Se,[Se],(u,[a])=>{let h=a.evaluate(u);return h<0?-Math.round(-h):Math.round(h)}],floor:[Se,[Se],(u,[a])=>Math.floor(a.evaluate(u))],ceil:[Se,[Se],(u,[a])=>Math.ceil(a.evaluate(u))],\"filter-==\":[mr,[Dr,Tr],(u,[a,h])=>u.properties()[a.value]===h.value],\"filter-id-==\":[mr,[Tr],(u,[a])=>u.id()===a.value],\"filter-type-==\":[mr,[Dr],(u,[a])=>u.geometryType()===a.value],\"filter-<\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A{let h=u.id(),A=a.value;return typeof h==typeof A&&h\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A>x}],\"filter-id->\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h>A}],\"filter-<=\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A<=x}],\"filter-id-<=\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h<=A}],\"filter->=\":[mr,[Dr,Tr],(u,[a,h])=>{let A=u.properties()[a.value],x=h.value;return typeof A==typeof x&&A>=x}],\"filter-id->=\":[mr,[Tr],(u,[a])=>{let h=u.id(),A=a.value;return typeof h==typeof A&&h>=A}],\"filter-has\":[mr,[Tr],(u,[a])=>a.value in u.properties()],\"filter-has-id\":[mr,[],u=>u.id()!==null&&u.id()!==void 0],\"filter-type-in\":[mr,[vt(Dr)],(u,[a])=>a.value.indexOf(u.geometryType())>=0],\"filter-id-in\":[mr,[vt(Tr)],(u,[a])=>a.value.indexOf(u.id())>=0],\"filter-in-small\":[mr,[Dr,vt(Tr)],(u,[a,h])=>h.value.indexOf(u.properties()[a.value])>=0],\"filter-in-large\":[mr,[Dr,vt(Tr)],(u,[a,h])=>function(A,x,E,P){for(;E<=P;){let D=E+P>>1;if(x[D]===A)return!0;x[D]>A?P=D-1:E=D+1}return!1}(u.properties()[a.value],h.value,0,h.value.length-1)],all:{type:mr,overloads:[[[mr,mr],(u,[a,h])=>a.evaluate(u)&&h.evaluate(u)],[Ur(mr),(u,a)=>{for(let h of a)if(!h.evaluate(u))return!1;return!0}]]},any:{type:mr,overloads:[[[mr,mr],(u,[a,h])=>a.evaluate(u)||h.evaluate(u)],[Ur(mr),(u,a)=>{for(let h of a)if(h.evaluate(u))return!0;return!1}]]},\"!\":[mr,[mr],(u,[a])=>!a.evaluate(u)],\"is-supported-script\":[mr,[Dr],(u,[a])=>{let h=u.globals&&u.globals.isSupportedScript;return!h||h(a.evaluate(u))}],upcase:[Dr,[Dr],(u,[a])=>a.evaluate(u).toUpperCase()],downcase:[Dr,[Dr],(u,[a])=>a.evaluate(u).toLowerCase()],concat:[Dr,Ur(Tr),(u,a)=>a.map(h=>_i(h.evaluate(u))).join(\"\")],\"resolved-locale\":[Dr,[sa],(u,[a])=>a.evaluate(u).resolvedLocale()]});class Km{constructor(a,h){var A;this.expression=a,this._warningHistory={},this._evaluator=new yd,this._defaultValue=h?(A=h).type===\"color\"&&Xi(A.default)?new ai(0,0,0,0):A.type===\"color\"?ai.parse(A.default)||null:A.type===\"padding\"?kn.parse(A.default)||null:A.type===\"variableAnchorOffsetCollection\"?Wo.parse(A.default)||null:A.default===void 0?null:A.default:null,this._enumValues=h&&h.type===\"enum\"?h.values:null}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._evaluator.globals=a,this._evaluator.feature=h,this._evaluator.featureState=A,this._evaluator.canonical=x,this._evaluator.availableImages=E||null,this._evaluator.formattedSection=P,this.expression.evaluate(this._evaluator)}evaluate(a,h,A,x,E,P){this._evaluator.globals=a,this._evaluator.feature=h||null,this._evaluator.featureState=A||null,this._evaluator.canonical=x,this._evaluator.availableImages=E||null,this._evaluator.formattedSection=P||null;try{let D=this.expression.evaluate(this._evaluator);if(D==null||typeof D==\"number\"&&D!=D)return this._defaultValue;if(this._enumValues&&!(D in this._enumValues))throw new an(`Expected value to be one of ${Object.keys(this._enumValues).map(F=>JSON.stringify(F)).join(\", \")}, but found ${JSON.stringify(D)} instead.`);return D}catch(D){return this._warningHistory[D.message]||(this._warningHistory[D.message]=!0,typeof console<\"u\"&&console.warn(D.message)),this._defaultValue}}}function Yp(u){return Array.isArray(u)&&u.length>0&&typeof u[0]==\"string\"&&u[0]in ls}function Qp(u,a){let h=new vd(ls,Gm,[],a?function(x){let E={color:Fs,string:Dr,number:Se,enum:Dr,boolean:mr,formatted:gt,padding:tt,resolvedImage:nt,variableAnchorOffsetCollection:ht};return x.type===\"array\"?vt(E[x.value]||Tr,x.length):E[x.type]}(a):void 0),A=h.parse(u,void 0,void 0,void 0,a&&a.type===\"string\"?{typeAnnotation:\"coerce\"}:void 0);return A?hi(new Km(A,a)):So(h.errors)}class Jm{constructor(a,h){this.kind=a,this._styleExpression=h,this.isStateDependent=a!==\"constant\"&&!Wp(h.expression)}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._styleExpression.evaluateWithoutErrorHandling(a,h,A,x,E,P)}evaluate(a,h,A,x,E,P){return this._styleExpression.evaluate(a,h,A,x,E,P)}}class wt{constructor(a,h,A,x){this.kind=a,this.zoomStops=A,this._styleExpression=h,this.isStateDependent=a!==\"camera\"&&!Wp(h.expression),this.interpolationType=x}evaluateWithoutErrorHandling(a,h,A,x,E,P){return this._styleExpression.evaluateWithoutErrorHandling(a,h,A,x,E,P)}evaluate(a,h,A,x,E,P){return this._styleExpression.evaluate(a,h,A,x,E,P)}interpolationFactor(a,h,A){return this.interpolationType?Oa.interpolationFactor(this.interpolationType,a,h,A):0}}function t0(u,a){let h=Qp(u,a);if(h.result===\"error\")return h;let A=h.value.expression,x=Wm(A);if(!x&&!gf(a))return So([new An(\"\",\"data expressions not supported\")]);let E=Hm(A,[\"zoom\"]);if(!E&&!n_(a))return So([new An(\"\",\"zoom expressions not supported\")]);let P=Pd(A);return P||E?P instanceof An?So([P]):P instanceof Oa&&!Md(a)?So([new An(\"\",'\"interpolate\" expressions cannot be used with this property')]):hi(P?new wt(x?\"camera\":\"composite\",h.value,P.labels,P instanceof Oa?P.interpolation:void 0):new Jm(x?\"constant\":\"source\",h.value)):So([new An(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class Ed{constructor(a,h){this._parameters=a,this._specification=h,Go(this,ci(this._parameters,this._specification))}static deserialize(a){return new Ed(a._parameters,a._specification)}static serialize(a){return{_parameters:a._parameters,_specification:a._specification}}}function Pd(u){let a=null;if(u instanceof Ym)a=Pd(u.result);else if(u instanceof Zm){for(let h of u.args)if(a=Pd(h),a)break}else(u instanceof nh||u instanceof Oa)&&u.input instanceof fl&&u.input.name===\"zoom\"&&(a=u);return a instanceof An||u.eachChild(h=>{let A=Pd(h);A instanceof An?a=A:!a&&A?a=new An(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):a&&A&&a!==A&&(a=new An(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'))}),a}function Id(u){if(u===!0||u===!1)return!0;if(!Array.isArray(u)||u.length===0)return!1;switch(u[0]){case\"has\":return u.length>=2&&u[1]!==\"$id\"&&u[1]!==\"$type\";case\"in\":return u.length>=3&&(typeof u[1]!=\"string\"||Array.isArray(u[2]));case\"!in\":case\"!has\":case\"none\":return!1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return u.length!==3||Array.isArray(u[1])||Array.isArray(u[2]);case\"any\":case\"all\":for(let a of u.slice(1))if(!Id(a)&&typeof a!=\"boolean\")return!1;return!0;default:return!0}}let Lx={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function e0(u){if(u==null)return{filter:()=>!0,needGeometry:!1};Id(u)||(u=_f(u));let a=Qp(u,Lx);if(a.result===\"error\")throw new Error(a.value.map(h=>`${h.key}: ${h.message}`).join(\", \"));return{filter:(h,A,x)=>a.value.evaluate(h,A,{},x),needGeometry:o_(u)}}function s_(u,a){return ua?1:0}function o_(u){if(!Array.isArray(u))return!1;if(u[0]===\"within\")return!0;for(let a=1;a\"||a===\"<=\"||a===\">=\"?Ba(u[1],u[2],a):a===\"any\"?(h=u.slice(1),[\"any\"].concat(h.map(_f))):a===\"all\"?[\"all\"].concat(u.slice(1).map(_f)):a===\"none\"?[\"all\"].concat(u.slice(1).map(_f).map(Cd)):a===\"in\"?jn(u[1],u.slice(2)):a===\"!in\"?Cd(jn(u[1],u.slice(2))):a===\"has\"?a_(u[1]):a===\"!has\"?Cd(a_(u[1])):a!==\"within\"||u;var h}function Ba(u,a,h){switch(u){case\"$type\":return[`filter-type-${h}`,a];case\"$id\":return[`filter-id-${h}`,a];default:return[`filter-${h}`,u,a]}}function jn(u,a){if(a.length===0)return!1;switch(u){case\"$type\":return[\"filter-type-in\",[\"literal\",a]];case\"$id\":return[\"filter-id-in\",[\"literal\",a]];default:return a.length>200&&!a.some(h=>typeof h!=typeof a[0])?[\"filter-in-large\",u,[\"literal\",a.sort(s_)]]:[\"filter-in-small\",u,[\"literal\",a]]}}function a_(u){switch(u){case\"$type\":return!0;case\"$id\":return[\"filter-has-id\"];default:return[\"filter-has\",u]}}function Cd(u){return[\"!\",u]}function $p(u){let a=typeof u;if(a===\"number\"||a===\"boolean\"||a===\"string\"||u==null)return JSON.stringify(u);if(Array.isArray(u)){let x=\"[\";for(let E of u)x+=`${$p(E)},`;return`${x}]`}let h=Object.keys(u).sort(),A=\"{\";for(let x=0;xA.maximum?[new ve(a,h,`${h} is greater than the maximum value ${A.maximum}`)]:[]}function Kp(u){let a=u.valueSpec,h=Pn(u.value.type),A,x,E,P={},D=h!==\"categorical\"&&u.value.property===void 0,F=!D,V=qr(u.value.stops)===\"array\"&&qr(u.value.stops[0])===\"array\"&&qr(u.value.stops[0][0])===\"object\",q=fi({key:u.key,value:u.value,valueSpec:u.styleSpec.function,validateSpec:u.validateSpec,style:u.style,styleSpec:u.styleSpec,objectElementValidators:{stops:function(at){if(h===\"identity\")return[new ve(at.key,at.value,'identity function may not have a \"stops\" property')];let ct=[],mt=at.value;return ct=ct.concat(du({key:at.key,value:mt,valueSpec:at.valueSpec,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec,arrayElementValidator:X})),qr(mt)===\"array\"&&mt.length===0&&ct.push(new ve(at.key,mt,\"array must have at least one stop\")),ct},default:function(at){return at.validateSpec({key:at.key,value:at.value,valueSpec:a,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec})}}});return h===\"identity\"&&D&&q.push(new ve(u.key,u.value,'missing required property \"property\"')),h===\"identity\"||u.value.stops||q.push(new ve(u.key,u.value,'missing required property \"stops\"')),h===\"exponential\"&&u.valueSpec.expression&&!Md(u.valueSpec)&&q.push(new ve(u.key,u.value,\"exponential functions not supported\")),u.styleSpec.$version>=8&&(F&&!gf(u.valueSpec)?q.push(new ve(u.key,u.value,\"property functions not supported\")):D&&!n_(u.valueSpec)&&q.push(new ve(u.key,u.value,\"zoom functions not supported\"))),h!==\"categorical\"&&!V||u.value.property!==void 0||q.push(new ve(u.key,u.value,'\"property\" property is required')),q;function X(at){let ct=[],mt=at.value,bt=at.key;if(qr(mt)!==\"array\")return[new ve(bt,mt,`array expected, ${qr(mt)} found`)];if(mt.length!==2)return[new ve(bt,mt,`array length 2 expected, length ${mt.length} found`)];if(V){if(qr(mt[0])!==\"object\")return[new ve(bt,mt,`object expected, ${qr(mt[0])} found`)];if(mt[0].zoom===void 0)return[new ve(bt,mt,\"object stop key must have zoom\")];if(mt[0].value===void 0)return[new ve(bt,mt,\"object stop key must have value\")];if(E&&E>Pn(mt[0].zoom))return[new ve(bt,mt[0].zoom,\"stop zoom values must appear in ascending order\")];Pn(mt[0].zoom)!==E&&(E=Pn(mt[0].zoom),x=void 0,P={}),ct=ct.concat(fi({key:`${bt}[0]`,value:mt[0],valueSpec:{zoom:{}},validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec,objectElementValidators:{zoom:yf,value:rt}}))}else ct=ct.concat(rt({key:`${bt}[0]`,value:mt[0],valueSpec:{},validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec},mt));return Yp(oh(mt[1]))?ct.concat([new ve(`${bt}[1]`,mt[1],\"expressions are not allowed in function stops.\")]):ct.concat(at.validateSpec({key:`${bt}[1]`,value:mt[1],valueSpec:a,validateSpec:at.validateSpec,style:at.style,styleSpec:at.styleSpec}))}function rt(at,ct){let mt=qr(at.value),bt=Pn(at.value),Et=at.value!==null?at.value:ct;if(A){if(mt!==A)return[new ve(at.key,Et,`${mt} stop domain type must match previous stop domain type ${A}`)]}else A=mt;if(mt!==\"number\"&&mt!==\"string\"&&mt!==\"boolean\")return[new ve(at.key,Et,\"stop domain value must be a number, string, or boolean\")];if(mt!==\"number\"&&h!==\"categorical\"){let Vt=`number expected, ${mt} found`;return gf(a)&&h===void 0&&(Vt+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ve(at.key,Et,Vt)]}return h!==\"categorical\"||mt!==\"number\"||isFinite(bt)&&Math.floor(bt)===bt?h!==\"categorical\"&&mt===\"number\"&&x!==void 0&&btnew ve(`${u.key}${A.key}`,u.value,A.message));let h=a.value.expression||a.value._styleExpression.expression;if(u.expressionContext===\"property\"&&u.propertyKey===\"text-font\"&&!h.outputDefined())return[new ve(u.key,u.value,`Invalid data expression for \"${u.propertyKey}\". Output values must be contained as literals within the expression.`)];if(u.expressionContext===\"property\"&&u.propertyType===\"layout\"&&!Wp(h))return[new ve(u.key,u.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(u.expressionContext===\"filter\"&&!Wp(h))return[new ve(u.key,u.value,'\"feature-state\" data expressions are not supported with filters.')];if(u.expressionContext&&u.expressionContext.indexOf(\"cluster\")===0){if(!Hm(h,[\"zoom\",\"feature-state\"]))return[new ve(u.key,u.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(u.expressionContext===\"cluster-initial\"&&!Wm(h))return[new ve(u.key,u.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return[]}function Ld(u){let a=u.key,h=u.value,A=u.valueSpec,x=[];return Array.isArray(A.values)?A.values.indexOf(Pn(h))===-1&&x.push(new ve(a,h,`expected one of [${A.values.join(\", \")}], ${JSON.stringify(h)} found`)):Object.keys(A.values).indexOf(Pn(h))===-1&&x.push(new ve(a,h,`expected one of [${Object.keys(A.values).join(\", \")}], ${JSON.stringify(h)} found`)),x}function lh(u){return Id(oh(u.value))?ah(Go({},u,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):Jp(u)}function Jp(u){let a=u.value,h=u.key;if(qr(a)!==\"array\")return[new ve(h,a,`array expected, ${qr(a)} found`)];let A=u.styleSpec,x,E=[];if(a.length<1)return[new ve(h,a,\"filter array must have at least 1 element\")];switch(E=E.concat(Ld({key:`${h}[0]`,value:a[0],valueSpec:A.filter_operator,style:u.style,styleSpec:u.styleSpec})),Pn(a[0])){case\"<\":case\"<=\":case\">\":case\">=\":a.length>=2&&Pn(a[1])===\"$type\"&&E.push(new ve(h,a,`\"$type\" cannot be use with operator \"${a[0]}\"`));case\"==\":case\"!=\":a.length!==3&&E.push(new ve(h,a,`filter array for operator \"${a[0]}\" must have 3 elements`));case\"in\":case\"!in\":a.length>=2&&(x=qr(a[1]),x!==\"string\"&&E.push(new ve(`${h}[1]`,a[1],`string expected, ${x} found`)));for(let P=2;P{V in h&&a.push(new ve(A,h[V],`\"${V}\" is prohibited for ref layers`))}),x.layers.forEach(V=>{Pn(V.id)===D&&(F=V)}),F?F.ref?a.push(new ve(A,h.ref,\"ref cannot reference another ref layer\")):P=Pn(F.type):a.push(new ve(A,h.ref,`ref layer \"${D}\" not found`))}else if(P!==\"background\")if(h.source){let F=x.sources&&x.sources[h.source],V=F&&Pn(F.type);F?V===\"vector\"&&P===\"raster\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a raster source`)):V!==\"raster-dem\"&&P===\"hillshade\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a raster-dem source`)):V===\"raster\"&&P!==\"raster\"?a.push(new ve(A,h.source,`layer \"${h.id}\" requires a vector source`)):V!==\"vector\"||h[\"source-layer\"]?V===\"raster-dem\"&&P!==\"hillshade\"?a.push(new ve(A,h.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):P!==\"line\"||!h.paint||!h.paint[\"line-gradient\"]||V===\"geojson\"&&F.lineMetrics||a.push(new ve(A,h,`layer \"${h.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):a.push(new ve(A,h,`layer \"${h.id}\" must specify a \"source-layer\"`)):a.push(new ve(A,h.source,`source \"${h.source}\" not found`))}else a.push(new ve(A,h,'missing required property \"source\"'));return a=a.concat(fi({key:A,value:h,valueSpec:E.layer,style:u.style,styleSpec:u.styleSpec,validateSpec:u.validateSpec,objectElementValidators:{\"*\":()=>[],type:()=>u.validateSpec({key:`${A}.type`,value:h.type,valueSpec:E.layer.type,style:u.style,styleSpec:u.styleSpec,validateSpec:u.validateSpec,object:h,objectKey:\"type\"}),filter:lh,layout:F=>fi({layer:h,key:F.key,value:F.value,style:F.style,styleSpec:F.styleSpec,validateSpec:F.validateSpec,objectElementValidators:{\"*\":V=>c_(Go({layerType:P},V))}}),paint:F=>fi({layer:h,key:F.key,value:F.value,style:F.style,styleSpec:F.styleSpec,validateSpec:F.validateSpec,objectElementValidators:{\"*\":V=>l_(Go({layerType:P},V))}})}})),a}function pl(u){let a=u.value,h=u.key,A=qr(a);return A!==\"string\"?[new ve(h,a,`string expected, ${A} found`)]:[]}let ch={promoteId:function({key:u,value:a}){if(qr(a)===\"string\")return pl({key:u,value:a});{let h=[];for(let A in a)h.push(...pl({key:`${u}.${A}`,value:a[A]}));return h}}};function la(u){let a=u.value,h=u.key,A=u.styleSpec,x=u.style,E=u.validateSpec;if(!a.type)return[new ve(h,a,'\"type\" is required')];let P=Pn(a.type),D;switch(P){case\"vector\":case\"raster\":return D=fi({key:h,value:a,valueSpec:A[`source_${P.replace(\"-\",\"_\")}`],style:u.style,styleSpec:A,objectElementValidators:ch,validateSpec:E}),D;case\"raster-dem\":return D=function(F){var V;let q=(V=F.sourceName)!==null&&V!==void 0?V:\"\",X=F.value,rt=F.styleSpec,at=rt.source_raster_dem,ct=F.style,mt=[],bt=qr(X);if(X===void 0)return mt;if(bt!==\"object\")return mt.push(new ve(\"source_raster_dem\",X,`object expected, ${bt} found`)),mt;let Et=Pn(X.encoding)===\"custom\",Vt=[\"redFactor\",\"greenFactor\",\"blueFactor\",\"baseShift\"],Rt=F.value.encoding?`\"${F.value.encoding}\"`:\"Default\";for(let jt in X)!Et&&Vt.includes(jt)?mt.push(new ve(jt,X[jt],`In \"${q}\": \"${jt}\" is only valid when \"encoding\" is set to \"custom\". ${Rt} encoding found`)):at[jt]?mt=mt.concat(F.validateSpec({key:jt,value:X[jt],valueSpec:at[jt],validateSpec:F.validateSpec,style:ct,styleSpec:rt})):mt.push(new ve(jt,X[jt],`unknown property \"${jt}\"`));return mt}({sourceName:h,value:a,style:u.style,styleSpec:A,validateSpec:E}),D;case\"geojson\":if(D=fi({key:h,value:a,valueSpec:A.source_geojson,style:x,styleSpec:A,validateSpec:E,objectElementValidators:ch}),a.cluster)for(let F in a.clusterProperties){let[V,q]=a.clusterProperties[F],X=typeof V==\"string\"?[V,[\"accumulated\"],[\"get\",F]]:V;D.push(...ah({key:`${h}.${F}.map`,value:q,validateSpec:E,expressionContext:\"cluster-map\"})),D.push(...ah({key:`${h}.${F}.reduce`,value:X,validateSpec:E,expressionContext:\"cluster-reduce\"}))}return D;case\"video\":return fi({key:h,value:a,valueSpec:A.source_video,style:x,validateSpec:E,styleSpec:A});case\"image\":return fi({key:h,value:a,valueSpec:A.source_image,style:x,validateSpec:E,styleSpec:A});case\"canvas\":return[new ve(h,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return Ld({key:`${h}.type`,value:a.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:x,validateSpec:E,styleSpec:A})}}function kd(u){let a=u.value,h=u.styleSpec,A=h.light,x=u.style,E=[],P=qr(a);if(a===void 0)return E;if(P!==\"object\")return E=E.concat([new ve(\"light\",a,`object expected, ${P} found`)]),E;for(let D in a){let F=D.match(/^(.*)-transition$/);E=E.concat(F&&A[F[1]]&&A[F[1]].transition?u.validateSpec({key:D,value:a[D],valueSpec:h.transition,validateSpec:u.validateSpec,style:x,styleSpec:h}):A[D]?u.validateSpec({key:D,value:a[D],valueSpec:A[D],validateSpec:u.validateSpec,style:x,styleSpec:h}):[new ve(D,a[D],`unknown property \"${D}\"`)])}return E}function u_(u){let a=u.value,h=u.styleSpec,A=h.terrain,x=u.style,E=[],P=qr(a);if(a===void 0)return E;if(P!==\"object\")return E=E.concat([new ve(\"terrain\",a,`object expected, ${P} found`)]),E;for(let D in a)E=E.concat(A[D]?u.validateSpec({key:D,value:a[D],valueSpec:A[D],validateSpec:u.validateSpec,style:x,styleSpec:h}):[new ve(D,a[D],`unknown property \"${D}\"`)]);return E}function Ns(u){let a=[],h=u.value,A=u.key;if(Array.isArray(h)){let x=[],E=[];for(let P in h)h[P].id&&x.includes(h[P].id)&&a.push(new ve(A,h,`all the sprites' ids must be unique, but ${h[P].id} is duplicated`)),x.push(h[P].id),h[P].url&&E.includes(h[P].url)&&a.push(new ve(A,h,`all the sprites' URLs must be unique, but ${h[P].url} is duplicated`)),E.push(h[P].url),a=a.concat(fi({key:`${A}[${P}]`,value:h[P],valueSpec:{id:{type:\"string\",required:!0},url:{type:\"string\",required:!0}},validateSpec:u.validateSpec}));return a}return pl({key:A,value:h})}let pu={\"*\":()=>[],array:du,boolean:function(u){let a=u.value,h=u.key,A=qr(a);return A!==\"boolean\"?[new ve(h,a,`boolean expected, ${A} found`)]:[]},number:yf,color:function(u){let a=u.key,h=u.value,A=qr(h);return A!==\"string\"?[new ve(a,h,`color expected, ${A} found`)]:ai.parse(String(h))?[]:[new ve(a,h,`color expected, \"${h}\" found`)]},constants:r0,enum:Ld,filter:lh,function:Kp,layer:i0,object:fi,source:la,light:kd,terrain:u_,string:pl,formatted:function(u){return pl(u).length===0?[]:ah(u)},resolvedImage:function(u){return pl(u).length===0?[]:ah(u)},padding:function(u){let a=u.key,h=u.value;if(qr(h)===\"array\"){if(h.length<1||h.length>4)return[new ve(a,h,`padding requires 1 to 4 values; ${h.length} values found`)];let A={type:\"number\"},x=[];for(let E=0;E[]}})),u.constants&&(h=h.concat(r0({key:\"constants\",value:u.constants,style:u,styleSpec:a,validateSpec:In}))),Rd(h)}function Fa(u){return function(a){return u({...a,validateSpec:In})}}function Rd(u){return[].concat(u).sort((a,h)=>a.line-h.line)}function Al(u){return function(...a){return Rd(u.apply(this,a))}}ca.source=Al(Fa(la)),ca.sprite=Al(Fa(Ns)),ca.glyphs=Al(Fa(eA)),ca.light=Al(Fa(kd)),ca.terrain=Al(Fa(u_)),ca.layer=Al(Fa(i0)),ca.filter=Al(Fa(lh)),ca.paintProperty=Al(Fa(l_)),ca.layoutProperty=Al(Fa(c_));let za=ca,uh=za.light,rA=za.paintProperty,n0=za.layoutProperty;function hh(u,a){let h=!1;if(a&&a.length)for(let A of a)u.fire(new so(new Error(A.message))),h=!0;return h}class Na{constructor(a,h,A){let x=this.cells=[];if(a instanceof ArrayBuffer){this.arrayBuffer=a;let P=new Int32Array(this.arrayBuffer);a=P[0],this.d=(h=P[1])+2*(A=P[2]);for(let F=0;F=X[ct+0]&&x>=X[ct+1])?(D[at]=!0,P.push(q[at])):D[at]=!1}}}}_forEachCell(a,h,A,x,E,P,D,F){let V=this._convertToCellCoord(a),q=this._convertToCellCoord(h),X=this._convertToCellCoord(A),rt=this._convertToCellCoord(x);for(let at=V;at<=X;at++)for(let ct=q;ct<=rt;ct++){let mt=this.d*ct+at;if((!F||F(this._convertFromCellCoord(at),this._convertFromCellCoord(ct),this._convertFromCellCoord(at+1),this._convertFromCellCoord(ct+1)))&&E.call(this,a,h,A,x,mt,P,D,F))return}}_convertFromCellCoord(a){return(a-this.padding)/this.scale}_convertToCellCoord(a){return Math.max(0,Math.min(this.d-1,Math.floor(a*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let a=this.cells,h=3+this.cells.length+1+1,A=0;for(let P=0;P=0)continue;let P=u[E];x[E]=ao[A].shallow.indexOf(E)>=0?P:Gl(P,a)}u instanceof Error&&(x.message=u.message)}if(x.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return A!==\"Object\"&&(x.$name=A),x}throw new Error(\"can't serialize object of type \"+typeof u)}function vf(u){if(u==null||typeof u==\"boolean\"||typeof u==\"number\"||typeof u==\"string\"||u instanceof Boolean||u instanceof Number||u instanceof String||u instanceof Date||u instanceof RegExp||u instanceof Blob||Dd(u)||Ic(u)||ArrayBuffer.isView(u)||u instanceof ImageData)return u;if(Array.isArray(u))return u.map(vf);if(typeof u==\"object\"){let a=u.$name||\"Object\";if(!ao[a])throw new Error(`can't deserialize unregistered class ${a}`);let{klass:h}=ao[a];if(!h)throw new Error(`can't deserialize unregistered class ${a}`);if(h.deserialize)return h.deserialize(u);let A=Object.create(h.prototype);for(let x of Object.keys(u)){if(x===\"$name\")continue;let E=u[x];A[x]=ao[a].shallow.indexOf(x)>=0?E:vf(E)}return A}throw new Error(\"can't deserialize object of type \"+typeof u)}class h_{constructor(){this.first=!0}update(a,h){let A=Math.floor(a);return this.first?(this.first=!1,this.lastIntegerZoom=A,this.lastIntegerZoomTime=0,this.lastZoom=a,this.lastFloorZoom=A,!0):(this.lastFloorZoom>A?(this.lastIntegerZoom=A+1,this.lastIntegerZoomTime=h):this.lastFloorZoomu>=128&&u<=255,Arabic:u=>u>=1536&&u<=1791,\"Arabic Supplement\":u=>u>=1872&&u<=1919,\"Arabic Extended-A\":u=>u>=2208&&u<=2303,\"Hangul Jamo\":u=>u>=4352&&u<=4607,\"Unified Canadian Aboriginal Syllabics\":u=>u>=5120&&u<=5759,Khmer:u=>u>=6016&&u<=6143,\"Unified Canadian Aboriginal Syllabics Extended\":u=>u>=6320&&u<=6399,\"General Punctuation\":u=>u>=8192&&u<=8303,\"Letterlike Symbols\":u=>u>=8448&&u<=8527,\"Number Forms\":u=>u>=8528&&u<=8591,\"Miscellaneous Technical\":u=>u>=8960&&u<=9215,\"Control Pictures\":u=>u>=9216&&u<=9279,\"Optical Character Recognition\":u=>u>=9280&&u<=9311,\"Enclosed Alphanumerics\":u=>u>=9312&&u<=9471,\"Geometric Shapes\":u=>u>=9632&&u<=9727,\"Miscellaneous Symbols\":u=>u>=9728&&u<=9983,\"Miscellaneous Symbols and Arrows\":u=>u>=11008&&u<=11263,\"CJK Radicals Supplement\":u=>u>=11904&&u<=12031,\"Kangxi Radicals\":u=>u>=12032&&u<=12255,\"Ideographic Description Characters\":u=>u>=12272&&u<=12287,\"CJK Symbols and Punctuation\":u=>u>=12288&&u<=12351,Hiragana:u=>u>=12352&&u<=12447,Katakana:u=>u>=12448&&u<=12543,Bopomofo:u=>u>=12544&&u<=12591,\"Hangul Compatibility Jamo\":u=>u>=12592&&u<=12687,Kanbun:u=>u>=12688&&u<=12703,\"Bopomofo Extended\":u=>u>=12704&&u<=12735,\"CJK Strokes\":u=>u>=12736&&u<=12783,\"Katakana Phonetic Extensions\":u=>u>=12784&&u<=12799,\"Enclosed CJK Letters and Months\":u=>u>=12800&&u<=13055,\"CJK Compatibility\":u=>u>=13056&&u<=13311,\"CJK Unified Ideographs Extension A\":u=>u>=13312&&u<=19903,\"Yijing Hexagram Symbols\":u=>u>=19904&&u<=19967,\"CJK Unified Ideographs\":u=>u>=19968&&u<=40959,\"Yi Syllables\":u=>u>=40960&&u<=42127,\"Yi Radicals\":u=>u>=42128&&u<=42191,\"Hangul Jamo Extended-A\":u=>u>=43360&&u<=43391,\"Hangul Syllables\":u=>u>=44032&&u<=55215,\"Hangul Jamo Extended-B\":u=>u>=55216&&u<=55295,\"Private Use Area\":u=>u>=57344&&u<=63743,\"CJK Compatibility Ideographs\":u=>u>=63744&&u<=64255,\"Arabic Presentation Forms-A\":u=>u>=64336&&u<=65023,\"Vertical Forms\":u=>u>=65040&&u<=65055,\"CJK Compatibility Forms\":u=>u>=65072&&u<=65103,\"Small Form Variants\":u=>u>=65104&&u<=65135,\"Arabic Presentation Forms-B\":u=>u>=65136&&u<=65279,\"Halfwidth and Fullwidth Forms\":u=>u>=65280&&u<=65519};function s0(u){for(let a of u)if(fh(a.charCodeAt(0)))return!0;return!1}function o0(u){for(let a of u)if(!kx(a.charCodeAt(0)))return!1;return!0}function kx(u){return!(Re.Arabic(u)||Re[\"Arabic Supplement\"](u)||Re[\"Arabic Extended-A\"](u)||Re[\"Arabic Presentation Forms-A\"](u)||Re[\"Arabic Presentation Forms-B\"](u))}function fh(u){return!(u!==746&&u!==747&&(u<4352||!(Re[\"Bopomofo Extended\"](u)||Re.Bopomofo(u)||Re[\"CJK Compatibility Forms\"](u)&&!(u>=65097&&u<=65103)||Re[\"CJK Compatibility Ideographs\"](u)||Re[\"CJK Compatibility\"](u)||Re[\"CJK Radicals Supplement\"](u)||Re[\"CJK Strokes\"](u)||!(!Re[\"CJK Symbols and Punctuation\"](u)||u>=12296&&u<=12305||u>=12308&&u<=12319||u===12336)||Re[\"CJK Unified Ideographs Extension A\"](u)||Re[\"CJK Unified Ideographs\"](u)||Re[\"Enclosed CJK Letters and Months\"](u)||Re[\"Hangul Compatibility Jamo\"](u)||Re[\"Hangul Jamo Extended-A\"](u)||Re[\"Hangul Jamo Extended-B\"](u)||Re[\"Hangul Jamo\"](u)||Re[\"Hangul Syllables\"](u)||Re.Hiragana(u)||Re[\"Ideographic Description Characters\"](u)||Re.Kanbun(u)||Re[\"Kangxi Radicals\"](u)||Re[\"Katakana Phonetic Extensions\"](u)||Re.Katakana(u)&&u!==12540||!(!Re[\"Halfwidth and Fullwidth Forms\"](u)||u===65288||u===65289||u===65293||u>=65306&&u<=65310||u===65339||u===65341||u===65343||u>=65371&&u<=65503||u===65507||u>=65512&&u<=65519)||!(!Re[\"Small Form Variants\"](u)||u>=65112&&u<=65118||u>=65123&&u<=65126)||Re[\"Unified Canadian Aboriginal Syllabics\"](u)||Re[\"Unified Canadian Aboriginal Syllabics Extended\"](u)||Re[\"Vertical Forms\"](u)||Re[\"Yijing Hexagram Symbols\"](u)||Re[\"Yi Syllables\"](u)||Re[\"Yi Radicals\"](u))))}function f_(u){return!(fh(u)||function(a){return!!(Re[\"Latin-1 Supplement\"](a)&&(a===167||a===169||a===174||a===177||a===188||a===189||a===190||a===215||a===247)||Re[\"General Punctuation\"](a)&&(a===8214||a===8224||a===8225||a===8240||a===8241||a===8251||a===8252||a===8258||a===8263||a===8264||a===8265||a===8273)||Re[\"Letterlike Symbols\"](a)||Re[\"Number Forms\"](a)||Re[\"Miscellaneous Technical\"](a)&&(a>=8960&&a<=8967||a>=8972&&a<=8991||a>=8996&&a<=9e3||a===9003||a>=9085&&a<=9114||a>=9150&&a<=9165||a===9167||a>=9169&&a<=9179||a>=9186&&a<=9215)||Re[\"Control Pictures\"](a)&&a!==9251||Re[\"Optical Character Recognition\"](a)||Re[\"Enclosed Alphanumerics\"](a)||Re[\"Geometric Shapes\"](a)||Re[\"Miscellaneous Symbols\"](a)&&!(a>=9754&&a<=9759)||Re[\"Miscellaneous Symbols and Arrows\"](a)&&(a>=11026&&a<=11055||a>=11088&&a<=11097||a>=11192&&a<=11243)||Re[\"CJK Symbols and Punctuation\"](a)||Re.Katakana(a)||Re[\"Private Use Area\"](a)||Re[\"CJK Compatibility Forms\"](a)||Re[\"Small Form Variants\"](a)||Re[\"Halfwidth and Fullwidth Forms\"](a)||a===8734||a===8756||a===8757||a>=9984&&a<=10087||a>=10102&&a<=10131||a===65532||a===65533)}(u))}function a0(u){return u>=1424&&u<=2303||Re[\"Arabic Presentation Forms-A\"](u)||Re[\"Arabic Presentation Forms-B\"](u)}function l0(u,a){return!(!a&&a0(u)||u>=2304&&u<=3583||u>=3840&&u<=4255||Re.Khmer(u))}function xf(u){for(let a of u)if(a0(a.charCodeAt(0)))return!0;return!1}let c0=\"deferred\",iA=\"loading\",nA=\"loaded\",dh=null,cs=\"unavailable\",Au=null,Dc=function(u){u&&typeof u==\"string\"&&u.indexOf(\"NetworkError\")>-1&&(cs=\"error\"),dh&&dh(u)};function u0(){Od.fire(new os(\"pluginStateChange\",{pluginStatus:cs,pluginURL:Au}))}let Od=new Fl,h0=function(){return cs},d_=function(){if(cs!==c0||!Au)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");cs=iA,u0(),Au&&cl({url:Au},u=>{u?Dc(u):(cs=nA,u0())})},ua={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>cs===nA||ua.applyArabicShaping!=null,isLoading:()=>cs===iA,setState(u){if(!zi())throw new Error(\"Cannot set the state of the rtl-text-plugin when not in the web-worker context\");cs=u.pluginStatus,Au=u.pluginURL},isParsed(){if(!zi())throw new Error(\"rtl-text-plugin is only parsed on the worker-threads\");return ua.applyArabicShaping!=null&&ua.processBidirectionalText!=null&&ua.processStyledBidirectionalText!=null},getPluginURL(){if(!zi())throw new Error(\"rtl-text-plugin url can only be queried from the worker threads\");return Au}};class ln{constructor(a,h){this.zoom=a,h?(this.now=h.now,this.fadeDuration=h.fadeDuration,this.zoomHistory=h.zoomHistory,this.transition=h.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new h_,this.transition={})}isSupportedScript(a){return function(h,A){for(let x of h)if(!l0(x.charCodeAt(0),A))return!1;return!0}(a,ua.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let a=this.zoom,h=a-Math.floor(a),A=this.crossFadingFactor();return a>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:h+(1-h)*A}:{fromScale:.5,toScale:1,t:1-(1-A)*h}}}class sA{constructor(a,h){this.property=a,this.value=h,this.expression=function(A,x){if(Xi(A))return new Ed(A,x);if(Yp(A)){let E=t0(A,x);if(E.result===\"error\")throw new Error(E.value.map(P=>`${P.key}: ${P.message}`).join(\", \"));return E.value}{let E=A;return x.type===\"color\"&&typeof A==\"string\"?E=ai.parse(A):x.type!==\"padding\"||typeof A!=\"number\"&&!Array.isArray(A)?x.type===\"variableAnchorOffsetCollection\"&&Array.isArray(A)&&(E=Wo.parse(A)):E=kn.parse(A),{kind:\"constant\",evaluate:()=>E}}}(h===void 0?a.specification.default:h,a.specification)}isDataDriven(){return this.expression.kind===\"source\"||this.expression.kind===\"composite\"}possiblyEvaluate(a,h,A){return this.property.possiblyEvaluate(this,a,h,A)}}class f0{constructor(a){this.property=a,this.value=new sA(a,void 0)}transitioned(a,h){return new p_(this.property,this.value,h,kt({},a.transition,this.transition),a.now)}untransitioned(){return new p_(this.property,this.value,null,{},0)}}class ph{constructor(a){this._properties=a,this._values=Object.create(a.defaultTransitionablePropertyValues)}getValue(a){return ue(this._values[a].value.value)}setValue(a,h){Object.prototype.hasOwnProperty.call(this._values,a)||(this._values[a]=new f0(this._values[a].property)),this._values[a].value=new sA(this._values[a].property,h===null?void 0:ue(h))}getTransition(a){return ue(this._values[a].transition)}setTransition(a,h){Object.prototype.hasOwnProperty.call(this._values,a)||(this._values[a]=new f0(this._values[a].property)),this._values[a].transition=ue(h)||void 0}serialize(){let a={};for(let h of Object.keys(this._values)){let A=this.getValue(h);A!==void 0&&(a[h]=A);let x=this.getTransition(h);x!==void 0&&(a[`${h}-transition`]=x)}return a}transitioned(a,h){let A=new A_(this._properties);for(let x of Object.keys(this._values))A._values[x]=this._values[x].transitioned(a,h._values[x]);return A}untransitioned(){let a=new A_(this._properties);for(let h of Object.keys(this._values))a._values[h]=this._values[h].untransitioned();return a}}class p_{constructor(a,h,A,x,E){this.property=a,this.value=h,this.begin=E+x.delay||0,this.end=this.begin+x.duration||0,a.specification.transition&&(x.delay||x.duration)&&(this.prior=A)}possiblyEvaluate(a,h,A){let x=a.now||0,E=this.value.possiblyEvaluate(a,h,A),P=this.prior;if(P){if(x>this.end)return this.prior=null,E;if(this.value.isDataDriven())return this.prior=null,E;if(x=1)return 1;let V=F*F,q=V*F;return 4*(F<.5?q:3*(F-V)+q-.75)}(D))}}return E}}class A_{constructor(a){this._properties=a,this._values=Object.create(a.defaultTransitioningPropertyValues)}possiblyEvaluate(a,h,A){let x=new oA(this._properties);for(let E of Object.keys(this._values))x._values[E]=this._values[E].possiblyEvaluate(a,h,A);return x}hasTransition(){for(let a of Object.keys(this._values))if(this._values[a].prior)return!0;return!1}}class Rx{constructor(a){this._properties=a,this._values=Object.create(a.defaultPropertyValues)}hasValue(a){return this._values[a].value!==void 0}getValue(a){return ue(this._values[a].value)}setValue(a,h){this._values[a]=new sA(this._values[a].property,h===null?void 0:ue(h))}serialize(){let a={};for(let h of Object.keys(this._values)){let A=this.getValue(h);A!==void 0&&(a[h]=A)}return a}possiblyEvaluate(a,h,A){let x=new oA(this._properties);for(let E of Object.keys(this._values))x._values[E]=this._values[E].possiblyEvaluate(a,h,A);return x}}class To{constructor(a,h,A){this.property=a,this.value=h,this.parameters=A}isConstant(){return this.value.kind===\"constant\"}constantOr(a){return this.value.kind===\"constant\"?this.value.value:a}evaluate(a,h,A,x){return this.property.evaluate(this.value,this.parameters,a,h,A,x)}}class oA{constructor(a){this._properties=a,this._values=Object.create(a.defaultPossiblyEvaluatedValues)}get(a){return this._values[a]}}class rr{constructor(a){this.specification=a}possiblyEvaluate(a,h){if(a.isDataDriven())throw new Error(\"Value should not be data driven\");return a.expression.evaluate(h)}interpolate(a,h,A){let x=Da[this.specification.type];return x?x(a,h,A):a}}class fr{constructor(a,h){this.specification=a,this.overrides=h}possiblyEvaluate(a,h,A,x){return new To(this,a.expression.kind===\"constant\"||a.expression.kind===\"camera\"?{kind:\"constant\",value:a.expression.evaluate(h,null,{},A,x)}:a.expression,h)}interpolate(a,h,A){if(a.value.kind!==\"constant\"||h.value.kind!==\"constant\")return a;if(a.value.value===void 0||h.value.value===void 0)return new To(this,{kind:\"constant\",value:void 0},a.parameters);let x=Da[this.specification.type];if(x){let E=x(a.value.value,h.value.value,A);return new To(this,{kind:\"constant\",value:E},a.parameters)}return a}evaluate(a,h,A,x,E,P){return a.kind===\"constant\"?a.value:a.evaluate(h,A,x,E,P)}}class bf extends fr{possiblyEvaluate(a,h,A,x){if(a.value===void 0)return new To(this,{kind:\"constant\",value:void 0},h);if(a.expression.kind===\"constant\"){let E=a.expression.evaluate(h,null,{},A,x),P=a.property.specification.type===\"resolvedImage\"&&typeof E!=\"string\"?E.name:E,D=this._calculate(P,P,P,h);return new To(this,{kind:\"constant\",value:D},h)}if(a.expression.kind===\"camera\"){let E=this._calculate(a.expression.evaluate({zoom:h.zoom-1}),a.expression.evaluate({zoom:h.zoom}),a.expression.evaluate({zoom:h.zoom+1}),h);return new To(this,{kind:\"constant\",value:E},h)}return new To(this,a.expression,h)}evaluate(a,h,A,x,E,P){if(a.kind===\"source\"){let D=a.evaluate(h,A,x,E,P);return this._calculate(D,D,D,h)}return a.kind===\"composite\"?this._calculate(a.evaluate({zoom:Math.floor(h.zoom)-1},A,x),a.evaluate({zoom:Math.floor(h.zoom)},A,x),a.evaluate({zoom:Math.floor(h.zoom)+1},A,x),h):a.value}_calculate(a,h,A,x){return x.zoom>x.zoomHistory.lastIntegerZoom?{from:a,to:h}:{from:A,to:h}}interpolate(a){return a}}class aA{constructor(a){this.specification=a}possiblyEvaluate(a,h,A,x){if(a.value!==void 0){if(a.expression.kind===\"constant\"){let E=a.expression.evaluate(h,null,{},A,x);return this._calculate(E,E,E,h)}return this._calculate(a.expression.evaluate(new ln(Math.floor(h.zoom-1),h)),a.expression.evaluate(new ln(Math.floor(h.zoom),h)),a.expression.evaluate(new ln(Math.floor(h.zoom+1),h)),h)}}_calculate(a,h,A,x){return x.zoom>x.zoomHistory.lastIntegerZoom?{from:a,to:h}:{from:A,to:h}}interpolate(a){return a}}class Bd{constructor(a){this.specification=a}possiblyEvaluate(a,h,A,x){return!!a.expression.evaluate(h,null,{},A,x)}interpolate(){return!1}}class Gn{constructor(a){this.properties=a,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let h in a){let A=a[h];A.specification.overridable&&this.overridableProperties.push(h);let x=this.defaultPropertyValues[h]=new sA(A,void 0),E=this.defaultTransitionablePropertyValues[h]=new f0(A);this.defaultTransitioningPropertyValues[h]=E.untransitioned(),this.defaultPossiblyEvaluatedValues[h]=x.possiblyEvaluate({})}}}Ue(\"DataDrivenProperty\",fr),Ue(\"DataConstantProperty\",rr),Ue(\"CrossFadedDataDrivenProperty\",bf),Ue(\"CrossFadedProperty\",aA),Ue(\"ColorRampProperty\",Bd);let lo=\"-transition\";class Ui extends Fl{constructor(a,h){if(super(),this.id=a.id,this.type=a.type,this._featureFilter={filter:()=>!0,needGeometry:!1},a.type!==\"custom\"&&(this.metadata=a.metadata,this.minzoom=a.minzoom,this.maxzoom=a.maxzoom,a.type!==\"background\"&&(this.source=a.source,this.sourceLayer=a[\"source-layer\"],this.filter=a.filter),h.layout&&(this._unevaluatedLayout=new Rx(h.layout)),h.paint)){this._transitionablePaint=new ph(h.paint);for(let A in a.paint)this.setPaintProperty(A,a.paint[A],{validate:!1});for(let A in a.layout)this.setLayoutProperty(A,a.layout[A],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new oA(h.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(a){return a===\"visibility\"?this.visibility:this._unevaluatedLayout.getValue(a)}setLayoutProperty(a,h,A={}){h!=null&&this._validate(n0,`layers.${this.id}.layout.${a}`,a,h,A)||(a!==\"visibility\"?this._unevaluatedLayout.setValue(a,h):this.visibility=h)}getPaintProperty(a){return a.endsWith(lo)?this._transitionablePaint.getTransition(a.slice(0,-11)):this._transitionablePaint.getValue(a)}setPaintProperty(a,h,A={}){if(h!=null&&this._validate(rA,`layers.${this.id}.paint.${a}`,a,h,A))return!1;if(a.endsWith(lo))return this._transitionablePaint.setTransition(a.slice(0,-11),h||void 0),!1;{let x=this._transitionablePaint._values[a],E=x.property.specification[\"property-type\"]===\"cross-faded-data-driven\",P=x.value.isDataDriven(),D=x.value;this._transitionablePaint.setValue(a,h),this._handleSpecialPaintPropertyUpdate(a);let F=this._transitionablePaint._values[a].value;return F.isDataDriven()||P||E||this._handleOverridablePaintPropertyUpdate(a,D,F)}}_handleSpecialPaintPropertyUpdate(a){}_handleOverridablePaintPropertyUpdate(a,h,A){return!1}isHidden(a){return!!(this.minzoom&&a=this.maxzoom)||this.visibility===\"none\"}updateTransitions(a){this._transitioningPaint=this._transitionablePaint.transitioned(a,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(a,h){a.getCrossfadeParameters&&(this._crossfadeParameters=a.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(a,void 0,h)),this.paint=this._transitioningPaint.possiblyEvaluate(a,void 0,h)}serialize(){let a={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(a.layout=a.layout||{},a.layout.visibility=this.visibility),ce(a,(h,A)=>!(h===void 0||A===\"layout\"&&!Object.keys(h).length||A===\"paint\"&&!Object.keys(h).length))}_validate(a,h,A,x,E={}){return(!E||E.validate!==!1)&&hh(this,a.call(za,{key:h,layerType:this.type,objectKey:A,value:x,styleSpec:te,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let a in this.paint._values){let h=this.paint.get(a);if(h instanceof To&&gf(h.property.specification)&&(h.value.kind===\"source\"||h.value.kind===\"composite\")&&h.value.isStateDependent)return!0}return!1}}let m_={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ah{constructor(a,h){this._structArray=a,this._pos1=h*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Cn{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(a,h){return a._trim(),h&&(a.isTransferred=!0,h.push(a.arrayBuffer)),{length:a.length,arrayBuffer:a.arrayBuffer}}static deserialize(a){let h=Object.create(this.prototype);return h.arrayBuffer=a.arrayBuffer,h.length=a.length,h.capacity=a.arrayBuffer.byteLength/h.bytesPerElement,h._refreshViews(),h}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(a){this.reserve(a),this.length=a}reserve(a){if(a>this.capacity){this.capacity=Math.max(a,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let h=this.uint8;this._refreshViews(),h&&this.uint8.set(h)}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function xn(u,a=1){let h=0,A=0;return{members:u.map(x=>{let E=m_[x.type].BYTES_PER_ELEMENT,P=h=wf(h,Math.max(a,E)),D=x.components||1;return A=Math.max(A,E),h+=E*D,{name:x.name,type:x.type,components:D,offset:P}}),size:wf(h,Math.max(A,a)),alignment:a}}function wf(u,a){return Math.ceil(u/a)*a}class Es extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.int16[x+0]=h,this.int16[x+1]=A,a}}Es.prototype.bytesPerElement=4,Ue(\"StructArrayLayout2i4\",Es);class mh extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.int16[E+0]=h,this.int16[E+1]=A,this.int16[E+2]=x,a}}mh.prototype.bytesPerElement=6,Ue(\"StructArrayLayout3i6\",mh);class Ho extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=4*a;return this.int16[P+0]=h,this.int16[P+1]=A,this.int16[P+2]=x,this.int16[P+3]=E,a}}Ho.prototype.bytesPerElement=8,Ue(\"StructArrayLayout4i8\",Ho);class d0 extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=6*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.int16[F+2]=x,this.int16[F+3]=E,this.int16[F+4]=P,this.int16[F+5]=D,a}}d0.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2i4i12\",d0);class Fd extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=4*a,V=8*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.uint8[V+4]=x,this.uint8[V+5]=E,this.uint8[V+6]=P,this.uint8[V+7]=D,a}}Fd.prototype.bytesPerElement=8,Ue(\"StructArrayLayout2i4ub8\",Fd);class Sf extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.float32[x+0]=h,this.float32[x+1]=A,a}}Sf.prototype.bytesPerElement=8,Ue(\"StructArrayLayout2f8\",Sf);class qo extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q){let X=this.length;return this.resize(X+1),this.emplace(X,a,h,A,x,E,P,D,F,V,q)}emplace(a,h,A,x,E,P,D,F,V,q,X){let rt=10*a;return this.uint16[rt+0]=h,this.uint16[rt+1]=A,this.uint16[rt+2]=x,this.uint16[rt+3]=E,this.uint16[rt+4]=P,this.uint16[rt+5]=D,this.uint16[rt+6]=F,this.uint16[rt+7]=V,this.uint16[rt+8]=q,this.uint16[rt+9]=X,a}}qo.prototype.bytesPerElement=20,Ue(\"StructArrayLayout10ui20\",qo);class lA extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,rt){let at=this.length;return this.resize(at+1),this.emplace(at,a,h,A,x,E,P,D,F,V,q,X,rt)}emplace(a,h,A,x,E,P,D,F,V,q,X,rt,at){let ct=12*a;return this.int16[ct+0]=h,this.int16[ct+1]=A,this.int16[ct+2]=x,this.int16[ct+3]=E,this.uint16[ct+4]=P,this.uint16[ct+5]=D,this.uint16[ct+6]=F,this.uint16[ct+7]=V,this.int16[ct+8]=q,this.int16[ct+9]=X,this.int16[ct+10]=rt,this.int16[ct+11]=at,a}}lA.prototype.bytesPerElement=24,Ue(\"StructArrayLayout4i4ui4i24\",lA);class xi extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.float32[E+0]=h,this.float32[E+1]=A,this.float32[E+2]=x,a}}xi.prototype.bytesPerElement=12,Ue(\"StructArrayLayout3f12\",xi);class T extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.uint32[1*a+0]=h,a}}T.prototype.bytesPerElement=4,Ue(\"StructArrayLayout1ul4\",T);class l extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V){let q=this.length;return this.resize(q+1),this.emplace(q,a,h,A,x,E,P,D,F,V)}emplace(a,h,A,x,E,P,D,F,V,q){let X=10*a,rt=5*a;return this.int16[X+0]=h,this.int16[X+1]=A,this.int16[X+2]=x,this.int16[X+3]=E,this.int16[X+4]=P,this.int16[X+5]=D,this.uint32[rt+3]=F,this.uint16[X+8]=V,this.uint16[X+9]=q,a}}l.prototype.bytesPerElement=20,Ue(\"StructArrayLayout6i1ul2ui20\",l);class d extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P){let D=this.length;return this.resize(D+1),this.emplace(D,a,h,A,x,E,P)}emplace(a,h,A,x,E,P,D){let F=6*a;return this.int16[F+0]=h,this.int16[F+1]=A,this.int16[F+2]=x,this.int16[F+3]=E,this.int16[F+4]=P,this.int16[F+5]=D,a}}d.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2i2i2i12\",d);class v extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E){let P=this.length;return this.resize(P+1),this.emplace(P,a,h,A,x,E)}emplace(a,h,A,x,E,P){let D=4*a,F=8*a;return this.float32[D+0]=h,this.float32[D+1]=A,this.float32[D+2]=x,this.int16[F+6]=E,this.int16[F+7]=P,a}}v.prototype.bytesPerElement=16,Ue(\"StructArrayLayout2f1f2i16\",v);class b extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=12*a,D=3*a;return this.uint8[P+0]=h,this.uint8[P+1]=A,this.float32[D+1]=x,this.float32[D+2]=E,a}}b.prototype.bytesPerElement=12,Ue(\"StructArrayLayout2ub2f12\",b);class M extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.uint16[E+0]=h,this.uint16[E+1]=A,this.uint16[E+2]=x,a}}M.prototype.bytesPerElement=6,Ue(\"StructArrayLayout3ui6\",M);class O extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt,bt,Et){let Vt=this.length;return this.resize(Vt+1),this.emplace(Vt,a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt,bt,Et)}emplace(a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt,bt,Et,Vt){let Rt=24*a,jt=12*a,qt=48*a;return this.int16[Rt+0]=h,this.int16[Rt+1]=A,this.uint16[Rt+2]=x,this.uint16[Rt+3]=E,this.uint32[jt+2]=P,this.uint32[jt+3]=D,this.uint32[jt+4]=F,this.uint16[Rt+10]=V,this.uint16[Rt+11]=q,this.uint16[Rt+12]=X,this.float32[jt+7]=rt,this.float32[jt+8]=at,this.uint8[qt+36]=ct,this.uint8[qt+37]=mt,this.uint8[qt+38]=bt,this.uint32[jt+10]=Et,this.int16[Rt+22]=Vt,a}}O.prototype.bytesPerElement=48,Ue(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",O);class B extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt,bt,Et,Vt,Rt,jt,qt,le,Be,Je,Oe,ke,Te,He){let Pe=this.length;return this.resize(Pe+1),this.emplace(Pe,a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt,bt,Et,Vt,Rt,jt,qt,le,Be,Je,Oe,ke,Te,He)}emplace(a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt,bt,Et,Vt,Rt,jt,qt,le,Be,Je,Oe,ke,Te,He,Pe){let Ae=32*a,ur=16*a;return this.int16[Ae+0]=h,this.int16[Ae+1]=A,this.int16[Ae+2]=x,this.int16[Ae+3]=E,this.int16[Ae+4]=P,this.int16[Ae+5]=D,this.int16[Ae+6]=F,this.int16[Ae+7]=V,this.uint16[Ae+8]=q,this.uint16[Ae+9]=X,this.uint16[Ae+10]=rt,this.uint16[Ae+11]=at,this.uint16[Ae+12]=ct,this.uint16[Ae+13]=mt,this.uint16[Ae+14]=bt,this.uint16[Ae+15]=Et,this.uint16[Ae+16]=Vt,this.uint16[Ae+17]=Rt,this.uint16[Ae+18]=jt,this.uint16[Ae+19]=qt,this.uint16[Ae+20]=le,this.uint16[Ae+21]=Be,this.uint16[Ae+22]=Je,this.uint32[ur+12]=Oe,this.float32[ur+13]=ke,this.float32[ur+14]=Te,this.uint16[Ae+30]=He,this.uint16[Ae+31]=Pe,a}}B.prototype.bytesPerElement=64,Ue(\"StructArrayLayout8i15ui1ul2f2ui64\",B);class U extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.float32[1*a+0]=h,a}}U.prototype.bytesPerElement=4,Ue(\"StructArrayLayout1f4\",U);class W extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=3*a;return this.uint16[6*a+0]=h,this.float32[E+1]=A,this.float32[E+2]=x,a}}W.prototype.bytesPerElement=12,Ue(\"StructArrayLayout1ui2f12\",W);class Z extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h,A){let x=this.length;return this.resize(x+1),this.emplace(x,a,h,A)}emplace(a,h,A,x){let E=4*a;return this.uint32[2*a+0]=h,this.uint16[E+2]=A,this.uint16[E+3]=x,a}}Z.prototype.bytesPerElement=8,Ue(\"StructArrayLayout1ul2ui8\",Z);class $ extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a,h){let A=this.length;return this.resize(A+1),this.emplace(A,a,h)}emplace(a,h,A){let x=2*a;return this.uint16[x+0]=h,this.uint16[x+1]=A,a}}$.prototype.bytesPerElement=4,Ue(\"StructArrayLayout2ui4\",$);class st extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(a){let h=this.length;return this.resize(h+1),this.emplace(h,a)}emplace(a,h){return this.uint16[1*a+0]=h,a}}st.prototype.bytesPerElement=2,Ue(\"StructArrayLayout1ui2\",st);class At extends Cn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(a,h,A,x){let E=this.length;return this.resize(E+1),this.emplace(E,a,h,A,x)}emplace(a,h,A,x,E){let P=4*a;return this.float32[P+0]=h,this.float32[P+1]=A,this.float32[P+2]=x,this.float32[P+3]=E,a}}At.prototype.bytesPerElement=16,Ue(\"StructArrayLayout4f16\",At);class pt extends Ah{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new w(this.anchorPointX,this.anchorPointY)}}pt.prototype.size=20;class yt extends l{get(a){return new pt(this,a)}}Ue(\"CollisionBoxArray\",yt);class dt extends Ah{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(a){this._structArray.uint8[this._pos1+37]=a}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(a){this._structArray.uint8[this._pos1+38]=a}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(a){this._structArray.uint32[this._pos4+10]=a}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}dt.prototype.size=48;class Ft extends O{get(a){return new dt(this,a)}}Ue(\"PlacedSymbolArray\",Ft);class Wt extends Ah{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(a){this._structArray.uint32[this._pos4+12]=a}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Wt.prototype.size=64;class St extends B{get(a){return new Wt(this,a)}}Ue(\"SymbolInstanceArray\",St);class Bt extends U{getoffsetX(a){return this.float32[1*a+0]}}Ue(\"GlyphOffsetArray\",Bt);class Yt extends mh{getx(a){return this.int16[3*a+0]}gety(a){return this.int16[3*a+1]}gettileUnitDistanceFromAnchor(a){return this.int16[3*a+2]}}Ue(\"SymbolLineVertexArray\",Yt);class Qt extends Ah{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Qt.prototype.size=12;class oe extends W{get(a){return new Qt(this,a)}}Ue(\"TextAnchorOffsetArray\",oe);class pe extends Ah{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}pe.prototype.size=8;class he extends Z{get(a){return new pe(this,a)}}Ue(\"FeatureIndexArray\",he);class xe extends Es{}class We extends Es{}class Kr extends Es{}class Me extends d0{}class dr extends Fd{}class Xe extends Sf{}class Vi extends qo{}class Jr extends lA{}class Vr extends xi{}class ei extends T{}class Rn extends d{}class Ki extends b{}class Us extends M{}class us extends ${}let Dn=xn([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Zo}=Dn;class jr{constructor(a=[]){this.segments=a}prepareSegment(a,h,A,x){let E=this.segments[this.segments.length-1];return a>jr.MAX_VERTEX_ARRAY_LENGTH&&tr(`Max vertices per segment is ${jr.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${a}`),(!E||E.vertexLength+a>jr.MAX_VERTEX_ARRAY_LENGTH||E.sortKey!==x)&&(E={vertexOffset:h.length,primitiveOffset:A.length,vertexLength:0,primitiveLength:0},x!==void 0&&(E.sortKey=x),this.segments.push(E)),E}get(){return this.segments}destroy(){for(let a of this.segments)for(let h in a.vaos)a.vaos[h].destroy()}static simpleSegment(a,h,A,x){return new jr([{vertexOffset:a,primitiveOffset:h,vertexLength:A,primitiveLength:x,vaos:{},sortKey:0}])}}function Wl(u,a){return 256*(u=ut(Math.floor(u),0,255))+ut(Math.floor(a),0,255)}jr.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ue(\"SegmentVector\",jr);let Hl=xn([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]);var mu={exports:{}},gu={exports:{}};gu.exports=function(u,a){var h,A,x,E,P,D,F,V;for(A=u.length-(h=3&u.length),x=a,P=3432918353,D=461845907,V=0;V>>16)*P&65535)<<16)&4294967295)<<15|F>>>17))*D+(((F>>>16)*D&65535)<<16)&4294967295)<<13|x>>>19))+((5*(x>>>16)&65535)<<16)&4294967295))+((58964+(E>>>16)&65535)<<16);switch(F=0,h){case 3:F^=(255&u.charCodeAt(V+2))<<16;case 2:F^=(255&u.charCodeAt(V+1))<<8;case 1:x^=F=(65535&(F=(F=(65535&(F^=255&u.charCodeAt(V)))*P+(((F>>>16)*P&65535)<<16)&4294967295)<<15|F>>>17))*D+(((F>>>16)*D&65535)<<16)&4294967295}return x^=u.length,x=2246822507*(65535&(x^=x>>>16))+((2246822507*(x>>>16)&65535)<<16)&4294967295,x=3266489909*(65535&(x^=x>>>13))+((3266489909*(x>>>16)&65535)<<16)&4294967295,(x^=x>>>16)>>>0};var gh=gu.exports,Vs={exports:{}};Vs.exports=function(u,a){for(var h,A=u.length,x=a^A,E=0;A>=4;)h=1540483477*(65535&(h=255&u.charCodeAt(E)|(255&u.charCodeAt(++E))<<8|(255&u.charCodeAt(++E))<<16|(255&u.charCodeAt(++E))<<24))+((1540483477*(h>>>16)&65535)<<16),x=1540483477*(65535&x)+((1540483477*(x>>>16)&65535)<<16)^(h=1540483477*(65535&(h^=h>>>24))+((1540483477*(h>>>16)&65535)<<16)),A-=4,++E;switch(A){case 3:x^=(255&u.charCodeAt(E+2))<<16;case 2:x^=(255&u.charCodeAt(E+1))<<8;case 1:x=1540483477*(65535&(x^=255&u.charCodeAt(E)))+((1540483477*(x>>>16)&65535)<<16)}return x=1540483477*(65535&(x^=x>>>13))+((1540483477*(x>>>16)&65535)<<16),(x^=x>>>15)>>>0};var Ps=gh,Mo=Vs.exports;mu.exports=Ps,mu.exports.murmur3=Ps,mu.exports.murmur2=Mo;var _h=c(mu.exports);class On{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(a,h,A,x){this.ids.push(hs(a)),this.positions.push(h,A,x)}getPositions(a){if(!this.indexed)throw new Error(\"Trying to get index, but feature positions are not indexed\");let h=hs(a),A=0,x=this.ids.length-1;for(;A>1;this.ids[P]>=h?x=P:A=P+1}let E=[];for(;this.ids[A]===h;)E.push({index:this.positions[3*A],start:this.positions[3*A+1],end:this.positions[3*A+2]}),A++;return E}static serialize(a,h){let A=new Float64Array(a.ids),x=new Uint32Array(a.positions);return Yo(A,x,0,A.length-1),h&&h.push(A.buffer,x.buffer),{ids:A,positions:x}}static deserialize(a){let h=new On;return h.ids=a.ids,h.positions=a.positions,h.indexed=!0,h}}function hs(u){let a=+u;return!isNaN(a)&&a<=Number.MAX_SAFE_INTEGER?a:_h(String(u))}function Yo(u,a,h,A){for(;h>1],E=h-1,P=A+1;for(;;){do E++;while(u[E]x);if(E>=P)break;mn(u,E,P),mn(a,3*E,3*P),mn(a,3*E+1,3*P+1),mn(a,3*E+2,3*P+2)}P-h`u_${x}`),this.type=A}setUniform(a,h,A){a.set(A.constantOr(this.value))}getBinding(a,h,A){return this.type===\"color\"?new g_(a,h):new Gr(a,h)}}class Qo{constructor(a,h){this.uniformNames=h.map(A=>`u_${A}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(a,h){this.pixelRatioFrom=h.pixelRatio,this.pixelRatioTo=a.pixelRatio,this.patternFrom=h.tlbr,this.patternTo=a.tlbr}setUniform(a,h,A,x){let E=x===\"u_pattern_to\"?this.patternTo:x===\"u_pattern_from\"?this.patternFrom:x===\"u_pixel_ratio_to\"?this.pixelRatioTo:x===\"u_pixel_ratio_from\"?this.pixelRatioFrom:null;E&&a.set(E)}getBinding(a,h,A){return A.substr(0,9)===\"u_pattern\"?new Ua(a,h):new Gr(a,h)}}class me{constructor(a,h,A,x){this.expression=a,this.type=A,this.maxValue=0,this.paintVertexAttributes=h.map(E=>({name:`a_${E}`,type:\"Float32\",components:A===\"color\"?2:1,offset:0})),this.paintVertexArray=new x}populatePaintArray(a,h,A,x,E){let P=this.paintVertexArray.length,D=this.expression.evaluate(new ln(0),h,{},x,[],E);this.paintVertexArray.resize(a),this._setPaintValue(P,a,D)}updatePaintArray(a,h,A,x){let E=this.expression.evaluate({zoom:0},A,x);this._setPaintValue(a,h,E)}_setPaintValue(a,h,A){if(this.type===\"color\"){let x=cA(A);for(let E=a;E`u_${D}_t`),this.type=A,this.useIntegerZoom=x,this.zoom=E,this.maxValue=0,this.paintVertexAttributes=h.map(D=>({name:`a_${D}`,type:\"Float32\",components:A===\"color\"?4:2,offset:0})),this.paintVertexArray=new P}populatePaintArray(a,h,A,x,E){let P=this.expression.evaluate(new ln(this.zoom),h,{},x,[],E),D=this.expression.evaluate(new ln(this.zoom+1),h,{},x,[],E),F=this.paintVertexArray.length;this.paintVertexArray.resize(a),this._setPaintValue(F,a,P,D)}updatePaintArray(a,h,A,x){let E=this.expression.evaluate({zoom:this.zoom},A,x),P=this.expression.evaluate({zoom:this.zoom+1},A,x);this._setPaintValue(a,h,E,P)}_setPaintValue(a,h,A,x){if(this.type===\"color\"){let E=cA(A),P=cA(x);for(let D=a;D`#define HAS_UNIFORM_${x}`))}return a}getBinderAttributes(){let a=[];for(let h in this.binders){let A=this.binders[h];if(A instanceof me||A instanceof Le)for(let x=0;x!0){this.programConfigurations={};for(let x of a)this.programConfigurations[x.id]=new Tf(x,h,A);this.needsUpload=!1,this._featureMap=new On,this._bufferOffset=0}populatePaintArrays(a,h,A,x,E,P){for(let D in this.programConfigurations)this.programConfigurations[D].populatePaintArrays(a,h,x,E,P);h.id!==void 0&&this._featureMap.add(h.id,A,this._bufferOffset,a),this._bufferOffset=a,this.needsUpload=!0}updatePaintArrays(a,h,A,x){for(let E of A)this.needsUpload=this.programConfigurations[E.id].updatePaintArrays(a,this._featureMap,h,E,x)||this.needsUpload}get(a){return this.programConfigurations[a]}upload(a){if(this.needsUpload){for(let h in this.programConfigurations)this.programConfigurations[h].upload(a);this.needsUpload=!1}}destroy(){for(let a in this.programConfigurations)this.programConfigurations[a].destroy()}}function Oc(u,a){return{\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[u]||[u.replace(`${a}-`,\"\").replace(/-/g,\"_\")]}function Dx(u,a,h){let A={color:{source:Sf,composite:At},number:{source:U,composite:Sf}},x=function(E){return{\"line-pattern\":{source:Vi,composite:Vi},\"fill-pattern\":{source:Vi,composite:Vi},\"fill-extrusion-pattern\":{source:Vi,composite:Vi}}[E]}(u);return x&&x[h]||A[a][h]}Ue(\"ConstantBinder\",ql),Ue(\"CrossFadedConstantBinder\",Qo),Ue(\"SourceExpressionBinder\",me),Ue(\"CrossFadedCompositeBinder\",ml),Ue(\"CompositeExpressionBinder\",Le),Ue(\"ProgramConfiguration\",Tf,{omit:[\"_buffers\"]}),Ue(\"ProgramConfigurationSet\",Va);let Ji=8192,p=Math.pow(2,14)-1,m=-p-1;function y(u){let a=Ji/u.extent,h=u.loadGeometry();for(let A=0;AP.x+1||FP.y+1)&&tr(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\")}}return h}function S(u,a){return{type:u.type,id:u.id,properties:u.properties,geometry:a?y(u):[]}}function C(u,a,h,A,x){u.emplaceBack(2*a+(A+1)/2,2*h+(x+1)/2)}class k{constructor(a){this.zoom=a.zoom,this.overscaling=a.overscaling,this.layers=a.layers,this.layerIds=this.layers.map(h=>h.id),this.index=a.index,this.hasPattern=!1,this.layoutVertexArray=new We,this.indexArray=new Us,this.segments=new jr,this.programConfigurations=new Va(a.layers,a.zoom),this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){let x=this.layers[0],E=[],P=null,D=!1;x.type===\"circle\"&&(P=x.layout.get(\"circle-sort-key\"),D=!P.isConstant());for(let{feature:F,id:V,index:q,sourceLayerIndex:X}of a){let rt=this.layers[0]._featureFilter.needGeometry,at=S(F,rt);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),at,A))continue;let ct=D?P.evaluate(at,{},A):void 0,mt={id:V,properties:F.properties,type:F.type,sourceLayerIndex:X,index:q,geometry:rt?at.geometry:y(F),patterns:{},sortKey:ct};E.push(mt)}D&&E.sort((F,V)=>F.sortKey-V.sortKey);for(let F of E){let{geometry:V,index:q,sourceLayerIndex:X}=F,rt=a[q].feature;this.addFeature(F,V,q,A),h.featureIndex.insert(rt,V,q,X,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,Zo),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(a,h,A,x){for(let E of h)for(let P of E){let D=P.x,F=P.y;if(D<0||D>=Ji||F<0||F>=Ji)continue;let V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,a.sortKey),q=V.vertexLength;C(this.layoutVertexArray,D,F,-1,-1),C(this.layoutVertexArray,D,F,1,-1),C(this.layoutVertexArray,D,F,1,1),C(this.layoutVertexArray,D,F,-1,1),this.indexArray.emplaceBack(q,q+1,q+2),this.indexArray.emplaceBack(q,q+3,q+2),V.vertexLength+=4,V.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,a,A,{},x)}}function L(u,a){for(let h=0;h1){if(ot(u,a))return!0;for(let A=0;A1?h:h.sub(a)._mult(x)._add(a))}function ee(u,a){let h,A,x,E=!1;for(let P=0;Pa.y!=x.y>a.y&&a.x<(x.x-A.x)*(a.y-A.y)/(x.y-A.y)+A.x&&(E=!E)}return E}function ie(u,a){let h=!1;for(let A=0,x=u.length-1;Aa.y!=P.y>a.y&&a.x<(P.x-E.x)*(a.y-E.y)/(P.y-E.y)+E.x&&(h=!h)}return h}function Ce(u,a,h){let A=h[0],x=h[2];if(u.xx.x&&a.x>x.x||u.yx.y&&a.y>x.y)return!1;let E=er(u,a,h[0]);return E!==er(u,a,h[1])||E!==er(u,a,h[2])||E!==er(u,a,h[3])}function Ve(u,a,h){let A=a.paint.get(u).value;return A.kind===\"constant\"?A.value:h.programConfigurations.get(a.id).getMaxValue(u)}function Jt(u){return Math.sqrt(u[0]*u[0]+u[1]*u[1])}function _e(u,a,h,A,x){if(!a[0]&&!a[1])return u;let E=w.convert(a)._mult(x);h===\"viewport\"&&E._rotate(-A);let P=[];for(let D=0;Dgn(bt,mt))}(V,F),at=X?q*D:q;for(let ct of x)for(let mt of ct){let bt=X?mt:gn(mt,F),Et=at,Vt=Ei([],[mt.x,mt.y,0,1],F);if(this.paint.get(\"circle-pitch-scale\")===\"viewport\"&&this.paint.get(\"circle-pitch-alignment\")===\"map\"?Et*=Vt[3]/P.cameraToCenterDistance:this.paint.get(\"circle-pitch-scale\")===\"map\"&&this.paint.get(\"circle-pitch-alignment\")===\"viewport\"&&(Et*=P.cameraToCenterDistance/Vt[3]),z(rt,bt,Et))return!0}return!1}}function gn(u,a){let h=Ei([],[u.x,u.y,0,1],a);return new w(h[0]/h[3],h[1]/h[3])}class Or extends k{}let C6;Ue(\"HeatmapBucket\",Or,{omit:[\"layers\"]});var pX={get paint(){return C6=C6||new Gn({\"heatmap-radius\":new fr(te.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new fr(te.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new rr(te.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new Bd(te.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new rr(te.paint_heatmap[\"heatmap-opacity\"])})}};function KI(u,{width:a,height:h},A,x){if(x){if(x instanceof Uint8ClampedArray)x=new Uint8Array(x.buffer);else if(x.length!==a*h*A)throw new RangeError(`mismatched image size. expected: ${x.length} but got: ${a*h*A}`)}else x=new Uint8Array(a*h*A);return u.width=a,u.height=h,u.data=x,u}function L6(u,{width:a,height:h},A){if(a===u.width&&h===u.height)return;let x=KI({},{width:a,height:h},A);JI(u,x,{x:0,y:0},{x:0,y:0},{width:Math.min(u.width,a),height:Math.min(u.height,h)},A),u.width=a,u.height=h,u.data=x.data}function JI(u,a,h,A,x,E){if(x.width===0||x.height===0)return a;if(x.width>u.width||x.height>u.height||h.x>u.width-x.width||h.y>u.height-x.height)throw new RangeError(\"out of range source coordinates for image copy\");if(x.width>a.width||x.height>a.height||A.x>a.width-x.width||A.y>a.height-x.height)throw new RangeError(\"out of range destination coordinates for image copy\");let P=u.data,D=a.data;if(P===D)throw new Error(\"srcData equals dstData, so image is already copied\");for(let F=0;F{a[u.evaluationKey]=F;let V=u.expression.evaluate(a);x.data[P+D+0]=Math.floor(255*V.r/V.a),x.data[P+D+1]=Math.floor(255*V.g/V.a),x.data[P+D+2]=Math.floor(255*V.b/V.a),x.data[P+D+3]=Math.floor(255*V.a)};if(u.clips)for(let P=0,D=0;P80*h){A=E=u[0],x=P=u[1];for(var ct=h;ctE&&(E=D),F>P&&(P=F);V=(V=Math.max(E-A,P-x))!==0?32767/V:0}return Bx(rt,at,h,A,x,V,0),at}function D6(u,a,h,A,x){var E,P;if(x===iC(u,a,h,A)>0)for(E=a;E=a;E-=A)P=F6(E,u[E],u[E+1],P);return P&&jS(P,P.next)&&(zx(P),P=P.next),P}function p0(u,a){if(!u)return u;a||(a=u);var h,A=u;do if(h=!1,A.steiner||!jS(A,A.next)&&fs(A.prev,A,A.next)!==0)A=A.next;else{if(zx(A),(A=a=A.prev)===A.next)break;h=!0}while(h||A!==a);return a}function Bx(u,a,h,A,x,E,P){if(u){!P&&E&&function(q,X,rt,at){var ct=q;do ct.z===0&&(ct.z=eC(ct.x,ct.y,X,rt,at)),ct.prevZ=ct.prev,ct.nextZ=ct.next,ct=ct.next;while(ct!==q);ct.prevZ.nextZ=null,ct.prevZ=null,function(mt){var bt,Et,Vt,Rt,jt,qt,le,Be,Je=1;do{for(Et=mt,mt=null,jt=null,qt=0;Et;){for(qt++,Vt=Et,le=0,bt=0;bt0||Be>0&&Vt;)le!==0&&(Be===0||!Vt||Et.z<=Vt.z)?(Rt=Et,Et=Et.nextZ,le--):(Rt=Vt,Vt=Vt.nextZ,Be--),jt?jt.nextZ=Rt:mt=Rt,Rt.prevZ=jt,jt=Rt;Et=Vt}jt.nextZ=null,Je*=2}while(qt>1)}(ct)}(u,A,x,E);for(var D,F,V=u;u.prev!==u.next;)if(D=u.prev,F=u.next,E?xX(u,A,x,E):vX(u))a.push(D.i/h|0),a.push(u.i/h|0),a.push(F.i/h|0),zx(u),u=F.next,V=F.next;else if((u=F)===V){P?P===1?Bx(u=bX(p0(u),a,h),a,h,A,x,E,2):P===2&&wX(u,a,h,A,x,E):Bx(p0(u),a,h,A,x,E,1);break}}}function vX(u){var a=u.prev,h=u,A=u.next;if(fs(a,h,A)>=0)return!1;for(var x=a.x,E=h.x,P=A.x,D=a.y,F=h.y,V=A.y,q=xE?x>P?x:P:E>P?E:P,at=D>F?D>V?D:V:F>V?F:V,ct=A.next;ct!==a;){if(ct.x>=q&&ct.x<=rt&&ct.y>=X&&ct.y<=at&&__(x,D,E,F,P,V,ct.x,ct.y)&&fs(ct.prev,ct,ct.next)>=0)return!1;ct=ct.next}return!0}function xX(u,a,h,A){var x=u.prev,E=u,P=u.next;if(fs(x,E,P)>=0)return!1;for(var D=x.x,F=E.x,V=P.x,q=x.y,X=E.y,rt=P.y,at=DF?D>V?D:V:F>V?F:V,bt=q>X?q>rt?q:rt:X>rt?X:rt,Et=eC(at,ct,a,h,A),Vt=eC(mt,bt,a,h,A),Rt=u.prevZ,jt=u.nextZ;Rt&&Rt.z>=Et&&jt&&jt.z<=Vt;){if(Rt.x>=at&&Rt.x<=mt&&Rt.y>=ct&&Rt.y<=bt&&Rt!==x&&Rt!==P&&__(D,q,F,X,V,rt,Rt.x,Rt.y)&&fs(Rt.prev,Rt,Rt.next)>=0||(Rt=Rt.prevZ,jt.x>=at&&jt.x<=mt&&jt.y>=ct&&jt.y<=bt&&jt!==x&&jt!==P&&__(D,q,F,X,V,rt,jt.x,jt.y)&&fs(jt.prev,jt,jt.next)>=0))return!1;jt=jt.nextZ}for(;Rt&&Rt.z>=Et;){if(Rt.x>=at&&Rt.x<=mt&&Rt.y>=ct&&Rt.y<=bt&&Rt!==x&&Rt!==P&&__(D,q,F,X,V,rt,Rt.x,Rt.y)&&fs(Rt.prev,Rt,Rt.next)>=0)return!1;Rt=Rt.prevZ}for(;jt&&jt.z<=Vt;){if(jt.x>=at&&jt.x<=mt&&jt.y>=ct&&jt.y<=bt&&jt!==x&&jt!==P&&__(D,q,F,X,V,rt,jt.x,jt.y)&&fs(jt.prev,jt,jt.next)>=0)return!1;jt=jt.nextZ}return!0}function bX(u,a,h){var A=u;do{var x=A.prev,E=A.next.next;!jS(x,E)&&O6(x,A,A.next,E)&&Fx(x,E)&&Fx(E,x)&&(a.push(x.i/h|0),a.push(A.i/h|0),a.push(E.i/h|0),zx(A),zx(A.next),A=u=E),A=A.next}while(A!==u);return p0(A)}function wX(u,a,h,A,x,E){var P=u;do{for(var D=P.next.next;D!==P.prev;){if(P.i!==D.i&&PX(P,D)){var F=B6(P,D);return P=p0(P,P.next),F=p0(F,F.next),Bx(P,a,h,A,x,E,0),void Bx(F,a,h,A,x,E,0)}D=D.next}P=P.next}while(P!==u)}function SX(u,a){return u.x-a.x}function TX(u,a){var h=function(x,E){var P,D=E,F=x.x,V=x.y,q=-1/0;do{if(V<=D.y&&V>=D.next.y&&D.next.y!==D.y){var X=D.x+(V-D.y)*(D.next.x-D.x)/(D.next.y-D.y);if(X<=F&&X>q&&(q=X,P=D.x=D.x&&D.x>=ct&&F!==D.x&&__(VP.x||D.x===P.x&&MX(P,D)))&&(P=D,bt=rt)),D=D.next;while(D!==at);return P}(u,a);if(!h)return a;var A=B6(h,u);return p0(A,A.next),p0(h,h.next)}function MX(u,a){return fs(u.prev,u,a.prev)<0&&fs(a.next,u,u.next)<0}function eC(u,a,h,A,x){return(u=1431655765&((u=858993459&((u=252645135&((u=16711935&((u=(u-h)*x|0)|u<<8))|u<<4))|u<<2))|u<<1))|(a=1431655765&((a=858993459&((a=252645135&((a=16711935&((a=(a-A)*x|0)|a<<8))|a<<4))|a<<2))|a<<1))<<1}function EX(u){var a=u,h=u;do(a.x=(u-P)*(E-D)&&(u-P)*(A-D)>=(h-P)*(a-D)&&(h-P)*(E-D)>=(x-P)*(A-D)}function PX(u,a){return u.next.i!==a.i&&u.prev.i!==a.i&&!function(h,A){var x=h;do{if(x.i!==h.i&&x.next.i!==h.i&&x.i!==A.i&&x.next.i!==A.i&&O6(x,x.next,h,A))return!0;x=x.next}while(x!==h);return!1}(u,a)&&(Fx(u,a)&&Fx(a,u)&&function(h,A){var x=h,E=!1,P=(h.x+A.x)/2,D=(h.y+A.y)/2;do x.y>D!=x.next.y>D&&x.next.y!==x.y&&P<(x.next.x-x.x)*(D-x.y)/(x.next.y-x.y)+x.x&&(E=!E),x=x.next;while(x!==h);return E}(u,a)&&(fs(u.prev,u,a.prev)||fs(u,a.prev,a))||jS(u,a)&&fs(u.prev,u,u.next)>0&&fs(a.prev,a,a.next)>0)}function fs(u,a,h){return(a.y-u.y)*(h.x-a.x)-(a.x-u.x)*(h.y-a.y)}function jS(u,a){return u.x===a.x&&u.y===a.y}function O6(u,a,h,A){var x=WS(fs(u,a,h)),E=WS(fs(u,a,A)),P=WS(fs(h,A,u)),D=WS(fs(h,A,a));return x!==E&&P!==D||!(x!==0||!GS(u,h,a))||!(E!==0||!GS(u,A,a))||!(P!==0||!GS(h,u,A))||!(D!==0||!GS(h,a,A))}function GS(u,a,h){return a.x<=Math.max(u.x,h.x)&&a.x>=Math.min(u.x,h.x)&&a.y<=Math.max(u.y,h.y)&&a.y>=Math.min(u.y,h.y)}function WS(u){return u>0?1:u<0?-1:0}function Fx(u,a){return fs(u.prev,u,u.next)<0?fs(u,a,u.next)>=0&&fs(u,u.prev,a)>=0:fs(u,a,u.prev)<0||fs(u,u.next,a)<0}function B6(u,a){var h=new rC(u.i,u.x,u.y),A=new rC(a.i,a.x,a.y),x=u.next,E=a.prev;return u.next=a,a.prev=u,h.next=x,x.prev=h,A.next=h,h.prev=A,E.next=A,A.prev=E,A}function F6(u,a,h,A){var x=new rC(u,a,h);return A?(x.next=A.next,x.prev=A,A.next.prev=x,A.next=x):(x.prev=x,x.next=x),x}function zx(u){u.next.prev=u.prev,u.prev.next=u.next,u.prevZ&&(u.prevZ.nextZ=u.nextZ),u.nextZ&&(u.nextZ.prevZ=u.prevZ)}function rC(u,a,h){this.i=u,this.x=a,this.y=h,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function iC(u,a,h,A){for(var x=0,E=a,P=h-A;E0&&h.holes.push(A+=u[x-1].length)}return h};var z6=c(tC.exports);function IX(u,a,h,A,x){N6(u,a,h||0,A||u.length-1,x||CX)}function N6(u,a,h,A,x){for(;A>h;){if(A-h>600){var E=A-h+1,P=a-h+1,D=Math.log(E),F=.5*Math.exp(2*D/3),V=.5*Math.sqrt(D*F*(E-F)/E)*(P-E/2<0?-1:1);N6(u,a,Math.max(h,Math.floor(a-P*F/E+V)),Math.min(A,Math.floor(a+(E-P)*F/E+V)),x)}var q=u[a],X=h,rt=A;for(Nx(u,h,a),x(u[A],q)>0&&Nx(u,h,A);X0;)rt--}x(u[h],q)===0?Nx(u,h,rt):Nx(u,++rt,A),rt<=a&&(h=rt+1),a<=rt&&(A=rt-1)}}function Nx(u,a,h){var A=u[a];u[a]=u[h],u[h]=A}function CX(u,a){return ua?1:0}function nC(u,a){let h=u.length;if(h<=1)return[u];let A=[],x,E;for(let P=0;P1)for(let P=0;Ph.id),this.index=a.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Kr,this.indexArray=new Us,this.indexArray2=new us,this.programConfigurations=new Va(a.layers,a.zoom),this.segments=new jr,this.segments2=new jr,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.hasPattern=sC(\"fill\",this.layers,h);let x=this.layers[0].layout.get(\"fill-sort-key\"),E=!x.isConstant(),P=[];for(let{feature:D,id:F,index:V,sourceLayerIndex:q}of a){let X=this.layers[0]._featureFilter.needGeometry,rt=S(D,X);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),rt,A))continue;let at=E?x.evaluate(rt,{},A,h.availableImages):void 0,ct={id:F,properties:D.properties,type:D.type,sourceLayerIndex:q,index:V,geometry:X?rt.geometry:y(D),patterns:{},sortKey:at};P.push(ct)}E&&P.sort((D,F)=>D.sortKey-F.sortKey);for(let D of P){let{geometry:F,index:V,sourceLayerIndex:q}=D;if(this.hasPattern){let X=oC(\"fill\",this.layers,D,this.zoom,h);this.patternFeatures.push(X)}else this.addFeature(D,F,V,A,{});h.featureIndex.insert(a[V].feature,F,V,q,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}addFeatures(a,h,A){for(let x of this.patternFeatures)this.addFeature(x,x.geometry,x.index,h,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,yX),this.indexBuffer=a.createIndexBuffer(this.indexArray),this.indexBuffer2=a.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(a,h,A,x,E){for(let P of nC(h,500)){let D=0;for(let at of P)D+=at.length;let F=this.segments.prepareSegment(D,this.layoutVertexArray,this.indexArray),V=F.vertexLength,q=[],X=[];for(let at of P){if(at.length===0)continue;at!==P[0]&&X.push(q.length/2);let ct=this.segments2.prepareSegment(at.length,this.layoutVertexArray,this.indexArray2),mt=ct.vertexLength;this.layoutVertexArray.emplaceBack(at[0].x,at[0].y),this.indexArray2.emplaceBack(mt+at.length-1,mt),q.push(at[0].x),q.push(at[0].y);for(let bt=1;bt>3}if(x--,A===1||A===2)E+=u.readSVarint(),P+=u.readSVarint(),A===1&&(a&&D.push(a),a=[]),a.push(new FX(E,P));else{if(A!==7)throw new Error(\"unknown command \"+A);a&&a.push(a[0].clone())}}return a&&D.push(a),D},y_.prototype.bbox=function(){var u=this._pbf;u.pos=this._geometry;for(var a=u.readVarint()+u.pos,h=1,A=0,x=0,E=0,P=1/0,D=-1/0,F=1/0,V=-1/0;u.pos>3}if(A--,h===1||h===2)(x+=u.readSVarint())D&&(D=x),(E+=u.readSVarint())V&&(V=E);else if(h!==7)throw new Error(\"unknown command \"+h)}return[P,F,D,V]},y_.prototype.toGeoJSON=function(u,a,h){var A,x,E=this.extent*Math.pow(2,h),P=this.extent*u,D=this.extent*a,F=this.loadGeometry(),V=y_.types[this.type];function q(at){for(var ct=0;ct>3;x=P===1?A.readString():P===2?A.readFloat():P===3?A.readDouble():P===4?A.readVarint64():P===5?A.readVarint():P===6?A.readSVarint():P===7?A.readBoolean():null}return x}(h))}W6.prototype.feature=function(u){if(u<0||u>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[u];var a=this._pbf.readVarint()+this._pbf.pos;return new UX(this._pbf,a,this.extent,this._keys,this._values)};var jX=G6;function GX(u,a,h){if(u===3){var A=new jX(h,h.readVarint()+h.pos);A.length&&(a[A.name]=A)}}uA.VectorTile=function(u,a){this.layers=u.readFields(GX,{},a)},uA.VectorTileFeature=j6,uA.VectorTileLayer=G6;let WX=uA.VectorTileFeature.types,lC=Math.pow(2,13);function Ux(u,a,h,A,x,E,P,D){u.emplaceBack(a,h,2*Math.floor(A*lC)+P,x*lC*2,E*lC*2,Math.round(D))}class cC{constructor(a){this.zoom=a.zoom,this.overscaling=a.overscaling,this.layers=a.layers,this.layerIds=this.layers.map(h=>h.id),this.index=a.index,this.hasPattern=!1,this.layoutVertexArray=new Me,this.centroidVertexArray=new xe,this.indexArray=new Us,this.programConfigurations=new Va(a.layers,a.zoom),this.segments=new jr,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.features=[],this.hasPattern=sC(\"fill-extrusion\",this.layers,h);for(let{feature:x,id:E,index:P,sourceLayerIndex:D}of a){let F=this.layers[0]._featureFilter.needGeometry,V=S(x,F);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),V,A))continue;let q={id:E,sourceLayerIndex:D,index:P,geometry:F?V.geometry:y(x),properties:x.properties,type:x.type,patterns:{}};this.hasPattern?this.features.push(oC(\"fill-extrusion\",this.layers,q,this.zoom,h)):this.addFeature(q,q.geometry,P,A,{}),h.featureIndex.insert(x,q.geometry,P,D,this.index,!0)}}addFeatures(a,h,A){for(let x of this.features){let{geometry:E}=x;this.addFeature(x,E,x.index,h,A)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,BX),this.centroidVertexBuffer=a.createVertexBuffer(this.centroidVertexArray,OX.members,!0),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(a,h,A,x,E){let P={x:0,y:0,vertexCount:0};for(let D of nC(h,500)){let F=0;for(let ct of D)F+=ct.length;let V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let ct of D){if(ct.length===0||qX(ct))continue;let mt=0;for(let bt=0;bt=1){let Vt=ct[bt-1];if(!HX(Et,Vt)){V.vertexLength+4>jr.MAX_VERTEX_ARRAY_LENGTH&&(V=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let Rt=Et.sub(Vt)._perp()._unit(),jt=Vt.dist(Et);mt+jt>32768&&(mt=0),Ux(this.layoutVertexArray,Et.x,Et.y,Rt.x,Rt.y,0,0,mt),Ux(this.layoutVertexArray,Et.x,Et.y,Rt.x,Rt.y,0,1,mt),P.x+=2*Et.x,P.y+=2*Et.y,P.vertexCount+=2,mt+=jt,Ux(this.layoutVertexArray,Vt.x,Vt.y,Rt.x,Rt.y,0,0,mt),Ux(this.layoutVertexArray,Vt.x,Vt.y,Rt.x,Rt.y,0,1,mt),P.x+=2*Vt.x,P.y+=2*Vt.y,P.vertexCount+=2;let qt=V.vertexLength;this.indexArray.emplaceBack(qt,qt+2,qt+1),this.indexArray.emplaceBack(qt+1,qt+2,qt+3),V.vertexLength+=4,V.primitiveLength+=2}}}}if(V.vertexLength+F>jr.MAX_VERTEX_ARRAY_LENGTH&&(V=this.segments.prepareSegment(F,this.layoutVertexArray,this.indexArray)),WX[a.type]!==\"Polygon\")continue;let q=[],X=[],rt=V.vertexLength;for(let ct of D)if(ct.length!==0){ct!==D[0]&&X.push(q.length/2);for(let mt=0;mtJi)||u.y===a.y&&(u.y<0||u.y>Ji)}function qX(u){return u.every(a=>a.x<0)||u.every(a=>a.x>Ji)||u.every(a=>a.y<0)||u.every(a=>a.y>Ji)}let H6;Ue(\"FillExtrusionBucket\",cC,{omit:[\"layers\",\"features\"]});var ZX={get paint(){return H6=H6||new Gn({\"fill-extrusion-opacity\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new bf(te[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new fr(te[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new rr(te[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})}};class YX extends Ui{constructor(a){super(a,ZX)}createBucket(a){return new cC(a)}queryRadius(){return Jt(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return!0}queryIntersectsFeature(a,h,A,x,E,P,D,F){let V=_e(a,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),P.angle,D),q=this.paint.get(\"fill-extrusion-height\").evaluate(h,A),X=this.paint.get(\"fill-extrusion-base\").evaluate(h,A),rt=function(ct,mt,bt,Et){let Vt=[];for(let Rt of ct){let jt=[Rt.x,Rt.y,0,1];Ei(jt,jt,mt),Vt.push(new w(jt[0]/jt[3],jt[1]/jt[3]))}return Vt}(V,F),at=function(ct,mt,bt,Et){let Vt=[],Rt=[],jt=Et[8]*mt,qt=Et[9]*mt,le=Et[10]*mt,Be=Et[11]*mt,Je=Et[8]*bt,Oe=Et[9]*bt,ke=Et[10]*bt,Te=Et[11]*bt;for(let He of ct){let Pe=[],Ae=[];for(let ur of He){let ir=ur.x,ri=ur.y,wn=Et[0]*ir+Et[4]*ri+Et[12],Ln=Et[1]*ir+Et[5]*ri+Et[13],Gs=Et[2]*ir+Et[6]*ri+Et[14],Zl=Et[3]*ir+Et[7]*ri+Et[15],ja=Gs+le,Is=Zl+Be,Eo=wn+Je,Xo=Ln+Oe,Ga=Gs+ke,Wa=Zl+Te,Ws=new w((wn+jt)/Is,(Ln+qt)/Is);Ws.z=ja/Is,Pe.push(Ws);let Hs=new w(Eo/Wa,Xo/Wa);Hs.z=Ga/Wa,Ae.push(Hs)}Vt.push(Pe),Rt.push(Ae)}return[Vt,Rt]}(x,X,q,F);return function(ct,mt,bt){let Et=1/0;H(bt,mt)&&(Et=q6(bt,mt[0]));for(let Vt=0;Vth.id),this.index=a.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(h=>{this.gradients[h.id]={}}),this.layoutVertexArray=new dr,this.layoutVertexArray2=new Xe,this.indexArray=new Us,this.programConfigurations=new Va(a.layers,a.zoom),this.segments=new jr,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id)}populate(a,h,A){this.hasPattern=sC(\"line\",this.layers,h);let x=this.layers[0].layout.get(\"line-sort-key\"),E=!x.isConstant(),P=[];for(let{feature:D,id:F,index:V,sourceLayerIndex:q}of a){let X=this.layers[0]._featureFilter.needGeometry,rt=S(D,X);if(!this.layers[0]._featureFilter.filter(new ln(this.zoom),rt,A))continue;let at=E?x.evaluate(rt,{},A):void 0,ct={id:F,properties:D.properties,type:D.type,sourceLayerIndex:q,index:V,geometry:X?rt.geometry:y(D),patterns:{},sortKey:at};P.push(ct)}E&&P.sort((D,F)=>D.sortKey-F.sortKey);for(let D of P){let{geometry:F,index:V,sourceLayerIndex:q}=D;if(this.hasPattern){let X=oC(\"line\",this.layers,D,this.zoom,h);this.patternFeatures.push(X)}else this.addFeature(D,F,V,A,{});h.featureIndex.insert(a[V].feature,F,V,q,this.index)}}update(a,h,A){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(a,h,this.stateDependentLayers,A)}addFeatures(a,h,A){for(let x of this.patternFeatures)this.addFeature(x,x.geometry,x.index,h,A)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(a){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=a.createVertexBuffer(this.layoutVertexArray2,KX)),this.layoutVertexBuffer=a.createVertexBuffer(this.layoutVertexArray,$X),this.indexBuffer=a.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(a),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(a){if(a.properties&&Object.prototype.hasOwnProperty.call(a.properties,\"mapbox_clip_start\")&&Object.prototype.hasOwnProperty.call(a.properties,\"mapbox_clip_end\"))return{start:+a.properties.mapbox_clip_start,end:+a.properties.mapbox_clip_end}}addFeature(a,h,A,x,E){let P=this.layers[0].layout,D=P.get(\"line-join\").evaluate(a,{}),F=P.get(\"line-cap\"),V=P.get(\"line-miter-limit\"),q=P.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(a);for(let X of h)this.addLine(X,a,D,F,V,q);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,a,A,E,x)}addLine(a,h,A,x,E,P){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let Et=0;Et=2&&a[F-1].equals(a[F-2]);)F--;let V=0;for(;V0;if(Be&&Et>V){let Te=rt.dist(at);if(Te>2*q){let He=rt.sub(rt.sub(at)._mult(q/Te)._round());this.updateDistance(at,He),this.addCurrentVertex(He,mt,0,0,X),at=He}}let Oe=at&&ct,ke=Oe?A:D?\"butt\":x;if(Oe&&ke===\"round\"&&(qtE&&(ke=\"bevel\"),ke===\"bevel\"&&(qt>2&&(ke=\"flipbevel\"),qt100)Vt=bt.mult(-1);else{let Te=qt*mt.add(bt).mag()/mt.sub(bt).mag();Vt._perp()._mult(Te*(Je?-1:1))}this.addCurrentVertex(rt,Vt,0,0,X),this.addCurrentVertex(rt,Vt.mult(-1),0,0,X)}else if(ke===\"bevel\"||ke===\"fakeround\"){let Te=-Math.sqrt(qt*qt-1),He=Je?Te:0,Pe=Je?0:Te;if(at&&this.addCurrentVertex(rt,mt,He,Pe,X),ke===\"fakeround\"){let Ae=Math.round(180*le/Math.PI/20);for(let ur=1;ur2*q){let He=rt.add(ct.sub(rt)._mult(q/Te)._round());this.updateDistance(rt,He),this.addCurrentVertex(He,bt,0,0,X),rt=He}}}}addCurrentVertex(a,h,A,x,E,P=!1){let D=h.y*x-h.x,F=-h.y-h.x*x;this.addHalfVertex(a,h.x+h.y*A,h.y-h.x*A,P,!1,A,E),this.addHalfVertex(a,D,F,P,!0,-x,E),this.distance>Z6/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(a,h,A,x,E,P))}addHalfVertex({x:a,y:h},A,x,E,P,D,F){let V=.5*(this.lineClips?this.scaledDistance*(Z6-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((a<<1)+(E?1:0),(h<<1)+(P?1:0),Math.round(63*A)+128,Math.round(63*x)+128,1+(D===0?0:D<0?-1:1)|(63&V)<<2,V>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let q=F.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,q),F.primitiveLength++),P?this.e2=q:this.e1=q}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(a,h){this.distance+=a.dist(h),this.updateScaledDistance()}}let Y6,Q6;Ue(\"LineBucket\",uC,{omit:[\"layers\",\"patternFeatures\"]});var $6={get paint(){return Q6=Q6||new Gn({\"line-opacity\":new fr(te.paint_line[\"line-opacity\"]),\"line-color\":new fr(te.paint_line[\"line-color\"]),\"line-translate\":new rr(te.paint_line[\"line-translate\"]),\"line-translate-anchor\":new rr(te.paint_line[\"line-translate-anchor\"]),\"line-width\":new fr(te.paint_line[\"line-width\"]),\"line-gap-width\":new fr(te.paint_line[\"line-gap-width\"]),\"line-offset\":new fr(te.paint_line[\"line-offset\"]),\"line-blur\":new fr(te.paint_line[\"line-blur\"]),\"line-dasharray\":new aA(te.paint_line[\"line-dasharray\"]),\"line-pattern\":new bf(te.paint_line[\"line-pattern\"]),\"line-gradient\":new Bd(te.paint_line[\"line-gradient\"])})},get layout(){return Y6=Y6||new Gn({\"line-cap\":new rr(te.layout_line[\"line-cap\"]),\"line-join\":new fr(te.layout_line[\"line-join\"]),\"line-miter-limit\":new rr(te.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new rr(te.layout_line[\"line-round-limit\"]),\"line-sort-key\":new fr(te.layout_line[\"line-sort-key\"])})}};class eK extends fr{possiblyEvaluate(a,h){return h=new ln(Math.floor(h.zoom),{now:h.now,fadeDuration:h.fadeDuration,zoomHistory:h.zoomHistory,transition:h.transition}),super.possiblyEvaluate(a,h)}evaluate(a,h,A,x){return h=kt({},h,{zoom:Math.floor(h.zoom)}),super.evaluate(a,h,A,x)}}let HS;class rK extends Ui{constructor(a){super(a,$6),this.gradientVersion=0,HS||(HS=new eK($6.paint.properties[\"line-width\"].specification),HS.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(a){if(a===\"line-gradient\"){let h=this.gradientExpression();this.stepInterpolant=!!function(A){return A._styleExpression!==void 0}(h)&&h._styleExpression.expression instanceof nh,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(a,h){super.recalculate(a,h),this.paint._values[\"line-floorwidth\"]=HS.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,a)}createBucket(a){return new uC(a)}queryRadius(a){let h=a,A=X6(Ve(\"line-width\",this,h),Ve(\"line-gap-width\",this,h)),x=Ve(\"line-offset\",this,h);return A/2+Math.abs(x)+Jt(this.paint.get(\"line-translate\"))}queryIntersectsFeature(a,h,A,x,E,P,D){let F=_e(a,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),P.angle,D),V=D/2*X6(this.paint.get(\"line-width\").evaluate(h,A),this.paint.get(\"line-gap-width\").evaluate(h,A)),q=this.paint.get(\"line-offset\").evaluate(h,A);return q&&(x=function(X,rt){let at=[];for(let ct=0;ct=3){for(let bt=0;bt0?a+2*u:u}let iK=xn([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),nK=xn([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);xn([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);let sK=xn([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]);xn([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);let K6=xn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),oK=xn([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function aK(u,a,h){return u.sections.forEach(A=>{A.text=function(x,E,P){let D=E.layout.get(\"text-transform\").evaluate(P,{});return D===\"uppercase\"?x=x.toLocaleUpperCase():D===\"lowercase\"&&(x=x.toLocaleLowerCase()),ua.applyArabicShaping&&(x=ua.applyArabicShaping(x)),x}(A.text,a,h)}),u}xn([{name:\"triangle\",components:3,type:\"Uint16\"}]),xn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),xn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",name:\"collisionCircleDiameter\"},{type:\"Uint16\",name:\"textAnchorOffsetStartIndex\"},{type:\"Uint16\",name:\"textAnchorOffsetEndIndex\"}]),xn([{type:\"Float32\",name:\"offsetX\"}]),xn([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]),xn([{type:\"Uint16\",name:\"textAnchor\"},{type:\"Float32\",components:2,name:\"textOffset\"}]);let jx={\"!\":\"\\uFE15\",\"#\":\"\\uFF03\",$:\"\\uFF04\",\"%\":\"\\uFF05\",\"&\":\"\\uFF06\",\"(\":\"\\uFE35\",\")\":\"\\uFE36\",\"*\":\"\\uFF0A\",\"+\":\"\\uFF0B\",\",\":\"\\uFE10\",\"-\":\"\\uFE32\",\".\":\"\\u30FB\",\"/\":\"\\uFF0F\",\":\":\"\\uFE13\",\";\":\"\\uFE14\",\"<\":\"\\uFE3F\",\"=\":\"\\uFF1D\",\">\":\"\\uFE40\",\"?\":\"\\uFE16\",\"@\":\"\\uFF20\",\"[\":\"\\uFE47\",\"\\\\\":\"\\uFF3C\",\"]\":\"\\uFE48\",\"^\":\"\\uFF3E\",_:\"\\uFE33\",\"`\":\"\\uFF40\",\"{\":\"\\uFE37\",\"|\":\"\\u2015\",\"}\":\"\\uFE38\",\"~\":\"\\uFF5E\",\"\\xA2\":\"\\uFFE0\",\"\\xA3\":\"\\uFFE1\",\"\\xA5\":\"\\uFFE5\",\"\\xA6\":\"\\uFFE4\",\"\\xAC\":\"\\uFFE2\",\"\\xAF\":\"\\uFFE3\",\"\\u2013\":\"\\uFE32\",\"\\u2014\":\"\\uFE31\",\"\\u2018\":\"\\uFE43\",\"\\u2019\":\"\\uFE44\",\"\\u201C\":\"\\uFE41\",\"\\u201D\":\"\\uFE42\",\"\\u2026\":\"\\uFE19\",\"\\u2027\":\"\\u30FB\",\"\\u20A9\":\"\\uFFE6\",\"\\u3001\":\"\\uFE11\",\"\\u3002\":\"\\uFE12\",\"\\u3008\":\"\\uFE3F\",\"\\u3009\":\"\\uFE40\",\"\\u300A\":\"\\uFE3D\",\"\\u300B\":\"\\uFE3E\",\"\\u300C\":\"\\uFE41\",\"\\u300D\":\"\\uFE42\",\"\\u300E\":\"\\uFE43\",\"\\u300F\":\"\\uFE44\",\"\\u3010\":\"\\uFE3B\",\"\\u3011\":\"\\uFE3C\",\"\\u3014\":\"\\uFE39\",\"\\u3015\":\"\\uFE3A\",\"\\u3016\":\"\\uFE17\",\"\\u3017\":\"\\uFE18\",\"\\uFF01\":\"\\uFE15\",\"\\uFF08\":\"\\uFE35\",\"\\uFF09\":\"\\uFE36\",\"\\uFF0C\":\"\\uFE10\",\"\\uFF0D\":\"\\uFE32\",\"\\uFF0E\":\"\\u30FB\",\"\\uFF1A\":\"\\uFE13\",\"\\uFF1B\":\"\\uFE14\",\"\\uFF1C\":\"\\uFE3F\",\"\\uFF1E\":\"\\uFE40\",\"\\uFF1F\":\"\\uFE16\",\"\\uFF3B\":\"\\uFE47\",\"\\uFF3D\":\"\\uFE48\",\"\\uFF3F\":\"\\uFE33\",\"\\uFF5B\":\"\\uFE37\",\"\\uFF5C\":\"\\u2015\",\"\\uFF5D\":\"\\uFE38\",\"\\uFF5F\":\"\\uFE35\",\"\\uFF60\":\"\\uFE36\",\"\\uFF61\":\"\\uFE12\",\"\\uFF62\":\"\\uFE41\",\"\\uFF63\":\"\\uFE42\"};var js=24,J6=tn,tF=function(u,a,h,A,x){var E,P,D=8*x-A-1,F=(1<>1,q=-7,X=h?x-1:0,rt=h?-1:1,at=u[a+X];for(X+=rt,E=at&(1<<-q)-1,at>>=-q,q+=D;q>0;E=256*E+u[a+X],X+=rt,q-=8);for(P=E&(1<<-q)-1,E>>=-q,q+=A;q>0;P=256*P+u[a+X],X+=rt,q-=8);if(E===0)E=1-V;else{if(E===F)return P?NaN:1/0*(at?-1:1);P+=Math.pow(2,A),E-=V}return(at?-1:1)*P*Math.pow(2,E-A)},eF=function(u,a,h,A,x,E){var P,D,F,V=8*E-x-1,q=(1<>1,rt=x===23?Math.pow(2,-24)-Math.pow(2,-77):0,at=A?0:E-1,ct=A?1:-1,mt=a<0||a===0&&1/a<0?1:0;for(a=Math.abs(a),isNaN(a)||a===1/0?(D=isNaN(a)?1:0,P=q):(P=Math.floor(Math.log(a)/Math.LN2),a*(F=Math.pow(2,-P))<1&&(P--,F*=2),(a+=P+X>=1?rt/F:rt*Math.pow(2,1-X))*F>=2&&(P++,F/=2),P+X>=q?(D=0,P=q):P+X>=1?(D=(a*F-1)*Math.pow(2,x),P+=X):(D=a*Math.pow(2,X-1)*Math.pow(2,x),P=0));x>=8;u[h+at]=255&D,at+=ct,D/=256,x-=8);for(P=P<0;u[h+at]=255&P,at+=ct,P/=256,V-=8);u[h+at-ct]|=128*mt};function tn(u){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(u)?u:new Uint8Array(u||0),this.pos=0,this.type=0,this.length=this.buf.length}tn.Varint=0,tn.Fixed64=1,tn.Bytes=2,tn.Fixed32=5;var hC=4294967296,rF=1/hC,iF=typeof TextDecoder>\"u\"?null:new TextDecoder(\"utf8\");function Nd(u){return u.type===tn.Bytes?u.readVarint()+u.pos:u.pos+1}function v_(u,a,h){return h?4294967296*a+(u>>>0):4294967296*(a>>>0)+(u>>>0)}function nF(u,a,h){var A=a<=16383?1:a<=2097151?2:a<=268435455?3:Math.floor(Math.log(a)/(7*Math.LN2));h.realloc(A);for(var x=h.pos-1;x>=u;x--)h.buf[x+A]=h.buf[x]}function lK(u,a){for(var h=0;h>>8,u[h+2]=a>>>16,u[h+3]=a>>>24}function sF(u,a){return(u[a]|u[a+1]<<8|u[a+2]<<16)+(u[a+3]<<24)}tn.prototype={destroy:function(){this.buf=null},readFields:function(u,a,h){for(h=h||this.length;this.pos>3,E=this.pos;this.type=7&A,u(x,a,this),this.pos===E&&this.skip(A)}return a},readMessage:function(u,a){return this.readFields(u,a,this.readVarint()+this.pos)},readFixed32:function(){var u=qS(this.buf,this.pos);return this.pos+=4,u},readSFixed32:function(){var u=sF(this.buf,this.pos);return this.pos+=4,u},readFixed64:function(){var u=qS(this.buf,this.pos)+qS(this.buf,this.pos+4)*hC;return this.pos+=8,u},readSFixed64:function(){var u=qS(this.buf,this.pos)+sF(this.buf,this.pos+4)*hC;return this.pos+=8,u},readFloat:function(){var u=tF(this.buf,this.pos,!0,23,4);return this.pos+=4,u},readDouble:function(){var u=tF(this.buf,this.pos,!0,52,8);return this.pos+=8,u},readVarint:function(u){var a,h,A=this.buf;return a=127&(h=A[this.pos++]),h<128?a:(a|=(127&(h=A[this.pos++]))<<7,h<128?a:(a|=(127&(h=A[this.pos++]))<<14,h<128?a:(a|=(127&(h=A[this.pos++]))<<21,h<128?a:function(x,E,P){var D,F,V=P.buf;if(D=(112&(F=V[P.pos++]))>>4,F<128||(D|=(127&(F=V[P.pos++]))<<3,F<128)||(D|=(127&(F=V[P.pos++]))<<10,F<128)||(D|=(127&(F=V[P.pos++]))<<17,F<128)||(D|=(127&(F=V[P.pos++]))<<24,F<128)||(D|=(1&(F=V[P.pos++]))<<31,F<128))return v_(x,D,E);throw new Error(\"Expected varint not more than 10 bytes\")}(a|=(15&(h=A[this.pos]))<<28,u,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var u=this.readVarint();return u%2==1?(u+1)/-2:u/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var u=this.readVarint()+this.pos,a=this.pos;return this.pos=u,u-a>=12&&iF?function(h,A,x){return iF.decode(h.subarray(A,x))}(this.buf,a,u):function(h,A,x){for(var E=\"\",P=A;P239?4:q>223?3:q>191?2:1;if(P+rt>x)break;rt===1?q<128&&(X=q):rt===2?(192&(D=h[P+1]))==128&&(X=(31&q)<<6|63&D)<=127&&(X=null):rt===3?(F=h[P+2],(192&(D=h[P+1]))==128&&(192&F)==128&&((X=(15&q)<<12|(63&D)<<6|63&F)<=2047||X>=55296&&X<=57343)&&(X=null)):rt===4&&(F=h[P+2],V=h[P+3],(192&(D=h[P+1]))==128&&(192&F)==128&&(192&V)==128&&((X=(15&q)<<18|(63&D)<<12|(63&F)<<6|63&V)<=65535||X>=1114112)&&(X=null)),X===null?(X=65533,rt=1):X>65535&&(X-=65536,E+=String.fromCharCode(X>>>10&1023|55296),X=56320|1023&X),E+=String.fromCharCode(X),P+=rt}return E}(this.buf,a,u)},readBytes:function(){var u=this.readVarint()+this.pos,a=this.buf.subarray(this.pos,u);return this.pos=u,a},readPackedVarint:function(u,a){if(this.type!==tn.Bytes)return u.push(this.readVarint(a));var h=Nd(this);for(u=u||[];this.pos127;);else if(a===tn.Bytes)this.pos=this.readVarint()+this.pos;else if(a===tn.Fixed32)this.pos+=4;else{if(a!==tn.Fixed64)throw new Error(\"Unimplemented type: \"+a);this.pos+=8}},writeTag:function(u,a){this.writeVarint(u<<3|a)},realloc:function(u){for(var a=this.length||16;a268435455||u<0?function(a,h){var A,x;if(a>=0?(A=a%4294967296|0,x=a/4294967296|0):(x=~(-a/4294967296),4294967295^(A=~(-a%4294967296))?A=A+1|0:(A=0,x=x+1|0)),a>=18446744073709552e3||a<-18446744073709552e3)throw new Error(\"Given varint doesn't fit into 10 bytes\");h.realloc(10),function(E,P,D){D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,E>>>=7,D.buf[D.pos++]=127&E|128,D.buf[D.pos]=127&(E>>>=7)}(A,0,h),function(E,P){var D=(7&E)<<4;P.buf[P.pos++]|=D|((E>>>=3)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E|((E>>>=7)?128:0),E&&(P.buf[P.pos++]=127&E)))))}(x,h)}(u,this):(this.realloc(4),this.buf[this.pos++]=127&u|(u>127?128:0),u<=127||(this.buf[this.pos++]=127&(u>>>=7)|(u>127?128:0),u<=127||(this.buf[this.pos++]=127&(u>>>=7)|(u>127?128:0),u<=127||(this.buf[this.pos++]=u>>>7&127))))},writeSVarint:function(u){this.writeVarint(u<0?2*-u-1:2*u)},writeBoolean:function(u){this.writeVarint(!!u)},writeString:function(u){u=String(u),this.realloc(4*u.length),this.pos++;var a=this.pos;this.pos=function(A,x,E){for(var P,D,F=0;F55295&&P<57344){if(!D){P>56319||F+1===x.length?(A[E++]=239,A[E++]=191,A[E++]=189):D=P;continue}if(P<56320){A[E++]=239,A[E++]=191,A[E++]=189,D=P;continue}P=D-55296<<10|P-56320|65536,D=null}else D&&(A[E++]=239,A[E++]=191,A[E++]=189,D=null);P<128?A[E++]=P:(P<2048?A[E++]=P>>6|192:(P<65536?A[E++]=P>>12|224:(A[E++]=P>>18|240,A[E++]=P>>12&63|128),A[E++]=P>>6&63|128),A[E++]=63&P|128)}return E}(this.buf,u,this.pos);var h=this.pos-a;h>=128&&nF(a,h,this),this.pos=a-1,this.writeVarint(h),this.pos+=h},writeFloat:function(u){this.realloc(4),eF(this.buf,u,this.pos,!0,23,4),this.pos+=4},writeDouble:function(u){this.realloc(8),eF(this.buf,u,this.pos,!0,52,8),this.pos+=8},writeBytes:function(u){var a=u.length;this.writeVarint(a),this.realloc(a);for(var h=0;h=128&&nF(h,A,this),this.pos=h-1,this.writeVarint(A),this.pos+=A},writeMessage:function(u,a,h){this.writeTag(u,tn.Bytes),this.writeRawMessage(a,h)},writePackedVarint:function(u,a){a.length&&this.writeMessage(u,lK,a)},writePackedSVarint:function(u,a){a.length&&this.writeMessage(u,cK,a)},writePackedBoolean:function(u,a){a.length&&this.writeMessage(u,fK,a)},writePackedFloat:function(u,a){a.length&&this.writeMessage(u,uK,a)},writePackedDouble:function(u,a){a.length&&this.writeMessage(u,hK,a)},writePackedFixed32:function(u,a){a.length&&this.writeMessage(u,dK,a)},writePackedSFixed32:function(u,a){a.length&&this.writeMessage(u,pK,a)},writePackedFixed64:function(u,a){a.length&&this.writeMessage(u,AK,a)},writePackedSFixed64:function(u,a){a.length&&this.writeMessage(u,mK,a)},writeBytesField:function(u,a){this.writeTag(u,tn.Bytes),this.writeBytes(a)},writeFixed32Field:function(u,a){this.writeTag(u,tn.Fixed32),this.writeFixed32(a)},writeSFixed32Field:function(u,a){this.writeTag(u,tn.Fixed32),this.writeSFixed32(a)},writeFixed64Field:function(u,a){this.writeTag(u,tn.Fixed64),this.writeFixed64(a)},writeSFixed64Field:function(u,a){this.writeTag(u,tn.Fixed64),this.writeSFixed64(a)},writeVarintField:function(u,a){this.writeTag(u,tn.Varint),this.writeVarint(a)},writeSVarintField:function(u,a){this.writeTag(u,tn.Varint),this.writeSVarint(a)},writeStringField:function(u,a){this.writeTag(u,tn.Bytes),this.writeString(a)},writeFloatField:function(u,a){this.writeTag(u,tn.Fixed32),this.writeFloat(a)},writeDoubleField:function(u,a){this.writeTag(u,tn.Fixed64),this.writeDouble(a)},writeBooleanField:function(u,a){this.writeVarintField(u,!!a)}};var fC=c(J6);let dC=3;function gK(u,a,h){u===1&&h.readMessage(_K,a)}function _K(u,a,h){if(u===3){let{id:A,bitmap:x,width:E,height:P,left:D,top:F,advance:V}=h.readMessage(yK,{});a.push({id:A,bitmap:new Ox({width:E+2*dC,height:P+2*dC},x),metrics:{width:E,height:P,left:D,top:F,advance:V}})}}function yK(u,a,h){u===1?a.id=h.readVarint():u===2?a.bitmap=h.readBytes():u===3?a.width=h.readVarint():u===4?a.height=h.readVarint():u===5?a.left=h.readSVarint():u===6?a.top=h.readSVarint():u===7&&(a.advance=h.readVarint())}let oF=dC;function aF(u){let a=0,h=0;for(let P of u)a+=P.w*P.h,h=Math.max(h,P.w);u.sort((P,D)=>D.h-P.h);let A=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(a/.95)),h),h:1/0}],x=0,E=0;for(let P of u)for(let D=A.length-1;D>=0;D--){let F=A[D];if(!(P.w>F.w||P.h>F.h)){if(P.x=F.x,P.y=F.y,E=Math.max(E,P.y+P.h),x=Math.max(x,P.x+P.w),P.w===F.w&&P.h===F.h){let V=A.pop();D=0&&A>=a&&YS[this.text.charCodeAt(A)];A--)h--;this.text=this.text.substring(a,h),this.sectionIndex=this.sectionIndex.slice(a,h)}substring(a,h){let A=new b_;return A.text=this.text.substring(a,h),A.sectionIndex=this.sectionIndex.slice(a,h),A.sections=this.sections,A}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((a,h)=>Math.max(a,this.sections[h].scale),0)}addTextSection(a,h){this.text+=a.text,this.sections.push(Wx.forText(a.scale,a.fontStack||h));let A=this.sections.length-1;for(let x=0;x=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function ZS(u,a,h,A,x,E,P,D,F,V,q,X,rt,at,ct,mt){let bt=b_.fromFeature(u,x),Et;X===n.ai.vertical&&bt.verticalizePunctuation();let{processBidirectionalText:Vt,processStyledBidirectionalText:Rt}=ua;if(Vt&&bt.sections.length===1){Et=[];let le=Vt(bt.toString(),AC(bt,V,E,a,A,at,ct));for(let Be of le){let Je=new b_;Je.text=Be,Je.sections=bt.sections;for(let Oe=0;Oe0&&Vd>_l&&(_l=Vd)}else{let zc=Je[di.fontStack],vl=zc&&zc[Ko];if(vl&&vl.rect)yh=vl.rect,_u=vl.metrics;else{let Vd=Be[di.fontStack],Qx=Vd&&Vd[Ko];if(!Qx)continue;_u=Qx.metrics}Zs=(Hs-di.scale)*js}yu?(le.verticalizable=!0,fa.push({glyph:Ko,imageName:vh,x:wn,y:Ln+Zs,vertical:yu,scale:di.scale,fontStack:di.fontStack,sectionIndex:da,metrics:_u,rect:yh}),wn+=Ud*di.scale+ur):(fa.push({glyph:Ko,imageName:vh,x:wn,y:Ln+Zs,vertical:yu,scale:di.scale,fontStack:di.fontStack,sectionIndex:da,metrics:_u,rect:yh}),wn+=_u.advance*di.scale+ur)}fa.length!==0&&(Gs=Math.max(wn-ur,Gs),bK(fa,0,fa.length-1,ja,_l)),wn=0;let yl=Te*Hs+_l;Ha.lineOffset=Math.max(_l,ha),Ln+=yl,Zl=Math.max(yl,Zl),++Is}var Eo;let Xo=Ln-Gx,{horizontalAlign:Ga,verticalAlign:Wa}=mC(He);(function(Ws,Hs,ha,Ha,fa,_l,yl,qs,di){let da=(Hs-ha)*fa,Ko=0;Ko=_l!==yl?-qs*Ha-Gx:(-Ha*di+.5)*yl;for(let Zs of Ws)for(let _u of Zs.positionedGlyphs)_u.x+=da,_u.y+=Ko})(le.positionedLines,ja,Ga,Wa,Gs,Zl,Te,Xo,ke.length),le.top+=-Wa*Xo,le.bottom=le.top+Xo,le.left+=-Ga*Gs,le.right=le.left+Gs}(qt,a,h,A,Et,P,D,F,X,V,rt,mt),!function(le){for(let Be of le)if(Be.positionedGlyphs.length!==0)return!1;return!0}(jt)&&qt}let YS={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},vK={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function cF(u,a,h,A,x,E){if(a.imageName){let P=A[a.imageName];return P?P.displaySize[0]*a.scale*js/E+x:0}{let P=h[a.fontStack],D=P&&P[u];return D?D.metrics.advance*a.scale+x:0}}function uF(u,a,h,A){let x=Math.pow(u-a,2);return A?u=0,q=0;for(let rt=0;rtP.id),this.index=a.index,this.pixelRatio=a.pixelRatio,this.sourceLayerIndex=a.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Zr([]),this.placementViewportMatrix=Zr([]);let h=this.layers[0]._unevaluatedLayout._values;this.textSizeData=pF(this.zoom,h[\"text-size\"]),this.iconSizeData=pF(this.zoom,h[\"icon-size\"]);let A=this.layers[0].layout,x=A.get(\"symbol-sort-key\"),E=A.get(\"symbol-z-order\");this.canOverlap=gC(A,\"text-overlap\",\"text-allow-overlap\")!==\"never\"||gC(A,\"icon-overlap\",\"icon-allow-overlap\")!==\"never\"||A.get(\"text-ignore-placement\")||A.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=E!==\"viewport-y\"&&!x.isConstant(),this.sortFeaturesByY=(E===\"viewport-y\"||E===\"auto\"&&!this.sortFeaturesByKey)&&this.canOverlap,A.get(\"symbol-placement\")===\"point\"&&(this.writingModes=A.get(\"text-writing-mode\").map(P=>n.ai[P])),this.stateDependentLayerIds=this.layers.filter(P=>P.isStateDependent()).map(P=>P.id),this.sourceID=a.sourceID}createArrays(){this.text=new yC(new Va(this.layers,this.zoom,a=>/^text/.test(a))),this.icon=new yC(new Va(this.layers,this.zoom,a=>/^icon/.test(a))),this.glyphOffsetArray=new Bt,this.lineVertexArray=new Yt,this.symbolInstances=new St,this.textAnchorOffsets=new oe}calculateGlyphDependencies(a,h,A,x,E){for(let P=0;P0)&&(P.value.kind!==\"constant\"||P.value.value.length>0),q=F.value.kind!==\"constant\"||!!F.value.value||Object.keys(F.parameters).length>0,X=E.get(\"symbol-sort-key\");if(this.features=[],!V&&!q)return;let rt=h.iconDependencies,at=h.glyphDependencies,ct=h.availableImages,mt=new ln(this.zoom);for(let{feature:bt,id:Et,index:Vt,sourceLayerIndex:Rt}of a){let jt=x._featureFilter.needGeometry,qt=S(bt,jt);if(!x._featureFilter.filter(mt,qt,A))continue;let le,Be;if(jt||(qt.geometry=y(bt)),V){let Oe=x.getValueAndResolveTokens(\"text-field\",qt,A,ct),ke=on.factory(Oe);MK(ke)&&(this.hasRTLText=!0),(!this.hasRTLText||h0()===\"unavailable\"||this.hasRTLText&&ua.isParsed())&&(le=aK(ke,x,qt))}if(q){let Oe=x.getValueAndResolveTokens(\"icon-image\",qt,A,ct);Be=Oe instanceof Vn?Oe:Vn.fromString(Oe)}if(!le&&!Be)continue;let Je=this.sortFeaturesByKey?X.evaluate(qt,{},A):void 0;if(this.features.push({id:Et,text:le,icon:Be,index:Vt,sourceLayerIndex:Rt,geometry:qt.geometry,properties:bt.properties,type:SK[bt.type],sortKey:Je}),Be&&(rt[Be.name]=!0),le){let Oe=P.evaluate(qt,{},A).join(\",\"),ke=E.get(\"text-rotation-alignment\")!==\"viewport\"&&E.get(\"symbol-placement\")!==\"point\";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(n.ai.vertical)>=0;for(let Te of le.sections)if(Te.image)rt[Te.image.name]=!0;else{let He=s0(le.toString()),Pe=Te.fontStack||Oe,Ae=at[Pe]=at[Pe]||{};this.calculateGlyphDependencies(Te.text,Ae,ke,this.allowVerticalPlacement,He)}}}E.get(\"symbol-placement\")===\"line\"&&(this.features=function(bt){let Et={},Vt={},Rt=[],jt=0;function qt(Oe){Rt.push(bt[Oe]),jt++}function le(Oe,ke,Te){let He=Vt[Oe];return delete Vt[Oe],Vt[ke]=He,Rt[He].geometry[0].pop(),Rt[He].geometry[0]=Rt[He].geometry[0].concat(Te[0]),He}function Be(Oe,ke,Te){let He=Et[ke];return delete Et[ke],Et[Oe]=He,Rt[He].geometry[0].shift(),Rt[He].geometry[0]=Te[0].concat(Rt[He].geometry[0]),He}function Je(Oe,ke,Te){let He=Te?ke[0][ke[0].length-1]:ke[0][0];return`${Oe}:${He.x}:${He.y}`}for(let Oe=0;OeOe.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((bt,Et)=>bt.sortKey-Et.sortKey)}update(a,h,A){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(a,h,this.layers,A),this.icon.programConfigurations.updatePaintArrays(a,h,this.layers,A))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(a){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(a),this.iconCollisionBox.upload(a)),this.text.upload(a,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(a,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(a,h){let A=this.lineVertexArray.length;if(a.segment!==void 0){let x=a.dist(h[a.segment+1]),E=a.dist(h[a.segment]),P={};for(let D=a.segment+1;D=0;D--)P[D]={x:h[D].x,y:h[D].y,tileUnitDistanceFromAnchor:E},D>0&&(E+=h[D-1].dist(h[D]));for(let D=0;D0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(a,h){let A=a.placedSymbolArray.get(h),x=A.vertexStartIndex+4*A.numGlyphs;for(let E=A.vertexStartIndex;Ex[D]-x[F]||E[F]-E[D]),P}addToSortKeyRanges(a,h){let A=this.sortKeyRanges[this.sortKeyRanges.length-1];A&&A.sortKey===h?A.symbolInstanceEnd=a+1:this.sortKeyRanges.push({sortKey:h,symbolInstanceStart:a,symbolInstanceEnd:a+1})}sortFeatures(a){if(this.sortFeaturesByY&&this.sortedAngle!==a&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(a),this.sortedAngle=a,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let h of this.symbolInstanceIndexes){let A=this.symbolInstances.get(h);this.featureSortOrder.push(A.featureIndex),[A.rightJustifiedTextSymbolIndex,A.centerJustifiedTextSymbolIndex,A.leftJustifiedTextSymbolIndex].forEach((x,E,P)=>{x>=0&&P.indexOf(x)===E&&this.addIndicesForPlacedSymbol(this.text,x)}),A.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,A.verticalPlacedTextSymbolIndex),A.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,A.placedIconSymbolIndex),A.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,A.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let AF,mF;Ue(\"SymbolBucket\",w_,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),w_.MAX_GLYPHS=65535,w_.addDynamicAttributes=_C;var xC={get paint(){return mF=mF||new Gn({\"icon-opacity\":new fr(te.paint_symbol[\"icon-opacity\"]),\"icon-color\":new fr(te.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new fr(te.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new fr(te.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new fr(te.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new rr(te.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new rr(te.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new fr(te.paint_symbol[\"text-opacity\"]),\"text-color\":new fr(te.paint_symbol[\"text-color\"],{runtimeType:Fs,getOverride:u=>u.textColor,hasOverride:u=>!!u.textColor}),\"text-halo-color\":new fr(te.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new fr(te.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new fr(te.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new rr(te.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new rr(te.paint_symbol[\"text-translate-anchor\"])})},get layout(){return AF=AF||new Gn({\"symbol-placement\":new rr(te.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new rr(te.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new rr(te.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new fr(te.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new rr(te.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new rr(te.layout_symbol[\"icon-allow-overlap\"]),\"icon-overlap\":new rr(te.layout_symbol[\"icon-overlap\"]),\"icon-ignore-placement\":new rr(te.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new rr(te.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new rr(te.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new fr(te.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new rr(te.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new rr(te.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new fr(te.layout_symbol[\"icon-image\"]),\"icon-rotate\":new fr(te.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new fr(te.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new rr(te.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new fr(te.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new fr(te.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new rr(te.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new rr(te.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new rr(te.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new fr(te.layout_symbol[\"text-field\"]),\"text-font\":new fr(te.layout_symbol[\"text-font\"]),\"text-size\":new fr(te.layout_symbol[\"text-size\"]),\"text-max-width\":new fr(te.layout_symbol[\"text-max-width\"]),\"text-line-height\":new rr(te.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new fr(te.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new fr(te.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new fr(te.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new rr(te.layout_symbol[\"text-variable-anchor\"]),\"text-variable-anchor-offset\":new fr(te.layout_symbol[\"text-variable-anchor-offset\"]),\"text-anchor\":new fr(te.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new rr(te.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new rr(te.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new fr(te.layout_symbol[\"text-rotate\"]),\"text-padding\":new rr(te.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new rr(te.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new fr(te.layout_symbol[\"text-transform\"]),\"text-offset\":new fr(te.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new rr(te.layout_symbol[\"text-allow-overlap\"]),\"text-overlap\":new rr(te.layout_symbol[\"text-overlap\"]),\"text-ignore-placement\":new rr(te.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new rr(te.layout_symbol[\"text-optional\"])})}};class gF{constructor(a){if(a.property.overrides===void 0)throw new Error(\"overrides must be provided to instantiate FormatSectionOverride class\");this.type=a.property.overrides?a.property.overrides.runtimeType:Ca,this.defaultValue=a}evaluate(a){if(a.formattedSection){let h=this.defaultValue.property.overrides;if(h&&h.hasOverride(a.formattedSection))return h.getOverride(a.formattedSection)}return a.feature&&a.featureState?this.defaultValue.evaluate(a.feature,a.featureState):this.defaultValue.property.specification.default}eachChild(a){this.defaultValue.isConstant()||a(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ue(\"FormatSectionOverride\",gF,{omit:[\"defaultValue\"]});class $S extends Ui{constructor(a){super(a,xC)}recalculate(a,h){if(super.recalculate(a,h),this.layout.get(\"icon-rotation-alignment\")===\"auto\"&&(this.layout._values[\"icon-rotation-alignment\"]=this.layout.get(\"symbol-placement\")!==\"point\"?\"map\":\"viewport\"),this.layout.get(\"text-rotation-alignment\")===\"auto\"&&(this.layout._values[\"text-rotation-alignment\"]=this.layout.get(\"symbol-placement\")!==\"point\"?\"map\":\"viewport\"),this.layout.get(\"text-pitch-alignment\")===\"auto\"&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")===\"map\"?\"map\":\"viewport\"),this.layout.get(\"icon-pitch-alignment\")===\"auto\"&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),this.layout.get(\"symbol-placement\")===\"point\"){let A=this.layout.get(\"text-writing-mode\");if(A){let x=[];for(let E of A)x.indexOf(E)<0&&x.push(E);this.layout._values[\"text-writing-mode\"]=x}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"]}this._setPaintOverrides()}getValueAndResolveTokens(a,h,A,x){let E=this.layout.get(a).evaluate(h,{},A,x),P=this._unevaluatedLayout._values[a];return P.isDataDriven()||Yp(P.value)||!E?E:function(D,F){return F.replace(/{([^{}]+)}/g,(V,q)=>D&&q in D?String(D[q]):\"\")}(h.properties,E)}createBucket(a){return new w_(a)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error(\"Should take a different path in FeatureIndex\")}_setPaintOverrides(){for(let a of xC.paint.overridableProperties){if(!$S.hasPaintOverride(this.layout,a))continue;let h=this.paint.get(a),A=new gF(h),x=new Km(A,h.property.specification),E=null;E=h.value.kind===\"constant\"||h.value.kind===\"source\"?new Jm(\"source\",x):new wt(\"composite\",x,h.value.zoomStops),this.paint._values[a]=new To(h.property,E,h.parameters)}}_handleOverridablePaintPropertyUpdate(a,h,A){return!(!this.layout||h.isDataDriven()||A.isDataDriven())&&$S.hasPaintOverride(this.layout,a)}static hasPaintOverride(a,h){let A=a.get(\"text-field\"),x=xC.paint.properties[h],E=!1,P=D=>{for(let F of D)if(x.overrides&&x.overrides.hasOverride(F))return void(E=!0)};if(A.value.kind===\"constant\"&&A.value.value instanceof on)P(A.value.value.sections);else if(A.value.kind===\"source\"){let D=V=>{E||(V instanceof Vl&&$i(V.value)===gt?P(V.value.sections):V instanceof Si?P(V.sections):V.eachChild(D))},F=A.value;F._styleExpression&&D(F._styleExpression.expression)}return E}}let _F;var EK={get paint(){return _F=_F||new Gn({\"background-color\":new rr(te.paint_background[\"background-color\"]),\"background-pattern\":new aA(te.paint_background[\"background-pattern\"]),\"background-opacity\":new rr(te.paint_background[\"background-opacity\"])})}};class PK extends Ui{constructor(a){super(a,EK)}}let yF;var IK={get paint(){return yF=yF||new Gn({\"raster-opacity\":new rr(te.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new rr(te.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new rr(te.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new rr(te.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new rr(te.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new rr(te.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new rr(te.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new rr(te.paint_raster[\"raster-fade-duration\"])})}};class CK extends Ui{constructor(a){super(a,IK)}}class LK extends Ui{constructor(a){super(a,{}),this.onAdd=h=>{this.implementation.onAdd&&this.implementation.onAdd(h,h.painter.context.gl)},this.onRemove=h=>{this.implementation.onRemove&&this.implementation.onRemove(h,h.painter.context.gl)},this.implementation=a}is3D(){return this.implementation.renderingMode===\"3d\"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error(\"Custom layers cannot be serialized\")}}class kK{constructor(a){this._callback=a,this._triggered=!1,typeof MessageChannel<\"u\"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._callback()},0))}remove(){delete this._channel,this._callback=()=>{}}}let bC=63710088e-1;class dA{constructor(a,h){if(isNaN(a)||isNaN(h))throw new Error(`Invalid LngLat object: (${a}, ${h})`);if(this.lng=+a,this.lat=+h,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new dA(Pt(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(a){let h=Math.PI/180,A=this.lat*h,x=a.lat*h,E=Math.sin(A)*Math.sin(x)+Math.cos(A)*Math.cos(x)*Math.cos((a.lng-this.lng)*h);return bC*Math.acos(Math.min(E,1))}static convert(a){if(a instanceof dA)return a;if(Array.isArray(a)&&(a.length===2||a.length===3))return new dA(Number(a[0]),Number(a[1]));if(!Array.isArray(a)&&typeof a==\"object\"&&a!==null)return new dA(Number(\"lng\"in a?a.lng:a.lon),Number(a.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")}}let vF=2*Math.PI*bC;function xF(u){return vF*Math.cos(u*Math.PI/180)}function bF(u){return(180+u)/360}function wF(u){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+u*Math.PI/360)))/360}function SF(u,a){return u/xF(a)}function TF(u){return 360*u-180}function wC(u){return 360/Math.PI*Math.atan(Math.exp((180-360*u)*Math.PI/180))-90}class XS{constructor(a,h,A=0){this.x=+a,this.y=+h,this.z=+A}static fromLngLat(a,h=0){let A=dA.convert(a);return new XS(bF(A.lng),wF(A.lat),SF(h,A.lat))}toLngLat(){return new dA(TF(this.x),wC(this.y))}toAltitude(){return this.z*xF(wC(this.y))}meterInMercatorCoordinateUnits(){return 1/vF*(a=wC(this.y),1/Math.cos(a*Math.PI/180));var a}}function MF(u,a,h){var A=2*Math.PI*6378137/256/Math.pow(2,h);return[u*A-2*Math.PI*6378137/2,a*A-2*Math.PI*6378137/2]}class SC{constructor(a,h,A){if(a<0||a>25||A<0||A>=Math.pow(2,a)||h<0||h>=Math.pow(2,a))throw new Error(`x=${h}, y=${A}, z=${a} outside of bounds. 0<=x<${Math.pow(2,a)}, 0<=y<${Math.pow(2,a)} 0<=z<=25 `);this.z=a,this.x=h,this.y=A,this.key=qx(0,a,a,h,A)}equals(a){return this.z===a.z&&this.x===a.x&&this.y===a.y}url(a,h,A){let x=(P=this.y,D=this.z,F=MF(256*(E=this.x),256*(P=Math.pow(2,D)-P-1),D),V=MF(256*(E+1),256*(P+1),D),F[0]+\",\"+F[1]+\",\"+V[0]+\",\"+V[1]);var E,P,D,F,V;let q=function(X,rt,at){let ct,mt=\"\";for(let bt=X;bt>0;bt--)ct=1<1?\"@2x\":\"\").replace(/{quadkey}/g,q).replace(/{bbox-epsg-3857}/g,x)}isChildOf(a){let h=this.z-a.z;return h>0&&a.x===this.x>>h&&a.y===this.y>>h}getTilePoint(a){let h=Math.pow(2,this.z);return new w((a.x*h-this.x)*Ji,(a.y*h-this.y)*Ji)}toString(){return`${this.z}/${this.x}/${this.y}`}}class EF{constructor(a,h){this.wrap=a,this.canonical=h,this.key=qx(a,h.z,h.z,h.x,h.y)}}class Fc{constructor(a,h,A,x,E){if(a= z; overscaledZ = ${a}; z = ${A}`);this.overscaledZ=a,this.wrap=h,this.canonical=new SC(A,+x,+E),this.key=qx(h,a,A,x,E)}clone(){return new Fc(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(a){return this.overscaledZ===a.overscaledZ&&this.wrap===a.wrap&&this.canonical.equals(a.canonical)}scaledTo(a){if(a>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${a}; overscaledZ = ${this.overscaledZ}`);let h=this.canonical.z-a;return a>this.canonical.z?new Fc(a,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Fc(a,this.wrap,a,this.canonical.x>>h,this.canonical.y>>h)}calculateScaledKey(a,h){if(a>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${a}; overscaledZ = ${this.overscaledZ}`);let A=this.canonical.z-a;return a>this.canonical.z?qx(this.wrap*+h,a,this.canonical.z,this.canonical.x,this.canonical.y):qx(this.wrap*+h,a,a,this.canonical.x>>A,this.canonical.y>>A)}isChildOf(a){if(a.wrap!==this.wrap)return!1;let h=this.canonical.z-a.canonical.z;return a.overscaledZ===0||a.overscaledZ>h&&a.canonical.y===this.canonical.y>>h}children(a){if(this.overscaledZ>=a)return[new Fc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let h=this.canonical.z+1,A=2*this.canonical.x,x=2*this.canonical.y;return[new Fc(h,this.wrap,h,A,x),new Fc(h,this.wrap,h,A+1,x),new Fc(h,this.wrap,h,A,x+1),new Fc(h,this.wrap,h,A+1,x+1)]}isLessThan(a){return this.wrapa.wrap)&&(this.overscaledZa.overscaledZ)&&(this.canonical.xa.canonical.x)&&this.canonical.ythis.max&&(this.max=X),X=this.dim+1||h<-1||h>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return(h+1)*this.stride+(a+1)}unpack(a,h,A){return a*this.redFactor+h*this.greenFactor+A*this.blueFactor-this.baseShift}getPixels(){return new Bc({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(a,h,A){if(this.dim!==a.dim)throw new Error(\"dem dimension mismatch\");let x=h*this.dim,E=h*this.dim+this.dim,P=A*this.dim,D=A*this.dim+this.dim;switch(h){case-1:x=E-1;break;case 1:E=x+1}switch(A){case-1:P=D-1;break;case 1:D=P+1}let F=-h*this.dim,V=-A*this.dim;for(let q=P;q=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${a} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[a]}}class CF{constructor(a,h,A,x,E){this.type=\"Feature\",this._vectorTileFeature=a,a._z=h,a._x=A,a._y=x,this.properties=a.properties,this.id=E}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(a){this._geometry=a}toJSON(){let a={geometry:this.geometry};for(let h in this)h!==\"_geometry\"&&h!==\"_vectorTileFeature\"&&(a[h]=this[h]);return a}}class LF{constructor(a,h){this.tileID=a,this.x=a.canonical.x,this.y=a.canonical.y,this.z=a.canonical.z,this.grid=new Na(Ji,16,0),this.grid3D=new Na(Ji,16,0),this.featureIndexArray=new he,this.promoteId=h}insert(a,h,A,x,E,P){let D=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(A,x,E);let F=P?this.grid3D:this.grid;for(let V=0;V=0&&X[3]>=0&&F.insert(D,X[0],X[1],X[2],X[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new uA.VectorTile(new fC(this.rawTileData)).layers,this.sourceLayerCoder=new IF(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers}query(a,h,A,x){this.loadVTLayers();let E=a.params||{},P=Ji/a.tileSize/a.scale,D=e0(E.filter),F=a.queryGeometry,V=a.queryPadding*P,q=RF(F),X=this.grid.query(q.minX-V,q.minY-V,q.maxX+V,q.maxY+V),rt=RF(a.cameraQueryGeometry),at=this.grid3D.query(rt.minX-V,rt.minY-V,rt.maxX+V,rt.maxY+V,(bt,Et,Vt,Rt)=>function(jt,qt,le,Be,Je){for(let ke of jt)if(qt<=ke.x&&le<=ke.y&&Be>=ke.x&&Je>=ke.y)return!0;let Oe=[new w(qt,le),new w(qt,Je),new w(Be,Je),new w(Be,le)];if(jt.length>2){for(let ke of Oe)if(ie(jt,ke))return!0}for(let ke=0;ke(Rt||(Rt=y(jt)),qt.queryIntersectsFeature(F,jt,le,Rt,this.z,a.transform,P,a.pixelPosMatrix)))}return ct}loadMatchingFeature(a,h,A,x,E,P,D,F,V,q,X){let rt=this.bucketLayerIDs[h];if(P&&!function(bt,Et){for(let Vt=0;Vt=0)return!0;return!1}(P,rt))return;let at=this.sourceLayerCoder.decode(A),ct=this.vtLayers[at].feature(x);if(E.needGeometry){let bt=S(ct,!0);if(!E.filter(new ln(this.tileID.overscaledZ),bt,this.tileID.canonical))return}else if(!E.filter(new ln(this.tileID.overscaledZ),ct))return;let mt=this.getId(ct,at);for(let bt=0;bt{let D=a instanceof oA?a.get(P):null;return D&&D.evaluate?D.evaluate(h,A,x):D})}function RF(u){let a=1/0,h=1/0,A=-1/0,x=-1/0;for(let E of u)a=Math.min(a,E.x),h=Math.min(h,E.y),A=Math.max(A,E.x),x=Math.max(x,E.y);return{minX:a,minY:h,maxX:A,maxY:x}}function RK(u,a){return a-u}function DF(u,a,h,A,x){let E=[];for(let P=0;P=A&&X.x>=A||(q.x>=A?q=new w(A,q.y+(A-q.x)/(X.x-q.x)*(X.y-q.y))._round():X.x>=A&&(X=new w(A,q.y+(A-q.x)/(X.x-q.x)*(X.y-q.y))._round()),q.y>=x&&X.y>=x||(q.y>=x?q=new w(q.x+(x-q.y)/(X.y-q.y)*(X.x-q.x),x)._round():X.y>=x&&(X=new w(q.x+(x-q.y)/(X.y-q.y)*(X.x-q.x),x)._round()),F&&q.equals(F[F.length-1])||(F=[q],E.push(F)),F.push(X)))))}}return E}Ue(\"FeatureIndex\",LF,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class pA extends w{constructor(a,h,A,x){super(a,h),this.angle=A,x!==void 0&&(this.segment=x)}clone(){return new pA(this.x,this.y,this.angle,this.segment)}}function OF(u,a,h,A,x){if(a.segment===void 0||h===0)return!0;let E=a,P=a.segment+1,D=0;for(;D>-h/2;){if(P--,P<0)return!1;D-=u[P].dist(E),E=u[P]}D+=u[P].dist(u[P+1]),P++;let F=[],V=0;for(;DA;)V-=F.shift().angleDelta;if(V>x)return!1;P++,D+=q.dist(X)}return!0}function BF(u){let a=0;for(let h=0;hV){let ct=(V-F)/at,mt=Da.number(X.x,rt.x,ct),bt=Da.number(X.y,rt.y,ct),Et=new pA(mt,bt,rt.angleTo(X),q);return Et._round(),!P||OF(u,Et,D,P,a)?Et:void 0}F+=at}}function OK(u,a,h,A,x,E,P,D,F){let V=FF(A,E,P),q=zF(A,x),X=q*P,rt=u[0].x===0||u[0].x===F||u[0].y===0||u[0].y===F;return a-X
=0&&jt=0&&qt=0&&rt+V<=q){let le=new pA(jt,qt,Vt,ct);le._round(),A&&!OF(u,le,E,A,x)||at.push(le)}}X+=Et}return D||at.length||P||(at=NF(u,X/2,h,A,x,E,P,!0,F)),at}Ue(\"Anchor\",pA);let S_=gl;function UF(u,a,h,A){let x=[],E=u.image,P=E.pixelRatio,D=E.paddedRect.w-2*S_,F=E.paddedRect.h-2*S_,V=u.right-u.left,q=u.bottom-u.top,X=E.stretchX||[[0,D]],rt=E.stretchY||[[0,F]],at=(Te,He)=>Te+He[1]-He[0],ct=X.reduce(at,0),mt=rt.reduce(at,0),bt=D-ct,Et=F-mt,Vt=0,Rt=ct,jt=0,qt=mt,le=0,Be=bt,Je=0,Oe=Et;if(E.content&&A){let Te=E.content;Vt=KS(X,0,Te[0]),jt=KS(rt,0,Te[1]),Rt=KS(X,Te[0],Te[2]),qt=KS(rt,Te[1],Te[3]),le=Te[0]-Vt,Je=Te[1]-jt,Be=Te[2]-Te[0]-Rt,Oe=Te[3]-Te[1]-qt}let ke=(Te,He,Pe,Ae)=>{let ur=JS(Te.stretch-Vt,Rt,V,u.left),ir=tT(Te.fixed-le,Be,Te.stretch,ct),ri=JS(He.stretch-jt,qt,q,u.top),wn=tT(He.fixed-Je,Oe,He.stretch,mt),Ln=JS(Pe.stretch-Vt,Rt,V,u.left),Gs=tT(Pe.fixed-le,Be,Pe.stretch,ct),Zl=JS(Ae.stretch-jt,qt,q,u.top),ja=tT(Ae.fixed-Je,Oe,Ae.stretch,mt),Is=new w(ur,ri),Eo=new w(Ln,ri),Xo=new w(Ln,Zl),Ga=new w(ur,Zl),Wa=new w(ir/P,wn/P),Ws=new w(Gs/P,ja/P),Hs=a*Math.PI/180;if(Hs){let fa=Math.sin(Hs),_l=Math.cos(Hs),yl=[_l,-fa,fa,_l];Is._matMult(yl),Eo._matMult(yl),Ga._matMult(yl),Xo._matMult(yl)}let ha=Te.stretch+Te.fixed,Ha=He.stretch+He.fixed;return{tl:Is,tr:Eo,bl:Ga,br:Xo,tex:{x:E.paddedRect.x+S_+ha,y:E.paddedRect.y+S_+Ha,w:Pe.stretch+Pe.fixed-ha,h:Ae.stretch+Ae.fixed-Ha},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Wa,pixelOffsetBR:Ws,minFontScaleX:Be/P/V,minFontScaleY:Oe/P/q,isSDF:h}};if(A&&(E.stretchX||E.stretchY)){let Te=VF(X,bt,ct),He=VF(rt,Et,mt);for(let Pe=0;Pe0&&(ct=Math.max(10,ct),this.circleDiameter=ct)}else{let X=P.top*D-F[0],rt=P.bottom*D+F[2],at=P.left*D-F[3],ct=P.right*D+F[1],mt=P.collisionPadding;if(mt&&(at-=mt[0]*D,X-=mt[1]*D,ct+=mt[2]*D,rt+=mt[3]*D),q){let bt=new w(at,X),Et=new w(ct,X),Vt=new w(at,rt),Rt=new w(ct,rt),jt=q*Math.PI/180;bt._rotate(jt),Et._rotate(jt),Vt._rotate(jt),Rt._rotate(jt),at=Math.min(bt.x,Et.x,Vt.x,Rt.x),ct=Math.max(bt.x,Et.x,Vt.x,Rt.x),X=Math.min(bt.y,Et.y,Vt.y,Rt.y),rt=Math.max(bt.y,Et.y,Vt.y,Rt.y)}a.emplaceBack(h.x,h.y,at,X,ct,rt,A,x,E)}this.boxEndIndex=a.length}}class BK{constructor(a=[],h=FK){if(this.data=a,this.length=this.data.length,this.compare=h,this.length>0)for(let A=(this.length>>1)-1;A>=0;A--)this._down(A)}push(a){this.data.push(a),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;let a=this.data[0],h=this.data.pop();return this.length--,this.length>0&&(this.data[0]=h,this._down(0)),a}peek(){return this.data[0]}_up(a){let{data:h,compare:A}=this,x=h[a];for(;a>0;){let E=a-1>>1,P=h[E];if(A(x,P)>=0)break;h[a]=P,a=E}h[a]=x}_down(a){let{data:h,compare:A}=this,x=this.length>>1,E=h[a];for(;a=0)break;h[a]=D,a=P}h[a]=E}}function FK(u,a){return ua?1:0}function zK(u,a=1,h=!1){let A=1/0,x=1/0,E=-1/0,P=-1/0,D=u[0];for(let at=0;atE)&&(E=ct.x),(!at||ct.y>P)&&(P=ct.y)}let F=Math.min(E-A,P-x),V=F/2,q=new BK([],NK);if(F===0)return new w(A,x);for(let at=A;atX.d||!X.d)&&(X=at,h&&console.log(\"found best %d after %d probes\",Math.round(1e4*at.d)/1e4,rt)),at.max-X.d<=a||(V=at.h/2,q.push(new T_(at.p.x-V,at.p.y-V,V,u)),q.push(new T_(at.p.x+V,at.p.y-V,V,u)),q.push(new T_(at.p.x-V,at.p.y+V,V,u)),q.push(new T_(at.p.x+V,at.p.y+V,V,u)),rt+=4)}return h&&(console.log(`num probes: ${rt}`),console.log(`best distance: ${X.d}`)),X.p}function NK(u,a){return a.max-u.max}function T_(u,a,h,A){this.p=new w(u,a),this.h=h,this.d=function(x,E){let P=!1,D=1/0;for(let F=0;Fx.y!=ct.y>x.y&&x.x<(ct.x-at.x)*(x.y-at.y)/(ct.y-at.y)+at.x&&(P=!P),D=Math.min(D,Gt(x,at,ct))}}return(P?1:-1)*Math.sqrt(D)}(this.p,A),this.max=this.d+this.h*Math.SQRT2}var $o;n.aq=void 0,($o=n.aq||(n.aq={}))[$o.center=1]=\"center\",$o[$o.left=2]=\"left\",$o[$o.right=3]=\"right\",$o[$o.top=4]=\"top\",$o[$o.bottom=5]=\"bottom\",$o[$o[\"top-left\"]=6]=\"top-left\",$o[$o[\"top-right\"]=7]=\"top-right\",$o[$o[\"bottom-left\"]=8]=\"bottom-left\",$o[$o[\"bottom-right\"]=9]=\"bottom-right\";let AA=7,TC=Number.POSITIVE_INFINITY;function jF(u,a){return a[1]!==TC?function(h,A,x){let E=0,P=0;switch(A=Math.abs(A),x=Math.abs(x),h){case\"top-right\":case\"top-left\":case\"top\":P=x-AA;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":P=-x+AA}switch(h){case\"top-right\":case\"bottom-right\":case\"right\":E=-A;break;case\"top-left\":case\"bottom-left\":case\"left\":E=A}return[E,P]}(u,a[0],a[1]):function(h,A){let x=0,E=0;A<0&&(A=0);let P=A/Math.SQRT2;switch(h){case\"top-right\":case\"top-left\":E=P-AA;break;case\"bottom-right\":case\"bottom-left\":E=-P+AA;break;case\"bottom\":E=-A+AA;break;case\"top\":E=A-AA}switch(h){case\"top-right\":case\"bottom-right\":x=-P;break;case\"top-left\":case\"bottom-left\":x=P;break;case\"left\":x=A;break;case\"right\":x=-A}return[x,E]}(u,a[0])}function GF(u,a,h){var A;let x=u.layout,E=(A=x.get(\"text-variable-anchor-offset\"))===null||A===void 0?void 0:A.evaluate(a,{},h);if(E){let D=E.values,F=[];for(let V=0;Vrt*js);q.startsWith(\"top\")?X[1]-=AA:q.startsWith(\"bottom\")&&(X[1]+=AA),F[V+1]=X}return new Wo(F)}let P=x.get(\"text-variable-anchor\");if(P){let D;D=u._unevaluatedLayout.getValue(\"text-radial-offset\")!==void 0?[x.get(\"text-radial-offset\").evaluate(a,{},h)*js,TC]:x.get(\"text-offset\").evaluate(a,{},h).map(V=>V*js);let F=[];for(let V of P)F.push(V,jF(V,D));return new Wo(F)}return null}function MC(u){switch(u){case\"right\":case\"top-right\":case\"bottom-right\":return\"right\";case\"left\":case\"top-left\":case\"bottom-left\":return\"left\"}return\"center\"}function UK(u,a,h,A,x,E,P,D,F,V,q){let X=E.textMaxSize.evaluate(a,{});X===void 0&&(X=P);let rt=u.layers[0].layout,at=rt.get(\"icon-offset\").evaluate(a,{},q),ct=HF(h.horizontal),mt=P/24,bt=u.tilePixelRatio*mt,Et=u.tilePixelRatio*X/24,Vt=u.tilePixelRatio*D,Rt=u.tilePixelRatio*rt.get(\"symbol-spacing\"),jt=rt.get(\"text-padding\")*u.tilePixelRatio,qt=function(Ae,ur,ir,ri=1){let wn=Ae.get(\"icon-padding\").evaluate(ur,{},ir),Ln=wn&&wn.values;return[Ln[0]*ri,Ln[1]*ri,Ln[2]*ri,Ln[3]*ri]}(rt,a,q,u.tilePixelRatio),le=rt.get(\"text-max-angle\")/180*Math.PI,Be=rt.get(\"text-rotation-alignment\")!==\"viewport\"&&rt.get(\"symbol-placement\")!==\"point\",Je=rt.get(\"icon-rotation-alignment\")===\"map\"&&rt.get(\"symbol-placement\")!==\"point\",Oe=rt.get(\"symbol-placement\"),ke=Rt/2,Te=rt.get(\"icon-text-fit\"),He;A&&Te!==\"none\"&&(u.allowVerticalPlacement&&h.vertical&&(He=dF(A,h.vertical,Te,rt.get(\"icon-text-fit-padding\"),at,mt)),ct&&(A=dF(A,ct,Te,rt.get(\"icon-text-fit-padding\"),at,mt)));let Pe=(Ae,ur)=>{ur.x<0||ur.x>=Ji||ur.y<0||ur.y>=Ji||function(ir,ri,wn,Ln,Gs,Zl,ja,Is,Eo,Xo,Ga,Wa,Ws,Hs,ha,Ha,fa,_l,yl,qs,di,da,Ko,Zs,_u){let yh=ir.addToLineVertexArray(ri,wn),vh,Ud,yu,zc,vl=0,Vd=0,Qx=0,QF=0,DC=-1,OC=-1,jd={},$F=_h(\"\");if(ir.allowVerticalPlacement&&Ln.vertical){let pa=Is.layout.get(\"text-rotate\").evaluate(di,{},Zs)+90;yu=new eT(Eo,ri,Xo,Ga,Wa,Ln.vertical,Ws,Hs,ha,pa),ja&&(zc=new eT(Eo,ri,Xo,Ga,Wa,ja,fa,_l,ha,pa))}if(Gs){let pa=Is.layout.get(\"icon-rotate\").evaluate(di,{}),Nc=Is.layout.get(\"icon-text-fit\")!==\"none\",A0=UF(Gs,pa,Ko,Nc),bh=ja?UF(ja,pa,Ko,Nc):void 0;Ud=new eT(Eo,ri,Xo,Ga,Wa,Gs,fa,_l,!1,pa),vl=4*A0.length;let m0=ir.iconSizeData,Ef=null;m0.kind===\"source\"?(Ef=[Mf*Is.layout.get(\"icon-size\").evaluate(di,{})],Ef[0]>fA&&tr(`${ir.layerIds[0]}: Value for \"icon-size\" is >= ${Hx}. Reduce your \"icon-size\".`)):m0.kind===\"composite\"&&(Ef=[Mf*da.compositeIconSizes[0].evaluate(di,{},Zs),Mf*da.compositeIconSizes[1].evaluate(di,{},Zs)],(Ef[0]>fA||Ef[1]>fA)&&tr(`${ir.layerIds[0]}: Value for \"icon-size\" is >= ${Hx}. Reduce your \"icon-size\".`)),ir.addSymbols(ir.icon,A0,Ef,qs,yl,di,n.ai.none,ri,yh.lineStartIndex,yh.lineLength,-1,Zs),DC=ir.icon.placedSymbolArray.length-1,bh&&(Vd=4*bh.length,ir.addSymbols(ir.icon,bh,Ef,qs,yl,di,n.ai.vertical,ri,yh.lineStartIndex,yh.lineLength,-1,Zs),OC=ir.icon.placedSymbolArray.length-1)}let XF=Object.keys(Ln.horizontal);for(let pa of XF){let Nc=Ln.horizontal[pa];if(!vh){$F=_h(Nc.text);let bh=Is.layout.get(\"text-rotate\").evaluate(di,{},Zs);vh=new eT(Eo,ri,Xo,Ga,Wa,Nc,Ws,Hs,ha,bh)}let A0=Nc.positionedLines.length===1;if(Qx+=WF(ir,ri,Nc,Zl,Is,ha,di,Ha,yh,Ln.vertical?n.ai.horizontal:n.ai.horizontalOnly,A0?XF:[pa],jd,DC,da,Zs),A0)break}Ln.vertical&&(QF+=WF(ir,ri,Ln.vertical,Zl,Is,ha,di,Ha,yh,n.ai.vertical,[\"vertical\"],jd,OC,da,Zs));let GK=vh?vh.boxStartIndex:ir.collisionBoxArray.length,WK=vh?vh.boxEndIndex:ir.collisionBoxArray.length,HK=yu?yu.boxStartIndex:ir.collisionBoxArray.length,qK=yu?yu.boxEndIndex:ir.collisionBoxArray.length,ZK=Ud?Ud.boxStartIndex:ir.collisionBoxArray.length,YK=Ud?Ud.boxEndIndex:ir.collisionBoxArray.length,QK=zc?zc.boxStartIndex:ir.collisionBoxArray.length,$K=zc?zc.boxEndIndex:ir.collisionBoxArray.length,xh=-1,iT=(pa,Nc)=>pa&&pa.circleDiameter?Math.max(pa.circleDiameter,Nc):Nc;xh=iT(vh,xh),xh=iT(yu,xh),xh=iT(Ud,xh),xh=iT(zc,xh);let KF=xh>-1?1:0;KF&&(xh*=_u/js),ir.glyphOffsetArray.length>=w_.MAX_GLYPHS&&tr(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),di.sortKey!==void 0&&ir.addToSortKeyRanges(ir.symbolInstances.length,di.sortKey);let XK=GF(Is,di,Zs),[KK,JK]=function(pa,Nc){let A0=pa.length,bh=Nc?.values;if(bh?.length>0)for(let m0=0;m0=0?jd.right:-1,jd.center>=0?jd.center:-1,jd.left>=0?jd.left:-1,jd.vertical||-1,DC,OC,$F,GK,WK,HK,qK,ZK,YK,QK,$K,Xo,Qx,QF,vl,Vd,KF,0,Ws,xh,KK,JK)}(u,ur,Ae,h,A,x,He,u.layers[0],u.collisionBoxArray,a.index,a.sourceLayerIndex,u.index,bt,[jt,jt,jt,jt],Be,F,Vt,qt,Je,at,a,E,V,q,P)};if(Oe===\"line\")for(let Ae of DF(a.geometry,0,0,Ji,Ji)){let ur=OK(Ae,Rt,le,h.vertical||ct,A,24,Et,u.overscaling,Ji);for(let ir of ur)ct&&VK(u,ct.text,ke,ir)||Pe(Ae,ir)}else if(Oe===\"line-center\"){for(let Ae of a.geometry)if(Ae.length>1){let ur=DK(Ae,le,h.vertical||ct,A,24,Et);ur&&Pe(Ae,ur)}}else if(a.type===\"Polygon\")for(let Ae of nC(a.geometry,0)){let ur=zK(Ae,16);Pe(Ae[0],new pA(ur.x,ur.y,0))}else if(a.type===\"LineString\")for(let Ae of a.geometry)Pe(Ae,new pA(Ae[0].x,Ae[0].y,0));else if(a.type===\"Point\")for(let Ae of a.geometry)for(let ur of Ae)Pe([ur],new pA(ur.x,ur.y,0))}function WF(u,a,h,A,x,E,P,D,F,V,q,X,rt,at,ct){let mt=function(Vt,Rt,jt,qt,le,Be,Je,Oe){let ke=qt.layout.get(\"text-rotate\").evaluate(Be,{})*Math.PI/180,Te=[];for(let He of Rt.positionedLines)for(let Pe of He.positionedGlyphs){if(!Pe.rect)continue;let Ae=Pe.rect||{},ur=oF+1,ir=!0,ri=1,wn=0,Ln=(le||Oe)&&Pe.vertical,Gs=Pe.metrics.advance*Pe.scale/2;if(Oe&&Rt.verticalizable&&(wn=He.lineOffset/2-(Pe.imageName?-(js-Pe.metrics.width*Pe.scale)/2:(Pe.scale-1)*js)),Pe.imageName){let qs=Je[Pe.imageName];ir=qs.sdf,ri=qs.pixelRatio,ur=gl/ri}let Zl=le?[Pe.x+Gs,Pe.y]:[0,0],ja=le?[0,0]:[Pe.x+Gs+jt[0],Pe.y+jt[1]-wn],Is=[0,0];Ln&&(Is=ja,ja=[0,0]);let Eo=Pe.metrics.isDoubleResolution?2:1,Xo=(Pe.metrics.left-ur)*Pe.scale-Gs+ja[0],Ga=(-Pe.metrics.top-ur)*Pe.scale+ja[1],Wa=Xo+Ae.w/Eo*Pe.scale/ri,Ws=Ga+Ae.h/Eo*Pe.scale/ri,Hs=new w(Xo,Ga),ha=new w(Wa,Ga),Ha=new w(Xo,Ws),fa=new w(Wa,Ws);if(Ln){let qs=new w(-Gs,Gs-Gx),di=-Math.PI/2,da=js/2-Gs,Ko=new w(5-Gx-da,-(Pe.imageName?da:0)),Zs=new w(...Is);Hs._rotateAround(di,qs)._add(Ko)._add(Zs),ha._rotateAround(di,qs)._add(Ko)._add(Zs),Ha._rotateAround(di,qs)._add(Ko)._add(Zs),fa._rotateAround(di,qs)._add(Ko)._add(Zs)}if(ke){let qs=Math.sin(ke),di=Math.cos(ke),da=[di,-qs,qs,di];Hs._matMult(da),ha._matMult(da),Ha._matMult(da),fa._matMult(da)}let _l=new w(0,0),yl=new w(0,0);Te.push({tl:Hs,tr:ha,bl:Ha,br:fa,tex:Ae,writingMode:Rt.writingMode,glyphOffset:Zl,sectionIndex:Pe.sectionIndex,isSDF:ir,pixelOffsetTL:_l,pixelOffsetBR:yl,minFontScaleX:0,minFontScaleY:0})}return Te}(0,h,D,x,E,P,A,u.allowVerticalPlacement),bt=u.textSizeData,Et=null;bt.kind===\"source\"?(Et=[Mf*x.layout.get(\"text-size\").evaluate(P,{})],Et[0]>fA&&tr(`${u.layerIds[0]}: Value for \"text-size\" is >= ${Hx}. Reduce your \"text-size\".`)):bt.kind===\"composite\"&&(Et=[Mf*at.compositeTextSizes[0].evaluate(P,{},ct),Mf*at.compositeTextSizes[1].evaluate(P,{},ct)],(Et[0]>fA||Et[1]>fA)&&tr(`${u.layerIds[0]}: Value for \"text-size\" is >= ${Hx}. Reduce your \"text-size\".`)),u.addSymbols(u.text,mt,Et,D,E,P,V,a,F.lineStartIndex,F.lineLength,rt,ct);for(let Vt of q)X[Vt]=u.text.placedSymbolArray.length-1;return 4*mt.length}function HF(u){for(let a in u)return u[a];return null}function VK(u,a,h,A){let x=u.compareText;if(a in x){let E=x[a];for(let P=E.length-1;P>=0;P--)if(A.dist(E[P])>4;if(x!==1)throw new Error(`Got v${x} data when expected v1.`);let E=qF[15&A];if(!E)throw new Error(\"Unrecognized array type.\");let[P]=new Uint16Array(a,2,1),[D]=new Uint32Array(a,4,1);return new EC(D,P,E,a)}constructor(a,h=64,A=Float64Array,x){if(isNaN(a)||a<0)throw new Error(`Unpexpected numItems value: ${a}.`);this.numItems=+a,this.nodeSize=Math.min(Math.max(+h,2),65535),this.ArrayType=A,this.IndexArrayType=a<65536?Uint16Array:Uint32Array;let E=qF.indexOf(this.ArrayType),P=2*a*this.ArrayType.BYTES_PER_ELEMENT,D=a*this.IndexArrayType.BYTES_PER_ELEMENT,F=(8-D%8)%8;if(E<0)throw new Error(`Unexpected typed array class: ${A}.`);x&&x instanceof ArrayBuffer?(this.data=x,this.ids=new this.IndexArrayType(this.data,8,a),this.coords=new this.ArrayType(this.data,8+D+F,2*a),this._pos=2*a,this._finished=!0):(this.data=new ArrayBuffer(8+P+D+F),this.ids=new this.IndexArrayType(this.data,8,a),this.coords=new this.ArrayType(this.data,8+D+F,2*a),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+E]),new Uint16Array(this.data,2,1)[0]=h,new Uint32Array(this.data,4,1)[0]=a)}add(a,h){let A=this._pos>>1;return this.ids[A]=A,this.coords[this._pos++]=a,this.coords[this._pos++]=h,A}finish(){let a=this._pos>>1;if(a!==this.numItems)throw new Error(`Added ${a} items when expected ${this.numItems}.`);return PC(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(a,h,A,x){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");let{ids:E,coords:P,nodeSize:D}=this,F=[0,E.length-1,0],V=[];for(;F.length;){let q=F.pop()||0,X=F.pop()||0,rt=F.pop()||0;if(X-rt<=D){for(let bt=rt;bt<=X;bt++){let Et=P[2*bt],Vt=P[2*bt+1];Et>=a&&Et<=A&&Vt>=h&&Vt<=x&&V.push(E[bt])}continue}let at=rt+X>>1,ct=P[2*at],mt=P[2*at+1];ct>=a&&ct<=A&&mt>=h&&mt<=x&&V.push(E[at]),(q===0?a<=ct:h<=mt)&&(F.push(rt),F.push(at-1),F.push(1-q)),(q===0?A>=ct:x>=mt)&&(F.push(at+1),F.push(X),F.push(1-q))}return V}within(a,h,A){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");let{ids:x,coords:E,nodeSize:P}=this,D=[0,x.length-1,0],F=[],V=A*A;for(;D.length;){let q=D.pop()||0,X=D.pop()||0,rt=D.pop()||0;if(X-rt<=P){for(let bt=rt;bt<=X;bt++)YF(E[2*bt],E[2*bt+1],a,h)<=V&&F.push(x[bt]);continue}let at=rt+X>>1,ct=E[2*at],mt=E[2*at+1];YF(ct,mt,a,h)<=V&&F.push(x[at]),(q===0?a-A<=ct:h-A<=mt)&&(D.push(rt),D.push(at-1),D.push(1-q)),(q===0?a+A>=ct:h+A>=mt)&&(D.push(at+1),D.push(X),D.push(1-q))}return F}}function PC(u,a,h,A,x,E){if(x-A<=h)return;let P=A+x>>1;ZF(u,a,P,A,x,E),PC(u,a,h,A,P-1,1-E),PC(u,a,h,P+1,x,1-E)}function ZF(u,a,h,A,x,E){for(;x>A;){if(x-A>600){let V=x-A+1,q=h-A+1,X=Math.log(V),rt=.5*Math.exp(2*X/3),at=.5*Math.sqrt(X*rt*(V-rt)/V)*(q-V/2<0?-1:1);ZF(u,a,h,Math.max(A,Math.floor(h-q*rt/V+at)),Math.min(x,Math.floor(h+(V-q)*rt/V+at)),E)}let P=a[2*h+E],D=A,F=x;for(Zx(u,a,A,h),a[2*x+E]>P&&Zx(u,a,A,x);DP;)F--}a[2*A+E]===P?Zx(u,a,A,F):(F++,Zx(u,a,F,x)),F<=h&&(A=F+1),h<=F&&(x=F-1)}}function Zx(u,a,h,A){IC(u,h,A),IC(a,2*h,2*A),IC(a,2*h+1,2*A+1)}function IC(u,a,h){let A=u[a];u[a]=u[h],u[h]=A}function YF(u,a,h,A){let x=u-h,E=a-A;return x*x+E*E}var CC;n.bh=void 0,(CC=n.bh||(n.bh={})).create=\"create\",CC.load=\"load\",CC.fullLoad=\"fullLoad\";let rT=null,Yx=[],LC=1e3/60,kC=\"loadTime\",RC=\"fullLoadTime\",jK={mark(u){performance.mark(u)},frame(u){let a=u;rT!=null&&Yx.push(a-rT),rT=a},clearMetrics(){rT=null,Yx=[],performance.clearMeasures(kC),performance.clearMeasures(RC);for(let u in n.bh)performance.clearMarks(n.bh[u])},getPerformanceMetrics(){performance.measure(kC,n.bh.create,n.bh.load),performance.measure(RC,n.bh.create,n.bh.fullLoad);let u=performance.getEntriesByName(kC)[0].duration,a=performance.getEntriesByName(RC)[0].duration,h=Yx.length,A=1/(Yx.reduce((E,P)=>E+P,0)/h/1e3),x=Yx.filter(E=>E>LC).reduce((E,P)=>E+(P-LC)/LC,0);return{loadTime:u,fullLoadTime:a,fps:A,percentDroppedFrames:x/(h+x)*100,totalFrames:h}}};n.$=function(u,a,h){var A,x,E,P,D,F,V,q,X,rt,at,ct,mt=h[0],bt=h[1],Et=h[2];return a===u?(u[12]=a[0]*mt+a[4]*bt+a[8]*Et+a[12],u[13]=a[1]*mt+a[5]*bt+a[9]*Et+a[13],u[14]=a[2]*mt+a[6]*bt+a[10]*Et+a[14],u[15]=a[3]*mt+a[7]*bt+a[11]*Et+a[15]):(x=a[1],E=a[2],P=a[3],D=a[4],F=a[5],V=a[6],q=a[7],X=a[8],rt=a[9],at=a[10],ct=a[11],u[0]=A=a[0],u[1]=x,u[2]=E,u[3]=P,u[4]=D,u[5]=F,u[6]=V,u[7]=q,u[8]=X,u[9]=rt,u[10]=at,u[11]=ct,u[12]=A*mt+D*bt+X*Et+a[12],u[13]=x*mt+F*bt+rt*Et+a[13],u[14]=E*mt+V*bt+at*Et+a[14],u[15]=P*mt+q*bt+ct*Et+a[15]),u},n.A=ze,n.B=Da,n.C=class{constructor(u,a,h){this.receive=A=>{let x=A.data,E=x.id;if(E&&(!x.targetMapId||this.mapId===x.targetMapId))if(x.type===\"\"){delete this.tasks[E];let P=this.cancelCallbacks[E];delete this.cancelCallbacks[E],P&&P()}else zi()||x.mustQueue?(this.tasks[E]=x,this.taskQueue.push(E),this.invoker.trigger()):this.processTask(E,x)},this.process=()=>{if(!this.taskQueue.length)return;let A=this.taskQueue.shift(),x=this.tasks[A];delete this.tasks[A],this.taskQueue.length&&this.invoker.trigger(),x&&this.processTask(A,x)},this.target=u,this.parent=a,this.mapId=h,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new kK(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=zi()?u:window}send(u,a,h,A,x=!1){let E=Math.round(1e18*Math.random()).toString(36).substring(0,10);h&&(this.callbacks[E]=h);let P=[],D={id:E,type:u,hasCallback:!!h,targetMapId:A,mustQueue:x,sourceMapId:this.mapId,data:Gl(a,P)};return this.target.postMessage(D,{transfer:P}),{cancel:()=>{h&&delete this.callbacks[E],this.target.postMessage({id:E,type:\"\",targetMapId:A,sourceMapId:this.mapId})}}}processTask(u,a){if(a.type===\"\"){let h=this.callbacks[u];delete this.callbacks[u],h&&(a.error?h(vf(a.error)):h(null,vf(a.data)))}else{let h=!1,A=[],x=a.hasCallback?(D,F)=>{h=!0,delete this.cancelCallbacks[u];let V={id:u,type:\"\",sourceMapId:this.mapId,error:D?Gl(D):null,data:Gl(F,A)};this.target.postMessage(V,{transfer:A})}:D=>{h=!0},E=null,P=vf(a.data);if(this.parent[a.type])E=this.parent[a.type](a.sourceMapId,P,x);else if(\"getWorkerSource\"in this.parent){let D=a.type.split(\".\");E=this.parent.getWorkerSource(a.sourceMapId,D[0],P.source)[D[1]](P,x)}else x(new Error(`Could not find function ${a.type}`));!h&&E&&E.cancel&&(this.cancelCallbacks[u]=E.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1)}},n.D=rr,n.E=Fl,n.F=function(u,a){let h={};for(let A=0;A{}}},n.Y=ve,n.Z=function(){var u=new ze(16);return ze!=Float32Array&&(u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=0,u[12]=0,u[13]=0,u[14]=0),u[0]=1,u[5]=1,u[10]=1,u[15]=1,u},n._=o,n.a=Ic,n.a$=class extends st{},n.a0=function(u,a,h){var A=h[0],x=h[1],E=h[2];return u[0]=a[0]*A,u[1]=a[1]*A,u[2]=a[2]*A,u[3]=a[3]*A,u[4]=a[4]*x,u[5]=a[5]*x,u[6]=a[6]*x,u[7]=a[7]*x,u[8]=a[8]*E,u[9]=a[9]*E,u[10]=a[10]*E,u[11]=a[11]*E,u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15],u},n.a1=Wi,n.a2=function(){return Kt++},n.a3=yt,n.a4=w_,n.a5=function(){ua.isLoading()||ua.isLoaded()||h0()!==\"deferred\"||d_()},n.a6=e0,n.a7=S,n.a8=ln,n.a9=CF,n.aA=Dc,n.aB=function(u){u=u.slice();let a=Object.create(null);for(let h=0;h{A[P.source]?h.push({command:oi.removeLayer,args:[P.id]}):E.push(P)}),h=h.concat(x),function(P,D,F){D=D||[];let V=(P=P||[]).map(Ia),q=D.map(Ia),X=P.reduce(bo,{}),rt=D.reduce(bo,{}),at=V.slice(),ct=Object.create(null),mt,bt,Et,Vt,Rt,jt,qt;for(mt=0,bt=0;mt@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,(h,A,x,E)=>{let P=x||E;return a[A]=!P||P.toLowerCase(),\"\"}),a[\"max-age\"]){let h=parseInt(a[\"max-age\"],10);isNaN(h)?delete a[\"max-age\"]:a[\"max-age\"]=h}return a},n.ab=function(u,a){let h=[];for(let A in u)A in a||h.push(A);return h},n.ac=function(u){if(No==null){let a=u.navigator?u.navigator.userAgent:null;No=!!u.safari||!(!a||!(/\\b(iPad|iPhone|iPod)\\b/.test(a)||a.match(\"Safari\")&&!a.match(\"Chrome\")))}return No},n.ad=ut,n.ae=function(u,a,h){var A=Math.sin(h),x=Math.cos(h),E=a[0],P=a[1],D=a[2],F=a[3],V=a[4],q=a[5],X=a[6],rt=a[7];return a!==u&&(u[8]=a[8],u[9]=a[9],u[10]=a[10],u[11]=a[11],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15]),u[0]=E*x+V*A,u[1]=P*x+q*A,u[2]=D*x+X*A,u[3]=F*x+rt*A,u[4]=V*x-E*A,u[5]=q*x-P*A,u[6]=X*x-D*A,u[7]=rt*x-F*A,u},n.af=function(u){var a=new ze(16);return a[0]=u[0],a[1]=u[1],a[2]=u[2],a[3]=u[3],a[4]=u[4],a[5]=u[5],a[6]=u[6],a[7]=u[7],a[8]=u[8],a[9]=u[9],a[10]=u[10],a[11]=u[11],a[12]=u[12],a[13]=u[13],a[14]=u[14],a[15]=u[15],a},n.ag=Ei,n.ah=function(u,a){let h=0,A=0;if(u.kind===\"constant\")A=u.layoutSize;else if(u.kind!==\"source\"){let{interpolationType:x,minZoom:E,maxZoom:P}=u,D=x?ut(Oa.interpolationFactor(x,a,E,P),0,1):0;u.kind===\"camera\"?A=Da.number(u.minSize,u.maxSize,D):h=D}return{uSizeT:h,uSize:A}},n.aj=function(u,{uSize:a,uSizeT:h},{lowerSize:A,upperSize:x}){return u.kind===\"source\"?A/Mf:u.kind===\"composite\"?Da.number(A/Mf,x/Mf,h):a},n.ak=_C,n.al=function(u,a,h,A){let x=a.y-u.y,E=a.x-u.x,P=A.y-h.y,D=A.x-h.x,F=P*E-D*x;if(F===0)return null;let V=(D*(u.y-h.y)-P*(u.x-h.x))/F;return new w(u.x+V*E,u.y+V*x)},n.am=DF,n.an=L,n.ao=Zr,n.ap=js,n.ar=gC,n.as=function(u,a){var h=a[0],A=a[1],x=a[2],E=a[3],P=a[4],D=a[5],F=a[6],V=a[7],q=a[8],X=a[9],rt=a[10],at=a[11],ct=a[12],mt=a[13],bt=a[14],Et=a[15],Vt=h*D-A*P,Rt=h*F-x*P,jt=h*V-E*P,qt=A*F-x*D,le=A*V-E*D,Be=x*V-E*F,Je=q*mt-X*ct,Oe=q*bt-rt*ct,ke=q*Et-at*ct,Te=X*bt-rt*mt,He=X*Et-at*mt,Pe=rt*Et-at*bt,Ae=Vt*Pe-Rt*He+jt*Te+qt*ke-le*Oe+Be*Je;return Ae?(u[0]=(D*Pe-F*He+V*Te)*(Ae=1/Ae),u[1]=(x*He-A*Pe-E*Te)*Ae,u[2]=(mt*Be-bt*le+Et*qt)*Ae,u[3]=(rt*le-X*Be-at*qt)*Ae,u[4]=(F*ke-P*Pe-V*Oe)*Ae,u[5]=(h*Pe-x*ke+E*Oe)*Ae,u[6]=(bt*jt-ct*Be-Et*Rt)*Ae,u[7]=(q*Be-rt*jt+at*Rt)*Ae,u[8]=(P*He-D*ke+V*Je)*Ae,u[9]=(A*ke-h*He-E*Je)*Ae,u[10]=(ct*le-mt*jt+Et*Vt)*Ae,u[11]=(X*jt-q*le-at*Vt)*Ae,u[12]=(D*Oe-P*Te-F*Je)*Ae,u[13]=(h*Te-A*Oe+x*Je)*Ae,u[14]=(mt*Rt-ct*qt-bt*Vt)*Ae,u[15]=(q*qt-X*Rt+rt*Vt)*Ae,u):null},n.at=MC,n.au=mC,n.av=EC,n.aw=function(){let u={},a=te.$version;for(let h in te.$root){let A=te.$root[h];if(A.required){let x=null;x=h===\"version\"?a:A.type===\"array\"?[]:{},x!=null&&(u[h]=x)}}return u},n.ax=oi,n.ay=h_,n.az=Xn,n.b=function(u,a){let h=new Blob([new Uint8Array(u)],{type:\"image/png\"});createImageBitmap(h).then(A=>{a(null,A)}).catch(A=>{a(new Error(`Could not load image because of ${A.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})},n.b0=Us,n.b1=function(u,a){var h=u[0],A=u[1],x=u[2],E=u[3],P=u[4],D=u[5],F=u[6],V=u[7],q=u[8],X=u[9],rt=u[10],at=u[11],ct=u[12],mt=u[13],bt=u[14],Et=u[15],Vt=a[0],Rt=a[1],jt=a[2],qt=a[3],le=a[4],Be=a[5],Je=a[6],Oe=a[7],ke=a[8],Te=a[9],He=a[10],Pe=a[11],Ae=a[12],ur=a[13],ir=a[14],ri=a[15];return Math.abs(h-Vt)<=be*Math.max(1,Math.abs(h),Math.abs(Vt))&&Math.abs(A-Rt)<=be*Math.max(1,Math.abs(A),Math.abs(Rt))&&Math.abs(x-jt)<=be*Math.max(1,Math.abs(x),Math.abs(jt))&&Math.abs(E-qt)<=be*Math.max(1,Math.abs(E),Math.abs(qt))&&Math.abs(P-le)<=be*Math.max(1,Math.abs(P),Math.abs(le))&&Math.abs(D-Be)<=be*Math.max(1,Math.abs(D),Math.abs(Be))&&Math.abs(F-Je)<=be*Math.max(1,Math.abs(F),Math.abs(Je))&&Math.abs(V-Oe)<=be*Math.max(1,Math.abs(V),Math.abs(Oe))&&Math.abs(q-ke)<=be*Math.max(1,Math.abs(q),Math.abs(ke))&&Math.abs(X-Te)<=be*Math.max(1,Math.abs(X),Math.abs(Te))&&Math.abs(rt-He)<=be*Math.max(1,Math.abs(rt),Math.abs(He))&&Math.abs(at-Pe)<=be*Math.max(1,Math.abs(at),Math.abs(Pe))&&Math.abs(ct-Ae)<=be*Math.max(1,Math.abs(ct),Math.abs(Ae))&&Math.abs(mt-ur)<=be*Math.max(1,Math.abs(mt),Math.abs(ur))&&Math.abs(bt-ir)<=be*Math.max(1,Math.abs(bt),Math.abs(ir))&&Math.abs(Et-ri)<=be*Math.max(1,Math.abs(Et),Math.abs(ri))},n.b2=function(u,a){return u[0]=a[0],u[1]=a[1],u[2]=a[2],u[3]=a[3],u[4]=a[4],u[5]=a[5],u[6]=a[6],u[7]=a[7],u[8]=a[8],u[9]=a[9],u[10]=a[10],u[11]=a[11],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15],u},n.b3=function(u,a,h){return u[0]=a[0]*h[0],u[1]=a[1]*h[1],u[2]=a[2]*h[2],u[3]=a[3]*h[3],u},n.b4=function(u,a){return u[0]*a[0]+u[1]*a[1]+u[2]*a[2]+u[3]*a[3]},n.b5=Pt,n.b6=EF,n.b7=SF,n.b8=function(u,a,h,A,x){var E,P=1/Math.tan(a/2);return u[0]=P/h,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=P,u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[11]=-1,u[12]=0,u[13]=0,u[15]=0,x!=null&&x!==1/0?(u[10]=(x+A)*(E=1/(A-x)),u[14]=2*x*A*E):(u[10]=-1,u[14]=-2*A),u},n.b9=function(u,a,h){var A=Math.sin(h),x=Math.cos(h),E=a[4],P=a[5],D=a[6],F=a[7],V=a[8],q=a[9],X=a[10],rt=a[11];return a!==u&&(u[0]=a[0],u[1]=a[1],u[2]=a[2],u[3]=a[3],u[12]=a[12],u[13]=a[13],u[14]=a[14],u[15]=a[15]),u[4]=E*x+V*A,u[5]=P*x+q*A,u[6]=D*x+X*A,u[7]=F*x+rt*A,u[8]=V*x-E*A,u[9]=q*x-P*A,u[10]=X*x-D*A,u[11]=rt*x-F*A,u},n.bA=f,n.bB=J6,n.bC=Qp,n.bD=ua,n.ba=K,n.bb=J,n.bc=function(u,a){return u[0]=a[0],u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=a[1],u[6]=0,u[7]=0,u[8]=0,u[9]=0,u[10]=a[2],u[11]=0,u[12]=0,u[13]=0,u[14]=0,u[15]=1,u},n.bd=class extends mh{},n.be=bC,n.bf=TF,n.bg=jK,n.bi=Qi,n.bj=function(u,a,h=!1){if(cs===c0||cs===iA||cs===nA)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");Au=Cc.resolveURL(u),cs=c0,dh=a,u0(),h||d_()},n.bk=h0,n.bl=function(u,a){let h={};for(let x=0;xAe*js)}let Oe=P?\"center\":h.get(\"text-justify\").evaluate(V,{},u.canonical),ke=h.get(\"symbol-placement\"),Te=ke===\"point\"?h.get(\"text-max-width\").evaluate(V,{},u.canonical)*js:0,He=()=>{u.bucket.allowVerticalPlacement&&s0(jt)&&(ct.vertical=ZS(mt,u.glyphMap,u.glyphPositions,u.imagePositions,q,Te,E,Be,\"left\",le,Et,n.ai.vertical,!0,ke,rt,X))};if(!P&&Je){let Pe=new Set;if(Oe===\"auto\")for(let ur=0;ur{a(null,h),URL.revokeObjectURL(h.src),h.onload=null,window.requestAnimationFrame(()=>{h.src=Uo})},h.onerror=()=>a(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));let A=new Blob([new Uint8Array(u)],{type:\"image/png\"});h.src=u.byteLength?URL.createObjectURL(A):Uo},n.e=kt,n.f=function(u,a){return jo(kt(u,{type:\"json\"}),a)},n.g=Ci,n.h=Cc,n.i=zi,n.j=so,n.k=os,n.l=cl,n.m=jo,n.n=function(u){return new fC(u).readFields(gK,[])},n.o=function(u,a,h){if(!u.length)return h(null,[]);let A=u.length,x=new Array(u.length),E=null;u.forEach((P,D)=>{a(P,(F,V)=>{F&&(E=F),x[D]=V,--A==0&&h(E,x)})})},n.p=aF,n.q=Ox,n.r=Gn,n.s=vo,n.t=uh,n.u=Re,n.v=te,n.w=tr,n.x=hh,n.y=za,n.z=function([u,a,h]){return a+=90,a*=Math.PI/180,h*=Math.PI/180,{x:u*Math.cos(a)*Math.sin(h),y:u*Math.sin(a)*Math.sin(h),z:u*Math.cos(h)}}}),i([\"./shared\"],function(n){\"use strict\";class o{constructor(tt){this.keyCache={},tt&&this.replace(tt)}replace(tt){this._layerConfigs={},this._layers={},this.update(tt,[])}update(tt,nt){for(let vt of tt){this._layerConfigs[vt.id]=vt;let xt=this._layers[vt.id]=n.aC(vt);xt._featureFilter=n.a6(xt.filter),this.keyCache[vt.id]&&delete this.keyCache[vt.id]}for(let vt of nt)delete this.keyCache[vt],delete this._layerConfigs[vt],delete this._layers[vt];this.familiesBySource={};let ht=n.bl(Object.values(this._layerConfigs),this.keyCache);for(let vt of ht){let xt=vt.map(se=>this._layers[se.id]),_t=xt[0];if(_t.visibility===\"none\")continue;let Ot=_t.source||\"\",Mt=this.familiesBySource[Ot];Mt||(Mt=this.familiesBySource[Ot]={});let Ut=_t.sourceLayer||\"_geojsonTileLayer\",re=Mt[Ut];re||(re=Mt[Ut]=[]),re.push(xt)}}}class c{constructor(tt){let nt={},ht=[];for(let Ot in tt){let Mt=tt[Ot],Ut=nt[Ot]={};for(let re in Mt){let se=Mt[+re];if(!se||se.bitmap.width===0||se.bitmap.height===0)continue;let ae={x:0,y:0,w:se.bitmap.width+2,h:se.bitmap.height+2};ht.push(ae),Ut[re]={rect:ae,metrics:se.metrics}}}let{w:vt,h:xt}=n.p(ht),_t=new n.q({width:vt||1,height:xt||1});for(let Ot in tt){let Mt=tt[Ot];for(let Ut in Mt){let re=Mt[+Ut];if(!re||re.bitmap.width===0||re.bitmap.height===0)continue;let se=nt[Ot][Ut].rect;n.q.copy(re.bitmap,_t,{x:0,y:0},{x:se.x+1,y:se.y+1},re.bitmap)}}this.image=_t,this.positions=nt}}n.bm(\"GlyphAtlas\",c);class f{constructor(tt){this.tileID=new n.O(tt.tileID.overscaledZ,tt.tileID.wrap,tt.tileID.canonical.z,tt.tileID.canonical.x,tt.tileID.canonical.y),this.uid=tt.uid,this.zoom=tt.zoom,this.pixelRatio=tt.pixelRatio,this.tileSize=tt.tileSize,this.source=tt.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=tt.showCollisionBoxes,this.collectResourceTiming=!!tt.collectResourceTiming,this.returnDependencies=!!tt.returnDependencies,this.promoteId=tt.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1}parse(tt,nt,ht,vt,xt){this.status=\"parsing\",this.data=tt,this.collisionBoxArray=new n.a3;let _t=new n.bn(Object.keys(tt.layers).sort()),Ot=new n.bo(this.tileID,this.promoteId);Ot.bucketLayerIDs=[];let Mt={},Ut={featureIndex:Ot,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:ht},re=nt.familiesBySource[this.source];for(let ni in re){let Hr=tt.layers[ni];if(!Hr)continue;Hr.version===1&&n.w(`Vector tile source \"${this.source}\" layer \"${ni}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);let Un=_t.encode(ni),ki=[];for(let yn=0;yn=Jn.maxzoom||Jn.visibility!==\"none\"&&(_(yn,this.zoom,ht),(Mt[Jn.id]=Jn.createBucket({index:Ot.bucketLayerIDs.length,layers:yn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Un,sourceID:this.source})).populate(ki,Ut,this.tileID.canonical),Ot.bucketLayerIDs.push(yn.map(oa=>oa.id)))}}let se,ae,ar,_r,Ye=n.aH(Ut.glyphDependencies,ni=>Object.keys(ni).map(Number));this.inFlightDependencies.forEach(ni=>ni?.cancel()),this.inFlightDependencies=[];let lr=++this.dependencySentinel;Object.keys(Ye).length?this.inFlightDependencies.push(vt.send(\"getGlyphs\",{uid:this.uid,stacks:Ye,source:this.source,tileID:this.tileID,type:\"glyphs\"},(ni,Hr)=>{lr===this.dependencySentinel&&(se||(se=ni,ae=Hr,Bi.call(this)))})):ae={};let br=Object.keys(Ut.iconDependencies);br.length?this.inFlightDependencies.push(vt.send(\"getImages\",{icons:br,source:this.source,tileID:this.tileID,type:\"icons\"},(ni,Hr)=>{lr===this.dependencySentinel&&(se||(se=ni,ar=Hr,Bi.call(this)))})):ar={};let vi=Object.keys(Ut.patternDependencies);function Bi(){if(se)return xt(se);if(ae&&ar&&_r){let ni=new c(ae),Hr=new n.bp(ar,_r);for(let Un in Mt){let ki=Mt[Un];ki instanceof n.a4?(_(ki.layers,this.zoom,ht),n.bq({bucket:ki,glyphMap:ae,glyphPositions:ni.positions,imageMap:ar,imagePositions:Hr.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):ki.hasPattern&&(ki instanceof n.br||ki instanceof n.bs||ki instanceof n.bt)&&(_(ki.layers,this.zoom,ht),ki.addFeatures(Ut,this.tileID.canonical,Hr.patternPositions))}this.status=\"done\",xt(null,{buckets:Object.values(Mt).filter(Un=>!Un.isEmpty()),featureIndex:Ot,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:ni.image,imageAtlas:Hr,glyphMap:this.returnDependencies?ae:null,iconMap:this.returnDependencies?ar:null,glyphPositions:this.returnDependencies?ni.positions:null})}}vi.length?this.inFlightDependencies.push(vt.send(\"getImages\",{icons:vi,source:this.source,tileID:this.tileID,type:\"patterns\"},(ni,Hr)=>{lr===this.dependencySentinel&&(se||(se=ni,_r=Hr,Bi.call(this)))})):_r={},Bi.call(this)}}function _(gt,tt,nt){let ht=new n.a8(tt);for(let vt of gt)vt.recalculate(ht,nt)}function w(gt,tt){let nt=n.l(gt.request,(ht,vt,xt,_t)=>{if(ht)tt(ht);else if(vt)try{let Ot=new n.bw.VectorTile(new n.bv(vt));tt(null,{vectorTile:Ot,rawData:vt,cacheControl:xt,expires:_t})}catch(Ot){let Mt=new Uint8Array(vt),Ut=`Unable to parse the tile at ${gt.request.url}, `;Ut+=Mt[0]===31&&Mt[1]===139?\"please make sure the data is not gzipped and that you have configured the relevant header in the server\":`got error: ${Ot.messge}`,tt(new Error(Ut))}});return()=>{nt.cancel(),tt()}}class I{constructor(tt,nt,ht,vt){this.actor=tt,this.layerIndex=nt,this.availableImages=ht,this.loadVectorData=vt||w,this.fetching={},this.loading={},this.loaded={}}loadTile(tt,nt){let ht=tt.uid;this.loading||(this.loading={});let vt=!!(tt&&tt.request&&tt.request.collectResourceTiming)&&new n.bu(tt.request),xt=this.loading[ht]=new f(tt);xt.abort=this.loadVectorData(tt,(_t,Ot)=>{if(delete this.loading[ht],_t||!Ot)return xt.status=\"done\",this.loaded[ht]=xt,nt(_t);let Mt=Ot.rawData,Ut={};Ot.expires&&(Ut.expires=Ot.expires),Ot.cacheControl&&(Ut.cacheControl=Ot.cacheControl);let re={};if(vt){let se=vt.finish();se&&(re.resourceTiming=JSON.parse(JSON.stringify(se)))}xt.vectorTile=Ot.vectorTile,xt.parse(Ot.vectorTile,this.layerIndex,this.availableImages,this.actor,(se,ae)=>{if(delete this.fetching[ht],se||!ae)return nt(se);nt(null,n.e({rawTileData:Mt.slice(0)},ae,Ut,re))}),this.loaded=this.loaded||{},this.loaded[ht]=xt,this.fetching[ht]={rawTileData:Mt,cacheControl:Ut,resourceTiming:re}})}reloadTile(tt,nt){let ht=this.loaded,vt=tt.uid;if(ht&&ht[vt]){let xt=ht[vt];xt.showCollisionBoxes=tt.showCollisionBoxes,xt.status===\"parsing\"?xt.parse(xt.vectorTile,this.layerIndex,this.availableImages,this.actor,(_t,Ot)=>{if(_t||!Ot)return nt(_t,Ot);let Mt;if(this.fetching[vt]){let{rawTileData:Ut,cacheControl:re,resourceTiming:se}=this.fetching[vt];delete this.fetching[vt],Mt=n.e({rawTileData:Ut.slice(0)},Ot,re,se)}else Mt=Ot;nt(null,Mt)}):xt.status===\"done\"&&(xt.vectorTile?xt.parse(xt.vectorTile,this.layerIndex,this.availableImages,this.actor,nt):nt())}}abortTile(tt,nt){let ht=this.loading,vt=tt.uid;ht&&ht[vt]&&ht[vt].abort&&(ht[vt].abort(),delete ht[vt]),nt()}removeTile(tt,nt){let ht=this.loaded,vt=tt.uid;ht&&ht[vt]&&delete ht[vt],nt()}}class R{constructor(){this.loaded={}}loadTile(tt,nt){return n._(this,void 0,void 0,function*(){let{uid:ht,encoding:vt,rawImageData:xt,redFactor:_t,greenFactor:Ot,blueFactor:Mt,baseShift:Ut}=tt,re=xt.width+2,se=xt.height+2,ae=n.a(xt)?new n.R({width:re,height:se},yield n.bx(xt,-1,-1,re,se)):xt,ar=new n.by(ht,ae,vt,_t,Ot,Mt,Ut);this.loaded=this.loaded||{},this.loaded[ht]=ar,nt(null,ar)})}removeTile(tt){let nt=this.loaded,ht=tt.uid;nt&&nt[ht]&&delete nt[ht]}}function N(gt,tt){if(gt.length!==0){j(gt[0],tt);for(var nt=1;nt=Math.abs(Ot)?nt-Mt+Ot:Ot-Mt+nt,nt=Mt}nt+ht>=0!=!!tt&>.reverse()}var Q=n.bz(function gt(tt,nt){var ht,vt=tt&&tt.type;if(vt===\"FeatureCollection\")for(ht=0;ht>31}function zi(gt,tt){for(var nt=gt.loadGeometry(),ht=gt.type,vt=0,xt=0,_t=nt.length,Ot=0;Ot<_t;Ot++){var Mt=nt[Ot],Ut=1;ht===1&&(Ut=Mt.length),tt.writeVarint(er(1,Ut));for(var re=ht===3?Mt.length-1:Mt.length,se=0;segt},rh=Math.fround||(Vo=new Float32Array(1),gt=>(Vo[0]=+gt,Vo[0]));var Vo;let wi=3,Bs=5,ll=6;class Cc{constructor(tt){this.options=Object.assign(Object.create(Uo),tt),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(tt){let{log:nt,minZoom:ht,maxZoom:vt}=this.options;nt&&console.time(\"total time\");let xt=`prepare ${tt.length} points`;nt&&console.time(xt),this.points=tt;let _t=[];for(let Mt=0;Mt=ht;Mt--){let Ut=+Date.now();Ot=this.trees[Mt]=this._createTree(this._cluster(Ot,Mt)),nt&&console.log(\"z%d: %d clusters in %dms\",Mt,Ot.numItems,+Date.now()-Ut)}return nt&&console.timeEnd(\"total time\"),this}getClusters(tt,nt){let ht=((tt[0]+180)%360+360)%360-180,vt=Math.max(-90,Math.min(90,tt[1])),xt=tt[2]===180?180:((tt[2]+180)%360+360)%360-180,_t=Math.max(-90,Math.min(90,tt[3]));if(tt[2]-tt[0]>=360)ht=-180,xt=180;else if(ht>xt){let se=this.getClusters([ht,vt,180,_t],nt),ae=this.getClusters([-180,vt,xt,_t],nt);return se.concat(ae)}let Ot=this.trees[this._limitZoom(nt)],Mt=Ot.range(Xn(ht),Ci(_t),Xn(xt),Ci(vt)),Ut=Ot.data,re=[];for(let se of Mt){let ae=this.stride*se;re.push(Ut[ae+Bs]>1?Lc(Ut,ae,this.clusterProps):this.points[Ut[ae+wi]])}return re}getChildren(tt){let nt=this._getOriginId(tt),ht=this._getOriginZoom(tt),vt=\"No cluster with the specified id.\",xt=this.trees[ht];if(!xt)throw new Error(vt);let _t=xt.data;if(nt*this.stride>=_t.length)throw new Error(vt);let Ot=this.options.radius/(this.options.extent*Math.pow(2,ht-1)),Mt=xt.within(_t[nt*this.stride],_t[nt*this.stride+1],Ot),Ut=[];for(let re of Mt){let se=re*this.stride;_t[se+4]===tt&&Ut.push(_t[se+Bs]>1?Lc(_t,se,this.clusterProps):this.points[_t[se+wi]])}if(Ut.length===0)throw new Error(vt);return Ut}getLeaves(tt,nt,ht){let vt=[];return this._appendLeaves(vt,tt,nt=nt||10,ht=ht||0,0),vt}getTile(tt,nt,ht){let vt=this.trees[this._limitZoom(tt)],xt=Math.pow(2,tt),{extent:_t,radius:Ot}=this.options,Mt=Ot/_t,Ut=(ht-Mt)/xt,re=(ht+1+Mt)/xt,se={features:[]};return this._addTileFeatures(vt.range((nt-Mt)/xt,Ut,(nt+1+Mt)/xt,re),vt.data,nt,ht,xt,se),nt===0&&this._addTileFeatures(vt.range(1-Mt/xt,Ut,1,re),vt.data,xt,ht,xt,se),nt===xt-1&&this._addTileFeatures(vt.range(0,Ut,Mt/xt,re),vt.data,-1,ht,xt,se),se.features.length?se:null}getClusterExpansionZoom(tt){let nt=this._getOriginZoom(tt)-1;for(;nt<=this.options.maxZoom;){let ht=this.getChildren(tt);if(nt++,ht.length!==1)break;tt=ht[0].properties.cluster_id}return nt}_appendLeaves(tt,nt,ht,vt,xt){let _t=this.getChildren(nt);for(let Ot of _t){let Mt=Ot.properties;if(Mt&&Mt.cluster?xt+Mt.point_count<=vt?xt+=Mt.point_count:xt=this._appendLeaves(tt,Mt.cluster_id,ht,vt,xt):xt1,re,se,ae;if(Ut)re=Qi(nt,Mt,this.clusterProps),se=nt[Mt],ae=nt[Mt+1];else{let Ye=this.points[nt[Mt+wi]];re=Ye.properties;let[lr,br]=Ye.geometry.coordinates;se=Xn(lr),ae=Ci(br)}let ar={type:1,geometry:[[Math.round(this.options.extent*(se*xt-ht)),Math.round(this.options.extent*(ae*xt-vt))]],tags:re},_r;_r=Ut||this.options.generateId?nt[Mt+wi]:this.points[nt[Mt+wi]].id,_r!==void 0&&(ar.id=_r),_t.features.push(ar)}}_limitZoom(tt){return Math.max(this.options.minZoom,Math.min(Math.floor(+tt),this.options.maxZoom+1))}_cluster(tt,nt){let{radius:ht,extent:vt,reduce:xt,minPoints:_t}=this.options,Ot=ht/(vt*Math.pow(2,nt)),Mt=tt.data,Ut=[],re=this.stride;for(let se=0;sent&&(lr+=Mt[vi+Bs])}if(lr>Ye&&lr>=_t){let br,vi=ae*Ye,Bi=ar*Ye,ni=-1,Hr=((se/re|0)<<5)+(nt+1)+this.points.length;for(let Un of _r){let ki=Un*re;if(Mt[ki+2]<=nt)continue;Mt[ki+2]=nt;let yn=Mt[ki+Bs];vi+=Mt[ki]*yn,Bi+=Mt[ki+1]*yn,Mt[ki+4]=Hr,xt&&(br||(br=this._map(Mt,se,!0),ni=this.clusterProps.length,this.clusterProps.push(br)),xt(br,this._map(Mt,ki)))}Mt[se+4]=Hr,Ut.push(vi/lr,Bi/lr,1/0,Hr,-1,lr),xt&&Ut.push(ni)}else{for(let br=0;br1)for(let br of _r){let vi=br*re;if(!(Mt[vi+2]<=nt)){Mt[vi+2]=nt;for(let Bi=0;Bi>5}_getOriginZoom(tt){return(tt-this.points.length)%32}_map(tt,nt,ht){if(tt[nt+Bs]>1){let _t=this.clusterProps[tt[nt+ll]];return ht?Object.assign({},_t):_t}let vt=this.points[tt[nt+wi]].properties,xt=this.options.map(vt);return ht&&xt===vt?Object.assign({},xt):xt}}function Lc(gt,tt,nt){return{type:\"Feature\",id:gt[tt+wi],properties:Qi(gt,tt,nt),geometry:{type:\"Point\",coordinates:[(ht=gt[tt],360*(ht-.5)),Kn(gt[tt+1])]}};var ht}function Qi(gt,tt,nt){let ht=gt[tt+Bs],vt=ht>=1e4?`${Math.round(ht/1e3)}k`:ht>=1e3?Math.round(ht/100)/10+\"k\":ht,xt=gt[tt+ll],_t=xt===-1?{}:Object.assign({},nt[xt]);return Object.assign(_t,{cluster:!0,cluster_id:gt[tt+wi],point_count:ht,point_count_abbreviated:vt})}function Xn(gt){return gt/360+.5}function Ci(gt){let tt=Math.sin(gt*Math.PI/180),nt=.5-.25*Math.log((1+tt)/(1-tt))/Math.PI;return nt<0?0:nt>1?1:nt}function Kn(gt){let tt=(180-360*gt)*Math.PI/180;return 360*Math.atan(Math.exp(tt))/Math.PI-90}function jo(gt,tt,nt,ht){for(var vt,xt=ht,_t=nt-tt>>1,Ot=nt-tt,Mt=gt[tt],Ut=gt[tt+1],re=gt[nt],se=gt[nt+1],ae=tt+3;aext)vt=ae,xt=ar;else if(ar===xt){var _r=Math.abs(ae-_t);_rht&&(vt-tt>3&&jo(gt,tt,vt,ht),gt[vt+2]=xt,nt-vt>3&&jo(gt,vt,nt,ht))}function cl(gt,tt,nt,ht,vt,xt){var _t=vt-nt,Ot=xt-ht;if(_t!==0||Ot!==0){var Mt=((gt-nt)*_t+(tt-ht)*Ot)/(_t*_t+Ot*Ot);Mt>1?(nt=vt,ht=xt):Mt>0&&(nt+=_t*Mt,ht+=Ot*Mt)}return(_t=gt-nt)*_t+(Ot=tt-ht)*Ot}function vo(gt,tt,nt,ht){var vt={id:gt===void 0?null:gt,type:tt,geometry:nt,tags:ht,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(xt){var _t=xt.geometry,Ot=xt.type;if(Ot===\"Point\"||Ot===\"MultiPoint\"||Ot===\"LineString\")Pa(xt,_t);else if(Ot===\"Polygon\"||Ot===\"MultiLineString\")for(var Mt=0;Mt<_t.length;Mt++)Pa(xt,_t[Mt]);else if(Ot===\"MultiPolygon\")for(Mt=0;Mt<_t.length;Mt++)for(var Ut=0;Ut<_t[Mt].length;Ut++)Pa(xt,_t[Mt][Ut])}(vt),vt}function Pa(gt,tt){for(var nt=0;nt0&&(_t+=ht?(vt*Ut-Mt*xt)/2:Math.sqrt(Math.pow(Mt-vt,2)+Math.pow(Ut-xt,2))),vt=Mt,xt=Ut}var re=tt.length-3;tt[2]=1,jo(tt,0,re,nt),tt[re+2]=1,tt.size=Math.abs(_t),tt.start=0,tt.end=tt.size}function Fl(gt,tt,nt,ht){for(var vt=0;vt1?1:nt}function pn(gt,tt,nt,ht,vt,xt,_t,Ot){if(ht/=tt,xt>=(nt/=tt)&&_t=ht)return null;for(var Mt=[],Ut=0;Ut=nt&&_r=ht)){var Ye=[];if(ae===\"Point\"||ae===\"MultiPoint\")gi(se,Ye,nt,ht,vt);else if(ae===\"LineString\")oi(se,Ye,nt,ht,vt,!1,Ot.lineMetrics);else if(ae===\"MultiLineString\")uu(se,Ye,nt,ht,vt,!1);else if(ae===\"Polygon\")uu(se,Ye,nt,ht,vt,!0);else if(ae===\"MultiPolygon\")for(var lr=0;lr=nt&&_t<=ht&&(tt.push(gt[xt]),tt.push(gt[xt+1]),tt.push(gt[xt+2]))}}function oi(gt,tt,nt,ht,vt,xt,_t){for(var Ot,Mt,Ut=oo(gt),re=vt===0?xo:hl,se=gt.start,ae=0;aent&&(Mt=re(Ut,ar,_r,lr,br,nt),_t&&(Ut.start=se+Ot*Mt)):vi>ht?Bi=nt&&(Mt=re(Ut,ar,_r,lr,br,nt),ni=!0),Bi>ht&&vi<=ht&&(Mt=re(Ut,ar,_r,lr,br,ht),ni=!0),!xt&&ni&&(_t&&(Ut.end=se+Ot*Mt),tt.push(Ut),Ut=oo(gt)),_t&&(se+=Ot)}var Hr=gt.length-3;ar=gt[Hr],_r=gt[Hr+1],Ye=gt[Hr+2],(vi=vt===0?ar:_r)>=nt&&vi<=ht&&ul(Ut,ar,_r,Ye),Hr=Ut.length-3,xt&&Hr>=3&&(Ut[Hr]!==Ut[0]||Ut[Hr+1]!==Ut[1])&&ul(Ut,Ut[0],Ut[1],Ut[2]),Ut.length&&tt.push(Ut)}function oo(gt){var tt=[];return tt.size=gt.size,tt.start=gt.start,tt.end=gt.end,tt}function uu(gt,tt,nt,ht,vt,xt){for(var _t=0;_t_t.maxX&&(_t.maxX=re),se>_t.maxY&&(_t.maxY=se)}return _t}function zl(gt,tt,nt,ht){var vt=tt.geometry,xt=tt.type,_t=[];if(xt===\"Point\"||xt===\"MultiPoint\")for(var Ot=0;Ot0&&tt.size<(vt?_t:ht))nt.numPoints+=tt.length/3;else{for(var Ot=[],Mt=0;Mt_t)&&(nt.numSimplified++,Ot.push(tt[Mt]),Ot.push(tt[Mt+1])),nt.numPoints++;vt&&function(Ut,re){for(var se=0,ae=0,ar=Ut.length,_r=ar-2;ae0===re)for(ae=0,ar=Ut.length;ae24)throw new Error(\"maxZoom should be in the 0-24 range\");if(tt.promoteId&&tt.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var ht=function(vt,xt){var _t=[];if(vt.type===\"FeatureCollection\")for(var Ot=0;Ot1&&console.time(\"creation\"),ae=this.tiles[se]=An(gt,tt,nt,ht,Mt),this.tileCoords.push({z:tt,x:nt,y:ht}),Ut)){Ut>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",tt,nt,ht,ae.numFeatures,ae.numPoints,ae.numSimplified),console.timeEnd(\"creation\"));var ar=\"z\"+tt;this.stats[ar]=(this.stats[ar]||0)+1,this.total++}if(ae.source=gt,vt){if(tt===Mt.maxZoom||tt===vt)continue;var _r=1<1&&console.time(\"clipping\");var Ye,lr,br,vi,Bi,ni,Hr=.5*Mt.buffer/Mt.extent,Un=.5-Hr,ki=.5+Hr,yn=1+Hr;Ye=lr=br=vi=null,Bi=pn(gt,re,nt-Hr,nt+ki,0,ae.minX,ae.maxX,Mt),ni=pn(gt,re,nt+Un,nt+yn,0,ae.minX,ae.maxX,Mt),gt=null,Bi&&(Ye=pn(Bi,re,ht-Hr,ht+ki,1,ae.minY,ae.maxY,Mt),lr=pn(Bi,re,ht+Un,ht+yn,1,ae.minY,ae.maxY,Mt),Bi=null),ni&&(br=pn(ni,re,ht-Hr,ht+ki,1,ae.minY,ae.maxY,Mt),vi=pn(ni,re,ht+Un,ht+yn,1,ae.minY,ae.maxY,Mt),ni=null),Ut>1&&console.timeEnd(\"clipping\"),Ot.push(Ye||[],tt+1,2*nt,2*ht),Ot.push(lr||[],tt+1,2*nt,2*ht+1),Ot.push(br||[],tt+1,2*nt+1,2*ht),Ot.push(vi||[],tt+1,2*nt+1,2*ht+1)}}},Se.prototype.getTile=function(gt,tt,nt){var ht=this.options,vt=ht.extent,xt=ht.debug;if(gt<0||gt>24)return null;var _t=1<1&&console.log(\"drilling down to z%d-%d-%d\",gt,tt,nt);for(var Mt,Ut=gt,re=tt,se=nt;!Mt&&Ut>0;)Ut--,re=Math.floor(re/2),se=Math.floor(se/2),Mt=this.tiles[Dr(Ut,re,se)];return Mt&&Mt.source?(xt>1&&console.log(\"found parent tile z%d-%d-%d\",Ut,re,se),xt>1&&console.time(\"drilling down\"),this.splitTile(Mt.source,Ut,re,se,gt,tt,nt),xt>1&&console.timeEnd(\"drilling down\"),this.tiles[Ot]?ve(this.tiles[Ot],vt):null):null};class Tr extends I{constructor(tt,nt,ht,vt){super(tt,nt,ht),this._dataUpdateable=new Map,this.loadGeoJSON=(xt,_t)=>{let{promoteId:Ot}=xt;if(xt.request)return n.f(xt.request,(Mt,Ut,re,se)=>{this._dataUpdateable=Fs(Ut,Ot)?La(Ut,Ot):void 0,_t(Mt,Ut,re,se)});if(typeof xt.data==\"string\")try{let Mt=JSON.parse(xt.data);this._dataUpdateable=Fs(Mt,Ot)?La(Mt,Ot):void 0,_t(null,Mt)}catch{_t(new Error(`Input data given to '${xt.source}' is not a valid GeoJSON object.`))}else xt.dataDiff?this._dataUpdateable?(function(Mt,Ut,re){var se,ae,ar,_r;if(Ut.removeAll&&Mt.clear(),Ut.remove)for(let Ye of Ut.remove)Mt.delete(Ye);if(Ut.add)for(let Ye of Ut.add){let lr=mr(Ye,re);lr!=null&&Mt.set(lr,Ye)}if(Ut.update)for(let Ye of Ut.update){let lr=Mt.get(Ye.id);if(lr==null)continue;let br=!Ye.removeAllProperties&&(((se=Ye.removeProperties)===null||se===void 0?void 0:se.length)>0||((ae=Ye.addOrUpdateProperties)===null||ae===void 0?void 0:ae.length)>0);if((Ye.newGeometry||Ye.removeAllProperties||br)&&(lr=Object.assign({},lr),Mt.set(Ye.id,lr),br&&(lr.properties=Object.assign({},lr.properties))),Ye.newGeometry&&(lr.geometry=Ye.newGeometry),Ye.removeAllProperties)lr.properties={};else if(((ar=Ye.removeProperties)===null||ar===void 0?void 0:ar.length)>0)for(let vi of Ye.removeProperties)Object.prototype.hasOwnProperty.call(lr.properties,vi)&&delete lr.properties[vi];if(((_r=Ye.addOrUpdateProperties)===null||_r===void 0?void 0:_r.length)>0)for(let{key:vi,value:Bi}of Ye.addOrUpdateProperties)lr.properties[vi]=Bi}}(this._dataUpdateable,xt.dataDiff,Ot),_t(null,{type:\"FeatureCollection\",features:Array.from(this._dataUpdateable.values())})):_t(new Error(`Cannot update existing geojson data in ${xt.source}`)):_t(new Error(`Input data given to '${xt.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,vt&&(this.loadGeoJSON=vt)}loadGeoJSONTile(tt,nt){let ht=tt.tileID.canonical;if(!this._geoJSONIndex)return nt(null,null);let vt=this._geoJSONIndex.getTile(ht.z,ht.x,ht.y);if(!vt)return nt(null,null);let xt=new class{constructor(Ot){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=n.N,this.length=Ot.length,this._features=Ot}feature(Ot){return new class{constructor(Mt){this._feature=Mt,this.extent=n.N,this.type=Mt.type,this.properties=Mt.tags,\"id\"in Mt&&!isNaN(Mt.id)&&(this.id=parseInt(Mt.id,10))}loadGeometry(){if(this._feature.type===1){let Mt=[];for(let Ut of this._feature.geometry)Mt.push([new n.P(Ut[0],Ut[1])]);return Mt}{let Mt=[];for(let Ut of this._feature.geometry){let re=[];for(let se of Ut)re.push(new n.P(se[0],se[1]));Mt.push(re)}return Mt}}toGeoJSON(Mt,Ut,re){return et.call(this,Mt,Ut,re)}}(this._features[Ot])}}(vt.features),_t=Ic(xt);_t.byteOffset===0&&_t.byteLength===_t.buffer.byteLength||(_t=new Uint8Array(_t)),nt(null,{vectorTile:xt,rawData:_t.buffer})}loadData(tt,nt){var ht;(ht=this._pendingRequest)===null||ht===void 0||ht.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});let vt=!!(tt&&tt.request&&tt.request.collectResourceTiming)&&new n.bu(tt.request);this._pendingCallback=nt,this._pendingRequest=this.loadGeoJSON(tt,(xt,_t)=>{if(delete this._pendingCallback,delete this._pendingRequest,xt||!_t)return nt(xt);if(typeof _t!=\"object\")return nt(new Error(`Input data given to '${tt.source}' is not a valid GeoJSON object.`));{Q(_t,!0);try{if(tt.filter){let Mt=n.bC(tt.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(Mt.result===\"error\")throw new Error(Mt.value.map(re=>`${re.key}: ${re.message}`).join(\", \"));_t={type:\"FeatureCollection\",features:_t.features.filter(re=>Mt.value.evaluate({zoom:0},re))}}this._geoJSONIndex=tt.cluster?new Cc(function({superclusterOptions:Mt,clusterProperties:Ut}){if(!Ut||!Mt)return Mt;let re={},se={},ae={accumulated:null,zoom:0},ar={properties:null},_r=Object.keys(Ut);for(let Ye of _r){let[lr,br]=Ut[Ye],vi=n.bC(br),Bi=n.bC(typeof lr==\"string\"?[lr,[\"accumulated\"],[\"get\",Ye]]:lr);re[Ye]=vi.value,se[Ye]=Bi.value}return Mt.map=Ye=>{ar.properties=Ye;let lr={};for(let br of _r)lr[br]=re[br].evaluate(ae,ar);return lr},Mt.reduce=(Ye,lr)=>{ar.properties=lr;for(let br of _r)ae.accumulated=Ye[br],Ye[br]=se[br].evaluate(ae,ar)},Mt}(tt)).load(_t.features):function(Mt,Ut){return new Se(Mt,Ut)}(_t,tt.geojsonVtOptions)}catch(Mt){return nt(Mt)}this.loaded={};let Ot={};if(vt){let Mt=vt.finish();Mt&&(Ot.resourceTiming={},Ot.resourceTiming[tt.source]=JSON.parse(JSON.stringify(Mt)))}nt(null,Ot)}})}reloadTile(tt,nt){let ht=this.loaded;return ht&&ht[tt.uid]?super.reloadTile(tt,nt):this.loadTile(tt,nt)}removeSource(tt,nt){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),nt()}getClusterExpansionZoom(tt,nt){try{nt(null,this._geoJSONIndex.getClusterExpansionZoom(tt.clusterId))}catch(ht){nt(ht)}}getClusterChildren(tt,nt){try{nt(null,this._geoJSONIndex.getChildren(tt.clusterId))}catch(ht){nt(ht)}}getClusterLeaves(tt,nt){try{nt(null,this._geoJSONIndex.getLeaves(tt.clusterId,tt.limit,tt.offset))}catch(ht){nt(ht)}}}class sa{constructor(tt){this.self=tt,this.actor=new n.C(tt,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:I,geojson:Tr},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(nt,ht)=>{if(this.workerSourceTypes[nt])throw new Error(`Worker source with name \"${nt}\" already registered.`);this.workerSourceTypes[nt]=ht},this.self.registerRTLTextPlugin=nt=>{if(n.bD.isParsed())throw new Error(\"RTL text plugin already registered.\");n.bD.applyArabicShaping=nt.applyArabicShaping,n.bD.processBidirectionalText=nt.processBidirectionalText,n.bD.processStyledBidirectionalText=nt.processStyledBidirectionalText}}setReferrer(tt,nt){this.referrer=nt}setImages(tt,nt,ht){this.availableImages[tt]=nt;for(let vt in this.workerSources[tt]){let xt=this.workerSources[tt][vt];for(let _t in xt)xt[_t].availableImages=nt}ht()}setLayers(tt,nt,ht){this.getLayerIndex(tt).replace(nt),ht()}updateLayers(tt,nt,ht){this.getLayerIndex(tt).update(nt.layers,nt.removedIds),ht()}loadTile(tt,nt,ht){this.getWorkerSource(tt,nt.type,nt.source).loadTile(nt,ht)}loadDEMTile(tt,nt,ht){this.getDEMWorkerSource(tt,nt.source).loadTile(nt,ht)}reloadTile(tt,nt,ht){this.getWorkerSource(tt,nt.type,nt.source).reloadTile(nt,ht)}abortTile(tt,nt,ht){this.getWorkerSource(tt,nt.type,nt.source).abortTile(nt,ht)}removeTile(tt,nt,ht){this.getWorkerSource(tt,nt.type,nt.source).removeTile(nt,ht)}removeDEMTile(tt,nt){this.getDEMWorkerSource(tt,nt.source).removeTile(nt)}removeSource(tt,nt,ht){if(!this.workerSources[tt]||!this.workerSources[tt][nt.type]||!this.workerSources[tt][nt.type][nt.source])return;let vt=this.workerSources[tt][nt.type][nt.source];delete this.workerSources[tt][nt.type][nt.source],vt.removeSource!==void 0?vt.removeSource(nt,ht):ht()}loadWorkerSource(tt,nt,ht){try{this.self.importScripts(nt.url),ht()}catch(vt){ht(vt.toString())}}syncRTLPluginState(tt,nt,ht){try{n.bD.setState(nt);let vt=n.bD.getPluginURL();if(n.bD.isLoaded()&&!n.bD.isParsed()&&vt!=null){this.self.importScripts(vt);let xt=n.bD.isParsed();ht(xt?void 0:new Error(`RTL Text Plugin failed to import scripts from ${vt}`),xt)}}catch(vt){ht(vt.toString())}}getAvailableImages(tt){let nt=this.availableImages[tt];return nt||(nt=[]),nt}getLayerIndex(tt){let nt=this.layerIndexes[tt];return nt||(nt=this.layerIndexes[tt]=new o),nt}getWorkerSource(tt,nt,ht){return this.workerSources[tt]||(this.workerSources[tt]={}),this.workerSources[tt][nt]||(this.workerSources[tt][nt]={}),this.workerSources[tt][nt][ht]||(this.workerSources[tt][nt][ht]=new this.workerSourceTypes[nt]({send:(vt,xt,_t)=>{this.actor.send(vt,xt,_t,tt)}},this.getLayerIndex(tt),this.getAvailableImages(tt))),this.workerSources[tt][nt][ht]}getDEMWorkerSource(tt,nt){return this.demWorkerSources[tt]||(this.demWorkerSources[tt]={}),this.demWorkerSources[tt][nt]||(this.demWorkerSources[tt][nt]=new R),this.demWorkerSources[tt][nt]}}return n.i()&&(self.worker=new sa(self)),sa}),i([\"./shared\"],function(n){\"use strict\";var o=\"3.6.2\";class c{static testProp(l){if(!c.docStyle)return l[0];for(let d=0;d{window.removeEventListener(\"click\",c.suppressClickInternal,!0)},0)}static mousePos(l,d){let v=l.getBoundingClientRect();return new n.P(d.clientX-v.left-l.clientLeft,d.clientY-v.top-l.clientTop)}static touchPos(l,d){let v=l.getBoundingClientRect(),b=[];for(let M=0;M{l=[],d=0,v=0,b={}},T.addThrottleControl=W=>{let Z=v++;return b[Z]=W,Z},T.removeThrottleControl=W=>{delete b[W],B()},T.getImage=(W,Z,$=!0)=>{f.supported&&(W.headers||(W.headers={}),W.headers.accept=\"image/webp,*/*\");let st={requestParameters:W,supportImageRefresh:$,callback:Z,cancelled:!1,completed:!1,cancel:()=>{st.completed||st.cancelled||(st.cancelled=!0,st.innerRequest&&(st.innerRequest.cancel(),d--),B())}};return l.push(st),B(),st};let M=W=>{let{requestParameters:Z,supportImageRefresh:$,callback:st}=W;return n.e(Z,{type:\"image\"}),($!==!1||n.i()||n.g(Z.url)||Z.headers&&!Object.keys(Z.headers).reduce((At,pt)=>At&&pt===\"accept\",!0)?n.m:U)(Z,(At,pt,yt,dt)=>{O(W,st,At,pt,yt,dt)})},O=(W,Z,$,st,At,pt)=>{$?Z($):st instanceof HTMLImageElement||n.a(st)?Z(null,st):st&&((yt,dt)=>{typeof createImageBitmap==\"function\"?n.b(yt,dt):n.d(yt,dt)})(st,(yt,dt)=>{yt!=null?Z(yt):dt!=null&&Z(null,dt,{cacheControl:At,expires:pt})}),W.cancelled||(W.completed=!0,d--,B())},B=()=>{let W=(()=>{let Z=Object.keys(b),$=!1;if(Z.length>0){for(let st of Z)if($=b[st](),$)break}return $})()?n.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:n.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let Z=d;Z0;Z++){let $=l.shift();if($.cancelled){Z--;continue}let st=M($);d++,$.innerRequest=st}},U=(W,Z)=>{let $=new Image,st=W.url,At=!1,pt=W.credentials;return pt&&pt===\"include\"?$.crossOrigin=\"use-credentials\":(pt&&pt===\"same-origin\"||!n.s(st))&&($.crossOrigin=\"anonymous\"),$.fetchPriority=\"high\",$.onload=()=>{Z(null,$),$.onerror=$.onload=null},$.onerror=()=>{At||Z(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\")),$.onerror=$.onload=null},$.src=st,{cancel:()=>{At=!0,$.src=\"\"}}}}(j||(j={})),j.resetRequestQueue(),function(T){T.Glyphs=\"Glyphs\",T.Image=\"Image\",T.Source=\"Source\",T.SpriteImage=\"SpriteImage\",T.SpriteJSON=\"SpriteJSON\",T.Style=\"Style\",T.Tile=\"Tile\",T.Unknown=\"Unknown\"}(Q||(Q={}));class et{constructor(l){this._transformRequestFn=l}transformRequest(l,d){return this._transformRequestFn&&this._transformRequestFn(l,d)||{url:l}}normalizeSpriteURL(l,d,v){let b=function(M){let O=M.match(Y);if(!O)throw new Error(`Unable to parse URL \"${M}\"`);return{protocol:O[1],authority:O[2],path:O[3]||\"/\",params:O[4]?O[4].split(\"&\"):[]}}(l);return b.path+=`${d}${v}`,function(M){let O=M.params.length?`?${M.params.join(\"&\")}`:\"\";return`${M.protocol}://${M.authority}${M.path}${O}`}(b)}setTransformRequest(l){this._transformRequestFn=l}}let Y=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function K(T){var l=new n.A(3);return l[0]=T[0],l[1]=T[1],l[2]=T[2],l}var J,ut=function(T,l,d){return T[0]=l[0]-d[0],T[1]=l[1]-d[1],T[2]=l[2]-d[2],T};J=new n.A(3),n.A!=Float32Array&&(J[0]=0,J[1]=0,J[2]=0);var Pt=function(T){var l=T[0],d=T[1];return l*l+d*d};function kt(T){let l=[];if(typeof T==\"string\")l.push({id:\"default\",url:T});else if(T&&T.length>0){let d=[];for(let{id:v,url:b}of T){let M=`${v}${b}`;d.indexOf(M)===-1&&(d.push(M),l.push({id:v,url:b}))}}return l}function Kt(T,l,d,v,b){if(v)return void T(v);if(b!==Object.values(l).length||b!==Object.values(d).length)return;let M={};for(let O in l){M[O]={};let B=n.h.getImageCanvasContext(d[O]),U=l[O];for(let W in U){let{width:Z,height:$,x:st,y:At,sdf:pt,pixelRatio:yt,stretchX:dt,stretchY:Ft,content:Wt}=U[W];M[O][W]={data:null,pixelRatio:yt,sdf:pt,stretchX:dt,stretchY:Ft,content:Wt,spriteData:{width:Z,height:$,x:st,y:At,context:B}}}}T(null,M)}(function(){var T=new n.A(2);n.A!=Float32Array&&(T[0]=0,T[1]=0)})();class Zt{constructor(l,d,v,b){this.context=l,this.format=v,this.texture=l.gl.createTexture(),this.update(d,b)}update(l,d,v){let{width:b,height:M}=l,O=!(this.size&&this.size[0]===b&&this.size[1]===M||v),{context:B}=this,{gl:U}=B;if(this.useMipmap=!!(d&&d.useMipmap),U.bindTexture(U.TEXTURE_2D,this.texture),B.pixelStoreUnpackFlipY.set(!1),B.pixelStoreUnpack.set(1),B.pixelStoreUnpackPremultiplyAlpha.set(this.format===U.RGBA&&(!d||d.premultiply!==!1)),O)this.size=[b,M],l instanceof HTMLImageElement||l instanceof HTMLCanvasElement||l instanceof HTMLVideoElement||l instanceof ImageData||n.a(l)?U.texImage2D(U.TEXTURE_2D,0,this.format,this.format,U.UNSIGNED_BYTE,l):U.texImage2D(U.TEXTURE_2D,0,this.format,b,M,0,this.format,U.UNSIGNED_BYTE,l.data);else{let{x:W,y:Z}=v||{x:0,y:0};l instanceof HTMLImageElement||l instanceof HTMLCanvasElement||l instanceof HTMLVideoElement||l instanceof ImageData||n.a(l)?U.texSubImage2D(U.TEXTURE_2D,0,W,Z,U.RGBA,U.UNSIGNED_BYTE,l):U.texSubImage2D(U.TEXTURE_2D,0,W,Z,b,M,U.RGBA,U.UNSIGNED_BYTE,l.data)}this.useMipmap&&this.isSizePowerOfTwo()&&U.generateMipmap(U.TEXTURE_2D)}bind(l,d,v){let{context:b}=this,{gl:M}=b;M.bindTexture(M.TEXTURE_2D,this.texture),v!==M.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(v=M.LINEAR),l!==this.filter&&(M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MAG_FILTER,l),M.texParameteri(M.TEXTURE_2D,M.TEXTURE_MIN_FILTER,v||l),this.filter=l),d!==this.wrap&&(M.texParameteri(M.TEXTURE_2D,M.TEXTURE_WRAP_S,d),M.texParameteri(M.TEXTURE_2D,M.TEXTURE_WRAP_T,d),this.wrap=d)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:l}=this.context;l.deleteTexture(this.texture),this.texture=null}}function ce(T){let{userImage:l}=T;return!!(l&&l.render&&l.render())&&(T.data.replace(new Uint8Array(l.data.buffer)),!0)}class ue extends n.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new n.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(l){if(this.loaded!==l&&(this.loaded=l,l)){for(let{ids:d,callback:v}of this.requestors)this._notify(d,v);this.requestors=[]}}getImage(l){let d=this.images[l];if(d&&!d.data&&d.spriteData){let v=d.spriteData;d.data=new n.R({width:v.width,height:v.height},v.context.getImageData(v.x,v.y,v.width,v.height).data),d.spriteData=null}return d}addImage(l,d){if(this.images[l])throw new Error(`Image id ${l} already exist, use updateImage instead`);this._validate(l,d)&&(this.images[l]=d)}_validate(l,d){let v=!0,b=d.data||d.spriteData;return this._validateStretch(d.stretchX,b&&b.width)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"stretchX\" value`))),v=!1),this._validateStretch(d.stretchY,b&&b.height)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"stretchY\" value`))),v=!1),this._validateContent(d.content,d)||(this.fire(new n.j(new Error(`Image \"${l}\" has invalid \"content\" value`))),v=!1),v}_validateStretch(l,d){if(!l)return!0;let v=0;for(let b of l){if(b[0]-1);U++,M[U]=B,O[U]=W,O[U+1]=Ge}for(let B=0,U=0;B{let B=this.entries[b];B||(B=this.entries[b]={glyphs:{},requests:{},ranges:{}});let U=B.glyphs[M];if(U!==void 0)return void O(null,{stack:b,id:M,glyph:U});if(U=this._tinySDF(B,b,M),U)return B.glyphs[M]=U,void O(null,{stack:b,id:M,glyph:U});let W=Math.floor(M/256);if(256*W>65535)return void O(new Error(\"glyphs > 65535 not supported\"));if(B.ranges[W])return void O(null,{stack:b,id:M,glyph:U});if(!this.url)return void O(new Error(\"glyphsUrl is not set\"));let Z=B.requests[W];Z||(Z=B.requests[W]=[],Lr.loadGlyphRange(b,W,this.url,this.requestManager,($,st)=>{if(st){for(let At in st)this._doesCharSupportLocalGlyph(+At)||(B.glyphs[+At]=st[+At]);B.ranges[W]=!0}for(let At of Z)At($,st);delete B.requests[W]})),Z.push(($,st)=>{$?O($):st&&O(null,{stack:b,id:M,glyph:st[M]||null})})},(b,M)=>{if(b)d(b);else if(M){let O={};for(let{stack:B,id:U,glyph:W}of M)(O[B]||(O[B]={}))[U]=W&&{id:W.id,bitmap:W.bitmap.clone(),metrics:W.metrics};d(null,O)}})}_doesCharSupportLocalGlyph(l){return!!this.localIdeographFontFamily&&(n.u[\"CJK Unified Ideographs\"](l)||n.u[\"Hangul Syllables\"](l)||n.u.Hiragana(l)||n.u.Katakana(l))}_tinySDF(l,d,v){let b=this.localIdeographFontFamily;if(!b||!this._doesCharSupportLocalGlyph(v))return;let M=l.tinySDF;if(!M){let B=\"400\";/bold/i.test(d)?B=\"900\":/medium/i.test(d)?B=\"500\":/light/i.test(d)&&(B=\"200\"),M=l.tinySDF=new Lr.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:b,fontWeight:B})}let O=M.draw(String.fromCharCode(v));return{id:v,bitmap:new n.q({width:O.width||60,height:O.height||60},O.data),metrics:{width:O.glyphWidth/2||24,height:O.glyphHeight/2||24,left:O.glyphLeft/2+.5||0,top:O.glyphTop/2-27.5||-8,advance:O.glyphAdvance/2||24,isDoubleResolution:!0}}}}Lr.loadGlyphRange=function(T,l,d,v,b){let M=256*l,O=M+255,B=v.transformRequest(d.replace(\"{fontstack}\",T).replace(\"{range}\",`${M}-${O}`),Q.Glyphs);n.l(B,(U,W)=>{if(U)b(U);else if(W){let Z={};for(let $ of n.n(W))Z[$.id]=$;b(null,Z)}})},Lr.TinySDF=class{constructor({fontSize:T=24,buffer:l=3,radius:d=8,cutoff:v=.25,fontFamily:b=\"sans-serif\",fontWeight:M=\"normal\",fontStyle:O=\"normal\"}={}){this.buffer=l,this.cutoff=v,this.radius=d;let B=this.size=T+4*l,U=this._createCanvas(B),W=this.ctx=U.getContext(\"2d\",{willReadFrequently:!0});W.font=`${O} ${M} ${T}px ${b}`,W.textBaseline=\"alphabetic\",W.textAlign=\"left\",W.fillStyle=\"black\",this.gridOuter=new Float64Array(B*B),this.gridInner=new Float64Array(B*B),this.f=new Float64Array(B),this.z=new Float64Array(B+1),this.v=new Uint16Array(B)}_createCanvas(T){let l=document.createElement(\"canvas\");return l.width=l.height=T,l}draw(T){let{width:l,actualBoundingBoxAscent:d,actualBoundingBoxDescent:v,actualBoundingBoxLeft:b,actualBoundingBoxRight:M}=this.ctx.measureText(T),O=Math.ceil(d),B=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(M-b))),U=Math.min(this.size-this.buffer,O+Math.ceil(v)),W=B+2*this.buffer,Z=U+2*this.buffer,$=Math.max(W*Z,0),st=new Uint8ClampedArray($),At={data:st,width:W,height:Z,glyphWidth:B,glyphHeight:U,glyphTop:O,glyphLeft:0,glyphAdvance:l};if(B===0||U===0)return At;let{ctx:pt,buffer:yt,gridInner:dt,gridOuter:Ft}=this;pt.clearRect(yt,yt,B,U),pt.fillText(T,yt,yt+O);let Wt=pt.getImageData(yt,yt,B,U);Ft.fill(Ge,0,$),dt.fill(0,0,$);for(let St=0;St0?oe*oe:0,dt[Qt]=oe<0?oe*oe:0}}tr(Ft,0,0,W,Z,W,this.f,this.v,this.z),tr(dt,yt,yt,B,U,W,this.f,this.v,this.z);for(let St=0;St<$;St++){let Bt=Math.sqrt(Ft[St])-Math.sqrt(dt[St]);st[St]=Math.round(255-255*(Bt/this.radius+this.cutoff))}return At}};class zi{constructor(){this.specification=n.v.light.position}possiblyEvaluate(l,d){return n.z(l.expression.evaluate(d))}interpolate(l,d,v){return{x:n.B.number(l.x,d.x,v),y:n.B.number(l.y,d.y,v),z:n.B.number(l.z,d.z,v)}}}let No;class Ic extends n.E{constructor(l){super(),No=No||new n.r({anchor:new n.D(n.v.light.anchor),position:new zi,color:new n.D(n.v.light.color),intensity:new n.D(n.v.light.intensity)}),this._transitionable=new n.T(No),this.setLight(l),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(l,d={}){if(!this._validate(n.t,l,d))for(let v in l){let b=l[v];v.endsWith(\"-transition\")?this._transitionable.setTransition(v.slice(0,-11),b):this._transitionable.setValue(v,b)}}updateTransitions(l){this._transitioning=this._transitionable.transitioned(l,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(l){this.properties=this._transitioning.possiblyEvaluate(l)}_validate(l,d,v){return(!v||v.validate!==!1)&&n.x(this,l.call(n.y,n.e({value:d,style:{glyphs:!0,sprite:!0},styleSpec:n.v})))}}class Uo{constructor(l,d){this.width=l,this.height=d,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={}}getDash(l,d){let v=l.join(\",\")+String(d);return this.dashEntry[v]||(this.dashEntry[v]=this.addDash(l,d)),this.dashEntry[v]}getDashRanges(l,d,v){let b=[],M=l.length%2==1?-l[l.length-1]*v:0,O=l[0]*v,B=!0;b.push({left:M,right:O,isDash:B,zeroLength:l[0]===0});let U=l[0];for(let W=1;W1&&(U=l[++B]);let Z=Math.abs(W-U.left),$=Math.abs(W-U.right),st=Math.min(Z,$),At,pt=M/v*(b+1);if(U.isDash){let yt=b-Math.abs(pt);At=Math.sqrt(st*st+yt*yt)}else At=b-Math.sqrt(st*st+pt*pt);this.data[O+W]=Math.max(0,Math.min(255,At+128))}}}addRegularDash(l){for(let B=l.length-1;B>=0;--B){let U=l[B],W=l[B+1];U.zeroLength?l.splice(B,1):W&&W.isDash===U.isDash&&(W.left=U.left,l.splice(B,1))}let d=l[0],v=l[l.length-1];d.isDash===v.isDash&&(d.left=v.left-this.width,v.right=d.right+this.width);let b=this.width*this.nextRow,M=0,O=l[M];for(let B=0;B1&&(O=l[++M]);let U=Math.abs(B-O.left),W=Math.abs(B-O.right),Z=Math.min(U,W);this.data[b+B]=Math.max(0,Math.min(255,(O.isDash?Z:-Z)+128))}}addDash(l,d){let v=d?7:0,b=2*v+1;if(this.nextRow+b>this.height)return n.w(\"LineAtlas out of space\"),null;let M=0;for(let B=0;B{b.send(l,d,M)},v=v||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(l=!0){this.actors.forEach(d=>{d.remove()}),this.actors=[],l&&this.workerPool.release(this.id)}}function Vo(T,l,d){let v=function(b,M){if(b)return d(b);if(M){let O=n.F(n.e(M,T),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);M.vector_layers&&(O.vectorLayers=M.vector_layers,O.vectorLayerIds=O.vectorLayers.map(B=>B.id)),d(null,O)}};return T.url?n.f(l.transformRequest(T.url,Q.Source),v):n.h.frame(()=>v(null,T))}class wi{constructor(l,d){l&&(d?this.setSouthWest(l).setNorthEast(d):Array.isArray(l)&&(l.length===4?this.setSouthWest([l[0],l[1]]).setNorthEast([l[2],l[3]]):this.setSouthWest(l[0]).setNorthEast(l[1])))}setNorthEast(l){return this._ne=l instanceof n.L?new n.L(l.lng,l.lat):n.L.convert(l),this}setSouthWest(l){return this._sw=l instanceof n.L?new n.L(l.lng,l.lat):n.L.convert(l),this}extend(l){let d=this._sw,v=this._ne,b,M;if(l instanceof n.L)b=l,M=l;else{if(!(l instanceof wi))return Array.isArray(l)?l.length===4||l.every(Array.isArray)?this.extend(wi.convert(l)):this.extend(n.L.convert(l)):l&&(\"lng\"in l||\"lon\"in l)&&\"lat\"in l?this.extend(n.L.convert(l)):this;if(b=l._sw,M=l._ne,!b||!M)return this}return d||v?(d.lng=Math.min(b.lng,d.lng),d.lat=Math.min(b.lat,d.lat),v.lng=Math.max(M.lng,v.lng),v.lat=Math.max(M.lat,v.lat)):(this._sw=new n.L(b.lng,b.lat),this._ne=new n.L(M.lng,M.lat)),this}getCenter(){return new n.L((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new n.L(this.getWest(),this.getNorth())}getSouthEast(){return new n.L(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(l){let{lng:d,lat:v}=n.L.convert(l),b=this._sw.lng<=d&&d<=this._ne.lng;return this._sw.lng>this._ne.lng&&(b=this._sw.lng>=d&&d>=this._ne.lng),this._sw.lat<=v&&v<=this._ne.lat&&b}static convert(l){return l instanceof wi?l:l&&new wi(l)}static fromLngLat(l,d=0){let v=360*d/40075017,b=v/Math.cos(Math.PI/180*l.lat);return new wi(new n.L(l.lng-b,l.lat-v),new n.L(l.lng+b,l.lat+v))}}class Bs{constructor(l,d,v){this.bounds=wi.convert(this.validateBounds(l)),this.minzoom=d||0,this.maxzoom=v||24}validateBounds(l){return Array.isArray(l)&&l.length===4?[Math.max(-180,l[0]),Math.max(-90,l[1]),Math.min(180,l[2]),Math.min(90,l[3])]:[-180,-90,180,90]}contains(l){let d=Math.pow(2,l.z),v=Math.floor(n.G(this.bounds.getWest())*d),b=Math.floor(n.H(this.bounds.getNorth())*d),M=Math.ceil(n.G(this.bounds.getEast())*d),O=Math.ceil(n.H(this.bounds.getSouth())*d);return l.x>=v&&l.x=b&&l.y{this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=Vo(this._options,this.map._requestManager,(M,O)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),M?this.fire(new n.j(M)):O&&(n.e(this,O),O.bounds&&(this.tileBounds=new Bs(O.bounds,this.minzoom,this.maxzoom)),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})},this.serialize=()=>n.e({},this._options),this.id=l,this.dispatcher=v,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,n.e(this,n.F(d,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=n.e({type:\"vector\"},d),this._collectResourceTiming=d.collectResourceTiming,this.tileSize!==512)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(b)}loaded(){return this._loaded}hasTile(l){return!this.tileBounds||this.tileBounds.contains(l.canonical)}onAdd(l){this.map=l,this.load()}setSourceProperty(l){this._tileJSONRequest&&this._tileJSONRequest.cancel(),l(),this.load()}setTiles(l){return this.setSourceProperty(()=>{this._options.tiles=l}),this}setUrl(l){return this.setSourceProperty(()=>{this.url=l,this._options.url=l}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),b={request:this.map._requestManager.transformRequest(v,Q.Tile),uid:l.uid,tileID:l.tileID,zoom:l.tileID.overscaledZ,tileSize:this.tileSize*l.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function M(O,B){return delete l.request,l.aborted?d(null):O&&O.status!==404?d(O):(B&&B.resourceTiming&&(l.resourceTiming=B.resourceTiming),this.map._refreshExpiredTiles&&B&&l.setExpiryData(B),l.loadVectorData(B,this.map.painter),d(null),void(l.reloadCallback&&(this.loadTile(l,l.reloadCallback),l.reloadCallback=null)))}b.request.collectResourceTiming=this._collectResourceTiming,l.actor&&l.state!==\"expired\"?l.state===\"loading\"?l.reloadCallback=d:l.request=l.actor.send(\"reloadTile\",b,M.bind(this)):(l.actor=this.dispatcher.getActor(),l.request=l.actor.send(\"loadTile\",b,M.bind(this)))}abortTile(l){l.request&&(l.request.cancel(),delete l.request),l.actor&&l.actor.send(\"abortTile\",{uid:l.uid,type:this.type,source:this.id},void 0)}unloadTile(l){l.unloadVectorData(),l.actor&&l.actor.send(\"removeTile\",{uid:l.uid,type:this.type,source:this.id},void 0)}hasTransition(){return!1}}class Cc extends n.E{constructor(l,d,v,b){super(),this.id=l,this.dispatcher=v,this.setEventedParent(b),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=n.e({type:\"raster\"},d),n.e(this,n.F(d,[\"url\",\"scheme\",\"tileSize\"]))}load(){this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=Vo(this._options,this.map._requestManager,(l,d)=>{this._tileJSONRequest=null,this._loaded=!0,l?this.fire(new n.j(l)):d&&(n.e(this,d),d.bounds&&(this.tileBounds=new Bs(d.bounds,this.minzoom,this.maxzoom)),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})))})}loaded(){return this._loaded}onAdd(l){this.map=l,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}setSourceProperty(l){this._tileJSONRequest&&this._tileJSONRequest.cancel(),l(),this.load()}setTiles(l){return this.setSourceProperty(()=>{this._options.tiles=l}),this}serialize(){return n.e({},this._options)}hasTile(l){return!this.tileBounds||this.tileBounds.contains(l.canonical)}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);l.request=j.getImage(this.map._requestManager.transformRequest(v,Q.Tile),(b,M,O)=>{if(delete l.request,l.aborted)l.state=\"unloaded\",d(null);else if(b)l.state=\"errored\",d(b);else if(M){this.map._refreshExpiredTiles&&O&&l.setExpiryData(O);let B=this.map.painter.context,U=B.gl;l.texture=this.map.painter.getTileTexture(M.width),l.texture?l.texture.update(M,{useMipmap:!0}):(l.texture=new Zt(B,M,U.RGBA,{useMipmap:!0}),l.texture.bind(U.LINEAR,U.CLAMP_TO_EDGE,U.LINEAR_MIPMAP_NEAREST),B.extTextureFilterAnisotropic&&U.texParameterf(U.TEXTURE_2D,B.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,B.extTextureFilterAnisotropicMax)),l.state=\"loaded\",d(null)}},this.map._refreshExpiredTiles)}abortTile(l,d){l.request&&(l.request.cancel(),delete l.request),d()}unloadTile(l,d){l.texture&&this.map.painter.saveTileTexture(l.texture),d()}hasTransition(){return!1}}class Lc extends Cc{constructor(l,d,v,b){super(l,d,v,b),this.type=\"raster-dem\",this.maxzoom=22,this._options=n.e({type:\"raster-dem\"},d),this.encoding=d.encoding||\"mapbox\",this.redFactor=d.redFactor,this.greenFactor=d.greenFactor,this.blueFactor=d.blueFactor,this.baseShift=d.baseShift}loadTile(l,d){let v=l.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),b=this.map._requestManager.transformRequest(v,Q.Tile);function M(O,B){O&&(l.state=\"errored\",d(O)),B&&(l.dem=B,l.needsHillshadePrepare=!0,l.needsTerrainPrepare=!0,l.state=\"loaded\",d(null))}l.neighboringTiles=this._getNeighboringTiles(l.tileID),l.request=j.getImage(b,(O,B,U)=>n._(this,void 0,void 0,function*(){if(delete l.request,l.aborted)l.state=\"unloaded\",d(null);else if(O)l.state=\"errored\",d(O);else if(B){this.map._refreshExpiredTiles&&l.setExpiryData(U);let W=n.a(B)&&n.J()?B:yield function($){return n._(this,void 0,void 0,function*(){if(typeof VideoFrame<\"u\"&&n.K()){let st=$.width+2,At=$.height+2;try{return new n.R({width:st,height:At},yield n.M($,-1,-1,st,At))}catch{}}return n.h.getImageData($,1)})}(B),Z={uid:l.uid,coord:l.tileID,source:this.id,rawImageData:W,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};l.actor&&l.state!==\"expired\"||(l.actor=this.dispatcher.getActor(),l.actor.send(\"loadDEMTile\",Z,M))}}),this.map._refreshExpiredTiles)}_getNeighboringTiles(l){let d=l.canonical,v=Math.pow(2,d.z),b=(d.x-1+v)%v,M=d.x===0?l.wrap-1:l.wrap,O=(d.x+1+v)%v,B=d.x+1===v?l.wrap+1:l.wrap,U={};return U[new n.O(l.overscaledZ,M,d.z,b,d.y).key]={backfilled:!1},U[new n.O(l.overscaledZ,B,d.z,O,d.y).key]={backfilled:!1},d.y>0&&(U[new n.O(l.overscaledZ,M,d.z,b,d.y-1).key]={backfilled:!1},U[new n.O(l.overscaledZ,l.wrap,d.z,d.x,d.y-1).key]={backfilled:!1},U[new n.O(l.overscaledZ,B,d.z,O,d.y-1).key]={backfilled:!1}),d.y+1{this._updateWorkerData()},this.serialize=()=>n.e({},this._options,{type:this.type,data:this._data}),this.id=l,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=v.getActor(),this.setEventedParent(b),this._data=d.data,this._options=n.e({},d),this._collectResourceTiming=d.collectResourceTiming,d.maxzoom!==void 0&&(this.maxzoom=d.maxzoom),d.type&&(this.type=d.type),d.attribution&&(this.attribution=d.attribution),this.promoteId=d.promoteId;let M=n.N/this.tileSize;this.workerOptions=n.e({source:this.id,cluster:d.cluster||!1,geojsonVtOptions:{buffer:(d.buffer!==void 0?d.buffer:128)*M,tolerance:(d.tolerance!==void 0?d.tolerance:.375)*M,extent:n.N,maxZoom:this.maxzoom,lineMetrics:d.lineMetrics||!1,generateId:d.generateId||!1},superclusterOptions:{maxZoom:d.clusterMaxZoom!==void 0?d.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,d.clusterMinPoints||2),extent:n.N,radius:(d.clusterRadius||50)*M,log:!1,generateId:d.generateId||!1},clusterProperties:d.clusterProperties,filter:d.filter},d.workerOptions),typeof this.promoteId==\"string\"&&(this.workerOptions.promoteId=this.promoteId)}onAdd(l){this.map=l,this.load()}setData(l){return this._data=l,this._updateWorkerData(),this}updateData(l){return this._updateWorkerData(l),this}setClusterOptions(l){return this.workerOptions.cluster=l.cluster,l&&(l.clusterRadius!==void 0&&(this.workerOptions.superclusterOptions.radius=l.clusterRadius),l.clusterMaxZoom!==void 0&&(this.workerOptions.superclusterOptions.maxZoom=l.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(l,d){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:l,source:this.id},d),this}getClusterChildren(l,d){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:l,source:this.id},d),this}getClusterLeaves(l,d,v,b){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:l,limit:d,offset:v},b),this}_updateWorkerData(l){let d=n.e({},this.workerOptions);l?d.dataDiff=l:typeof this._data==\"string\"?(d.request=this.map._requestManager.transformRequest(n.h.resolveURL(this._data),Q.Source),d.request.collectResourceTiming=this._collectResourceTiming):d.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this.actor.send(`${this.type}.loadData`,d,(v,b)=>{if(this._pendingLoads--,this._removed||b&&b.abandoned)return void this.fire(new n.k(\"dataabort\",{dataType:\"source\"}));let M=null;if(b&&b.resourceTiming&&b.resourceTiming[this.id]&&(M=b.resourceTiming[this.id].slice(0)),v)return void this.fire(new n.j(v));let O={dataType:\"source\"};this._collectResourceTiming&&M&&M.length>0&&n.e(O,{resourceTiming:M}),this.fire(new n.k(\"data\",Object.assign(Object.assign({},O),{sourceDataType:\"metadata\"}))),this.fire(new n.k(\"data\",Object.assign(Object.assign({},O),{sourceDataType:\"content\"})))})}loaded(){return this._pendingLoads===0}loadTile(l,d){let v=l.actor?\"reloadTile\":\"loadTile\";l.actor=this.actor;let b={type:this.type,uid:l.uid,tileID:l.tileID,zoom:l.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};l.request=this.actor.send(v,b,(M,O)=>(delete l.request,l.unloadVectorData(),l.aborted?d(null):M?d(M):(l.loadVectorData(O,this.map.painter,v===\"reloadTile\"),d(null))))}abortTile(l){l.request&&(l.request.cancel(),delete l.request),l.aborted=!0}unloadTile(l){l.unloadVectorData(),this.actor.send(\"removeTile\",{uid:l.uid,type:this.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id})}hasTransition(){return!1}}var Xn=n.Q([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);class Ci extends n.E{constructor(l,d,v,b){super(),this.load=(M,O)=>{this._loaded=!1,this.fire(new n.k(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,this._request=j.getImage(this.map._requestManager.transformRequest(this.url,Q.Image),(B,U)=>{this._request=null,this._loaded=!0,B?this.fire(new n.j(B)):U&&(this.image=U,M&&(this.coordinates=M),O&&O(),this._finishLoading())})},this.prepare=()=>{if(Object.keys(this.tiles).length===0||!this.image)return;let M=this.map.painter.context,O=M.gl;this.boundsBuffer||(this.boundsBuffer=M.createVertexBuffer(this._boundsArray,Xn.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new Zt(M,this.image,O.RGBA),this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE));let B=!1;for(let U in this.tiles){let W=this.tiles[U];W.state!==\"loaded\"&&(W.state=\"loaded\",W.texture=this.texture,B=!0)}B&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"image\",url:this.options.url,coordinates:this.coordinates}),this.id=l,this.dispatcher=v,this.coordinates=d.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(b),this.options=d}loaded(){return this._loaded}updateImage(l){return l.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=l.url,this.load(l.coordinates,()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})))}onAdd(l){this.map=l,this.load()}onRemove(){this._request&&(this._request.cancel(),this._request=null)}setCoordinates(l){this.coordinates=l;let d=l.map(n.U.fromLngLat);this.tileID=function(b){let M=1/0,O=1/0,B=-1/0,U=-1/0;for(let st of b)M=Math.min(M,st.x),O=Math.min(O,st.y),B=Math.max(B,st.x),U=Math.max(U,st.y);let W=Math.max(B-M,U-O),Z=Math.max(0,Math.floor(-Math.log(W)/Math.LN2)),$=Math.pow(2,Z);return new n.W(Z,Math.floor((M+B)/2*$),Math.floor((O+U)/2*$))}(d),this.minzoom=this.maxzoom=this.tileID.z;let v=d.map(b=>this.tileID.getTilePoint(b)._round());return this._boundsArray=new n.V,this._boundsArray.emplaceBack(v[0].x,v[0].y,0,0),this._boundsArray.emplaceBack(v[1].x,v[1].y,n.N,0),this._boundsArray.emplaceBack(v[3].x,v[3].y,0,n.N),this._boundsArray.emplaceBack(v[2].x,v[2].y,n.N,n.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}loadTile(l,d){this.tileID&&this.tileID.equals(l.tileID.canonical)?(this.tiles[String(l.tileID.wrap)]=l,l.buckets={},d(null)):(l.state=\"errored\",d(null))}hasTransition(){return!1}}class Kn extends Ci{constructor(l,d,v,b){super(l,d,v,b),this.load=()=>{this._loaded=!1;let M=this.options;this.urls=[];for(let O of M.urls)this.urls.push(this.map._requestManager.transformRequest(O,Q.Source).url);n.X(this.urls,(O,B)=>{this._loaded=!0,O?this.fire(new n.j(O)):B&&(this.video=B,this.video.loop=!0,this.video.addEventListener(\"playing\",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})},this.prepare=()=>{if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let M=this.map.painter.context,O=M.gl;this.boundsBuffer||(this.boundsBuffer=M.createVertexBuffer(this._boundsArray,Xn.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE),O.texSubImage2D(O.TEXTURE_2D,0,0,0,O.RGBA,O.UNSIGNED_BYTE,this.video)):(this.texture=new Zt(M,this.video,O.RGBA),this.texture.bind(O.LINEAR,O.CLAMP_TO_EDGE));let B=!1;for(let U in this.tiles){let W=this.tiles[U];W.state!==\"loaded\"&&(W.state=\"loaded\",W.texture=this.texture,B=!0)}B&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"video\",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type=\"video\",this.options=d}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(l){if(this.video){let d=this.video.seekable;ld.end(0)?this.fire(new n.j(new n.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${d.start(0)} and ${d.end(0)}-second mark.`))):this.video.currentTime=l}}getVideo(){return this.video}onAdd(l){this.map||(this.map=l,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}hasTransition(){return this.video&&!this.video.paused}}class jo extends Ci{constructor(l,d,v,b){super(l,d,v,b),this.load=()=>{this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new n.j(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},this.prepare=()=>{let M=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,M=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,M=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let O=this.map.painter.context,B=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Xn.members)),this.boundsSegments||(this.boundsSegments=n.S.simpleSegment(0,0,4,2)),this.texture?(M||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new Zt(O,this.canvas,B.RGBA,{premultiply:!0});let U=!1;for(let W in this.tiles){let Z=this.tiles[W];Z.state!==\"loaded\"&&(Z.state=\"loaded\",Z.texture=this.texture,U=!0)}U&&this.fire(new n.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}))},this.serialize=()=>({type:\"canvas\",coordinates:this.coordinates}),d.coordinates?Array.isArray(d.coordinates)&&d.coordinates.length===4&&!d.coordinates.some(M=>!Array.isArray(M)||M.length!==2||M.some(O=>typeof O!=\"number\"))||this.fire(new n.j(new n.Y(`sources.${l}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new n.j(new n.Y(`sources.${l}`,null,'missing required property \"coordinates\"'))),d.animate&&typeof d.animate!=\"boolean\"&&this.fire(new n.j(new n.Y(`sources.${l}`,null,'optional \"animate\" property must be a boolean value'))),d.canvas?typeof d.canvas==\"string\"||d.canvas instanceof HTMLCanvasElement||this.fire(new n.j(new n.Y(`sources.${l}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new n.j(new n.Y(`sources.${l}`,null,'missing required property \"canvas\"'))),this.options=d,this.animate=d.animate===void 0||d.animate}getCanvas(){return this.canvas}onAdd(l){this.map=l,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let l of[this.canvas.width,this.canvas.height])if(isNaN(l)||l<=0)return!0;return!1}}let cl={},vo=T=>{switch(T){case\"geojson\":return Qi;case\"image\":return Ci;case\"raster\":return Cc;case\"raster-dem\":return Lc;case\"vector\":return ll;case\"video\":return Kn;case\"canvas\":return jo}return cl[T]};function Pa(T,l){let d=n.Z();return n.$(d,d,[1,1,0]),n.a0(d,d,[.5*T.width,.5*T.height,1]),n.a1(d,d,T.calculatePosMatrix(l.toUnwrapped()))}function na(T,l,d,v,b,M){let O=function($,st,At){if($)for(let pt of $){let yt=st[pt];if(yt&&yt.source===At&&yt.type===\"fill-extrusion\")return!0}else for(let pt in st){let yt=st[pt];if(yt.source===At&&yt.type===\"fill-extrusion\")return!0}return!1}(b&&b.layers,l,T.id),B=M.maxPitchScaleFactor(),U=T.tilesIn(v,B,O);U.sort(os);let W=[];for(let $ of U)W.push({wrappedTileID:$.tileID.wrapped().key,queryResults:$.tile.queryRenderedFeatures(l,d,T._state,$.queryGeometry,$.cameraQueryGeometry,$.scale,b,M,B,Pa(T.transform,$.tileID))});let Z=function($){let st={},At={};for(let pt of $){let yt=pt.queryResults,dt=pt.wrappedTileID,Ft=At[dt]=At[dt]||{};for(let Wt in yt){let St=yt[Wt],Bt=Ft[Wt]=Ft[Wt]||{},Yt=st[Wt]=st[Wt]||[];for(let Qt of St)Bt[Qt.featureIndex]||(Bt[Qt.featureIndex]=!0,Yt.push(Qt))}}return st}(W);for(let $ in Z)Z[$].forEach(st=>{let At=st.feature,pt=T.getFeatureState(At.layer[\"source-layer\"],At.id);At.source=At.layer.source,At.layer[\"source-layer\"]&&(At.sourceLayer=At.layer[\"source-layer\"]),At.state=pt});return Z}function os(T,l){let d=T.tileID,v=l.tileID;return d.overscaledZ-v.overscaledZ||d.canonical.y-v.canonical.y||d.wrap-v.wrap||d.canonical.x-v.canonical.x}class so{constructor(l,d){this.timeAdded=0,this.fadeEndTime=0,this.tileID=l,this.uid=n.a2(),this.uses=0,this.tileSize=d,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state=\"loading\"}registerFadeDuration(l){let d=l+this.timeAdded;dM.getLayer(W)).filter(Boolean);if(U.length!==0){B.layers=U,B.stateDependentLayerIds&&(B.stateDependentLayers=B.stateDependentLayerIds.map(W=>U.filter(Z=>Z.id===W)[0]));for(let W of U)O[W.id]=B}}return O}(l.buckets,d.style),this.hasSymbolBuckets=!1;for(let b in this.buckets){let M=this.buckets[b];if(M instanceof n.a4){if(this.hasSymbolBuckets=!0,!v)break;M.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let b in this.buckets){let M=this.buckets[b];if(M instanceof n.a4&&M.hasRTLText){this.hasRTLText=!0,n.a5();break}}this.queryPadding=0;for(let b in this.buckets){let M=this.buckets[b];this.queryPadding=Math.max(this.queryPadding,d.style.getLayer(b).queryRadius(M))}l.imageAtlas&&(this.imageAtlas=l.imageAtlas),l.glyphAtlasImage&&(this.glyphAtlasImage=l.glyphAtlasImage)}else this.collisionBoxArray=new n.a3}unloadVectorData(){for(let l in this.buckets)this.buckets[l].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\"}getBucket(l){return this.buckets[l.id]}upload(l){for(let v in this.buckets){let b=this.buckets[v];b.uploadPending()&&b.upload(l)}let d=l.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Zt(l,this.imageAtlas.image,d.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Zt(l,this.glyphAtlasImage,d.ALPHA),this.glyphAtlasImage=null)}prepare(l){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(l,this.imageAtlasTexture)}queryRenderedFeatures(l,d,v,b,M,O,B,U,W,Z){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:b,cameraQueryGeometry:M,scale:O,tileSize:this.tileSize,pixelPosMatrix:Z,transform:U,params:B,queryPadding:this.queryPadding*W},l,d,v):{}}querySourceFeatures(l,d){let v=this.latestFeatureIndex;if(!v||!v.rawTileData)return;let b=v.loadVTLayers(),M=d&&d.sourceLayer?d.sourceLayer:\"\",O=b._geojsonTileLayer||b[M];if(!O)return;let B=n.a6(d&&d.filter),{z:U,x:W,y:Z}=this.tileID.canonical,$={z:U,x:W,y:Z};for(let st=0;stv)b=!1;else if(d)if(this.expirationTime{this.remove(l,M)},v)),this.data[b].push(M),this.order.push(b),this.order.length>this.max){let O=this._getAndRemoveByKey(this.order[0]);O&&this.onRemove(O)}return this}has(l){return l.wrapped().key in this.data}getAndRemove(l){return this.has(l)?this._getAndRemoveByKey(l.wrapped().key):null}_getAndRemoveByKey(l){let d=this.data[l].shift();return d.timeout&&clearTimeout(d.timeout),this.data[l].length===0&&delete this.data[l],this.order.splice(this.order.indexOf(l),1),d.value}getByKey(l){let d=this.data[l];return d?d[0].value:null}get(l){return this.has(l)?this.data[l.wrapped().key][0].value:null}remove(l,d){if(!this.has(l))return this;let v=l.wrapped().key,b=d===void 0?0:this.data[v].indexOf(d),M=this.data[v][b];return this.data[v].splice(b,1),M.timeout&&clearTimeout(M.timeout),this.data[v].length===0&&delete this.data[v],this.onRemove(M.value),this.order.splice(this.order.indexOf(v),1),this}setMaxSize(l){for(this.max=l;this.order.length>this.max;){let d=this._getAndRemoveByKey(this.order[0]);d&&this.onRemove(d)}return this}filter(l){let d=[];for(let v in this.data)for(let b of this.data[v])l(b.value)||d.push(b);for(let v of d)this.remove(v.value.tileID,v)}}class te{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(l,d,v){let b=String(d);if(this.stateChanges[l]=this.stateChanges[l]||{},this.stateChanges[l][b]=this.stateChanges[l][b]||{},n.e(this.stateChanges[l][b],v),this.deletedStates[l]===null){this.deletedStates[l]={};for(let M in this.state[l])M!==b&&(this.deletedStates[l][M]=null)}else if(this.deletedStates[l]&&this.deletedStates[l][b]===null){this.deletedStates[l][b]={};for(let M in this.state[l][b])v[M]||(this.deletedStates[l][b][M]=null)}else for(let M in v)this.deletedStates[l]&&this.deletedStates[l][b]&&this.deletedStates[l][b][M]===null&&delete this.deletedStates[l][b][M]}removeFeatureState(l,d,v){if(this.deletedStates[l]===null)return;let b=String(d);if(this.deletedStates[l]=this.deletedStates[l]||{},v&&d!==void 0)this.deletedStates[l][b]!==null&&(this.deletedStates[l][b]=this.deletedStates[l][b]||{},this.deletedStates[l][b][v]=null);else if(d!==void 0)if(this.stateChanges[l]&&this.stateChanges[l][b])for(v in this.deletedStates[l][b]={},this.stateChanges[l][b])this.deletedStates[l][b][v]=null;else this.deletedStates[l][b]=null;else this.deletedStates[l]=null}getState(l,d){let v=String(d),b=n.e({},(this.state[l]||{})[v],(this.stateChanges[l]||{})[v]);if(this.deletedStates[l]===null)return{};if(this.deletedStates[l]){let M=this.deletedStates[l][d];if(M===null)return{};for(let O in M)delete b[O]}return b}initializeTileState(l,d){l.setFeatureState(this.state,d)}coalesceChanges(l,d){let v={};for(let b in this.stateChanges){this.state[b]=this.state[b]||{};let M={};for(let O in this.stateChanges[b])this.state[b][O]||(this.state[b][O]={}),n.e(this.state[b][O],this.stateChanges[b][O]),M[O]=this.state[b][O];v[b]=M}for(let b in this.deletedStates){this.state[b]=this.state[b]||{};let M={};if(this.deletedStates[b]===null)for(let O in this.state[b])M[O]={},this.state[b][O]={};else for(let O in this.deletedStates[b]){if(this.deletedStates[b][O]===null)this.state[b][O]={};else for(let B of Object.keys(this.deletedStates[b][O]))delete this.state[b][O][B];M[O]=this.state[b][O]}v[b]=v[b]||{},n.e(v[b],M)}if(this.stateChanges={},this.deletedStates={},Object.keys(v).length!==0)for(let b in l)l[b].setFeatureState(v,d)}}class as extends n.E{constructor(l,d,v){super(),this.id=l,this.dispatcher=v,this.on(\"data\",b=>{b.dataType===\"source\"&&b.sourceDataType===\"metadata\"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&b.dataType===\"source\"&&b.sourceDataType===\"content\"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}),this.on(\"dataloading\",()=>{this._sourceErrored=!1}),this.on(\"error\",()=>{this._sourceErrored=this._source.loaded()}),this._source=((b,M,O,B)=>{let U=new(vo(M.type))(b,M,O,B);if(U.id!==b)throw new Error(`Expected Source id to be ${b} instead of ${U.id}`);return U})(l,d,v,this),this._tiles={},this._cache=new Fl(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new te,this._didEmitContent=!1,this._updated=!1}onAdd(l){this.map=l,this._maxTileCacheSize=l?l._maxTileCacheSize:null,this._maxTileCacheZoomLevels=l?l._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(l)}onRemove(l){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(l)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let l in this._tiles){let d=this._tiles[l];if(d.state!==\"loaded\"&&d.state!==\"errored\")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let l=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,l&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(l,d){return this._source.loadTile(l,d)}_unloadTile(l){if(this._source.unloadTile)return this._source.unloadTile(l,()=>{})}_abortTile(l){this._source.abortTile&&this._source.abortTile(l,()=>{}),this._source.fire(new n.k(\"dataabort\",{tile:l,coord:l.tileID,dataType:\"source\"}))}serialize(){return this._source.serialize()}prepare(l){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let d in this._tiles){let v=this._tiles[d];v.upload(l),v.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(l=>l.tileID).sort(pn).map(l=>l.key)}getRenderableIds(l){let d=[];for(let v in this._tiles)this._isIdRenderable(v,l)&&d.push(this._tiles[v]);return l?d.sort((v,b)=>{let M=v.tileID,O=b.tileID,B=new n.P(M.canonical.x,M.canonical.y)._rotate(this.transform.angle),U=new n.P(O.canonical.x,O.canonical.y)._rotate(this.transform.angle);return M.overscaledZ-O.overscaledZ||U.y-B.y||U.x-B.x}).map(v=>v.tileID.key):d.map(v=>v.tileID).sort(pn).map(v=>v.key)}hasRenderableParent(l){let d=this.findLoadedParent(l,0);return!!d&&this._isIdRenderable(d.tileID.key)}_isIdRenderable(l,d){return this._tiles[l]&&this._tiles[l].hasData()&&!this._coveredTiles[l]&&(d||!this._tiles[l].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let l in this._tiles)this._tiles[l].state!==\"errored\"&&this._reloadTile(l,\"reloading\")}}_reloadTile(l,d){let v=this._tiles[l];v&&(v.state!==\"loading\"&&(v.state=d),this._loadTile(v,this._tileLoaded.bind(this,v,l,d)))}_tileLoaded(l,d,v,b){if(b)return l.state=\"errored\",void(b.status!==404?this._source.fire(new n.j(b,{tile:l})):this.update(this.transform,this.terrain));l.timeAdded=n.h.now(),v===\"expired\"&&(l.refreshedUponExpiration=!0),this._setTileReloadTimer(d,l),this.getSource().type===\"raster-dem\"&&l.dem&&this._backfillDEM(l),this._state.initializeTileState(l,this.map?this.map.painter:null),l.aborted||this._source.fire(new n.k(\"data\",{dataType:\"source\",tile:l,coord:l.tileID}))}_backfillDEM(l){let d=this.getRenderableIds();for(let b=0;b1||(Math.abs(O)>1&&(Math.abs(O+U)===1?O+=U:Math.abs(O-U)===1&&(O-=U)),M.dem&&b.dem&&(b.dem.backfillBorder(M.dem,O,B),b.neighboringTiles&&b.neighboringTiles[W]&&(b.neighboringTiles[W].backfilled=!0)))}}getTile(l){return this.getTileByID(l.key)}getTileByID(l){return this._tiles[l]}_retainLoadedChildren(l,d,v,b){for(let M in this._tiles){let O=this._tiles[M];if(b[M]||!O.hasData()||O.tileID.overscaledZ<=d||O.tileID.overscaledZ>v)continue;let B=O.tileID;for(;O&&O.tileID.overscaledZ>d+1;){let W=O.tileID.scaledTo(O.tileID.overscaledZ-1);O=this._tiles[W.key],O&&O.hasData()&&(B=W)}let U=B;for(;U.overscaledZ>d;)if(U=U.scaledTo(U.overscaledZ-1),l[U.key]){b[B.key]=B;break}}}findLoadedParent(l,d){if(l.key in this._loadedParentTiles){let v=this._loadedParentTiles[l.key];return v&&v.tileID.overscaledZ>=d?v:null}for(let v=l.overscaledZ-1;v>=d;v--){let b=l.scaledTo(v),M=this._getLoadedTile(b);if(M)return M}}_getLoadedTile(l){let d=this._tiles[l.key];return d&&d.hasData()?d:this._cache.getByKey(l.wrapped().key)}updateCacheSize(l){let d=Math.ceil(l.width/this._source.tileSize)+1,v=Math.ceil(l.height/this._source.tileSize)+1,b=Math.floor(d*v*(this._maxTileCacheZoomLevels===null?n.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),M=typeof this._maxTileCacheSize==\"number\"?Math.min(this._maxTileCacheSize,b):b;this._cache.setMaxSize(M)}handleWrapJump(l){let d=Math.round((l-(this._prevLng===void 0?l:this._prevLng))/360);if(this._prevLng=l,d){let v={};for(let b in this._tiles){let M=this._tiles[b];M.tileID=M.tileID.unwrapTo(M.tileID.wrap+d),v[M.tileID.key]=M}this._tiles=v;for(let b in this._timers)clearTimeout(this._timers[b]),delete this._timers[b];for(let b in this._tiles)this._setTileReloadTimer(b,this._tiles[b])}}update(l,d){if(this.transform=l,this.terrain=d,!this._sourceLoaded||this._paused)return;let v;this.updateCacheSize(l),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?v=l.getVisibleUnwrappedCoordinates(this._source.tileID).map(Z=>new n.O(Z.canonical.z,Z.wrap,Z.canonical.z,Z.canonical.x,Z.canonical.y)):(v=l.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:d}),this._source.hasTile&&(v=v.filter(Z=>this._source.hasTile(Z)))):v=[];let b=l.coveringZoomLevel(this._source),M=Math.max(b-as.maxOverzooming,this._source.minzoom),O=Math.max(b+as.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Z={};for(let $ of v)if($.canonical.z>this._source.minzoom){let st=$.scaledTo($.canonical.z-1);Z[st.key]=st;let At=$.scaledTo(Math.max(this._source.minzoom,Math.min($.canonical.z,5)));Z[At.key]=At}v=v.concat(Object.values(Z))}let B=v.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,B&&this.fire(new n.k(\"data\",{sourceDataType:\"idle\",dataType:\"source\",sourceId:this.id}));let U=this._updateRetainedTiles(v,b);if(gi(this._source.type)){let Z={},$={},st=Object.keys(U),At=n.h.now();for(let pt of st){let yt=U[pt],dt=this._tiles[pt];if(!dt||dt.fadeEndTime!==0&&dt.fadeEndTime<=At)continue;let Ft=this.findLoadedParent(yt,M);Ft&&(this._addTile(Ft.tileID),Z[Ft.tileID.key]=Ft.tileID),$[pt]=yt}this._retainLoadedChildren($,b,O,U);for(let pt in Z)U[pt]||(this._coveredTiles[pt]=!0,U[pt]=Z[pt]);if(d){let pt={},yt={};for(let dt of v)this._tiles[dt.key].hasData()?pt[dt.key]=dt:yt[dt.key]=dt;for(let dt in yt){let Ft=yt[dt].children(this._source.maxzoom);this._tiles[Ft[0].key]&&this._tiles[Ft[1].key]&&this._tiles[Ft[2].key]&&this._tiles[Ft[3].key]&&(pt[Ft[0].key]=U[Ft[0].key]=Ft[0],pt[Ft[1].key]=U[Ft[1].key]=Ft[1],pt[Ft[2].key]=U[Ft[2].key]=Ft[2],pt[Ft[3].key]=U[Ft[3].key]=Ft[3],delete yt[dt])}for(let dt in yt){let Ft=this.findLoadedParent(yt[dt],this._source.minzoom);if(Ft){pt[Ft.tileID.key]=U[Ft.tileID.key]=Ft.tileID;for(let Wt in pt)pt[Wt].isChildOf(Ft.tileID)&&delete pt[Wt]}}for(let dt in this._tiles)pt[dt]||(this._coveredTiles[dt]=!0)}}for(let Z in U)this._tiles[Z].clearFadeHold();let W=n.ab(this._tiles,U);for(let Z of W){let $=this._tiles[Z];$.hasSymbolBuckets&&!$.holdingForFade()?$.setHoldDuration(this.map._fadeDuration):$.hasSymbolBuckets&&!$.symbolFadeFinished()||this._removeTile(Z)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(let l in this._tiles)this._tiles[l].holdingForFade()&&this._removeTile(l)}_updateRetainedTiles(l,d){let v={},b={},M=Math.max(d-as.maxOverzooming,this._source.minzoom),O=Math.max(d+as.maxUnderzooming,this._source.minzoom),B={};for(let U of l){let W=this._addTile(U);v[U.key]=U,W.hasData()||dthis._source.maxzoom){let $=U.children(this._source.maxzoom)[0],st=this.getTile($);if(st&&st.hasData()){v[$.key]=$;continue}}else{let $=U.children(this._source.maxzoom);if(v[$[0].key]&&v[$[1].key]&&v[$[2].key]&&v[$[3].key])continue}let Z=W.wasRequested();for(let $=U.overscaledZ-1;$>=M;--$){let st=U.scaledTo($);if(b[st.key])break;if(b[st.key]=!0,W=this.getTile(st),!W&&Z&&(W=this._addTile(st)),W){let At=W.hasData();if((Z||At)&&(v[st.key]=st),Z=W.wasRequested(),At)break}}}return v}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let l in this._tiles){let d=[],v,b=this._tiles[l].tileID;for(;b.overscaledZ>0;){if(b.key in this._loadedParentTiles){v=this._loadedParentTiles[b.key];break}d.push(b.key);let M=b.scaledTo(b.overscaledZ-1);if(v=this._getLoadedTile(M),v)break;b=M}for(let M of d)this._loadedParentTiles[M]=v}}_addTile(l){let d=this._tiles[l.key];if(d)return d;d=this._cache.getAndRemove(l),d&&(this._setTileReloadTimer(l.key,d),d.tileID=l,this._state.initializeTileState(d,this.map?this.map.painter:null),this._cacheTimers[l.key]&&(clearTimeout(this._cacheTimers[l.key]),delete this._cacheTimers[l.key],this._setTileReloadTimer(l.key,d)));let v=d;return d||(d=new so(l,this._source.tileSize*l.overscaleFactor()),this._loadTile(d,this._tileLoaded.bind(this,d,l.key,d.state))),d.uses++,this._tiles[l.key]=d,v||this._source.fire(new n.k(\"dataloading\",{tile:d,coord:d.tileID,dataType:\"source\"})),d}_setTileReloadTimer(l,d){l in this._timers&&(clearTimeout(this._timers[l]),delete this._timers[l]);let v=d.getExpiryTimeout();v&&(this._timers[l]=setTimeout(()=>{this._reloadTile(l,\"expired\"),delete this._timers[l]},v))}_removeTile(l){let d=this._tiles[l];d&&(d.uses--,delete this._tiles[l],this._timers[l]&&(clearTimeout(this._timers[l]),delete this._timers[l]),d.uses>0||(d.hasData()&&d.state!==\"reloading\"?this._cache.add(d.tileID,d,d.getExpiryTimeout()):(d.aborted=!0,this._abortTile(d),this._unloadTile(d))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let l in this._tiles)this._removeTile(l);this._cache.reset()}tilesIn(l,d,v){let b=[],M=this.transform;if(!M)return b;let O=v?M.getCameraQueryGeometry(l):l,B=l.map(pt=>M.pointCoordinate(pt,this.terrain)),U=O.map(pt=>M.pointCoordinate(pt,this.terrain)),W=this.getIds(),Z=1/0,$=1/0,st=-1/0,At=-1/0;for(let pt of U)Z=Math.min(Z,pt.x),$=Math.min($,pt.y),st=Math.max(st,pt.x),At=Math.max(At,pt.y);for(let pt=0;pt=0&&St[1].y+Wt>=0){let Bt=B.map(Qt=>dt.getTilePoint(Qt)),Yt=U.map(Qt=>dt.getTilePoint(Qt));b.push({tile:yt,tileID:dt,queryGeometry:Bt,cameraQueryGeometry:Yt,scale:Ft})}}return b}getVisibleCoordinates(l){let d=this.getRenderableIds(l).map(v=>this._tiles[v].tileID);for(let v of d)v.posMatrix=this.transform.calculatePosMatrix(v.toUnwrapped());return d}hasTransition(){if(this._source.hasTransition())return!0;if(gi(this._source.type)){let l=n.h.now();for(let d in this._tiles)if(this._tiles[d].fadeEndTime>=l)return!0}return!1}setFeatureState(l,d,v){this._state.updateState(l=l||\"_geojsonTileLayer\",d,v)}removeFeatureState(l,d,v){this._state.removeFeatureState(l=l||\"_geojsonTileLayer\",d,v)}getFeatureState(l,d){return this._state.getState(l=l||\"_geojsonTileLayer\",d)}setDependencies(l,d,v){let b=this._tiles[l];b&&b.setDependencies(d,v)}reloadTilesForDependencies(l,d){for(let v in this._tiles)this._tiles[v].hasDependency(l,d)&&this._reloadTile(v,\"reloading\");this._cache.filter(v=>!v.hasDependency(l,d))}}function pn(T,l){let d=Math.abs(2*T.wrap)-+(T.wrap<0),v=Math.abs(2*l.wrap)-+(l.wrap<0);return T.overscaledZ-l.overscaledZ||v-d||l.canonical.y-T.canonical.y||l.canonical.x-T.canonical.x}function gi(T){return T===\"raster\"||T===\"image\"||T===\"video\"}as.maxOverzooming=10,as.maxUnderzooming=3;let oi=\"mapboxgl_preloaded_worker_pool\";class oo{constructor(){this.active={}}acquire(l){if(!this.workers)for(this.workers=[];this.workers.length{d.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[oi]}numActive(){return Object.keys(this.active).length}}let uu=Math.floor(n.h.hardwareConcurrency/2),ul;function xo(){return ul||(ul=new oo),ul}oo.workerCount=n.ac(globalThis)?Math.max(Math.min(uu,3),1):1;class hl{constructor(l,d){this.reset(l,d)}reset(l,d){this.points=l||[],this._distances=[0];for(let v=1;v0?(b-O)/B:0;return this.points[M].mult(1-U).add(this.points[d].mult(U))}}function Ia(T,l){let d=!0;return T===\"always\"||T!==\"never\"&&l!==\"never\"||(d=!1),d}class bo{constructor(l,d,v){let b=this.boxCells=[],M=this.circleCells=[];this.xCellCount=Math.ceil(l/v),this.yCellCount=Math.ceil(d/v);for(let O=0;Othis.width||b<0||d>this.height)return[];let U=[];if(l<=0&&d<=0&&this.width<=v&&this.height<=b){if(M)return[{key:null,x1:l,y1:d,x2:v,y2:b}];for(let W=0;W0}hitTestCircle(l,d,v,b,M){let O=l-v,B=l+v,U=d-v,W=d+v;if(B<0||O>this.width||W<0||U>this.height)return!1;let Z=[];return this._forEachCell(O,U,B,W,this._queryCellCircle,Z,{hitTest:!0,overlapMode:b,circle:{x:l,y:d,radius:v},seenUids:{box:{},circle:{}}},M),Z.length>0}_queryCell(l,d,v,b,M,O,B,U){let{seenUids:W,hitTest:Z,overlapMode:$}=B,st=this.boxCells[M];if(st!==null){let pt=this.bboxes;for(let yt of st)if(!W.box[yt]){W.box[yt]=!0;let dt=4*yt,Ft=this.boxKeys[yt];if(l<=pt[dt+2]&&d<=pt[dt+3]&&v>=pt[dt+0]&&b>=pt[dt+1]&&(!U||U(Ft))&&(!Z||!Ia($,Ft.overlapMode))&&(O.push({key:Ft,x1:pt[dt],y1:pt[dt+1],x2:pt[dt+2],y2:pt[dt+3]}),Z))return!0}}let At=this.circleCells[M];if(At!==null){let pt=this.circles;for(let yt of At)if(!W.circle[yt]){W.circle[yt]=!0;let dt=3*yt,Ft=this.circleKeys[yt];if(this._circleAndRectCollide(pt[dt],pt[dt+1],pt[dt+2],l,d,v,b)&&(!U||U(Ft))&&(!Z||!Ia($,Ft.overlapMode))){let Wt=pt[dt],St=pt[dt+1],Bt=pt[dt+2];if(O.push({key:Ft,x1:Wt-Bt,y1:St-Bt,x2:Wt+Bt,y2:St+Bt}),Z)return!0}}}return!1}_queryCellCircle(l,d,v,b,M,O,B,U){let{circle:W,seenUids:Z,overlapMode:$}=B,st=this.boxCells[M];if(st!==null){let pt=this.bboxes;for(let yt of st)if(!Z.box[yt]){Z.box[yt]=!0;let dt=4*yt,Ft=this.boxKeys[yt];if(this._circleAndRectCollide(W.x,W.y,W.radius,pt[dt+0],pt[dt+1],pt[dt+2],pt[dt+3])&&(!U||U(Ft))&&!Ia($,Ft.overlapMode))return O.push(!0),!0}}let At=this.circleCells[M];if(At!==null){let pt=this.circles;for(let yt of At)if(!Z.circle[yt]){Z.circle[yt]=!0;let dt=3*yt,Ft=this.circleKeys[yt];if(this._circlesCollide(pt[dt],pt[dt+1],pt[dt+2],W.x,W.y,W.radius)&&(!U||U(Ft))&&!Ia($,Ft.overlapMode))return O.push(!0),!0}}}_forEachCell(l,d,v,b,M,O,B,U){let W=this._convertToXCellCoord(l),Z=this._convertToYCellCoord(d),$=this._convertToXCellCoord(v),st=this._convertToYCellCoord(b);for(let At=W;At<=$;At++)for(let pt=Z;pt<=st;pt++)if(M.call(this,l,d,v,b,this.xCellCount*pt+At,O,B,U))return}_convertToXCellCoord(l){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(l*this.xScale)))}_convertToYCellCoord(l){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(l*this.yScale)))}_circlesCollide(l,d,v,b,M,O){let B=b-l,U=M-d,W=v+O;return W*W>B*B+U*U}_circleAndRectCollide(l,d,v,b,M,O,B){let U=(O-b)/2,W=Math.abs(l-(b+U));if(W>U+v)return!1;let Z=(B-M)/2,$=Math.abs(d-(M+Z));if($>Z+v)return!1;if(W<=U||$<=Z)return!0;let st=W-U,At=$-Z;return st*st+At*At<=v*v}}function ve(T,l,d,v,b){let M=n.Z();return l?(n.a0(M,M,[1/b,1/b,1]),d||n.ae(M,M,v.angle)):n.a1(M,v.labelPlaneMatrix,T),M}function Go(T,l,d,v,b){if(l){let M=n.af(T);return n.a0(M,M,[b,b,1]),d||n.ae(M,M,-v.angle),M}return v.glCoordMatrix}function An(T,l,d){let v;d?(v=[T.x,T.y,d(T.x,T.y),1],n.ag(v,v,l)):(v=[T.x,T.y,0,1],vt(v,v,l));let b=v[3];return{point:new n.P(v[0]/b,v[1]/b),signedDistanceFromCamera:b}}function zl(T,l){return .5+T/l*.5}function Ca(T,l){let d=T[0]/T[3],v=T[1]/T[3];return d>=-l[0]&&d<=l[0]&&v>=-l[1]&&v<=l[1]}function Se(T,l,d,v,b,M,O,B,U,W){let Z=v?T.textSizeData:T.iconSizeData,$=n.ah(Z,d.transform.zoom),st=[256/d.width*2+1,256/d.height*2+1],At=v?T.text.dynamicLayoutVertexArray:T.icon.dynamicLayoutVertexArray;At.clear();let pt=T.lineVertexArray,yt=v?T.text.placedSymbolArray:T.icon.placedSymbolArray,dt=d.transform.width/d.transform.height,Ft=!1;for(let Wt=0;WtMath.abs(d.x-l.x)*v?{useVertical:!0}:(T===n.ai.vertical?l.yd.x)?{needsFlipping:!0}:null}function Fs(T,l,d,v,b,M,O,B,U,W,Z,$,st,At,pt,yt){let dt=l/24,Ft=T.lineOffsetX*dt,Wt=T.lineOffsetY*dt,St;if(T.numGlyphs>1){let Bt=T.glyphStartIndex+T.numGlyphs,Yt=T.lineStartIndex,Qt=T.lineStartIndex+T.lineLength,oe=Dr(dt,B,Ft,Wt,d,Z,$,T,U,M,st,pt,yt);if(!oe)return{notEnoughRoom:!0};let pe=An(oe.first.point,O,yt).point,he=An(oe.last.point,O,yt).point;if(v&&!d){let xe=mr(T.writingMode,pe,he,At);if(xe)return xe}St=[oe.first];for(let xe=T.glyphStartIndex+1;xe0?pe.point:La($,oe,Yt,1,b,yt),xe=mr(T.writingMode,Yt,he,At);if(xe)return xe}let Bt=tt(dt*B.getoffsetX(T.glyphStartIndex),Ft,Wt,d,Z,$,T.segment,T.lineStartIndex,T.lineStartIndex+T.lineLength,U,M,st,pt,yt);if(!Bt)return{notEnoughRoom:!0};St=[Bt]}for(let Bt of St)n.ak(W,Bt.point,Bt.angle);return{}}function La(T,l,d,v,b,M){let O=An(T.add(T.sub(l)._unit()),b,M).point,B=d.sub(O);return d.add(B._mult(v/B.mag()))}function Tr(T,l){let{projectionCache:d,lineVertexArray:v,labelPlaneMatrix:b,tileAnchorPoint:M,distanceFromAnchor:O,getElevation:B,previousVertex:U,direction:W,absOffsetX:Z}=l;if(d.projections[T])return d.projections[T];let $=new n.P(v.getx(T),v.gety(T)),st=An($,b,B);if(st.signedDistanceFromCamera>0)return d.projections[T]=st.point,st.point;let At=T-W;return La(O===0?M:new n.P(v.getx(At),v.gety(At)),$,U,Z-O+1,b,B)}function sa(T,l,d){return T._unit()._perp()._mult(l*d)}function gt(T,l,d,v,b,M,O,B){let{projectionCache:U,direction:W}=B;if(U.offsets[T])return U.offsets[T];let Z=d.add(l);if(T+W=b)return U.offsets[T]=Z,Z;let $=Tr(T+W,B),st=sa($.sub(d),O,W),At=d.add(st),pt=$.add(st);return U.offsets[T]=n.al(M,Z,At,pt)||Z,U.offsets[T]}function tt(T,l,d,v,b,M,O,B,U,W,Z,$,st,At){let pt=v?T-l:T+l,yt=pt>0?1:-1,dt=0;v&&(yt*=-1,dt=Math.PI),yt<0&&(dt+=Math.PI);let Ft,Wt,St=yt>0?B+O:B+O+1,Bt=b,Yt=b,Qt=0,oe=0,pe=Math.abs(pt),he=[],xe;for(;Qt+oe<=pe;){if(St+=yt,St=U)return null;Qt+=oe,Yt=Bt,Wt=Ft;let Me={projectionCache:$,lineVertexArray:W,labelPlaneMatrix:Z,tileAnchorPoint:M,distanceFromAnchor:Qt,getElevation:At,previousVertex:Yt,direction:yt,absOffsetX:pe};if(Bt=Tr(St,Me),d===0)he.push(Yt),xe=Bt.sub(Yt);else{let dr,Xe=Bt.sub(Yt);dr=Xe.mag()===0?sa(Tr(St+yt,Me).sub(Bt),d,yt):sa(Xe,d,yt),Wt||(Wt=Yt.add(dr)),Ft=gt(St,dr,Bt,B,U,Wt,d,Me),he.push(Wt),xe=Ft.sub(Wt)}oe=xe.mag()}let We=xe._mult((pe-Qt)/oe)._add(Wt||Yt),Kr=dt+Math.atan2(Bt.y-Yt.y,Bt.x-Yt.x);return he.push(We),{point:We,angle:st?Kr:0,path:he}}let nt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ht(T,l){for(let d=0;d=1;Vr--)Xe.push(Me.path[Vr]);for(let Vr=1;VrAn(ei,U,pt));Xe=Vr.some(ei=>ei.signedDistanceFromCamera<=0)?[]:Vr.map(ei=>ei.point)}let Jr=[];if(Xe.length>0){let Vr=Xe[0].clone(),ei=Xe[0].clone();for(let Rn=1;Rn=xe.x&&ei.x<=We.x&&Vr.y>=xe.y&&ei.y<=We.y?[Xe]:ei.xWe.x||ei.yWe.y?[]:n.am([Xe],xe.x,xe.y,We.x,We.y)}for(let Vr of Jr){Kr.reset(Vr,.25*he);let ei=0;ei=Kr.length<=.5*he?1:Math.ceil(Kr.paddedLength/Vi)+1;for(let Rn=0;Rn=this.screenRightBoundary||bthis.screenBottomBoundary}isInsideGrid(l,d,v,b){return v>=0&&l=0&&dv.collisionGroupID===d}}return this.collisionGroups[l]}}function _r(T,l,d,v,b){let{horizontalAlign:M,verticalAlign:O}=n.au(T);return new n.P(-(M-.5)*l+v[0]*b,-(O-.5)*d+v[1]*b)}function Ye(T,l,d,v,b,M){let{x1:O,x2:B,y1:U,y2:W,anchorPointX:Z,anchorPointY:$}=T,st=new n.P(l,d);return v&&st._rotate(b?M:-M),{x1:O+st.x,y1:U+st.y,x2:B+st.x,y2:W+st.y,anchorPointX:Z,anchorPointY:$}}class lr{constructor(l,d,v,b,M){this.transform=l.clone(),this.terrain=d,this.collisionIndex=new _t(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=v,this.retainedQueryData={},this.collisionGroups=new ar(b),this.collisionCircleArrays={},this.prevPlacement=M,M&&(M.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(l,d,v,b){let M=v.getBucket(d),O=v.latestFeatureIndex;if(!M||!O||d.id!==M.layerIds[0])return;let B=v.collisionBoxArray,U=M.layers[0].layout,W=Math.pow(2,this.transform.zoom-v.tileID.overscaledZ),Z=v.tileSize/n.N,$=this.transform.calculatePosMatrix(v.tileID.toUnwrapped()),st=U.get(\"text-pitch-alignment\")===\"map\",At=U.get(\"text-rotation-alignment\")===\"map\",pt=Ot(v,1,this.transform.zoom),yt=ve($,st,At,this.transform,pt),dt=null;if(st){let Wt=Go($,st,At,this.transform,pt);dt=n.a1([],this.transform.labelPlaneMatrix,Wt)}this.retainedQueryData[M.bucketInstanceId]=new ae(M.bucketInstanceId,O,M.sourceLayerIndex,M.index,v.tileID);let Ft={bucket:M,layout:U,posMatrix:$,textLabelPlaneMatrix:yt,labelToScreenMatrix:dt,scale:W,textPixelRatio:Z,holdingForFade:v.holdingForFade(),collisionBoxArray:B,partiallyEvaluatedTextSize:n.ah(M.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(M.sourceID)};if(b)for(let Wt of M.sortKeyRanges){let{sortKey:St,symbolInstanceStart:Bt,symbolInstanceEnd:Yt}=Wt;l.push({sortKey:St,symbolInstanceStart:Bt,symbolInstanceEnd:Yt,parameters:Ft})}else l.push({symbolInstanceStart:0,symbolInstanceEnd:M.symbolInstances.length,parameters:Ft})}attemptAnchorPlacement(l,d,v,b,M,O,B,U,W,Z,$,st,At,pt,yt,dt){let Ft=n.aq[l.textAnchor],Wt=[l.textOffset0,l.textOffset1],St=_r(Ft,v,b,Wt,M),Bt=this.collisionIndex.placeCollisionBox(Ye(d,St.x,St.y,O,B,this.transform.angle),$,U,W,Z.predicate,dt);if((!yt||this.collisionIndex.placeCollisionBox(Ye(yt,St.x,St.y,O,B,this.transform.angle),$,U,W,Z.predicate,dt).box.length!==0)&&Bt.box.length>0){let Yt;if(this.prevPlacement&&this.prevPlacement.variableOffsets[st.crossTileID]&&this.prevPlacement.placements[st.crossTileID]&&this.prevPlacement.placements[st.crossTileID].text&&(Yt=this.prevPlacement.variableOffsets[st.crossTileID].anchor),st.crossTileID===0)throw new Error(\"symbolInstance.crossTileID can't be 0\");return this.variableOffsets[st.crossTileID]={textOffset:Wt,width:v,height:b,anchor:Ft,textBoxScale:M,prevAnchor:Yt},this.markUsedJustification(At,Ft,st,pt),At.allowVerticalPlacement&&(this.markUsedOrientation(At,pt,st),this.placedOrientations[st.crossTileID]=pt),{shift:St,placedGlyphBoxes:Bt}}}placeLayerBucketPart(l,d,v){let{bucket:b,layout:M,posMatrix:O,textLabelPlaneMatrix:B,labelToScreenMatrix:U,textPixelRatio:W,holdingForFade:Z,collisionBoxArray:$,partiallyEvaluatedTextSize:st,collisionGroup:At}=l.parameters,pt=M.get(\"text-optional\"),yt=M.get(\"icon-optional\"),dt=n.ar(M,\"text-overlap\",\"text-allow-overlap\"),Ft=dt===\"always\",Wt=n.ar(M,\"icon-overlap\",\"icon-allow-overlap\"),St=Wt===\"always\",Bt=M.get(\"text-rotation-alignment\")===\"map\",Yt=M.get(\"text-pitch-alignment\")===\"map\",Qt=M.get(\"icon-text-fit\")!==\"none\",oe=M.get(\"symbol-z-order\")===\"viewport-y\",pe=Ft&&(St||!b.hasIconData()||yt),he=St&&(Ft||!b.hasTextData()||pt);!b.collisionArrays&&$&&b.deserializeCollisionBoxes($);let xe=this.retainedQueryData[b.bucketInstanceId].tileID,We=this.terrain?(Me,dr)=>this.terrain.getElevation(xe,Me,dr):null,Kr=(Me,dr)=>{var Xe,Vi;if(d[Me.crossTileID])return;if(Z)return void(this.placements[Me.crossTileID]=new re(!1,!1,!1));let Jr=!1,Vr=!1,ei=!0,Rn=null,Ki={box:null,offscreen:null},Us={box:null,offscreen:null},us=null,Dn=null,Zo=null,jr=0,Wl=0,Hl=0;dr.textFeatureIndex?jr=dr.textFeatureIndex:Me.useRuntimeCollisionCircles&&(jr=Me.featureIndex),dr.verticalTextFeatureIndex&&(Wl=dr.verticalTextFeatureIndex);let mu=dr.textBox;if(mu){let Vs=On=>{let hs=n.ai.horizontal;if(b.allowVerticalPlacement&&!On&&this.prevPlacement){let Yo=this.prevPlacement.placedOrientations[Me.crossTileID];Yo&&(this.placedOrientations[Me.crossTileID]=Yo,hs=Yo,this.markUsedOrientation(b,hs,Me))}return hs},Ps=(On,hs)=>{if(b.allowVerticalPlacement&&Me.numVerticalGlyphVertices>0&&dr.verticalTextBox){for(let Yo of b.writingModes)if(Yo===n.ai.vertical?(Ki=hs(),Us=Ki):Ki=On(),Ki&&Ki.box&&Ki.box.length)break}else Ki=On()},Mo=Me.textAnchorOffsetStartIndex,_h=Me.textAnchorOffsetEndIndex;if(_h===Mo){let On=(hs,Yo)=>{let mn=this.collisionIndex.placeCollisionBox(hs,dt,W,O,At.predicate,We);return mn&&mn.box&&mn.box.length&&(this.markUsedOrientation(b,Yo,Me),this.placedOrientations[Me.crossTileID]=Yo),mn};Ps(()=>On(mu,n.ai.horizontal),()=>{let hs=dr.verticalTextBox;return b.allowVerticalPlacement&&Me.numVerticalGlyphVertices>0&&hs?On(hs,n.ai.vertical):{box:null,offscreen:null}}),Vs(Ki&&Ki.box&&Ki.box.length)}else{let On=n.aq[(Vi=(Xe=this.prevPlacement)===null||Xe===void 0?void 0:Xe.variableOffsets[Me.crossTileID])===null||Vi===void 0?void 0:Vi.anchor],hs=(mn,co,Gr)=>{let Ua=mn.x2-mn.x1,g_=mn.y2-mn.y1,zd=Me.textBoxScale,cA=Qt&&Wt===\"never\"?co:null,ql={box:[],offscreen:!1},Qo=dt===\"never\"?1:2,me=\"never\";On&&Qo++;for(let Le=0;Lehs(mu,dr.iconBox,n.ai.horizontal),()=>{let mn=dr.verticalTextBox;return b.allowVerticalPlacement&&!(Ki&&Ki.box&&Ki.box.length)&&Me.numVerticalGlyphVertices>0&&mn?hs(mn,dr.verticalIconBox,n.ai.vertical):{box:null,offscreen:null}}),Ki&&(Jr=Ki.box,ei=Ki.offscreen);let Yo=Vs(Ki&&Ki.box);if(!Jr&&this.prevPlacement){let mn=this.prevPlacement.variableOffsets[Me.crossTileID];mn&&(this.variableOffsets[Me.crossTileID]=mn,this.markUsedJustification(b,mn.anchor,Me,Yo))}}}if(us=Ki,Jr=us&&us.box&&us.box.length>0,ei=us&&us.offscreen,Me.useRuntimeCollisionCircles){let Vs=b.text.placedSymbolArray.get(Me.centerJustifiedTextSymbolIndex),Ps=n.aj(b.textSizeData,st,Vs),Mo=M.get(\"text-padding\");Dn=this.collisionIndex.placeCollisionCircles(dt,Vs,b.lineVertexArray,b.glyphOffsetArray,Ps,O,B,U,v,Yt,At.predicate,Me.collisionCircleDiameter,Mo,We),Dn.circles.length&&Dn.collisionDetected&&!v&&n.w(\"Collisions detected, but collision boxes are not shown\"),Jr=Ft||Dn.circles.length>0&&!Dn.collisionDetected,ei=ei&&Dn.offscreen}if(dr.iconFeatureIndex&&(Hl=dr.iconFeatureIndex),dr.iconBox){let Vs=Ps=>{let Mo=Qt&&Rn?Ye(Ps,Rn.x,Rn.y,Bt,Yt,this.transform.angle):Ps;return this.collisionIndex.placeCollisionBox(Mo,Wt,W,O,At.predicate,We)};Us&&Us.box&&Us.box.length&&dr.verticalIconBox?(Zo=Vs(dr.verticalIconBox),Vr=Zo.box.length>0):(Zo=Vs(dr.iconBox),Vr=Zo.box.length>0),ei=ei&&Zo.offscreen}let gu=pt||Me.numHorizontalGlyphVertices===0&&Me.numVerticalGlyphVertices===0,gh=yt||Me.numIconVertices===0;if(gu||gh?gh?gu||(Vr=Vr&&Jr):Jr=Vr&&Jr:Vr=Jr=Vr&&Jr,Jr&&us&&us.box&&this.collisionIndex.insertCollisionBox(us.box,dt,M.get(\"text-ignore-placement\"),b.bucketInstanceId,Us&&Us.box&&Wl?Wl:jr,At.ID),Vr&&Zo&&this.collisionIndex.insertCollisionBox(Zo.box,Wt,M.get(\"icon-ignore-placement\"),b.bucketInstanceId,Hl,At.ID),Dn&&(Jr&&this.collisionIndex.insertCollisionCircles(Dn.circles,dt,M.get(\"text-ignore-placement\"),b.bucketInstanceId,jr,At.ID),v)){let Vs=b.bucketInstanceId,Ps=this.collisionCircleArrays[Vs];Ps===void 0&&(Ps=this.collisionCircleArrays[Vs]=new se);for(let Mo=0;Mo=0;--dr){let Xe=Me[dr];Kr(b.symbolInstances.get(Xe),b.collisionArrays[Xe])}}else for(let Me=l.symbolInstanceStart;Me=0&&(l.text.placedSymbolArray.get(B).crossTileID=M>=0&&B!==M?0:v.crossTileID)}markUsedOrientation(l,d,v){let b=d===n.ai.horizontal||d===n.ai.horizontalOnly?d:0,M=d===n.ai.vertical?d:0,O=[v.leftJustifiedTextSymbolIndex,v.centerJustifiedTextSymbolIndex,v.rightJustifiedTextSymbolIndex];for(let B of O)l.text.placedSymbolArray.get(B).placedOrientation=b;v.verticalPlacedTextSymbolIndex&&(l.text.placedSymbolArray.get(v.verticalPlacedTextSymbolIndex).placedOrientation=M)}commit(l){this.commitTime=l,this.zoomAtLastRecencyCheck=this.transform.zoom;let d=this.prevPlacement,v=!1;this.prevZoomAdjustment=d?d.zoomAdjustment(this.transform.zoom):0;let b=d?d.symbolFadeChange(l):1,M=d?d.opacities:{},O=d?d.variableOffsets:{},B=d?d.placedOrientations:{};for(let U in this.placements){let W=this.placements[U],Z=M[U];Z?(this.opacities[U]=new Ut(Z,b,W.text,W.icon),v=v||W.text!==Z.text.placed||W.icon!==Z.icon.placed):(this.opacities[U]=new Ut(null,b,W.text,W.icon,W.skipFade),v=v||W.text||W.icon)}for(let U in M){let W=M[U];if(!this.opacities[U]){let Z=new Ut(W,b,!1,!1);Z.isHidden()||(this.opacities[U]=Z,v=v||W.text.placed||W.icon.placed)}}for(let U in O)this.variableOffsets[U]||!this.opacities[U]||this.opacities[U].isHidden()||(this.variableOffsets[U]=O[U]);for(let U in B)this.placedOrientations[U]||!this.opacities[U]||this.opacities[U].isHidden()||(this.placedOrientations[U]=B[U]);if(d&&d.lastPlacementChangeTime===void 0)throw new Error(\"Last placement time for previous placement is not defined\");v?this.lastPlacementChangeTime=l:typeof this.lastPlacementChangeTime!=\"number\"&&(this.lastPlacementChangeTime=d?d.lastPlacementChangeTime:l)}updateLayerOpacities(l,d){let v={};for(let b of d){let M=b.getBucket(l);M&&b.latestFeatureIndex&&l.id===M.layerIds[0]&&this.updateBucketOpacities(M,v,b.collisionBoxArray)}}updateBucketOpacities(l,d,v){l.hasTextData()&&(l.text.opacityVertexArray.clear(),l.text.hasVisibleVertices=!1),l.hasIconData()&&(l.icon.opacityVertexArray.clear(),l.icon.hasVisibleVertices=!1),l.hasIconCollisionBoxData()&&l.iconCollisionBox.collisionVertexArray.clear(),l.hasTextCollisionBoxData()&&l.textCollisionBox.collisionVertexArray.clear();let b=l.layers[0],M=b.layout,O=new Ut(null,0,!1,!1,!0),B=M.get(\"text-allow-overlap\"),U=M.get(\"icon-allow-overlap\"),W=b._unevaluatedLayout.hasValue(\"text-variable-anchor\")||b._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),Z=M.get(\"text-rotation-alignment\")===\"map\",$=M.get(\"text-pitch-alignment\")===\"map\",st=M.get(\"icon-text-fit\")!==\"none\",At=new Ut(null,0,B&&(U||!l.hasIconData()||M.get(\"icon-optional\")),U&&(B||!l.hasTextData()||M.get(\"text-optional\")),!0);!l.collisionArrays&&v&&(l.hasIconCollisionBoxData()||l.hasTextCollisionBoxData())&&l.deserializeCollisionBoxes(v);let pt=(yt,dt,Ft)=>{for(let Wt=0;Wt

0,Qt=this.placedOrientations[dt.crossTileID],oe=Qt===n.ai.vertical,pe=Qt===n.ai.horizontal||Qt===n.ai.horizontalOnly;if(Ft>0||Wt>0){let he=Jn(Bt.text);pt(l.text,Ft,oe?oa:he),pt(l.text,Wt,pe?oa:he);let xe=Bt.text.isHidden();[dt.rightJustifiedTextSymbolIndex,dt.centerJustifiedTextSymbolIndex,dt.leftJustifiedTextSymbolIndex].forEach(Me=>{Me>=0&&(l.text.placedSymbolArray.get(Me).hidden=xe||oe?1:0)}),dt.verticalPlacedTextSymbolIndex>=0&&(l.text.placedSymbolArray.get(dt.verticalPlacedTextSymbolIndex).hidden=xe||pe?1:0);let We=this.variableOffsets[dt.crossTileID];We&&this.markUsedJustification(l,We.anchor,dt,Qt);let Kr=this.placedOrientations[dt.crossTileID];Kr&&(this.markUsedJustification(l,\"left\",dt,Kr),this.markUsedOrientation(l,Kr,dt))}if(Yt){let he=Jn(Bt.icon),xe=!(st&&dt.verticalPlacedIconSymbolIndex&&oe);dt.placedIconSymbolIndex>=0&&(pt(l.icon,dt.numIconVertices,xe?he:oa),l.icon.placedSymbolArray.get(dt.placedIconSymbolIndex).hidden=Bt.icon.isHidden()),dt.verticalPlacedIconSymbolIndex>=0&&(pt(l.icon,dt.numVerticalIconVertices,xe?oa:he),l.icon.placedSymbolArray.get(dt.verticalPlacedIconSymbolIndex).hidden=Bt.icon.isHidden())}if(l.hasIconCollisionBoxData()||l.hasTextCollisionBoxData()){let he=l.collisionArrays[yt];if(he){let xe=new n.P(0,0);if(he.textBox||he.verticalTextBox){let Kr=!0;if(W){let Me=this.variableOffsets[St];Me?(xe=_r(Me.anchor,Me.width,Me.height,Me.textOffset,Me.textBoxScale),Z&&xe._rotate($?this.transform.angle:-this.transform.angle)):Kr=!1}he.textBox&&br(l.textCollisionBox.collisionVertexArray,Bt.text.placed,!Kr||oe,xe.x,xe.y),he.verticalTextBox&&br(l.textCollisionBox.collisionVertexArray,Bt.text.placed,!Kr||pe,xe.x,xe.y)}let We=!!(!pe&&he.verticalIconBox);he.iconBox&&br(l.iconCollisionBox.collisionVertexArray,Bt.icon.placed,We,st?xe.x:0,st?xe.y:0),he.verticalIconBox&&br(l.iconCollisionBox.collisionVertexArray,Bt.icon.placed,!We,st?xe.x:0,st?xe.y:0)}}}if(l.sortFeatures(this.transform.angle),this.retainedQueryData[l.bucketInstanceId]&&(this.retainedQueryData[l.bucketInstanceId].featureSortOrder=l.featureSortOrder),l.hasTextData()&&l.text.opacityVertexBuffer&&l.text.opacityVertexBuffer.updateData(l.text.opacityVertexArray),l.hasIconData()&&l.icon.opacityVertexBuffer&&l.icon.opacityVertexBuffer.updateData(l.icon.opacityVertexArray),l.hasIconCollisionBoxData()&&l.iconCollisionBox.collisionVertexBuffer&&l.iconCollisionBox.collisionVertexBuffer.updateData(l.iconCollisionBox.collisionVertexArray),l.hasTextCollisionBoxData()&&l.textCollisionBox.collisionVertexBuffer&&l.textCollisionBox.collisionVertexBuffer.updateData(l.textCollisionBox.collisionVertexArray),l.text.opacityVertexArray.length!==l.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${l.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${l.text.layoutVertexArray.length}) / 4`);if(l.icon.opacityVertexArray.length!==l.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${l.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${l.icon.layoutVertexArray.length}) / 4`);if(l.bucketInstanceId in this.collisionCircleArrays){let yt=this.collisionCircleArrays[l.bucketInstanceId];l.placementInvProjMatrix=yt.invProjMatrix,l.placementViewportMatrix=yt.viewportMatrix,l.collisionCircleArray=yt.circles,delete this.collisionCircleArrays[l.bucketInstanceId]}}symbolFadeChange(l){return this.fadeDuration===0?1:(l-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(l){return Math.max(0,(this.transform.zoom-l)/1.5)}hasTransitions(l){return this.stale||l-this.lastPlacementChangeTimel}setStale(){this.stale=!0}}function br(T,l,d,v,b){T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0),T.emplaceBack(l?1:0,d?1:0,v||0,b||0)}let vi=Math.pow(2,25),Bi=Math.pow(2,24),ni=Math.pow(2,17),Hr=Math.pow(2,16),Un=Math.pow(2,9),ki=Math.pow(2,8),yn=Math.pow(2,1);function Jn(T){if(T.opacity===0&&!T.placed)return 0;if(T.opacity===1&&T.placed)return 4294967295;let l=T.placed?1:0,d=Math.floor(127*T.opacity);return d*vi+l*Bi+d*ni+l*Hr+d*Un+l*ki+d*yn+l}let oa=0;class Nm{constructor(l){this._sortAcrossTiles=l.layout.get(\"symbol-z-order\")!==\"viewport-y\"&&!l.layout.get(\"symbol-sort-key\").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(l,d,v,b,M){let O=this._bucketParts;for(;this._currentTileIndexB.sortKey-U.sortKey));this._currentPartIndex!this._forceFullPlacement&&n.h.now()-b>2;for(;this._currentPlacementIndex>=0;){let O=d[l[this._currentPlacementIndex]],B=this.placement.collisionIndex.transform.zoom;if(O.type===\"symbol\"&&(!O.minzoom||O.minzoom<=B)&&(!O.maxzoom||O.maxzoom>B)){if(this._inProgressLayer||(this._inProgressLayer=new Nm(O)),this._inProgressLayer.continuePlacement(v[O.source],this.placement,this._showCollisionBoxes,O,M))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(l){return this.placement.commit(l),this.placement}}let Ss=512/n.N/2;class ih{constructor(l,d,v){this.tileID=l,this.bucketInstanceId=v,this._symbolsByKey={};let b=new Map;for(let M=0;M({x:Math.floor(U.anchorX*Ss),y:Math.floor(U.anchorY*Ss)})),crossTileIDs:O.map(U=>U.crossTileID)};if(B.positions.length>128){let U=new n.av(B.positions.length,16,Uint16Array);for(let{x:W,y:Z}of B.positions)U.add(W,Z);U.finish(),delete B.positions,B.index=U}this._symbolsByKey[M]=B}}getScaledCoordinates(l,d){let{x:v,y:b,z:M}=this.tileID.canonical,{x:O,y:B,z:U}=d.canonical,W=Ss/Math.pow(2,U-M),Z=(B*n.N+l.anchorY)*W,$=b*n.N*Ss;return{x:Math.floor((O*n.N+l.anchorX)*W-v*n.N*Ss),y:Math.floor(Z-$)}}findMatches(l,d,v){let b=this.tileID.canonical.zl)}}class ai{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class ka{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(l){let d=Math.round((l-this.lng)/360);if(d!==0)for(let v in this.indexes){let b=this.indexes[v],M={};for(let O in b){let B=b[O];B.tileID=B.tileID.unwrapTo(B.tileID.wrap+d),M[B.tileID.key]=B}this.indexes[v]=M}this.lng=l}addBucket(l,d,v){if(this.indexes[l.overscaledZ]&&this.indexes[l.overscaledZ][l.key]){if(this.indexes[l.overscaledZ][l.key].bucketInstanceId===d.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(l.overscaledZ,this.indexes[l.overscaledZ][l.key])}for(let M=0;Ml.overscaledZ)for(let B in O){let U=O[B];U.tileID.isChildOf(l)&&U.findMatches(d.symbolInstances,l,b)}else{let B=O[l.scaledTo(Number(M)).key];B&&B.findMatches(d.symbolInstances,l,b)}}for(let M=0;M{d[v]=!0});for(let v in this.layerIndexes)d[v]||delete this.layerIndexes[v]}}let on=(T,l)=>n.x(T,l&&l.filter(d=>d.identifier!==\"source.canvas\")),kn=n.F(n.ax,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setGlyphs\",\"setSprite\"]),Um=n.F(n.ax,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Wo=n.aw();class Vn extends n.E{constructor(l,d={}){super(),this.map=l,this.dispatcher=new rh(xo(),this,l._getMapId()),this.imageManager=new ue,this.imageManager.setEventedParent(this),this.glyphManager=new Lr(l._requestManager,d.localIdeographFontFamily),this.lineAtlas=new Uo(256,512),this.crossTileSymbolIndex=new kc,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new n.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",n.az());let v=this;this._rtlTextPluginCallback=Vn.registerForPluginStateChange(b=>{v.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:b.pluginStatus,pluginURL:b.pluginURL},(M,O)=>{if(n.aA(M),O&&O.every(B=>B))for(let B in v.sourceCaches){let U=v.sourceCaches[B].getSource().type;U!==\"vector\"&&U!==\"geojson\"||v.sourceCaches[B].reload()}})}),this.on(\"data\",b=>{if(b.dataType!==\"source\"||b.sourceDataType!==\"metadata\")return;let M=this.sourceCaches[b.sourceId];if(!M)return;let O=M.getSource();if(O&&O.vectorLayerIds)for(let B in this._layers){let U=this._layers[B];U.source===O.id&&this._validateLayer(U)}})}loadURL(l,d={},v){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),d.validate=typeof d.validate!=\"boolean\"||d.validate;let b=this.map._requestManager.transformRequest(l,Q.Style);this._request=n.f(b,(M,O)=>{this._request=null,M?this.fire(new n.j(M)):O&&this._load(O,d,v)})}loadJSON(l,d={},v){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),this._request=n.h.frame(()=>{this._request=null,d.validate=d.validate!==!1,this._load(l,d,v)})}loadEmpty(){this.fire(new n.k(\"dataloading\",{dataType:\"style\"})),this._load(Wo,{validate:!1})}_load(l,d,v){var b;let M=d.transformStyle?d.transformStyle(v,l):l;if(!d.validate||!on(this,n.y(M))){this._loaded=!0,this.stylesheet=M;for(let O in M.sources)this.addSource(O,M.sources[O],{validate:!1});M.sprite?this._loadSprite(M.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(M.glyphs),this._createLayers(),this.light=new Ic(this.stylesheet.light),this.map.setTerrain((b=this.stylesheet.terrain)!==null&&b!==void 0?b:null),this.fire(new n.k(\"data\",{dataType:\"style\"})),this.fire(new n.k(\"style.load\"))}}_createLayers(){let l=n.aB(this.stylesheet.layers);this.dispatcher.broadcast(\"setLayers\",l),this._order=l.map(d=>d.id),this._layers={},this._serializedLayers=null;for(let d of l){let v=n.aC(d);v.setEventedParent(this,{layer:{id:d.id}}),this._layers[d.id]=v}}_loadSprite(l,d=!1,v=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(b,M,O,B){let U=kt(b),W=U.length,Z=O>1?\"@2x\":\"\",$={},st={},At={};for(let{id:pt,url:yt}of U){let dt=M.transformRequest(M.normalizeSpriteURL(yt,Z,\".json\"),Q.SpriteJSON),Ft=`${pt}_${dt.url}`;$[Ft]=n.f(dt,(Bt,Yt)=>{delete $[Ft],st[pt]=Yt,Kt(B,st,At,Bt,W)});let Wt=M.transformRequest(M.normalizeSpriteURL(yt,Z,\".png\"),Q.SpriteImage),St=`${pt}_${Wt.url}`;$[St]=j.getImage(Wt,(Bt,Yt)=>{delete $[St],At[pt]=Yt,Kt(B,st,At,Bt,W)})}return{cancel(){for(let pt of Object.values($))pt.cancel()}}}(l,this.map._requestManager,this.map.getPixelRatio(),(b,M)=>{if(this._spriteRequest=null,b)this.fire(new n.j(b));else if(M)for(let O in M){this._spritesImagesIds[O]=[];let B=this._spritesImagesIds[O]?this._spritesImagesIds[O].filter(U=>!(U in M)):[];for(let U of B)this.imageManager.removeImage(U),this._changedImages[U]=!0;for(let U in M[O]){let W=O===\"default\"?U:`${O}:${U}`;this._spritesImagesIds[O].push(W),W in this.imageManager.images?this.imageManager.updateImage(W,M[O][U],!1):this.imageManager.addImage(W,M[O][U]),d&&(this._changedImages[W]=!0)}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),d&&(this._changed=!0),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"})),v&&v(b)})}_unloadSprite(){for(let l of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(l),this._changedImages[l]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}_validateLayer(l){let d=this.sourceCaches[l.source];if(!d)return;let v=l.sourceLayer;if(!v)return;let b=d.getSource();(b.type===\"geojson\"||b.vectorLayerIds&&b.vectorLayerIds.indexOf(v)===-1)&&this.fire(new n.j(new Error(`Source layer \"${v}\" does not exist on source \"${b.id}\" as specified by style layer \"${l.id}\".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let l in this.sourceCaches)if(!this.sourceCaches[l].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(l){let d=this._serializedAllLayers();if(!l||l.length===0)return Object.values(d);let v=[];for(let b of l)d[b]&&v.push(d[b]);return v}_serializedAllLayers(){let l=this._serializedLayers;if(l)return l;l=this._serializedLayers={};let d=Object.keys(this._layers);for(let v of d){let b=this._layers[v];b.type!==\"custom\"&&(l[v]=b.serialize())}return l}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;for(let l in this.sourceCaches)if(this.sourceCaches[l].hasTransition())return!0;for(let l in this._layers)if(this._layers[l].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading.\")}update(l){if(!this._loaded)return;let d=this._changed;if(this._changed){let b=Object.keys(this._updatedLayers),M=Object.keys(this._removedLayers);(b.length||M.length)&&this._updateWorkerLayers(b,M);for(let O in this._updatedSources){let B=this._updatedSources[O];if(B===\"reload\")this._reloadSource(O);else{if(B!==\"clear\")throw new Error(`Invalid action ${B}`);this._clearSource(O)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let O in this._updatedPaintProps)this._layers[O].updateTransitions(l);this.light.updateTransitions(l),this._resetUpdates()}let v={};for(let b in this.sourceCaches){let M=this.sourceCaches[b];v[b]=M.used,M.used=!1}for(let b of this._order){let M=this._layers[b];M.recalculate(l,this._availableImages),!M.isHidden(l.zoom)&&M.source&&(this.sourceCaches[M.source].used=!0)}for(let b in v){let M=this.sourceCaches[b];v[b]!==M.used&&M.fire(new n.k(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:b}))}this.light.recalculate(l),this.z=l.zoom,d&&this.fire(new n.k(\"data\",{dataType:\"style\"}))}_updateTilesForChangedImages(){let l=Object.keys(this._changedImages);if(l.length){for(let d in this.sourceCaches)this.sourceCaches[d].reloadTilesForDependencies([\"icons\",\"patterns\"],l);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let l in this.sourceCaches)this.sourceCaches[l].reloadTilesForDependencies([\"glyphs\"],[\"\"]);this._glyphsDidChange=!1}}_updateWorkerLayers(l,d){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeByIds(l),removedIds:d})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(l,d={}){this._checkLoaded();let v=this.serialize();if(l=d.transformStyle?d.transformStyle(v,l):l,on(this,n.y(l)))return!1;(l=n.aD(l)).layers=n.aB(l.layers);let b=n.aE(v,l).filter(O=>!(O.command in Um));if(b.length===0)return!1;let M=b.filter(O=>!(O.command in kn));if(M.length>0)throw new Error(`Unimplemented: ${M.map(O=>O.command).join(\", \")}.`);for(let O of b)O.command!==\"setTransition\"&&this[O.command].apply(this,O.args);return this.stylesheet=l,this._serializedLayers=null,!0}addImage(l,d){if(this.getImage(l))return this.fire(new n.j(new Error(`An image named \"${l}\" already exists.`)));this.imageManager.addImage(l,d),this._afterImageUpdated(l)}updateImage(l,d){this.imageManager.updateImage(l,d)}getImage(l){return this.imageManager.getImage(l)}removeImage(l){if(!this.getImage(l))return this.fire(new n.j(new Error(`An image named \"${l}\" does not exist.`)));this.imageManager.removeImage(l),this._afterImageUpdated(l)}_afterImageUpdated(l){this._availableImages=this.imageManager.listImages(),this._changedImages[l]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(l,d,v={}){if(this._checkLoaded(),this.sourceCaches[l]!==void 0)throw new Error(`Source \"${l}\" already exists.`);if(!d.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(d).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(d.type)>=0&&this._validate(n.y.source,`sources.${l}`,d,null,v))return;this.map&&this.map._collectResourceTiming&&(d.collectResourceTiming=!0);let b=this.sourceCaches[l]=new as(l,d,this.dispatcher);b.style=this,b.setEventedParent(this,()=>({isSourceLoaded:b.loaded(),source:b.serialize(),sourceId:l})),b.onAdd(this.map),this._changed=!0}removeSource(l){if(this._checkLoaded(),this.sourceCaches[l]===void 0)throw new Error(\"There is no source with this ID\");for(let v in this._layers)if(this._layers[v].source===l)return this.fire(new n.j(new Error(`Source \"${l}\" cannot be removed while layer \"${v}\" is using it.`)));let d=this.sourceCaches[l];delete this.sourceCaches[l],delete this._updatedSources[l],d.fire(new n.k(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:l})),d.setEventedParent(null),d.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(l,d){if(this._checkLoaded(),this.sourceCaches[l]===void 0)throw new Error(`There is no source with this ID=${l}`);let v=this.sourceCaches[l].getSource();if(v.type!==\"geojson\")throw new Error(`geojsonSource.type is ${v.type}, which is !== 'geojson`);v.setData(d),this._changed=!0}getSource(l){return this.sourceCaches[l]&&this.sourceCaches[l].getSource()}addLayer(l,d,v={}){this._checkLoaded();let b=l.id;if(this.getLayer(b))return void this.fire(new n.j(new Error(`Layer \"${b}\" already exists on this map.`)));let M;if(l.type===\"custom\"){if(on(this,n.aF(l)))return;M=n.aC(l)}else{if(\"source\"in l&&typeof l.source==\"object\"&&(this.addSource(b,l.source),l=n.aD(l),l=n.e(l,{source:b})),this._validate(n.y.layer,`layers.${b}`,l,{arrayIndex:-1},v))return;M=n.aC(l),this._validateLayer(M),M.setEventedParent(this,{layer:{id:b}})}let O=d?this._order.indexOf(d):this._order.length;if(d&&O===-1)this.fire(new n.j(new Error(`Cannot add layer \"${b}\" before non-existing layer \"${d}\".`)));else{if(this._order.splice(O,0,b),this._layerOrderChanged=!0,this._layers[b]=M,this._removedLayers[b]&&M.source&&M.type!==\"custom\"){let B=this._removedLayers[b];delete this._removedLayers[b],B.type!==M.type?this._updatedSources[M.source]=\"clear\":(this._updatedSources[M.source]=\"reload\",this.sourceCaches[M.source].pause())}this._updateLayer(M),M.onAdd&&M.onAdd(this.map)}}moveLayer(l,d){if(this._checkLoaded(),this._changed=!0,!this._layers[l])return void this.fire(new n.j(new Error(`The layer '${l}' does not exist in the map's style and cannot be moved.`)));if(l===d)return;let v=this._order.indexOf(l);this._order.splice(v,1);let b=d?this._order.indexOf(d):this._order.length;d&&b===-1?this.fire(new n.j(new Error(`Cannot move layer \"${l}\" before non-existing layer \"${d}\".`))):(this._order.splice(b,0,l),this._layerOrderChanged=!0)}removeLayer(l){this._checkLoaded();let d=this._layers[l];if(!d)return void this.fire(new n.j(new Error(`Cannot remove non-existing layer \"${l}\".`)));d.setEventedParent(null);let v=this._order.indexOf(l);this._order.splice(v,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[l]=d,delete this._layers[l],this._serializedLayers&&delete this._serializedLayers[l],delete this._updatedLayers[l],delete this._updatedPaintProps[l],d.onRemove&&d.onRemove(this.map)}getLayer(l){return this._layers[l]}getLayersOrder(){return[...this._order]}hasLayer(l){return l in this._layers}setLayerZoomRange(l,d,v){this._checkLoaded();let b=this.getLayer(l);b?b.minzoom===d&&b.maxzoom===v||(d!=null&&(b.minzoom=d),v!=null&&(b.maxzoom=v),this._updateLayer(b)):this.fire(new n.j(new Error(`Cannot set the zoom range of non-existing layer \"${l}\".`)))}setFilter(l,d,v={}){this._checkLoaded();let b=this.getLayer(l);if(b){if(!n.aG(b.filter,d))return d==null?(b.filter=void 0,void this._updateLayer(b)):void(this._validate(n.y.filter,`layers.${b.id}.filter`,d,null,v)||(b.filter=n.aD(d),this._updateLayer(b)))}else this.fire(new n.j(new Error(`Cannot filter non-existing layer \"${l}\".`)))}getFilter(l){return n.aD(this.getLayer(l).filter)}setLayoutProperty(l,d,v,b={}){this._checkLoaded();let M=this.getLayer(l);M?n.aG(M.getLayoutProperty(d),v)||(M.setLayoutProperty(d,v,b),this._updateLayer(M)):this.fire(new n.j(new Error(`Cannot style non-existing layer \"${l}\".`)))}getLayoutProperty(l,d){let v=this.getLayer(l);if(v)return v.getLayoutProperty(d);this.fire(new n.j(new Error(`Cannot get style of non-existing layer \"${l}\".`)))}setPaintProperty(l,d,v,b={}){this._checkLoaded();let M=this.getLayer(l);M?n.aG(M.getPaintProperty(d),v)||(M.setPaintProperty(d,v,b)&&this._updateLayer(M),this._changed=!0,this._updatedPaintProps[l]=!0):this.fire(new n.j(new Error(`Cannot style non-existing layer \"${l}\".`)))}getPaintProperty(l,d){return this.getLayer(l).getPaintProperty(d)}setFeatureState(l,d){this._checkLoaded();let v=l.source,b=l.sourceLayer,M=this.sourceCaches[v];if(M===void 0)return void this.fire(new n.j(new Error(`The source '${v}' does not exist in the map's style.`)));let O=M.getSource().type;O===\"geojson\"&&b?this.fire(new n.j(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):O!==\"vector\"||b?(l.id===void 0&&this.fire(new n.j(new Error(\"The feature id parameter must be provided.\"))),M.setFeatureState(b,l.id,d)):this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}removeFeatureState(l,d){this._checkLoaded();let v=l.source,b=this.sourceCaches[v];if(b===void 0)return void this.fire(new n.j(new Error(`The source '${v}' does not exist in the map's style.`)));let M=b.getSource().type,O=M===\"vector\"?l.sourceLayer:void 0;M!==\"vector\"||O?d&&typeof l.id!=\"string\"&&typeof l.id!=\"number\"?this.fire(new n.j(new Error(\"A feature id is required to remove its specific state property.\"))):b.removeFeatureState(O,l.id,d):this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")))}getFeatureState(l){this._checkLoaded();let d=l.source,v=l.sourceLayer,b=this.sourceCaches[d];if(b!==void 0)return b.getSource().type!==\"vector\"||v?(l.id===void 0&&this.fire(new n.j(new Error(\"The feature id parameter must be provided.\"))),b.getFeatureState(v,l.id)):void this.fire(new n.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));this.fire(new n.j(new Error(`The source '${d}' does not exist in the map's style.`)))}getTransition(){return n.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let l=n.aH(this.sourceCaches,M=>M.serialize()),d=this._serializeByIds(this._order),v=this.map.getTerrain()||void 0,b=this.stylesheet;return n.aI({version:b.version,name:b.name,metadata:b.metadata,light:b.light,center:b.center,zoom:b.zoom,bearing:b.bearing,pitch:b.pitch,sprite:b.sprite,glyphs:b.glyphs,transition:b.transition,sources:l,layers:d,terrain:v},M=>M!==void 0)}_updateLayer(l){this._updatedLayers[l.id]=!0,l.source&&!this._updatedSources[l.source]&&this.sourceCaches[l.source].getSource().type!==\"raster\"&&(this._updatedSources[l.source]=\"reload\",this.sourceCaches[l.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(l){let d=O=>this._layers[O].type===\"fill-extrusion\",v={},b=[];for(let O=this._order.length-1;O>=0;O--){let B=this._order[O];if(d(B)){v[B]=O;for(let U of l){let W=U[B];if(W)for(let Z of W)b.push(Z)}}}b.sort((O,B)=>B.intersectionZ-O.intersectionZ);let M=[];for(let O=this._order.length-1;O>=0;O--){let B=this._order[O];if(d(B))for(let U=b.length-1;U>=0;U--){let W=b[U].feature;if(v[W.layer.id]{let pe=Ft.featureSortOrder;if(pe){let he=pe.indexOf(Qt.featureIndex);return pe.indexOf(oe.featureIndex)-he}return oe.featureIndex-Qt.featureIndex});for(let Qt of Yt)Bt.push(Qt)}}for(let Ft in pt)pt[Ft].forEach(Wt=>{let St=Wt.feature,Bt=W[B[Ft].source].getFeatureState(St.layer[\"source-layer\"],St.id);St.source=St.layer.source,St.layer[\"source-layer\"]&&(St.sourceLayer=St.layer[\"source-layer\"]),St.state=Bt});return pt}(this._layers,O,this.sourceCaches,l,d,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(M)}querySourceFeatures(l,d){d&&d.filter&&this._validate(n.y.filter,\"querySourceFeatures.filter\",d.filter,null,d);let v=this.sourceCaches[l];return v?function(b,M){let O=b.getRenderableIds().map(W=>b.getTileByID(W)),B=[],U={};for(let W=0;W{cl[b]=M})(l,d),d.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:l,url:d.workerSourceURL},v):v(null,null))}getLight(){return this.light.getLight()}setLight(l,d={}){this._checkLoaded();let v=this.light.getLight(),b=!1;for(let O in l)if(!n.aG(l[O],v[O])){b=!0;break}if(!b)return;let M={now:n.h.now(),transition:n.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(l,d),this.light.updateTransitions(M)}_validate(l,d,v,b,M={}){return(!M||M.validate!==!1)&&on(this,l.call(n.y,n.e({key:d,style:this.serialize(),value:v,styleSpec:n.v},b)))}_remove(l=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),n.aJ.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(let d in this._layers)this._layers[d].setEventedParent(null);for(let d in this.sourceCaches){let v=this.sourceCaches[d];v.setEventedParent(null),v.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(l)}_clearSource(l){this.sourceCaches[l].clearTiles()}_reloadSource(l){this.sourceCaches[l].resume(),this.sourceCaches[l].reload()}_updateSources(l){for(let d in this.sourceCaches)this.sourceCaches[d].update(l,this.map.terrain)}_generateCollisionBoxes(){for(let l in this.sourceCaches)this._reloadSource(l)}_updatePlacement(l,d,v,b,M=!1){let O=!1,B=!1,U={};for(let W of this._order){let Z=this._layers[W];if(Z.type!==\"symbol\")continue;if(!U[Z.source]){let st=this.sourceCaches[Z.source];U[Z.source]=st.getRenderableIds(!0).map(At=>st.getTileByID(At)).sort((At,pt)=>pt.tileID.overscaledZ-At.tileID.overscaledZ||(At.tileID.isLessThan(pt.tileID)?-1:1))}let $=this.crossTileSymbolIndex.addLayer(Z,U[Z.source],l.center.lng);O=O||$}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((M=M||this._layerOrderChanged||v===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(n.h.now(),l.zoom))&&(this.pauseablePlacement=new Nl(l,this.map.terrain,this._order,M,d,v,b,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,U),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(n.h.now()),B=!0),O&&this.pauseablePlacement.placement.setStale()),B||O)for(let W of this._order){let Z=this._layers[W];Z.type===\"symbol\"&&this.placement.updateLayerOpacities(Z,U[Z.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(n.h.now())}_releaseSymbolFadeTiles(){for(let l in this.sourceCaches)this.sourceCaches[l].releaseSymbolFadeTiles()}getImages(l,d,v){this.imageManager.getImages(d.icons,v),this._updateTilesForChangedImages();let b=this.sourceCaches[d.source];b&&b.setDependencies(d.tileID.key,d.type,d.icons)}getGlyphs(l,d,v){this.glyphManager.getGlyphs(d.stacks,v);let b=this.sourceCaches[d.source];b&&b.setDependencies(d.tileID.key,d.type,[\"\"])}getResource(l,d,v){return n.m(d,v)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(l,d={}){this._checkLoaded(),l&&this._validate(n.y.glyphs,\"glyphs\",l,null,d)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=l,this.glyphManager.entries={},this.glyphManager.setURL(l))}addSprite(l,d,v={},b){this._checkLoaded();let M=[{id:l,url:d}],O=[...kt(this.stylesheet.sprite),...M];this._validate(n.y.sprite,\"sprite\",O,null,v)||(this.stylesheet.sprite=O,this._loadSprite(M,!0,b))}removeSprite(l){this._checkLoaded();let d=kt(this.stylesheet.sprite);if(d.find(v=>v.id===l)){if(this._spritesImagesIds[l])for(let v of this._spritesImagesIds[l])this.imageManager.removeImage(v),this._changedImages[v]=!0;d.splice(d.findIndex(v=>v.id===l),1),this.stylesheet.sprite=d.length>0?d:void 0,delete this._spritesImagesIds[l],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new n.k(\"data\",{dataType:\"style\"}))}else this.fire(new n.j(new Error(`Sprite \"${l}\" doesn't exists on this map.`)))}getSprite(){return kt(this.stylesheet.sprite)}setSprite(l,d={},v){this._checkLoaded(),l&&this._validate(n.y.sprite,\"sprite\",l,null,d)||(this.stylesheet.sprite=l,l?this._loadSprite(l,!0,v):(this._unloadSprite(),v&&v(null)))}}Vn.registerForPluginStateChange=n.aK;var wo=n.Q([{name:\"a_pos\",type:\"Int16\",components:2}]),Ul=\"attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}\";let $i={prelude:_i(`#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\n`,`#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}`),background:_i(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),backgroundPattern:_i(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),circle:_i(`varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:_i(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:_i(`uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`),heatmapTexture:_i(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),collisionBox:_i(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:_i(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:_i(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}\"),fill:_i(`#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:_i(`varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:_i(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:_i(`varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:_i(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:_i(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),line:_i(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}`),lineGradient:_i(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}`),linePattern:_i(`#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:_i(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:_i(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),symbolIcon:_i(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:_i(`#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:_i(`#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:_i(\"uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}\",Ul),terrainDepth:_i(\"varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}\",Ul),terrainCoords:_i(\"precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}\",Ul)};function _i(T,l){let d=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,v=l.match(/attribute ([\\w]+) ([\\w]+)/g),b=T.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),M=l.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),O=M?M.concat(b):b,B={};return{fragmentSource:T=T.replace(d,(U,W,Z,$,st)=>(B[st]=!0,W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nvarying ${Z} ${$} ${st};\n#else\nuniform ${Z} ${$} u_${st};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${st}\n ${Z} ${$} ${st} = u_${st};\n#endif\n`)),vertexSource:l=l.replace(d,(U,W,Z,$,st)=>{let At=$===\"float\"?\"vec2\":\"vec4\",pt=st.match(/color/)?\"color\":At;return B[st]?W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nuniform lowp float u_${st}_t;\nattribute ${Z} ${At} a_${st};\nvarying ${Z} ${$} ${st};\n#else\nuniform ${Z} ${$} u_${st};\n#endif\n`:pt===\"vec4\"?`\n#ifndef HAS_UNIFORM_u_${st}\n ${st} = a_${st};\n#else\n ${Z} ${$} ${st} = u_${st};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${st}\n ${st} = unpack_mix_${pt}(a_${st}, u_${st}_t);\n#else\n ${Z} ${$} ${st} = u_${st};\n#endif\n`:W===\"define\"?`\n#ifndef HAS_UNIFORM_u_${st}\nuniform lowp float u_${st}_t;\nattribute ${Z} ${At} a_${st};\n#else\nuniform ${Z} ${$} u_${st};\n#endif\n`:pt===\"vec4\"?`\n#ifndef HAS_UNIFORM_u_${st}\n ${Z} ${$} ${st} = a_${st};\n#else\n ${Z} ${$} ${st} = u_${st};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${st}\n ${Z} ${$} ${st} = unpack_mix_${pt}(a_${st}, u_${st}_t);\n#else\n ${Z} ${$} ${st} = u_${st};\n#endif\n`}),staticAttributes:v,staticUniforms:O}}class Vl{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(l,d,v,b,M,O,B,U,W){this.context=l;let Z=this.boundPaintVertexBuffers.length!==b.length;for(let $=0;!Z&&$({u_depth:new n.aL(Qt,oe.u_depth),u_terrain:new n.aL(Qt,oe.u_terrain),u_terrain_dim:new n.aM(Qt,oe.u_terrain_dim),u_terrain_matrix:new n.aN(Qt,oe.u_terrain_matrix),u_terrain_unpack:new n.aO(Qt,oe.u_terrain_unpack),u_terrain_exaggeration:new n.aM(Qt,oe.u_terrain_exaggeration)}))(l,Yt),this.binderUniforms=v?v.getUniforms(l,Yt):[]}draw(l,d,v,b,M,O,B,U,W,Z,$,st,At,pt,yt,dt,Ft,Wt){let St=l.gl;if(this.failedToCreate)return;if(l.program.set(this.program),l.setDepthMode(v),l.setStencilMode(b),l.setColorMode(M),l.setCullFace(O),U){l.activeTexture.set(St.TEXTURE2),St.bindTexture(St.TEXTURE_2D,U.depthTexture),l.activeTexture.set(St.TEXTURE3),St.bindTexture(St.TEXTURE_2D,U.texture);for(let Yt in this.terrainUniforms)this.terrainUniforms[Yt].set(U[Yt])}for(let Yt in this.fixedUniforms)this.fixedUniforms[Yt].set(B[Yt]);yt&&yt.setUniforms(l,this.binderUniforms,At,{zoom:pt});let Bt=0;switch(d){case St.LINES:Bt=2;break;case St.TRIANGLES:Bt=3;break;case St.LINE_STRIP:Bt=1}for(let Yt of st.get()){let Qt=Yt.vaos||(Yt.vaos={});(Qt[W]||(Qt[W]=new Vl)).bind(l,this,Z,yt?yt.getPaintVertexBuffers():[],$,Yt.vertexOffset,dt,Ft,Wt),St.drawElements(d,Yt.primitiveLength*Bt,St.UNSIGNED_SHORT,Yt.primitiveOffset*Bt*2)}}}function ts(T,l,d){let v=1/Ot(d,1,l.transform.tileZoom),b=Math.pow(2,d.tileID.overscaledZ),M=d.tileSize*Math.pow(2,l.transform.tileZoom)/b,O=M*(d.tileID.canonical.x+d.tileID.wrap*b),B=M*d.tileID.canonical.y;return{u_image:0,u_texsize:d.imageAtlasTexture.size,u_scale:[v,T.fromScale,T.toScale],u_fade:T.t,u_pixel_coord_upper:[O>>16,B>>16],u_pixel_coord_lower:[65535&O,65535&B]}}let Gp=(T,l,d,v)=>{let b=l.style.light,M=b.properties.get(\"position\"),O=[M.x,M.y,M.z],B=function(){var W=new n.A(9);return n.A!=Float32Array&&(W[1]=0,W[2]=0,W[3]=0,W[5]=0,W[6]=0,W[7]=0),W[0]=1,W[4]=1,W[8]=1,W}();b.properties.get(\"anchor\")===\"viewport\"&&function(W,Z){var $=Math.sin(Z),st=Math.cos(Z);W[0]=st,W[1]=$,W[2]=0,W[3]=-$,W[4]=st,W[5]=0,W[6]=0,W[7]=0,W[8]=1}(B,-l.transform.angle),function(W,Z,$){var st=Z[0],At=Z[1],pt=Z[2];W[0]=st*$[0]+At*$[3]+pt*$[6],W[1]=st*$[1]+At*$[4]+pt*$[7],W[2]=st*$[2]+At*$[5]+pt*$[8]}(O,O,B);let U=b.properties.get(\"color\");return{u_matrix:T,u_lightpos:O,u_lightintensity:b.properties.get(\"intensity\"),u_lightcolor:[U.r,U.g,U.b],u_vertical_gradient:+d,u_opacity:v}},jl=(T,l,d,v,b,M,O)=>n.e(Gp(T,l,d,v),ts(M,l,O),{u_height_factor:-Math.pow(2,b.overscaledZ)/O.tileSize/8}),_d=T=>({u_matrix:T}),yd=(T,l,d,v)=>n.e(_d(T),ts(d,l,v)),vd=(T,l)=>({u_matrix:T,u_world:l}),xd=(T,l,d,v,b)=>n.e(yd(T,l,d,v),{u_world:b}),lt=(T,l,d,v)=>{let b=T.transform,M,O;if(v.paint.get(\"circle-pitch-alignment\")===\"map\"){let B=Ot(d,1,b.zoom);M=!0,O=[B,B]}else M=!1,O=b.pixelsToGLUnits;return{u_camera_to_center_distance:b.cameraToCenterDistance,u_scale_with_map:+(v.paint.get(\"circle-pitch-scale\")===\"map\"),u_matrix:T.translatePosMatrix(l.posMatrix,d,v.paint.get(\"circle-translate\"),v.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+M,u_device_pixel_ratio:T.pixelRatio,u_extrude_scale:O}},ft=(T,l,d)=>{let v=Ot(d,1,l.zoom),b=Math.pow(2,l.zoom-d.tileID.overscaledZ),M=d.tileID.overscaleFactor();return{u_matrix:T,u_camera_to_center_distance:l.cameraToCenterDistance,u_pixels_to_tile_units:v,u_extrude_scale:[l.pixelsToGLUnits[0]/(v*b),l.pixelsToGLUnits[1]/(v*b)],u_overscale_factor:M}},Lt=(T,l,d=1)=>({u_matrix:T,u_color:l,u_overlay:0,u_overlay_scale:d}),$t=T=>({u_matrix:T}),ge=(T,l,d,v)=>({u_matrix:T,u_extrude_scale:Ot(l,1,d),u_intensity:v});function qe(T,l){let d=Math.pow(2,l.canonical.z),v=l.canonical.y;return[new n.U(0,v/d).toLngLat().lat,new n.U(0,(v+1)/d).toLngLat().lat]}let ti=(T,l,d,v)=>{let b=T.transform;return{u_matrix:Vm(T,l,d,v),u_ratio:1/Ot(l,1,b.zoom),u_device_pixel_ratio:T.pixelRatio,u_units_to_pixels:[1/b.pixelsToGLUnits[0],1/b.pixelsToGLUnits[1]]}},es=(T,l,d,v,b)=>n.e(ti(T,l,d,b),{u_image:0,u_image_height:v}),Ts=(T,l,d,v,b)=>{let M=T.transform,O=Ra(l,M);return{u_matrix:Vm(T,l,d,b),u_texsize:l.imageAtlasTexture.size,u_ratio:1/Ot(l,1,M.zoom),u_device_pixel_ratio:T.pixelRatio,u_image:0,u_scale:[O,v.fromScale,v.toScale],u_fade:v.t,u_units_to_pixels:[1/M.pixelsToGLUnits[0],1/M.pixelsToGLUnits[1]]}},zs=(T,l,d,v,b,M)=>{let O=T.lineAtlas,B=Ra(l,T.transform),U=d.layout.get(\"line-cap\")===\"round\",W=O.getDash(v.from,U),Z=O.getDash(v.to,U),$=W.width*b.fromScale,st=Z.width*b.toScale;return n.e(ti(T,l,d,M),{u_patternscale_a:[B/$,-W.height/2],u_patternscale_b:[B/st,-Z.height/2],u_sdfgamma:O.width/(256*Math.min($,st)*T.pixelRatio)/2,u_image:0,u_tex_y_a:W.y,u_tex_y_b:Z.y,u_mix:b.t})};function Ra(T,l){return 1/Ot(T,1,l.tileZoom)}function Vm(T,l,d,v){return T.translatePosMatrix(v?v.posMatrix:l.tileID.posMatrix,l,d.paint.get(\"line-translate\"),d.paint.get(\"line-translate-anchor\"))}let Ix=(T,l,d,v,b)=>{return{u_matrix:T,u_tl_parent:l,u_scale_parent:d,u_buffer_scale:1,u_fade_t:v.mix,u_opacity:v.opacity*b.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:b.paint.get(\"raster-brightness-min\"),u_brightness_high:b.paint.get(\"raster-brightness-max\"),u_saturation_factor:(O=b.paint.get(\"raster-saturation\"),O>0?1-1/(1.001-O):-O),u_contrast_factor:(M=b.paint.get(\"raster-contrast\"),M>0?1/(1-M):1+M),u_spin_weights:Cx(b.paint.get(\"raster-hue-rotate\"))};var M,O};function Cx(T){T*=Math.PI/180;let l=Math.sin(T),d=Math.cos(T);return[(2*d+1)/3,(-Math.sqrt(3)*l-d+1)/3,(Math.sqrt(3)*l-d+1)/3]}let e_=(T,l,d,v,b,M,O,B,U,W)=>{let Z=b.transform;return{u_is_size_zoom_constant:+(T===\"constant\"||T===\"source\"),u_is_size_feature_constant:+(T===\"constant\"||T===\"camera\"),u_size_t:l?l.uSizeT:0,u_size:l?l.uSize:0,u_camera_to_center_distance:Z.cameraToCenterDistance,u_pitch:Z.pitch/360*2*Math.PI,u_rotate_symbol:+d,u_aspect_ratio:Z.width/Z.height,u_fade_change:b.options.fadeDuration?b.symbolFadeChange:1,u_matrix:M,u_label_plane_matrix:O,u_coord_matrix:B,u_is_text:+U,u_pitch_with_map:+v,u_texsize:W,u_texture:0}},r_=(T,l,d,v,b,M,O,B,U,W,Z)=>{let $=b.transform;return n.e(e_(T,l,d,v,b,M,O,B,U,W),{u_gamma_scale:v?Math.cos($._pitch)*$.cameraToCenterDistance:1,u_device_pixel_ratio:b.pixelRatio,u_is_halo:+Z})},mf=(T,l,d,v,b,M,O,B,U,W)=>n.e(r_(T,l,d,v,b,M,O,B,!0,U,!0),{u_texsize_icon:W,u_texture_icon:1}),jm=(T,l,d)=>({u_matrix:T,u_opacity:l,u_color:d}),fl=(T,l,d,v,b,M)=>n.e(function(O,B,U,W){let Z=U.imageManager.getPattern(O.from.toString()),$=U.imageManager.getPattern(O.to.toString()),{width:st,height:At}=U.imageManager.getPixelSize(),pt=Math.pow(2,W.tileID.overscaledZ),yt=W.tileSize*Math.pow(2,U.transform.tileZoom)/pt,dt=yt*(W.tileID.canonical.x+W.tileID.wrap*pt),Ft=yt*W.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Z.tl,u_pattern_br_a:Z.br,u_pattern_tl_b:$.tl,u_pattern_br_b:$.br,u_texsize:[st,At],u_mix:B.t,u_pattern_size_a:Z.displaySize,u_pattern_size_b:$.displaySize,u_scale_a:B.fromScale,u_scale_b:B.toScale,u_tile_units_to_pixels:1/Ot(W,1,U.transform.tileZoom),u_pixel_coord_upper:[dt>>16,Ft>>16],u_pixel_coord_lower:[65535&dt,65535&Ft]}}(v,M,d,b),{u_matrix:T,u_opacity:l}),Gm={fillExtrusion:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_lightpos:new n.aP(T,l.u_lightpos),u_lightintensity:new n.aM(T,l.u_lightintensity),u_lightcolor:new n.aP(T,l.u_lightcolor),u_vertical_gradient:new n.aM(T,l.u_vertical_gradient),u_opacity:new n.aM(T,l.u_opacity)}),fillExtrusionPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_lightpos:new n.aP(T,l.u_lightpos),u_lightintensity:new n.aM(T,l.u_lightintensity),u_lightcolor:new n.aP(T,l.u_lightcolor),u_vertical_gradient:new n.aM(T,l.u_vertical_gradient),u_height_factor:new n.aM(T,l.u_height_factor),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade),u_opacity:new n.aM(T,l.u_opacity)}),fill:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix)}),fillPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),fillOutline:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world)}),fillOutlinePattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world),u_image:new n.aL(T,l.u_image),u_texsize:new n.aQ(T,l.u_texsize),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),circle:(T,l)=>({u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_scale_with_map:new n.aL(T,l.u_scale_with_map),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_extrude_scale:new n.aQ(T,l.u_extrude_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_matrix:new n.aN(T,l.u_matrix)}),collisionBox:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pixels_to_tile_units:new n.aM(T,l.u_pixels_to_tile_units),u_extrude_scale:new n.aQ(T,l.u_extrude_scale),u_overscale_factor:new n.aM(T,l.u_overscale_factor)}),collisionCircle:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_inv_matrix:new n.aN(T,l.u_inv_matrix),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_viewport_size:new n.aQ(T,l.u_viewport_size)}),debug:(T,l)=>({u_color:new n.aR(T,l.u_color),u_matrix:new n.aN(T,l.u_matrix),u_overlay:new n.aL(T,l.u_overlay),u_overlay_scale:new n.aM(T,l.u_overlay_scale)}),clippingMask:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix)}),heatmap:(T,l)=>({u_extrude_scale:new n.aM(T,l.u_extrude_scale),u_intensity:new n.aM(T,l.u_intensity),u_matrix:new n.aN(T,l.u_matrix)}),heatmapTexture:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_world:new n.aQ(T,l.u_world),u_image:new n.aL(T,l.u_image),u_color_ramp:new n.aL(T,l.u_color_ramp),u_opacity:new n.aM(T,l.u_opacity)}),hillshade:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_latrange:new n.aQ(T,l.u_latrange),u_light:new n.aQ(T,l.u_light),u_shadow:new n.aR(T,l.u_shadow),u_highlight:new n.aR(T,l.u_highlight),u_accent:new n.aR(T,l.u_accent)}),hillshadePrepare:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_image:new n.aL(T,l.u_image),u_dimension:new n.aQ(T,l.u_dimension),u_zoom:new n.aM(T,l.u_zoom),u_unpack:new n.aO(T,l.u_unpack)}),line:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels)}),lineGradient:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_image:new n.aL(T,l.u_image),u_image_height:new n.aM(T,l.u_image_height)}),linePattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texsize:new n.aQ(T,l.u_texsize),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_image:new n.aL(T,l.u_image),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_scale:new n.aP(T,l.u_scale),u_fade:new n.aM(T,l.u_fade)}),lineSDF:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ratio:new n.aM(T,l.u_ratio),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_units_to_pixels:new n.aQ(T,l.u_units_to_pixels),u_patternscale_a:new n.aQ(T,l.u_patternscale_a),u_patternscale_b:new n.aQ(T,l.u_patternscale_b),u_sdfgamma:new n.aM(T,l.u_sdfgamma),u_image:new n.aL(T,l.u_image),u_tex_y_a:new n.aM(T,l.u_tex_y_a),u_tex_y_b:new n.aM(T,l.u_tex_y_b),u_mix:new n.aM(T,l.u_mix)}),raster:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_tl_parent:new n.aQ(T,l.u_tl_parent),u_scale_parent:new n.aM(T,l.u_scale_parent),u_buffer_scale:new n.aM(T,l.u_buffer_scale),u_fade_t:new n.aM(T,l.u_fade_t),u_opacity:new n.aM(T,l.u_opacity),u_image0:new n.aL(T,l.u_image0),u_image1:new n.aL(T,l.u_image1),u_brightness_low:new n.aM(T,l.u_brightness_low),u_brightness_high:new n.aM(T,l.u_brightness_high),u_saturation_factor:new n.aM(T,l.u_saturation_factor),u_contrast_factor:new n.aM(T,l.u_contrast_factor),u_spin_weights:new n.aP(T,l.u_spin_weights)}),symbolIcon:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texture:new n.aL(T,l.u_texture)}),symbolSDF:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texture:new n.aL(T,l.u_texture),u_gamma_scale:new n.aM(T,l.u_gamma_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_is_halo:new n.aL(T,l.u_is_halo)}),symbolTextAndIcon:(T,l)=>({u_is_size_zoom_constant:new n.aL(T,l.u_is_size_zoom_constant),u_is_size_feature_constant:new n.aL(T,l.u_is_size_feature_constant),u_size_t:new n.aM(T,l.u_size_t),u_size:new n.aM(T,l.u_size),u_camera_to_center_distance:new n.aM(T,l.u_camera_to_center_distance),u_pitch:new n.aM(T,l.u_pitch),u_rotate_symbol:new n.aL(T,l.u_rotate_symbol),u_aspect_ratio:new n.aM(T,l.u_aspect_ratio),u_fade_change:new n.aM(T,l.u_fade_change),u_matrix:new n.aN(T,l.u_matrix),u_label_plane_matrix:new n.aN(T,l.u_label_plane_matrix),u_coord_matrix:new n.aN(T,l.u_coord_matrix),u_is_text:new n.aL(T,l.u_is_text),u_pitch_with_map:new n.aL(T,l.u_pitch_with_map),u_texsize:new n.aQ(T,l.u_texsize),u_texsize_icon:new n.aQ(T,l.u_texsize_icon),u_texture:new n.aL(T,l.u_texture),u_texture_icon:new n.aL(T,l.u_texture_icon),u_gamma_scale:new n.aM(T,l.u_gamma_scale),u_device_pixel_ratio:new n.aM(T,l.u_device_pixel_ratio),u_is_halo:new n.aL(T,l.u_is_halo)}),background:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_opacity:new n.aM(T,l.u_opacity),u_color:new n.aR(T,l.u_color)}),backgroundPattern:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_opacity:new n.aM(T,l.u_opacity),u_image:new n.aL(T,l.u_image),u_pattern_tl_a:new n.aQ(T,l.u_pattern_tl_a),u_pattern_br_a:new n.aQ(T,l.u_pattern_br_a),u_pattern_tl_b:new n.aQ(T,l.u_pattern_tl_b),u_pattern_br_b:new n.aQ(T,l.u_pattern_br_b),u_texsize:new n.aQ(T,l.u_texsize),u_mix:new n.aM(T,l.u_mix),u_pattern_size_a:new n.aQ(T,l.u_pattern_size_a),u_pattern_size_b:new n.aQ(T,l.u_pattern_size_b),u_scale_a:new n.aM(T,l.u_scale_a),u_scale_b:new n.aM(T,l.u_scale_b),u_pixel_coord_upper:new n.aQ(T,l.u_pixel_coord_upper),u_pixel_coord_lower:new n.aQ(T,l.u_pixel_coord_lower),u_tile_units_to_pixels:new n.aM(T,l.u_tile_units_to_pixels)}),terrain:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texture:new n.aL(T,l.u_texture),u_ele_delta:new n.aM(T,l.u_ele_delta)}),terrainDepth:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_ele_delta:new n.aM(T,l.u_ele_delta)}),terrainCoords:(T,l)=>({u_matrix:new n.aN(T,l.u_matrix),u_texture:new n.aL(T,l.u_texture),u_terrain_coords_id:new n.aM(T,l.u_terrain_coords_id),u_ele_delta:new n.aM(T,l.u_ele_delta)})};class Wm{constructor(l,d,v){this.context=l;let b=l.gl;this.buffer=b.createBuffer(),this.dynamicDraw=!!v,this.context.unbindVAO(),l.bindElementBuffer.set(this.buffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,d.arrayBuffer,this.dynamicDraw?b.DYNAMIC_DRAW:b.STATIC_DRAW),this.dynamicDraw||delete d.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(l){let d=this.context.gl;if(!this.dynamicDraw)throw new Error(\"Attempted to update data while not in dynamic mode.\");this.context.unbindVAO(),this.bind(),d.bufferSubData(d.ELEMENT_ARRAY_BUFFER,0,l.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let Wp={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class Hm{constructor(l,d,v,b){this.length=d.length,this.attributes=v,this.itemSize=d.bytesPerElement,this.dynamicDraw=b,this.context=l;let M=l.gl;this.buffer=M.createBuffer(),l.bindVertexBuffer.set(this.buffer),M.bufferData(M.ARRAY_BUFFER,d.arrayBuffer,this.dynamicDraw?M.DYNAMIC_DRAW:M.STATIC_DRAW),this.dynamicDraw||delete d.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(l){if(l.length!==this.length)throw new Error(`Length of new data is ${l.length}, which doesn't match current length of ${this.length}`);let d=this.context.gl;this.bind(),d.bufferSubData(d.ARRAY_BUFFER,0,l.arrayBuffer)}enableAttributes(l,d){for(let v=0;v0){let xe=n.Z(),We=oe;n.aU(xe,Qt.placementInvProjMatrix,T.transform.glCoordMatrix),n.aU(xe,xe,Qt.placementViewportMatrix),Z.push({circleArray:he,circleOffset:st,transform:We,invTransform:xe,coord:Bt}),$+=he.length/4,st=$}pe&&W.draw(B,U.LINES,ci.disabled,$e.disabled,T.colorModeForRenderPass(),It.disabled,ft(oe,T.transform,Yt),T.style.map.terrain&&T.style.map.terrain.getTerrainData(Bt),d.id,pe.layoutVertexBuffer,pe.indexBuffer,pe.segments,null,T.transform.zoom,null,null,pe.collisionVertexBuffer)}if(!O||!Z.length)return;let At=T.useProgram(\"collisionCircle\"),pt=new n.aV;pt.resize(4*$),pt._trim();let yt=0;for(let St of Z)for(let Bt=0;Bt=0&&(pt[dt.associatedIconIndex]={shiftedAnchor:Kr,angle:Me})}else ht(dt.numGlyphs,st)}if(W){At.clear();let yt=T.icon.placedSymbolArray;for(let dt=0;dtT.style.map.terrain.getElevation(pe,Yo,mn):null,hs=d.layout.get(\"text-rotation-alignment\")===\"map\";Se(xe,pe.posMatrix,T,b,jr,Wl,dt,W,hs,On)}let gu=T.translatePosMatrix(pe.posMatrix,he,M,O),gh=Ft||b&&Qt||mu?Km:jr,Vs=T.translatePosMatrix(Wl,he,M,O,!0),Ps=Me&&d.paint.get(b?\"text-halo-width\":\"icon-halo-width\").constantOr(1)!==0,Mo;Mo=Me?xe.iconsInText?mf(dr.kind,Jr,Wt,dt,T,gu,gh,Vs,ei,us):r_(dr.kind,Jr,Wt,dt,T,gu,gh,Vs,b,ei,!0):e_(dr.kind,Jr,Wt,dt,T,gu,gh,Vs,b,ei);let _h={program:Vi,buffers:We,uniformValues:Mo,atlasTexture:Rn,atlasTextureIcon:Dn,atlasInterpolation:Ki,atlasInterpolationIcon:Us,isSDF:Me,hasHalo:Ps};if(St&&xe.canOverlap){Bt=!0;let On=We.segments.get();for(let hs of On)oe.push({segments:new n.S([hs]),sortKey:hs.sortKey,state:_h,terrainData:Vr})}else oe.push({segments:We.segments,sortKey:0,state:_h,terrainData:Vr})}Bt&&oe.sort((pe,he)=>pe.sortKey-he.sortKey);for(let pe of oe){let he=pe.state;if(st.activeTexture.set(At.TEXTURE0),he.atlasTexture.bind(he.atlasInterpolation,At.CLAMP_TO_EDGE),he.atlasTextureIcon&&(st.activeTexture.set(At.TEXTURE1),he.atlasTextureIcon&&he.atlasTextureIcon.bind(he.atlasInterpolationIcon,At.CLAMP_TO_EDGE)),he.isSDF){let xe=he.uniformValues;he.hasHalo&&(xe.u_is_halo=1,t0(he.buffers,pe.segments,d,T,he.program,Yt,Z,$,xe,pe.terrainData)),xe.u_is_halo=0}t0(he.buffers,pe.segments,d,T,he.program,Yt,Z,$,he.uniformValues,pe.terrainData)}}function t0(T,l,d,v,b,M,O,B,U,W){let Z=v.context;b.draw(Z,Z.gl.TRIANGLES,M,O,B,It.disabled,U,W,d.id,T.layoutVertexBuffer,T.indexBuffer,l,d.paint,v.transform.zoom,T.programConfigurations.get(d.id),T.dynamicLayoutVertexBuffer,T.opacityVertexBuffer)}function Ed(T,l,d,v,b){if(!d||!v||!v.imageAtlas)return;let M=v.imageAtlas.patternPositions,O=M[d.to.toString()],B=M[d.from.toString()];if(!O&&B&&(O=B),!B&&O&&(B=O),!O||!B){let U=b.getPaintProperty(l);O=M[U],B=M[U]}O&&B&&T.setConstantPatternPositions(O,B)}function Pd(T,l,d,v,b,M,O){let B=T.context.gl,U=\"fill-pattern\",W=d.paint.get(U),Z=W&&W.constantOr(1),$=d.getCrossfadeParameters(),st,At,pt,yt,dt;O?(At=Z&&!d.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",st=B.LINES):(At=Z?\"fillPattern\":\"fill\",st=B.TRIANGLES);let Ft=W.constantOr(null);for(let Wt of v){let St=l.getTile(Wt);if(Z&&!St.patternsLoaded())continue;let Bt=St.getBucket(d);if(!Bt)continue;let Yt=Bt.programConfigurations.get(d.id),Qt=T.useProgram(At,Yt),oe=T.style.map.terrain&&T.style.map.terrain.getTerrainData(Wt);Z&&(T.context.activeTexture.set(B.TEXTURE0),St.imageAtlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE),Yt.updatePaintBuffers($)),Ed(Yt,U,Ft,St,d);let pe=oe?Wt:null,he=T.translatePosMatrix(pe?pe.posMatrix:Wt.posMatrix,St,d.paint.get(\"fill-translate\"),d.paint.get(\"fill-translate-anchor\"));if(O){yt=Bt.indexBuffer2,dt=Bt.segments2;let xe=[B.drawingBufferWidth,B.drawingBufferHeight];pt=At===\"fillOutlinePattern\"&&Z?xd(he,T,$,St,xe):vd(he,xe)}else yt=Bt.indexBuffer,dt=Bt.segments,pt=Z?yd(he,T,$,St):_d(he);Qt.draw(T.context,st,b,T.stencilModeForClipping(Wt),M,It.disabled,pt,oe,d.id,Bt.layoutVertexBuffer,yt,dt,d.paint,T.transform.zoom,Yt)}}function Id(T,l,d,v,b,M,O){let B=T.context,U=B.gl,W=\"fill-extrusion-pattern\",Z=d.paint.get(W),$=Z.constantOr(1),st=d.getCrossfadeParameters(),At=d.paint.get(\"fill-extrusion-opacity\"),pt=Z.constantOr(null);for(let yt of v){let dt=l.getTile(yt),Ft=dt.getBucket(d);if(!Ft)continue;let Wt=T.style.map.terrain&&T.style.map.terrain.getTerrainData(yt),St=Ft.programConfigurations.get(d.id),Bt=T.useProgram($?\"fillExtrusionPattern\":\"fillExtrusion\",St);$&&(T.context.activeTexture.set(U.TEXTURE0),dt.imageAtlasTexture.bind(U.LINEAR,U.CLAMP_TO_EDGE),St.updatePaintBuffers(st)),Ed(St,W,pt,dt,d);let Yt=T.translatePosMatrix(yt.posMatrix,dt,d.paint.get(\"fill-extrusion-translate\"),d.paint.get(\"fill-extrusion-translate-anchor\")),Qt=d.paint.get(\"fill-extrusion-vertical-gradient\"),oe=$?jl(Yt,T,Qt,At,yt,st,dt):Gp(Yt,T,Qt,At);Bt.draw(B,B.gl.TRIANGLES,b,M,O,It.backCCW,oe,Wt,d.id,Ft.layoutVertexBuffer,Ft.indexBuffer,Ft.segments,d.paint,T.transform.zoom,St,T.style.map.terrain&&Ft.centroidVertexBuffer)}}function Lx(T,l,d,v,b,M,O){let B=T.context,U=B.gl,W=d.fbo;if(!W)return;let Z=T.useProgram(\"hillshade\"),$=T.style.map.terrain&&T.style.map.terrain.getTerrainData(l);B.activeTexture.set(U.TEXTURE0),U.bindTexture(U.TEXTURE_2D,W.colorAttachment.get()),Z.draw(B,U.TRIANGLES,b,M,O,It.disabled,((st,At,pt,yt)=>{let dt=pt.paint.get(\"hillshade-shadow-color\"),Ft=pt.paint.get(\"hillshade-highlight-color\"),Wt=pt.paint.get(\"hillshade-accent-color\"),St=pt.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);pt.paint.get(\"hillshade-illumination-anchor\")===\"viewport\"&&(St-=st.transform.angle);let Bt=!st.options.moving;return{u_matrix:yt?yt.posMatrix:st.transform.calculatePosMatrix(At.tileID.toUnwrapped(),Bt),u_image:0,u_latrange:qe(0,At.tileID),u_light:[pt.paint.get(\"hillshade-exaggeration\"),St],u_shadow:dt,u_highlight:Ft,u_accent:Wt}})(T,d,v,$?l:null),$,v.id,T.rasterBoundsBuffer,T.quadTriangleIndexBuffer,T.rasterBoundsSegments)}function e0(T,l,d,v,b,M){let O=T.context,B=O.gl,U=l.dem;if(U&&U.data){let W=U.dim,Z=U.stride,$=U.getPixels();if(O.activeTexture.set(B.TEXTURE1),O.pixelStoreUnpackPremultiplyAlpha.set(!1),l.demTexture=l.demTexture||T.getTileTexture(Z),l.demTexture){let At=l.demTexture;At.update($,{premultiply:!1}),At.bind(B.NEAREST,B.CLAMP_TO_EDGE)}else l.demTexture=new Zt(O,$,B.RGBA,{premultiply:!1}),l.demTexture.bind(B.NEAREST,B.CLAMP_TO_EDGE);O.activeTexture.set(B.TEXTURE0);let st=l.fbo;if(!st){let At=new Zt(O,{width:W,height:W,data:null},B.RGBA);At.bind(B.LINEAR,B.CLAMP_TO_EDGE),st=l.fbo=O.createFramebuffer(W,W,!0,!1),st.colorAttachment.set(At.texture)}O.bindFramebuffer.set(st.framebuffer),O.viewport.set([0,0,W,W]),T.useProgram(\"hillshadePrepare\").draw(O,B.TRIANGLES,v,b,M,It.disabled,((At,pt)=>{let yt=pt.stride,dt=n.Z();return n.aS(dt,0,n.N,-n.N,0,0,1),n.$(dt,dt,[0,-n.N,0]),{u_matrix:dt,u_image:1,u_dimension:[yt,yt],u_zoom:At.overscaledZ,u_unpack:pt.getUnpackVector()}})(l.tileID,U),null,d.id,T.rasterBoundsBuffer,T.quadTriangleIndexBuffer,T.rasterBoundsSegments),l.needsHillshadePrepare=!1}}function s_(T,l,d,v,b,M){let O=v.paint.get(\"raster-fade-duration\");if(!M&&O>0){let B=n.h.now(),U=(B-T.timeAdded)/O,W=l?(B-l.timeAdded)/O:-1,Z=d.getSource(),$=b.coveringZoomLevel({tileSize:Z.tileSize,roundZoom:Z.roundZoom}),st=!l||Math.abs(l.tileID.overscaledZ-$)>Math.abs(T.tileID.overscaledZ-$),At=st&&T.refreshedUponExpiration?1:n.ad(st?U:1-W,0,1);return T.refreshedUponExpiration&&U>=1&&(T.refreshedUponExpiration=!1),l?{opacity:1,mix:1-At}:{opacity:At,mix:0}}return{opacity:1,mix:0}}let o_=new n.aT(1,0,0,1),_f=new n.aT(0,1,0,1),Ba=new n.aT(0,0,1,1),jn=new n.aT(1,0,1,1),a_=new n.aT(0,1,1,1);function Cd(T,l,d,v){Xp(T,0,l+d/2,T.transform.width,d,v)}function $p(T,l,d,v){Xp(T,l-d/2,0,d,T.transform.height,v)}function Xp(T,l,d,v,b,M){let O=T.context,B=O.gl;B.enable(B.SCISSOR_TEST),B.scissor(l*T.pixelRatio,d*T.pixelRatio,v*T.pixelRatio,b*T.pixelRatio),O.clear({color:M}),B.disable(B.SCISSOR_TEST)}function r0(T,l,d){let v=T.context,b=v.gl,M=d.posMatrix,O=T.useProgram(\"debug\"),B=ci.disabled,U=$e.disabled,W=T.colorModeForRenderPass(),Z=\"$debug\",$=T.style.map.terrain&&T.style.map.terrain.getTerrainData(d);v.activeTexture.set(b.TEXTURE0);let st=l.getTileByID(d.key).latestRawTileData,At=Math.floor((st&&st.byteLength||0)/1024),pt=l.getTile(d).tileSize,yt=512/Math.min(pt,512)*(d.overscaledZ/T.transform.zoom)*.5,dt=d.canonical.toString();d.overscaledZ!==d.canonical.z&&(dt+=` => ${d.overscaledZ}`),function(Ft,Wt){Ft.initDebugOverlayCanvas();let St=Ft.debugOverlayCanvas,Bt=Ft.context.gl,Yt=Ft.debugOverlayCanvas.getContext(\"2d\");Yt.clearRect(0,0,St.width,St.height),Yt.shadowColor=\"white\",Yt.shadowBlur=2,Yt.lineWidth=1.5,Yt.strokeStyle=\"white\",Yt.textBaseline=\"top\",Yt.font=\"bold 36px Open Sans, sans-serif\",Yt.fillText(Wt,5,5),Yt.strokeText(Wt,5,5),Ft.debugOverlayTexture.update(St),Ft.debugOverlayTexture.bind(Bt.LINEAR,Bt.CLAMP_TO_EDGE)}(T,`${dt} ${At}kB`),O.draw(v,b.TRIANGLES,B,U,Xi.alphaBlended,It.disabled,Lt(M,n.aT.transparent,yt),null,Z,T.debugBuffer,T.quadTriangleIndexBuffer,T.debugSegments),O.draw(v,b.LINE_STRIP,B,U,W,It.disabled,Lt(M,n.aT.red),$,Z,T.debugBuffer,T.tileBorderIndexBuffer,T.debugSegments)}function Pn(T,l,d){let v=T.context,b=v.gl,M=T.colorModeForRenderPass(),O=new ci(b.LEQUAL,ci.ReadWrite,T.depthRangeFor3D),B=T.useProgram(\"terrain\"),U=l.getTerrainMesh();v.bindFramebuffer.set(null),v.viewport.set([0,0,T.width,T.height]);for(let W of d){let Z=T.renderToTexture.getTexture(W),$=l.getTerrainData(W.tileID);v.activeTexture.set(b.TEXTURE0),b.bindTexture(b.TEXTURE_2D,Z.texture);let st={u_matrix:T.transform.calculatePosMatrix(W.tileID.toUnwrapped()),u_texture:0,u_ele_delta:l.getMeshFrameDelta(T.transform.zoom)};B.draw(v,b.TRIANGLES,O,$e.disabled,M,It.backCCW,st,$,\"terrain\",U.vertexBuffer,U.indexBuffer,U.segments)}}class oh{constructor(l,d){this.context=new Rc(l),this.transform=d,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:n.Z(),renderTime:0},this.setup(),this.numSublayers=as.maxUnderzooming+as.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new kc}resize(l,d,v){if(this.width=Math.floor(l*v),this.height=Math.floor(d*v),this.pixelRatio=v,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let b of this.style._order)this.style._layers[b].resize()}setup(){let l=this.context,d=new n.a_;d.emplaceBack(0,0),d.emplaceBack(n.N,0),d.emplaceBack(0,n.N),d.emplaceBack(n.N,n.N),this.tileExtentBuffer=l.createVertexBuffer(d,wo.members),this.tileExtentSegments=n.S.simpleSegment(0,0,4,2);let v=new n.a_;v.emplaceBack(0,0),v.emplaceBack(n.N,0),v.emplaceBack(0,n.N),v.emplaceBack(n.N,n.N),this.debugBuffer=l.createVertexBuffer(v,wo.members),this.debugSegments=n.S.simpleSegment(0,0,4,5);let b=new n.V;b.emplaceBack(0,0,0,0),b.emplaceBack(n.N,0,n.N,0),b.emplaceBack(0,n.N,0,n.N),b.emplaceBack(n.N,n.N,n.N,n.N),this.rasterBoundsBuffer=l.createVertexBuffer(b,Xn.members),this.rasterBoundsSegments=n.S.simpleSegment(0,0,4,2);let M=new n.a_;M.emplaceBack(0,0),M.emplaceBack(1,0),M.emplaceBack(0,1),M.emplaceBack(1,1),this.viewportBuffer=l.createVertexBuffer(M,wo.members),this.viewportSegments=n.S.simpleSegment(0,0,4,2);let O=new n.a$;O.emplaceBack(0),O.emplaceBack(1),O.emplaceBack(3),O.emplaceBack(2),O.emplaceBack(0),this.tileBorderIndexBuffer=l.createIndexBuffer(O);let B=new n.b0;B.emplaceBack(0,1,2),B.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=l.createIndexBuffer(B);let U=this.context.gl;this.stencilClearMode=new $e({func:U.ALWAYS,mask:0},0,255,U.ZERO,U.ZERO,U.ZERO)}clearStencil(){let l=this.context,d=l.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let v=n.Z();n.aS(v,0,this.width,this.height,0,0,1),n.a0(v,v,[d.drawingBufferWidth,d.drawingBufferHeight,0]),this.useProgram(\"clippingMask\").draw(l,d.TRIANGLES,ci.disabled,this.stencilClearMode,Xi.disabled,It.disabled,$t(v),null,\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(l,d){if(this.currentStencilSource===l.source||!l.isTileClipped()||!d||!d.length)return;this.currentStencilSource=l.source;let v=this.context,b=v.gl;this.nextStencilID+d.length>256&&this.clearStencil(),v.setColorMode(Xi.disabled),v.setDepthMode(ci.disabled);let M=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(let O of d){let B=this._tileClippingMaskIDs[O.key]=this.nextStencilID++,U=this.style.map.terrain&&this.style.map.terrain.getTerrainData(O);M.draw(v,b.TRIANGLES,ci.disabled,new $e({func:b.ALWAYS,mask:0},B,255,b.KEEP,b.KEEP,b.REPLACE),Xi.disabled,It.disabled,$t(O.posMatrix),U,\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let l=this.nextStencilID++,d=this.context.gl;return new $e({func:d.NOTEQUAL,mask:255},l,255,d.KEEP,d.KEEP,d.REPLACE)}stencilModeForClipping(l){let d=this.context.gl;return new $e({func:d.EQUAL,mask:255},this._tileClippingMaskIDs[l.key],0,d.KEEP,d.KEEP,d.REPLACE)}stencilConfigForOverlap(l){let d=this.context.gl,v=l.sort((O,B)=>B.overscaledZ-O.overscaledZ),b=v[v.length-1].overscaledZ,M=v[0].overscaledZ-b+1;if(M>1){this.currentStencilSource=void 0,this.nextStencilID+M>256&&this.clearStencil();let O={};for(let B=0;B=0;this.currentLayer--){let U=this.style._layers[v[this.currentLayer]],W=b[U.source],Z=M[U.source];this._renderTileClippingMasks(U,Z),this.renderLayer(this,W,U,Z)}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayerdt.source&&!dt.isHidden(Z)?[W.sourceCaches[dt.source]]:[]),At=st.filter(dt=>dt.getSource().type===\"vector\"),pt=st.filter(dt=>dt.getSource().type!==\"vector\"),yt=dt=>{(!$||$.getSource().maxzoomyt(dt)),$||pt.forEach(dt=>yt(dt)),$}(this.style,this.transform.zoom);U&&function(W,Z,$){for(let st=0;st<$.length;st++)r0(W,Z,$[st])}(this,U,U.getVisibleCoordinates())}this.options.showPadding&&function(U){let W=U.transform.padding;Cd(U,U.transform.height-(W.top||0),3,o_),Cd(U,W.bottom||0,3,_f),$p(U,W.left||0,3,Ba),$p(U,U.transform.width-(W.right||0),3,jn);let Z=U.transform.centerPoint;(function($,st,At,pt){Xp($,st-1,At-10,2,20,pt),Xp($,st-10,At-1,20,2,pt)})(U,Z.x,U.transform.height-Z.y,a_)}(this),this.context.setDefault()}renderLayer(l,d,v,b){if(!v.isHidden(this.transform.zoom)&&(v.type===\"background\"||v.type===\"custom\"||(b||[]).length))switch(this.id=v.id,v.type){case\"symbol\":(function(M,O,B,U,W){if(M.renderPass!==\"translucent\")return;let Z=$e.disabled,$=M.colorModeForRenderPass();(B._unevaluatedLayout.hasValue(\"text-variable-anchor\")||B._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"))&&function(st,At,pt,yt,dt,Ft,Wt){let St=At.transform,Bt=dt===\"map\",Yt=Ft===\"map\";for(let Qt of st){let oe=yt.getTile(Qt),pe=oe.getBucket(pt);if(!pe||!pe.text||!pe.text.segments.get().length)continue;let he=n.ah(pe.textSizeData,St.zoom),xe=Ot(oe,1,At.transform.zoom),We=ve(Qt.posMatrix,Yt,Bt,At.transform,xe),Kr=pt.layout.get(\"icon-text-fit\")!==\"none\"&&pe.hasIconData();if(he){let Me=Math.pow(2,St.zoom-oe.tileID.overscaledZ);Qp(pe,Bt,Yt,Wt,St,We,Qt.posMatrix,Me,he,Kr,At.style.map.terrain?(dr,Xe)=>At.style.map.terrain.getElevation(Qt,dr,Xe):null)}}}(U,M,B,O,B.layout.get(\"text-rotation-alignment\"),B.layout.get(\"text-pitch-alignment\"),W),B.paint.get(\"icon-opacity\").constantOr(1)!==0&&wt(M,O,B,U,!1,B.paint.get(\"icon-translate\"),B.paint.get(\"icon-translate-anchor\"),B.layout.get(\"icon-rotation-alignment\"),B.layout.get(\"icon-pitch-alignment\"),B.layout.get(\"icon-keep-upright\"),Z,$),B.paint.get(\"text-opacity\").constantOr(1)!==0&&wt(M,O,B,U,!0,B.paint.get(\"text-translate\"),B.paint.get(\"text-translate-anchor\"),B.layout.get(\"text-rotation-alignment\"),B.layout.get(\"text-pitch-alignment\"),B.layout.get(\"text-keep-upright\"),Z,$),O.map.showCollisionBoxes&&(Xm(M,O,B,U,B.paint.get(\"text-translate\"),B.paint.get(\"text-translate-anchor\"),!0),Xm(M,O,B,U,B.paint.get(\"icon-translate\"),B.paint.get(\"icon-translate-anchor\"),!1))})(l,d,v,b,this.style.placement.variableOffsets);break;case\"circle\":(function(M,O,B,U){if(M.renderPass!==\"translucent\")return;let W=B.paint.get(\"circle-opacity\"),Z=B.paint.get(\"circle-stroke-width\"),$=B.paint.get(\"circle-stroke-opacity\"),st=!B.layout.get(\"circle-sort-key\").isConstant();if(W.constantOr(1)===0&&(Z.constantOr(1)===0||$.constantOr(1)===0))return;let At=M.context,pt=At.gl,yt=M.depthModeForSublayer(0,ci.ReadOnly),dt=$e.disabled,Ft=M.colorModeForRenderPass(),Wt=[];for(let St=0;StSt.sortKey-Bt.sortKey);for(let St of Wt){let{programConfiguration:Bt,program:Yt,layoutVertexBuffer:Qt,indexBuffer:oe,uniformValues:pe,terrainData:he}=St.state;Yt.draw(At,pt.TRIANGLES,yt,dt,Ft,It.disabled,pe,he,B.id,Qt,oe,St.segments,B.paint,M.transform.zoom,Bt)}})(l,d,v,b);break;case\"heatmap\":(function(M,O,B,U){if(B.paint.get(\"heatmap-opacity\")!==0)if(M.renderPass===\"offscreen\"){let W=M.context,Z=W.gl,$=$e.disabled,st=new Xi([Z.ONE,Z.ONE],n.aT.transparent,[!0,!0,!0,!0]);(function(At,pt,yt){let dt=At.gl;At.activeTexture.set(dt.TEXTURE1),At.viewport.set([0,0,pt.width/4,pt.height/4]);let Ft=yt.heatmapFbo;if(Ft)dt.bindTexture(dt.TEXTURE_2D,Ft.colorAttachment.get()),At.bindFramebuffer.set(Ft.framebuffer);else{let Wt=dt.createTexture();dt.bindTexture(dt.TEXTURE_2D,Wt),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_WRAP_S,dt.CLAMP_TO_EDGE),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_WRAP_T,dt.CLAMP_TO_EDGE),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_MIN_FILTER,dt.LINEAR),dt.texParameteri(dt.TEXTURE_2D,dt.TEXTURE_MAG_FILTER,dt.LINEAR),Ft=yt.heatmapFbo=At.createFramebuffer(pt.width/4,pt.height/4,!1,!1),function(St,Bt,Yt,Qt){var oe,pe;let he=St.gl,xe=(oe=St.HALF_FLOAT)!==null&&oe!==void 0?oe:he.UNSIGNED_BYTE,We=(pe=St.RGBA16F)!==null&&pe!==void 0?pe:he.RGBA;he.texImage2D(he.TEXTURE_2D,0,We,Bt.width/4,Bt.height/4,0,he.RGBA,xe,null),Qt.colorAttachment.set(Yt)}(At,pt,Wt,Ft)}})(W,M,B),W.clear({color:n.aT.transparent});for(let At=0;At{let St=n.Z();n.aS(St,0,yt.width,yt.height,0,0,1);let Bt=yt.context.gl;return{u_matrix:St,u_world:[Bt.drawingBufferWidth,Bt.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:dt.paint.get(\"heatmap-opacity\")}})(W,Z),null,Z.id,W.viewportBuffer,W.quadTriangleIndexBuffer,W.viewportSegments,Z.paint,W.transform.zoom)}(M,B))})(l,d,v,b);break;case\"line\":(function(M,O,B,U){if(M.renderPass!==\"translucent\")return;let W=B.paint.get(\"line-opacity\"),Z=B.paint.get(\"line-width\");if(W.constantOr(1)===0||Z.constantOr(1)===0)return;let $=M.depthModeForSublayer(0,ci.ReadOnly),st=M.colorModeForRenderPass(),At=B.paint.get(\"line-dasharray\"),pt=B.paint.get(\"line-pattern\"),yt=pt.constantOr(1),dt=B.paint.get(\"line-gradient\"),Ft=B.getCrossfadeParameters(),Wt=yt?\"linePattern\":At?\"lineSDF\":dt?\"lineGradient\":\"line\",St=M.context,Bt=St.gl,Yt=!0;for(let Qt of U){let oe=O.getTile(Qt);if(yt&&!oe.patternsLoaded())continue;let pe=oe.getBucket(B);if(!pe)continue;let he=pe.programConfigurations.get(B.id),xe=M.context.program.get(),We=M.useProgram(Wt,he),Kr=Yt||We.program!==xe,Me=M.style.map.terrain&&M.style.map.terrain.getTerrainData(Qt),dr=pt.constantOr(null);if(dr&&oe.imageAtlas){let Jr=oe.imageAtlas,Vr=Jr.patternPositions[dr.to.toString()],ei=Jr.patternPositions[dr.from.toString()];Vr&&ei&&he.setConstantPatternPositions(Vr,ei)}let Xe=Me?Qt:null,Vi=yt?Ts(M,oe,B,Ft,Xe):At?zs(M,oe,B,At,Ft,Xe):dt?es(M,oe,B,pe.lineClipsArray.length,Xe):ti(M,oe,B,Xe);if(yt)St.activeTexture.set(Bt.TEXTURE0),oe.imageAtlasTexture.bind(Bt.LINEAR,Bt.CLAMP_TO_EDGE),he.updatePaintBuffers(Ft);else if(At&&(Kr||M.lineAtlas.dirty))St.activeTexture.set(Bt.TEXTURE0),M.lineAtlas.bind(St);else if(dt){let Jr=pe.gradients[B.id],Vr=Jr.texture;if(B.gradientVersion!==Jr.version){let ei=256;if(B.stepInterpolant){let Rn=O.getSource().maxzoom,Ki=Qt.canonical.z===Rn?Math.ceil(1<0?d.pop():null}isPatternMissing(l){if(!l)return!1;if(!l.from||!l.to)return!0;let d=this.imageManager.getPattern(l.from.toString()),v=this.imageManager.getPattern(l.to.toString());return!d||!v}useProgram(l,d){this.cache=this.cache||{};let v=l+(d?d.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\")+(this.style.map.terrain?\"/terrain\":\"\");return this.cache[v]||(this.cache[v]=new hu(this.context,$i[l],d,Gm[l],this._showOverdrawInspector,this.style.map.terrain)),this.cache[v]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let l=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(l.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new Zt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:l,drawingBufferHeight:d}=this.context.gl;return this.width!==l||this.height!==d}}class fi{constructor(l,d){this.points=l,this.planes=d}static fromInvProjectionMatrix(l,d,v){let b=Math.pow(2,v),M=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(B=>{let U=1/(B=n.ag([],B,l))[3]/d*b;return n.b3(B,B,[U,U,1/B[3],U])}),O=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(B=>{let U=function(st,At){var pt=At[0],yt=At[1],dt=At[2],Ft=pt*pt+yt*yt+dt*dt;return Ft>0&&(Ft=1/Math.sqrt(Ft)),st[0]=At[0]*Ft,st[1]=At[1]*Ft,st[2]=At[2]*Ft,st}([],function(st,At,pt){var yt=At[0],dt=At[1],Ft=At[2],Wt=pt[0],St=pt[1],Bt=pt[2];return st[0]=dt*Bt-Ft*St,st[1]=Ft*Wt-yt*Bt,st[2]=yt*St-dt*Wt,st}([],ut([],M[B[0]],M[B[1]]),ut([],M[B[2]],M[B[1]]))),W=-((Z=U)[0]*($=M[B[1]])[0]+Z[1]*$[1]+Z[2]*$[2]);var Z,$;return U.concat(W)});return new fi(M,O)}}class du{constructor(l,d){this.min=l,this.max=d,this.center=function(v,b,M){return v[0]=.5*b[0],v[1]=.5*b[1],v[2]=.5*b[2],v}([],function(v,b,M){return v[0]=b[0]+M[0],v[1]=b[1]+M[1],v[2]=b[2]+M[2],v}([],this.min,this.max))}quadrant(l){let d=[l%2==0,l<2],v=K(this.min),b=K(this.max);for(let M=0;M=0&&O++;if(O===0)return 0;O!==d.length&&(v=!1)}if(v)return 2;for(let b=0;b<3;b++){let M=Number.MAX_VALUE,O=-Number.MAX_VALUE;for(let B=0;Bthis.max[b]-this.min[b])return 0}return 1}}class yf{constructor(l=0,d=0,v=0,b=0){if(isNaN(l)||l<0||isNaN(d)||d<0||isNaN(v)||v<0||isNaN(b)||b<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=l,this.bottom=d,this.left=v,this.right=b}interpolate(l,d,v){return d.top!=null&&l.top!=null&&(this.top=n.B.number(l.top,d.top,v)),d.bottom!=null&&l.bottom!=null&&(this.bottom=n.B.number(l.bottom,d.bottom,v)),d.left!=null&&l.left!=null&&(this.left=n.B.number(l.left,d.left,v)),d.right!=null&&l.right!=null&&(this.right=n.B.number(l.right,d.right,v)),this}getCenter(l,d){let v=n.ad((this.left+l-this.right)/2,0,l),b=n.ad((this.top+d-this.bottom)/2,0,d);return new n.P(v,b)}equals(l){return this.top===l.top&&this.bottom===l.bottom&&this.left===l.left&&this.right===l.right}clone(){return new yf(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class Kp{constructor(l,d,v,b,M){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=M===void 0||!!M,this._minZoom=l||0,this._maxZoom=d||22,this._minPitch=v??0,this._maxPitch=b??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new n.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new yf,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0}clone(){let l=new Kp(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return l.apply(this),l}apply(l){this.tileSize=l.tileSize,this.latRange=l.latRange,this.width=l.width,this.height=l.height,this._center=l._center,this._elevation=l._elevation,this._minEleveationForCurrentTile=l._minEleveationForCurrentTile,this.zoom=l.zoom,this.angle=l.angle,this._fov=l._fov,this._pitch=l._pitch,this._unmodified=l._unmodified,this._edgeInsets=l._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(l){this._minZoom!==l&&(this._minZoom=l,this.zoom=Math.max(this.zoom,l))}get maxZoom(){return this._maxZoom}set maxZoom(l){this._maxZoom!==l&&(this._maxZoom=l,this.zoom=Math.min(this.zoom,l))}get minPitch(){return this._minPitch}set minPitch(l){this._minPitch!==l&&(this._minPitch=l,this.pitch=Math.max(this.pitch,l))}get maxPitch(){return this._maxPitch}set maxPitch(l){this._maxPitch!==l&&(this._maxPitch=l,this.pitch=Math.min(this.pitch,l))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(l){l===void 0?l=!0:l===null&&(l=!1),this._renderWorldCopies=l}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new n.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(l){let d=-n.b5(l,-180,180)*Math.PI/180;this.angle!==d&&(this._unmodified=!1,this.angle=d,this._calcMatrices(),this.rotationMatrix=function(){var v=new n.A(4);return n.A!=Float32Array&&(v[1]=0,v[2]=0),v[0]=1,v[3]=1,v}(),function(v,b,M){var O=b[0],B=b[1],U=b[2],W=b[3],Z=Math.sin(M),$=Math.cos(M);v[0]=O*$+U*Z,v[1]=B*$+W*Z,v[2]=O*-Z+U*$,v[3]=B*-Z+W*$}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(l){let d=n.ad(l,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==d&&(this._unmodified=!1,this._pitch=d,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(l){l=Math.max(.01,Math.min(60,l)),this._fov!==l&&(this._unmodified=!1,this._fov=l/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(l){let d=Math.min(Math.max(l,this.minZoom),this.maxZoom);this._zoom!==d&&(this._unmodified=!1,this._zoom=d,this.tileZoom=Math.max(0,Math.floor(d)),this.scale=this.zoomScale(d),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(l){l.lat===this._center.lat&&l.lng===this._center.lng||(this._unmodified=!1,this._center=l,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(l){l!==this._elevation&&(this._elevation=l,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(l){this._edgeInsets.equals(l)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,l,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(l){return this._edgeInsets.equals(l)}interpolatePadding(l,d,v){this._unmodified=!1,this._edgeInsets.interpolate(l,d,v),this._constrain(),this._calcMatrices()}coveringZoomLevel(l){let d=(l.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/l.tileSize));return Math.max(0,d)}getVisibleUnwrappedCoordinates(l){let d=[new n.b6(0,l)];if(this._renderWorldCopies){let v=this.pointCoordinate(new n.P(0,0)),b=this.pointCoordinate(new n.P(this.width,0)),M=this.pointCoordinate(new n.P(this.width,this.height)),O=this.pointCoordinate(new n.P(0,this.height)),B=Math.floor(Math.min(v.x,b.x,M.x,O.x)),U=Math.floor(Math.max(v.x,b.x,M.x,O.x)),W=1;for(let Z=B-W;Z<=U+W;Z++)Z!==0&&d.push(new n.b6(Z,l))}return d}coveringTiles(l){var d,v;let b=this.coveringZoomLevel(l),M=b;if(l.minzoom!==void 0&&bl.maxzoom&&(b=l.maxzoom);let O=this.pointCoordinate(this.getCameraPoint()),B=n.U.fromLngLat(this.center),U=Math.pow(2,b),W=[U*O.x,U*O.y,0],Z=[U*B.x,U*B.y,0],$=fi.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,b),st=l.minzoom||0;!l.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(st=b);let At=l.terrain?2/Math.min(this.tileSize,l.tileSize)*this.tileSize:3,pt=St=>({aabb:new du([St*U,0,0],[(St+1)*U,U,0]),zoom:0,x:0,y:0,wrap:St,fullyVisible:!1}),yt=[],dt=[],Ft=b,Wt=l.reparseOverscaled?M:b;if(this._renderWorldCopies)for(let St=1;St<=3;St++)yt.push(pt(-St)),yt.push(pt(St));for(yt.push(pt(0));yt.length>0;){let St=yt.pop(),Bt=St.x,Yt=St.y,Qt=St.fullyVisible;if(!Qt){let We=St.aabb.intersects($);if(We===0)continue;Qt=We===2}let oe=l.terrain?W:Z,pe=St.aabb.distanceX(oe),he=St.aabb.distanceY(oe),xe=Math.max(Math.abs(pe),Math.abs(he));if(St.zoom===Ft||xe>At+(1<=st){let We=Ft-St.zoom,Kr=W[0]-.5-(Bt<>1),dr=St.zoom+1,Xe=St.aabb.quadrant(We);if(l.terrain){let Vi=new n.O(dr,St.wrap,dr,Kr,Me),Jr=l.terrain.getMinMaxElevation(Vi),Vr=(d=Jr.minElevation)!==null&&d!==void 0?d:this.elevation,ei=(v=Jr.maxElevation)!==null&&v!==void 0?v:this.elevation;Xe=new du([Xe.min[0],Xe.min[1],Vr],[Xe.max[0],Xe.max[1],ei])}yt.push({aabb:Xe,zoom:dr,x:Kr,y:Me,wrap:St.wrap,fullyVisible:Qt})}}return dt.sort((St,Bt)=>St.distanceSq-Bt.distanceSq).map(St=>St.tileID)}resize(l,d){this.width=l,this.height=d,this.pixelsToGLUnits=[2/l,-2/d],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(l){return Math.pow(2,l)}scaleZoom(l){return Math.log(l)/Math.LN2}project(l){let d=n.ad(l.lat,-this.maxValidLatitude,this.maxValidLatitude);return new n.P(n.G(l.lng)*this.worldSize,n.H(d)*this.worldSize)}unproject(l){return new n.U(l.x/this.worldSize,l.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(l){let d=this.pointLocation(this.centerPoint,l),v=l.getElevationForLngLatZoom(d,this.tileZoom);if(!(this.elevation-v))return;let b=this.getCameraPosition(),M=n.U.fromLngLat(b.lngLat,b.altitude),O=n.U.fromLngLat(d,v),B=M.x-O.x,U=M.y-O.y,W=M.z-O.z,Z=Math.sqrt(B*B+U*U+W*W),$=this.scaleZoom(this.cameraToCenterDistance/Z/this.tileSize);this._elevation=v,this._center=d,this.zoom=$}setLocationAtPoint(l,d){let v=this.pointCoordinate(d),b=this.pointCoordinate(this.centerPoint),M=this.locationCoordinate(l),O=new n.U(M.x-(v.x-b.x),M.y-(v.y-b.y));this.center=this.coordinateLocation(O),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(l,d){return d?this.coordinatePoint(this.locationCoordinate(l),d.getElevationForLngLatZoom(l,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(l))}pointLocation(l,d){return this.coordinateLocation(this.pointCoordinate(l,d))}locationCoordinate(l){return n.U.fromLngLat(l)}coordinateLocation(l){return l&&l.toLngLat()}pointCoordinate(l,d){if(d){let st=d.pointCoordinate(l);if(st!=null)return st}let v=[l.x,l.y,0,1],b=[l.x,l.y,1,1];n.ag(v,v,this.pixelMatrixInverse),n.ag(b,b,this.pixelMatrixInverse);let M=v[3],O=b[3],B=v[1]/M,U=b[1]/O,W=v[2]/M,Z=b[2]/O,$=W===Z?0:(0-W)/(Z-W);return new n.U(n.B.number(v[0]/M,b[0]/O,$)/this.worldSize,n.B.number(B,U,$)/this.worldSize)}coordinatePoint(l,d=0,v=this.pixelMatrix){let b=[l.x*this.worldSize,l.y*this.worldSize,d,1];return n.ag(b,b,v),new n.P(b[0]/b[3],b[1]/b[3])}getBounds(){let l=Math.max(0,this.height/2-this.getHorizon());return new wi().extend(this.pointLocation(new n.P(0,l))).extend(this.pointLocation(new n.P(this.width,l))).extend(this.pointLocation(new n.P(this.width,this.height))).extend(this.pointLocation(new n.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new wi([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(l){l?(this.lngRange=[l.getWest(),l.getEast()],this.latRange=[l.getSouth(),l.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])}calculatePosMatrix(l,d=!1){let v=l.key,b=d?this._alignedPosMatrixCache:this._posMatrixCache;if(b[v])return b[v];let M=l.canonical,O=this.worldSize/this.zoomScale(M.z),B=M.x+Math.pow(2,M.z)*l.wrap,U=n.ao(new Float64Array(16));return n.$(U,U,[B*O,M.y*O,0]),n.a0(U,U,[O/n.N,O/n.N,1]),n.a1(U,d?this.alignedProjMatrix:this.projMatrix,U),b[v]=new Float32Array(U),b[v]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let l,d,v,b,M=-90,O=90,B=-180,U=180,W=this.size,Z=this._unmodified;if(this.latRange){let At=this.latRange;M=n.H(At[1])*this.worldSize,O=n.H(At[0])*this.worldSize,l=O-MO&&(b=O-pt)}if(this.lngRange){let At=(B+U)/2,pt=n.b5($.x,At-this.worldSize/2,At+this.worldSize/2),yt=W.x/2;pt-ytU&&(v=U-yt)}v===void 0&&b===void 0||(this.center=this.unproject(new n.P(v!==void 0?v:$.x,b!==void 0?b:$.y)).wrap()),this._unmodified=Z,this._constraining=!1}_calcMatrices(){if(!this.height)return;let l=this.centerOffset,d=this.point.x,v=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=n.b7(1,this.center.lat)*this.worldSize;let b=n.ao(new Float64Array(16));n.a0(b,b,[this.width/2,-this.height/2,1]),n.$(b,b,[1,-1,0]),this.labelPlaneMatrix=b,b=n.ao(new Float64Array(16)),n.a0(b,b,[1,-1,1]),n.$(b,b,[-1,-1,0]),n.a0(b,b,[2/this.width,2/this.height,1]),this.glCoordMatrix=b;let M=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),O=Math.min(this.elevation,this._minEleveationForCurrentTile),B=M-O*this._pixelPerMeter/Math.cos(this._pitch),U=O<0?B:M,W=Math.PI/2+this._pitch,Z=this._fov*(.5+l.y/this.height),$=Math.sin(Z)*U/Math.sin(n.ad(Math.PI-W-Z,.01,Math.PI-.01)),st=this.getHorizon(),At=2*Math.atan(st/this.cameraToCenterDistance)*(.5+l.y/(2*st)),pt=Math.sin(At)*U/Math.sin(n.ad(Math.PI-W-At,.01,Math.PI-.01)),yt=Math.min($,pt),dt=1.01*(Math.cos(Math.PI/2-this._pitch)*yt+U),Ft=this.height/50;b=new Float64Array(16),n.b8(b,this._fov,this.width/this.height,Ft,dt),b[8]=2*-l.x/this.width,b[9]=2*l.y/this.height,n.a0(b,b,[1,-1,1]),n.$(b,b,[0,0,-this.cameraToCenterDistance]),n.b9(b,b,this._pitch),n.ae(b,b,this.angle),n.$(b,b,[-d,-v,0]),this.mercatorMatrix=n.a0([],b,[this.worldSize,this.worldSize,this.worldSize]),n.a0(b,b,[1,1,this._pixelPerMeter]),this.pixelMatrix=n.a1(new Float64Array(16),this.labelPlaneMatrix,b),n.$(b,b,[0,0,-this.elevation]),this.projMatrix=b,this.invProjMatrix=n.as([],b),this.pixelMatrix3D=n.a1(new Float64Array(16),this.labelPlaneMatrix,b);let Wt=this.width%2/2,St=this.height%2/2,Bt=Math.cos(this.angle),Yt=Math.sin(this.angle),Qt=d-Math.round(d)+Bt*Wt+Yt*St,oe=v-Math.round(v)+Bt*St+Yt*Wt,pe=new Float64Array(b);if(n.$(pe,pe,[Qt>.5?Qt-1:Qt,oe>.5?oe-1:oe,0]),this.alignedProjMatrix=pe,b=n.as(new Float64Array(16),this.pixelMatrix),!b)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=b,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let l=this.pointCoordinate(new n.P(0,0)),d=[l.x*this.worldSize,l.y*this.worldSize,0,1];return n.ag(d,d,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let l=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new n.P(0,l))}getCameraQueryGeometry(l){let d=this.getCameraPoint();if(l.length===1)return[l[0],d];{let v=d.x,b=d.y,M=d.x,O=d.y;for(let B of l)v=Math.min(v,B.x),b=Math.min(b,B.y),M=Math.max(M,B.x),O=Math.max(O,B.y);return[new n.P(v,b),new n.P(M,b),new n.P(M,O),new n.P(v,O),new n.P(v,b)]}}}function ah(T,l){let d,v=!1,b=null,M=null,O=()=>{b=null,v&&(T.apply(M,d),b=setTimeout(O,l),v=!1)};return(...B)=>(v=!0,M=this,d=B,b||O(),b)}class Ld{constructor(l){this._getCurrentHash=()=>{let d=window.location.hash.replace(\"#\",\"\");if(this._hashName){let v;return d.split(\"&\").map(b=>b.split(\"=\")).forEach(b=>{b[0]===this._hashName&&(v=b)}),(v&&v[1]||\"\").split(\"/\")}return d.split(\"/\")},this._onHashChange=()=>{let d=this._getCurrentHash();if(d.length>=3&&!d.some(v=>isNaN(v))){let v=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(d[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+d[2],+d[1]],zoom:+d[0],bearing:v,pitch:+(d[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let d=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,d)}catch{}},this._updateHash=ah(this._updateHashUnthrottled,300),this._hashName=l&&encodeURIComponent(l)}addTo(l){return this._map=l,addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(l){let d=this._map.getCenter(),v=Math.round(100*this._map.getZoom())/100,b=Math.ceil((v*Math.LN2+Math.log(512/360/.5))/Math.LN10),M=Math.pow(10,b),O=Math.round(d.lng*M)/M,B=Math.round(d.lat*M)/M,U=this._map.getBearing(),W=this._map.getPitch(),Z=\"\";if(Z+=l?`/${O}/${B}/${v}`:`${v}/${B}/${O}`,(U||W)&&(Z+=\"/\"+Math.round(10*U)/10),W&&(Z+=`/${Math.round(W)}`),this._hashName){let $=this._hashName,st=!1,At=window.location.hash.slice(1).split(\"&\").map(pt=>{let yt=pt.split(\"=\")[0];return yt===$?(st=!0,`${yt}=${Z}`):pt}).filter(pt=>pt);return st||At.push(`${$}=${Z}`),`#${At.join(\"&\")}`}return`#${Z}`}}let lh={linearity:.3,easing:n.ba(0,0,.3,1)},Jp=n.e({deceleration:2500,maxSpeed:1400},lh),tA=n.e({deceleration:20,maxSpeed:1400},lh),l_=n.e({deceleration:1e3,maxSpeed:360},lh),c_=n.e({deceleration:1e3,maxSpeed:90},lh);class i0{constructor(l){this._map=l,this.clear()}clear(){this._inertiaBuffer=[]}record(l){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:n.h.now(),settings:l})}_drainInertiaBuffer(){let l=this._inertiaBuffer,d=n.h.now();for(;l.length>0&&d-l[0].time>160;)l.shift()}_onMoveEnd(l){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let d={zoom:0,bearing:0,pitch:0,pan:new n.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:M}of this._inertiaBuffer)d.zoom+=M.zoomDelta||0,d.bearing+=M.bearingDelta||0,d.pitch+=M.pitchDelta||0,M.panDelta&&d.pan._add(M.panDelta),M.around&&(d.around=M.around),M.pinchAround&&(d.pinchAround=M.pinchAround);let v=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,b={};if(d.pan.mag()){let M=ch(d.pan.mag(),v,n.e({},Jp,l||{}));b.offset=d.pan.mult(M.amount/d.pan.mag()),b.center=this._map.transform.center,pl(b,M)}if(d.zoom){let M=ch(d.zoom,v,tA);b.zoom=this._map.transform.zoom+M.amount,pl(b,M)}if(d.bearing){let M=ch(d.bearing,v,l_);b.bearing=this._map.transform.bearing+n.ad(M.amount,-179,179),pl(b,M)}if(d.pitch){let M=ch(d.pitch,v,c_);b.pitch=this._map.transform.pitch+M.amount,pl(b,M)}if(b.zoom||b.bearing){let M=d.pinchAround===void 0?d.around:d.pinchAround;b.around=M?this._map.unproject(M):this._map.getCenter()}return this.clear(),n.e(b,{noMoveStart:!0})}}function pl(T,l){(!T.duration||T.durationd.unproject(U)),B=M.reduce((U,W,Z,$)=>U.add(W.div($.length)),new n.P(0,0));super(l,{points:M,point:B,lngLats:O,lngLat:d.unproject(B),originalEvent:v}),this._defaultPrevented=!1}}class u_ extends n.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(l,d,v){super(l,{originalEvent:v}),this._defaultPrevented=!1}}class Ns{constructor(l,d){this._map=l,this._clickTolerance=d.clickTolerance}reset(){delete this._mousedownPos}wheel(l){return this._firePreventable(new u_(l.type,this._map,l))}mousedown(l,d){return this._mousedownPos=d,this._firePreventable(new la(l.type,this._map,l))}mouseup(l){this._map.fire(new la(l.type,this._map,l))}click(l,d){this._mousedownPos&&this._mousedownPos.dist(d)>=this._clickTolerance||this._map.fire(new la(l.type,this._map,l))}dblclick(l){return this._firePreventable(new la(l.type,this._map,l))}mouseover(l){this._map.fire(new la(l.type,this._map,l))}mouseout(l){this._map.fire(new la(l.type,this._map,l))}touchstart(l){return this._firePreventable(new kd(l.type,this._map,l))}touchmove(l){this._map.fire(new kd(l.type,this._map,l))}touchend(l){this._map.fire(new kd(l.type,this._map,l))}touchcancel(l){this._map.fire(new kd(l.type,this._map,l))}_firePreventable(l){if(this._map.fire(l),l.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class pu{constructor(l){this._map=l}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(l){this._map.fire(new la(l.type,this._map,l))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new la(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(l){this._delayContextMenu?this._contextMenuEvent=l:this._ignoreContextMenu||this._map.fire(new la(l.type,this._map,l)),this._map.listens(\"contextmenu\")&&l.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class In{constructor(l){this._map=l}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(l){return this.transform.pointLocation(n.P.convert(l),this._map.terrain)}}class eA{constructor(l,d){this._map=l,this._tr=new In(l),this._el=l.getCanvasContainer(),this._container=l.getContainer(),this._clickTolerance=d.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(l,d){this.isEnabled()&&l.shiftKey&&l.button===0&&(c.disableDrag(),this._startPos=this._lastPos=d,this._active=!0)}mousemoveWindow(l,d){if(!this._active)return;let v=d;if(this._lastPos.equals(v)||!this._box&&v.dist(this._startPos)M.fitScreenCoordinates(v,b,this._tr.bearing,{linear:!0})};this._fireEvent(\"boxzoomcancel\",l)}keydown(l){this._active&&l.keyCode===27&&(this.reset(),this._fireEvent(\"boxzoomcancel\",l))}reset(){this._active=!1,this._container.classList.remove(\"maplibregl-crosshair\"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(l,d){return this._map.fire(new n.k(l,{originalEvent:d}))}}function ca(T,l){if(T.length!==l.length)throw new Error(`The number of touches and points are not equal - touches ${T.length}, points ${l.length}`);let d={};for(let v=0;vthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=l.timeStamp),v.length===this.numTouches&&(this.centroid=function(b){let M=new n.P(0,0);for(let O of b)M._add(O);return M.div(b.length)}(d),this.touches=ca(v,d)))}touchmove(l,d,v){if(this.aborted||!this.centroid)return;let b=ca(v,d);for(let M in this.touches){let O=b[M];(!O||O.dist(this.touches[M])>30)&&(this.aborted=!0)}}touchend(l,d,v){if((!this.centroid||l.timeStamp-this.startTime>500)&&(this.aborted=!0),v.length===0){let b=!this.aborted&&this.centroid;if(this.reset(),b)return b}}}class Rd{constructor(l){this.singleTap=new Fa(l),this.numTaps=l.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(l,d,v){this.singleTap.touchstart(l,d,v)}touchmove(l,d,v){this.singleTap.touchmove(l,d,v)}touchend(l,d,v){let b=this.singleTap.touchend(l,d,v);if(b){let M=l.timeStamp-this.lastTime<500,O=!this.lastTap||this.lastTap.dist(b)<30;if(M&&O||this.reset(),this.count++,this.lastTime=l.timeStamp,this.lastTap=b,this.count===this.numTaps)return this.reset(),b}}}class Al{constructor(l){this._tr=new In(l),this._zoomIn=new Rd({numTouches:1,numTaps:2}),this._zoomOut=new Rd({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(l,d,v){this._zoomIn.touchstart(l,d,v),this._zoomOut.touchstart(l,d,v)}touchmove(l,d,v){this._zoomIn.touchmove(l,d,v),this._zoomOut.touchmove(l,d,v)}touchend(l,d,v){let b=this._zoomIn.touchend(l,d,v),M=this._zoomOut.touchend(l,d,v),O=this._tr;return b?(this._active=!0,l.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:O.zoom+1,around:O.unproject(b)},{originalEvent:l})}):M?(this._active=!0,l.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:O.zoom-1,around:O.unproject(M)},{originalEvent:l})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class za{constructor(l){this._enabled=!!l.enable,this._moveStateManager=l.moveStateManager,this._clickTolerance=l.clickTolerance||1,this._moveFunction=l.move,this._activateOnStart=!!l.activateOnStart,l.assignEvents(this),this.reset()}reset(l){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(l)}_move(...l){let d=this._moveFunction(...l);if(d.bearingDelta||d.pitchDelta||d.around||d.panDelta)return this._active=!0,d}dragStart(l,d){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(l)&&(this._moveStateManager.startMove(l),this._lastPoint=d.length?d[0]:d,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(l,d){if(!this.isEnabled())return;let v=this._lastPoint;if(!v)return;if(l.preventDefault(),!this._moveStateManager.isValidMoveEvent(l))return void this.reset(l);let b=d.length?d[0]:d;return!this._moved&&b.dist(v){T.mousedown=T.dragStart,T.mousemoveWindow=T.dragMove,T.mouseup=T.dragEnd,T.contextmenu=function(l){l.preventDefault()}},Na=({enable:T,clickTolerance:l,bearingDegreesPerPixelMoved:d=.8})=>{let v=new rA({checkCorrectEvent:b=>c.mouseButton(b)===0&&b.ctrlKey||c.mouseButton(b)===2});return new za({clickTolerance:l,move:(b,M)=>({bearingDelta:(M.x-b.x)*d}),moveStateManager:v,enable:T,assignEvents:hh})},ao=({enable:T,clickTolerance:l,pitchDegreesPerPixelMoved:d=-.5})=>{let v=new rA({checkCorrectEvent:b=>c.mouseButton(b)===0&&b.ctrlKey||c.mouseButton(b)===2});return new za({clickTolerance:l,move:(b,M)=>({pitchDelta:(M.y-b.y)*d}),moveStateManager:v,enable:T,assignEvents:hh})};class Ue{constructor(l,d){this._minTouches=l.cooperativeGestures?2:1,this._clickTolerance=l.clickTolerance||1,this._map=d,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new n.P(0,0),setTimeout(()=>{this._cancelCooperativeMessage=!1},200)}touchstart(l,d,v){return this._calculateTransform(l,d,v)}touchmove(l,d,v){if(this._map._cooperativeGestures&&(this._minTouches===2&&v.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(l,!1,v.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(v.length0&&(this._active=!0);let b=ca(v,d),M=new n.P(0,0),O=new n.P(0,0),B=0;for(let W in b){let Z=b[W],$=this._touches[W];$&&(M._add(Z),O._add(Z.sub($)),B++,b[W]=Z)}if(this._touches=b,BMath.abs(T.x)}class kx extends Dd{constructor(l){super(),this._map=l}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(l,d,v){super.touchstart(l,d,v),this._currentTouchCount=v.length}_start(l){this._lastPoints=l,o0(l[0].sub(l[1]))&&(this._valid=!1)}_move(l,d,v){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;let b=l[0].sub(this._lastPoints[0]),M=l[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(b,M,v.timeStamp),this._valid?(this._lastPoints=l,this._active=!0,{pitchDelta:(b.y+M.y)/2*-.5}):void 0}gestureBeginsVertically(l,d,v){if(this._valid!==void 0)return this._valid;let b=l.mag()>=2,M=d.mag()>=2;if(!b&&!M)return;if(!b||!M)return this._firstMove===void 0&&(this._firstMove=v),v-this._firstMove<100&&void 0;let O=l.y>0==d.y>0;return o0(l)&&o0(d)&&O}}let fh={panStep:100,bearingStep:15,pitchStep:10};class f_{constructor(l){this._tr=new In(l);let d=fh;this._panStep=d.panStep,this._bearingStep=d.bearingStep,this._pitchStep=d.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(l){if(l.altKey||l.ctrlKey||l.metaKey)return;let d=0,v=0,b=0,M=0,O=0;switch(l.keyCode){case 61:case 107:case 171:case 187:d=1;break;case 189:case 109:case 173:d=-1;break;case 37:l.shiftKey?v=-1:(l.preventDefault(),M=-1);break;case 39:l.shiftKey?v=1:(l.preventDefault(),M=1);break;case 38:l.shiftKey?b=1:(l.preventDefault(),O=-1);break;case 40:l.shiftKey?b=-1:(l.preventDefault(),O=1);break;default:return}return this._rotationDisabled&&(v=0,b=0),{cameraAnimation:B=>{let U=this._tr;B.easeTo({duration:300,easeId:\"keyboardHandler\",easing:a0,zoom:d?Math.round(U.zoom)+d*(l.shiftKey?2:1):U.zoom,bearing:U.bearing+v*this._bearingStep,pitch:U.pitch+b*this._pitchStep,offset:[-M*this._panStep,-O*this._panStep],center:U.center},{originalEvent:l})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function a0(T){return T*(2-T)}let l0=4.000244140625;class xf{constructor(l,d){this._onTimeout=v=>{this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(v)},this._map=l,this._tr=new In(l),this._el=l.getCanvasContainer(),this._triggerRenderFrame=d,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(l){this._defaultZoomRate=l}setWheelZoomRate(l){this._wheelZoomRate=l}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(l){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!l&&l.around===\"center\")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(l){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!l[this._map._metaKey])return;l.preventDefault()}let d=l.deltaMode===WheelEvent.DOM_DELTA_LINE?40*l.deltaY:l.deltaY,v=n.h.now(),b=v-(this._lastWheelEventTime||0);this._lastWheelEventTime=v,d!==0&&d%l0==0?this._type=\"wheel\":d!==0&&Math.abs(d)<4?this._type=\"trackpad\":b>400?(this._type=null,this._lastValue=d,this._timeout=setTimeout(this._onTimeout,40,l)):this._type||(this._type=Math.abs(b*d)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,d+=this._lastValue)),l.shiftKey&&d&&(d/=4),this._type&&(this._lastWheelEvent=l,this._delta-=d,this._active||this._start(l)),l.preventDefault()}_start(l){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let d=c.mousePos(this._el,l),v=this._tr;this._around=n.L.convert(this._aroundCenter?v.center:v.unproject(d)),this._aroundPoint=v.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let l=this._tr.transform;if(this._delta!==0){let B=this._type===\"wheel\"&&Math.abs(this._delta)>l0?this._wheelZoomRate:this._defaultZoomRate,U=2/(1+Math.exp(-Math.abs(this._delta*B)));this._delta<0&&U!==0&&(U=1/U);let W=typeof this._targetZoom==\"number\"?l.zoomScale(this._targetZoom):l.scale;this._targetZoom=Math.min(l.maxZoom,Math.max(l.minZoom,l.scaleZoom(W*U))),this._type===\"wheel\"&&(this._startZoom=l.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let d=typeof this._targetZoom==\"number\"?this._targetZoom:l.zoom,v=this._startZoom,b=this._easing,M,O=!1;if(this._type===\"wheel\"&&v&&b){let B=Math.min((n.h.now()-this._lastWheelEventTime)/200,1),U=b(B);M=n.B.number(v,d,U),B<1?this._frameId||(this._frameId=!0):O=!0}else M=d,O=!0;return this._active=!0,O&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!O,zoomDelta:M-l.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(l){let d=n.bb;if(this._prevEase){let v=this._prevEase,b=(n.h.now()-v.start)/v.duration,M=v.easing(b+.01)-v.easing(b),O=.27/Math.sqrt(M*M+1e-4)*.01,B=Math.sqrt(.0729-O*O);d=n.ba(O,B,.25,1)}return this._prevEase={start:n.h.now(),duration:l,easing:d},d}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class c0{constructor(l,d){this._clickZoom=l,this._tapZoom=d}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class iA{constructor(l){this._tr=new In(l),this.reset()}reset(){this._active=!1}dblclick(l,d){return l.preventDefault(),{cameraAnimation:v=>{v.easeTo({duration:300,zoom:this._tr.zoom+(l.shiftKey?-1:1),around:this._tr.unproject(d)},{originalEvent:l})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class nA{constructor(){this._tap=new Rd({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(l,d,v){if(!this._swipePoint)if(this._tapTime){let b=d[0],M=l.timeStamp-this._tapTime<500,O=this._tapPoint.dist(b)<30;M&&O?v.length>0&&(this._swipePoint=b,this._swipeTouch=v[0].identifier):this.reset()}else this._tap.touchstart(l,d,v)}touchmove(l,d,v){if(this._tapTime){if(this._swipePoint){if(v[0].identifier!==this._swipeTouch)return;let b=d[0],M=b.y-this._swipePoint.y;return this._swipePoint=b,l.preventDefault(),this._active=!0,{zoomDelta:M/128}}}else this._tap.touchmove(l,d,v)}touchend(l,d,v){if(this._tapTime)this._swipePoint&&v.length===0&&this.reset();else{let b=this._tap.touchend(l,d,v);b&&(this._tapTime=l.timeStamp,this._tapPoint=b)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class dh{constructor(l,d,v){this._el=l,this._mousePan=d,this._touchPan=v}enable(l){this._inertiaOptions=l||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"maplibregl-touch-drag-pan\")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"maplibregl-touch-drag-pan\")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class cs{constructor(l,d,v){this._pitchWithRotate=l.pitchWithRotate,this._mouseRotate=d,this._mousePitch=v}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Au{constructor(l,d,v,b){this._el=l,this._touchZoom=d,this._touchRotate=v,this._tapDragZoom=b,this._rotationDisabled=!1,this._enabled=!0}enable(l){this._touchZoom.enable(l),this._rotationDisabled||this._touchRotate.enable(l),this._tapDragZoom.enable(),this._el.classList.add(\"maplibregl-touch-zoom-rotate\")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"maplibregl-touch-zoom-rotate\")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}let Dc=T=>T.zoom||T.drag||T.pitch||T.rotate;class u0 extends n.k{}function Od(T){return T.panDelta&&T.panDelta.mag()||T.zoomDelta||T.bearingDelta||T.pitchDelta}class h0{constructor(l,d){this.handleWindowEvent=b=>{this.handleEvent(b,`${b.type}Window`)},this.handleEvent=(b,M)=>{if(b.type===\"blur\")return void this.stop(!0);this._updatingCamera=!0;let O=b.type===\"renderFrame\"?void 0:b,B={needsRenderFrame:!1},U={},W={},Z=b.touches,$=Z?this._getMapTouches(Z):void 0,st=$?c.touchPos(this._el,$):c.mousePos(this._el,b);for(let{handlerName:yt,handler:dt,allowed:Ft}of this._handlers){if(!dt.isEnabled())continue;let Wt;this._blockedByActive(W,Ft,yt)?dt.reset():dt[M||b.type]&&(Wt=dt[M||b.type](b,st,$),this.mergeHandlerResult(B,U,Wt,yt,O),Wt&&Wt.needsRenderFrame&&this._triggerRenderFrame()),(Wt||dt.isActive())&&(W[yt]=dt)}let At={};for(let yt in this._previousActiveHandlers)W[yt]||(At[yt]=O);this._previousActiveHandlers=W,(Object.keys(At).length||Od(B))&&(this._changes.push([B,U,At]),this._triggerRenderFrame()),(Object.keys(W).length||Od(B))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:pt}=B;pt&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],pt(this._map))},this._map=l,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new i0(l),this._bearingSnap=d.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(d);let v=this._el;this._listeners=[[v,\"touchstart\",{passive:!0}],[v,\"touchmove\",{passive:!1}],[v,\"touchend\",void 0],[v,\"touchcancel\",void 0],[v,\"mousedown\",void 0],[v,\"mousemove\",void 0],[v,\"mouseup\",void 0],[document,\"mousemove\",{capture:!0}],[document,\"mouseup\",void 0],[v,\"mouseover\",void 0],[v,\"mouseout\",void 0],[v,\"dblclick\",void 0],[v,\"click\",void 0],[v,\"keydown\",{capture:!1}],[v,\"keyup\",void 0],[v,\"wheel\",{passive:!1}],[v,\"contextmenu\",void 0],[window,\"blur\",void 0]];for(let[b,M,O]of this._listeners)c.addEventListener(b,M,b===document?this.handleWindowEvent:this.handleEvent,O)}destroy(){for(let[l,d,v]of this._listeners)c.removeEventListener(l,d,l===document?this.handleWindowEvent:this.handleEvent,v)}_addDefaultHandlers(l){let d=this._map,v=d.getCanvasContainer();this._add(\"mapEvent\",new Ns(d,l));let b=d.boxZoom=new eA(d,l);this._add(\"boxZoom\",b),l.interactive&&l.boxZoom&&b.enable();let M=new Al(d),O=new iA(d);d.doubleClickZoom=new c0(O,M),this._add(\"tapZoom\",M),this._add(\"clickZoom\",O),l.interactive&&l.doubleClickZoom&&d.doubleClickZoom.enable();let B=new nA;this._add(\"tapDragZoom\",B);let U=d.touchPitch=new kx(d);this._add(\"touchPitch\",U),l.interactive&&l.touchPitch&&d.touchPitch.enable(l.touchPitch);let W=Na(l),Z=ao(l);d.dragRotate=new cs(l,W,Z),this._add(\"mouseRotate\",W,[\"mousePitch\"]),this._add(\"mousePitch\",Z,[\"mouseRotate\"]),l.interactive&&l.dragRotate&&d.dragRotate.enable();let $=(({enable:Ft,clickTolerance:Wt})=>{let St=new rA({checkCorrectEvent:Bt=>c.mouseButton(Bt)===0&&!Bt.ctrlKey});return new za({clickTolerance:Wt,move:(Bt,Yt)=>({around:Yt,panDelta:Yt.sub(Bt)}),activateOnStart:!0,moveStateManager:St,enable:Ft,assignEvents:hh})})(l),st=new Ue(l,d);d.dragPan=new dh(v,$,st),this._add(\"mousePan\",$),this._add(\"touchPan\",st,[\"touchZoom\",\"touchRotate\"]),l.interactive&&l.dragPan&&d.dragPan.enable(l.dragPan);let At=new s0,pt=new h_;d.touchZoomRotate=new Au(v,pt,At,B),this._add(\"touchRotate\",At,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",pt,[\"touchPan\",\"touchRotate\"]),l.interactive&&l.touchZoomRotate&&d.touchZoomRotate.enable(l.touchZoomRotate);let yt=d.scrollZoom=new xf(d,()=>this._triggerRenderFrame());this._add(\"scrollZoom\",yt,[\"mousePan\"]),l.interactive&&l.scrollZoom&&d.scrollZoom.enable(l.scrollZoom);let dt=d.keyboard=new f_(d);this._add(\"keyboard\",dt),l.interactive&&l.keyboard&&d.keyboard.enable(),this._add(\"blockableMapEvent\",new pu(d))}_add(l,d,v){this._handlers.push({handlerName:l,handler:d,allowed:v}),this._handlersById[l]=d}stop(l){if(!this._updatingCamera){for(let{handler:d}of this._handlers)d.reset();this._inertia.clear(),this._fireEvents({},{},l),this._changes=[]}}isActive(){for(let{handler:l}of this._handlers)if(l.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Dc(this._eventsInProgress)||this.isZooming()}_blockedByActive(l,d,v){for(let b in l)if(b!==v&&(!d||d.indexOf(b)<0))return!0;return!1}_getMapTouches(l){let d=[];for(let v of l)this._el.contains(v.target)&&d.push(v);return d}mergeHandlerResult(l,d,v,b,M){if(!v)return;n.e(l,v);let O={handlerName:b,originalEvent:v.originalEvent||M};v.zoomDelta!==void 0&&(d.zoom=O),v.panDelta!==void 0&&(d.drag=O),v.pitchDelta!==void 0&&(d.pitch=O),v.bearingDelta!==void 0&&(d.rotate=O)}_applyChanges(){let l={},d={},v={};for(let[b,M,O]of this._changes)b.panDelta&&(l.panDelta=(l.panDelta||new n.P(0,0))._add(b.panDelta)),b.zoomDelta&&(l.zoomDelta=(l.zoomDelta||0)+b.zoomDelta),b.bearingDelta&&(l.bearingDelta=(l.bearingDelta||0)+b.bearingDelta),b.pitchDelta&&(l.pitchDelta=(l.pitchDelta||0)+b.pitchDelta),b.around!==void 0&&(l.around=b.around),b.pinchAround!==void 0&&(l.pinchAround=b.pinchAround),b.noInertia&&(l.noInertia=b.noInertia),n.e(d,M),n.e(v,O);this._updateMapTransform(l,d,v),this._changes=[]}_updateMapTransform(l,d,v){let b=this._map,M=b._getTransformForUpdate(),O=b.terrain;if(!(Od(l)||O&&this._terrainMovement))return this._fireEvents(d,v,!0);let{panDelta:B,zoomDelta:U,bearingDelta:W,pitchDelta:Z,around:$,pinchAround:st}=l;st!==void 0&&($=st),b._stop(!0),$=$||b.transform.centerPoint;let At=M.pointLocation(B?$.sub(B):$);W&&(M.bearing+=W),Z&&(M.pitch+=Z),U&&(M.zoom+=U),O?this._terrainMovement||!d.drag&&!d.zoom?d.drag&&this._terrainMovement?M.center=M.pointLocation(M.centerPoint.sub(B)):M.setLocationAtPoint(At,$):(this._terrainMovement=!0,this._map._elevationFreeze=!0,M.setLocationAtPoint(At,$),this._map.once(\"moveend\",()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,M.recalculateZoom(b.terrain)})):M.setLocationAtPoint(At,$),b._applyUpdatedTransform(M),this._map._update(),l.noInertia||this._inertia.record(l),this._fireEvents(d,v,!0)}_fireEvents(l,d,v){let b=Dc(this._eventsInProgress),M=Dc(l),O={};for(let Z in l){let{originalEvent:$}=l[Z];this._eventsInProgress[Z]||(O[`${Z}start`]=$),this._eventsInProgress[Z]=l[Z]}!b&&M&&this._fireEvent(\"movestart\",M.originalEvent);for(let Z in O)this._fireEvent(Z,O[Z]);M&&this._fireEvent(\"move\",M.originalEvent);for(let Z in l){let{originalEvent:$}=l[Z];this._fireEvent(Z,$)}let B={},U;for(let Z in this._eventsInProgress){let{handlerName:$,originalEvent:st}=this._eventsInProgress[Z];this._handlersById[$].isActive()||(delete this._eventsInProgress[Z],U=d[$]||st,B[`${Z}end`]=U)}for(let Z in B)this._fireEvent(Z,B[Z]);let W=Dc(this._eventsInProgress);if(v&&(b||M)&&!W){this._updatingCamera=!0;let Z=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),$=st=>st!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new u0(\"renderFrame\",{timeStamp:l})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class d_ extends n.E{constructor(l,d){super(),this._renderFrameCallback=()=>{let v=Math.min((n.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(v)),v<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=l,this._bearingSnap=d.bearingSnap,this.on(\"moveend\",()=>{delete this._requestedCameraState})}getCenter(){return new n.L(this.transform.center.lng,this.transform.center.lat)}setCenter(l,d){return this.jumpTo({center:l},d)}panBy(l,d,v){return l=n.P.convert(l).mult(-1),this.panTo(this.transform.center,n.e({offset:l},d),v)}panTo(l,d,v){return this.easeTo(n.e({center:l},d),v)}getZoom(){return this.transform.zoom}setZoom(l,d){return this.jumpTo({zoom:l},d),this}zoomTo(l,d,v){return this.easeTo(n.e({zoom:l},d),v)}zoomIn(l,d){return this.zoomTo(this.getZoom()+1,l,d),this}zoomOut(l,d){return this.zoomTo(this.getZoom()-1,l,d),this}getBearing(){return this.transform.bearing}setBearing(l,d){return this.jumpTo({bearing:l},d),this}getPadding(){return this.transform.padding}setPadding(l,d){return this.jumpTo({padding:l},d),this}rotateTo(l,d,v){return this.easeTo(n.e({bearing:l},d),v)}resetNorth(l,d){return this.rotateTo(0,n.e({duration:1e3},l),d),this}resetNorthPitch(l,d){return this.easeTo(n.e({bearing:0,pitch:0,duration:1e3},l),d),this}snapToNorth(l,d){return Math.abs(this.getBearing()){if(this._zooming&&(v.zoom=n.B.number(b,U,Qt)),this._rotating&&(v.bearing=n.B.number(M,W,Qt)),this._pitching&&(v.pitch=n.B.number(O,Z,Qt)),this._padding&&(v.interpolatePadding(B,$,Qt),At=v.centerPoint.add(st)),this.terrain&&!l.freezeElevation&&this._updateElevation(Qt),St)v.setLocationAtPoint(St,Bt);else{let oe=v.zoomScale(v.zoom-b),pe=U>b?Math.min(2,Wt):Math.max(.5,Wt),he=Math.pow(pe,1-Qt),xe=v.unproject(dt.add(Ft.mult(Qt*he)).mult(oe));v.setLocationAtPoint(v.renderWorldCopies?xe.wrap():xe,At)}this._applyUpdatedTransform(v),this._fireMoveEvents(d)},Qt=>{this.terrain&&this._finalizeElevation(),this._afterEase(d,Qt)},l),this}_prepareEase(l,d,v={}){this._moving=!0,d||v.moving||this.fire(new n.k(\"movestart\",l)),this._zooming&&!v.zooming&&this.fire(new n.k(\"zoomstart\",l)),this._rotating&&!v.rotating&&this.fire(new n.k(\"rotatestart\",l)),this._pitching&&!v.pitching&&this.fire(new n.k(\"pitchstart\",l))}_prepareElevation(l){this._elevationCenter=l,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(l,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(l){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let d=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(l<1&&d!==this._elevationTarget){let v=this._elevationTarget-this._elevationStart;this._elevationStart+=l*(v-(d-(v*l+this._elevationStart))/(1-l)),this._elevationTarget=d}this.transform.elevation=n.B.number(this._elevationStart,this._elevationTarget,l)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(l){if(!this.transformCameraUpdate)return;let d=l.clone(),{center:v,zoom:b,pitch:M,bearing:O,elevation:B}=this.transformCameraUpdate(d);v&&(d.center=v),b!==void 0&&(d.zoom=b),M!==void 0&&(d.pitch=M),O!==void 0&&(d.bearing=O),B!==void 0&&(d.elevation=B),this.transform.apply(d)}_fireMoveEvents(l){this.fire(new n.k(\"move\",l)),this._zooming&&this.fire(new n.k(\"zoom\",l)),this._rotating&&this.fire(new n.k(\"rotate\",l)),this._pitching&&this.fire(new n.k(\"pitch\",l))}_afterEase(l,d){if(this._easeId&&d&&this._easeId===d)return;delete this._easeId;let v=this._zooming,b=this._rotating,M=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,v&&this.fire(new n.k(\"zoomend\",l)),b&&this.fire(new n.k(\"rotateend\",l)),M&&this.fire(new n.k(\"pitchend\",l)),this.fire(new n.k(\"moveend\",l))}flyTo(l,d){if(!l.essential&&n.h.prefersReducedMotion){let Xe=n.F(l,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(Xe,d)}this.stop(),l=n.e({offset:[0,0],speed:1.2,curve:1.42,easing:n.bb},l);let v=this._getTransformForUpdate(),b=this.getZoom(),M=this.getBearing(),O=this.getPitch(),B=this.getPadding(),U=\"zoom\"in l?n.ad(+l.zoom,v.minZoom,v.maxZoom):b,W=\"bearing\"in l?this._normalizeBearing(l.bearing,M):M,Z=\"pitch\"in l?+l.pitch:O,$=\"padding\"in l?l.padding:v.padding,st=v.zoomScale(U-b),At=n.P.convert(l.offset),pt=v.centerPoint.add(At),yt=v.pointLocation(pt),dt=n.L.convert(l.center||yt);this._normalizeCenter(dt);let Ft=v.project(yt),Wt=v.project(dt).sub(Ft),St=l.curve,Bt=Math.max(v.width,v.height),Yt=Bt/st,Qt=Wt.mag();if(\"minZoom\"in l){let Xe=n.ad(Math.min(l.minZoom,b,U),v.minZoom,v.maxZoom),Vi=Bt/v.zoomScale(Xe-b);St=Math.sqrt(Vi/Qt*2)}let oe=St*St;function pe(Xe){let Vi=(Yt*Yt-Bt*Bt+(Xe?-1:1)*oe*oe*Qt*Qt)/(2*(Xe?Yt:Bt)*oe*Qt);return Math.log(Math.sqrt(Vi*Vi+1)-Vi)}function he(Xe){return(Math.exp(Xe)-Math.exp(-Xe))/2}function xe(Xe){return(Math.exp(Xe)+Math.exp(-Xe))/2}let We=pe(!1),Kr=function(Xe){return xe(We)/xe(We+St*Xe)},Me=function(Xe){return Bt*((xe(We)*(he(Vi=We+St*Xe)/xe(Vi))-he(We))/oe)/Qt;var Vi},dr=(pe(!0)-We)/St;if(Math.abs(Qt)<1e-6||!isFinite(dr)){if(Math.abs(Bt-Yt)<1e-6)return this.easeTo(l,d);let Xe=Ytl.maxDuration&&(l.duration=0),this._zooming=!0,this._rotating=M!==W,this._pitching=Z!==O,this._padding=!v.isPaddingEqual($),this._prepareEase(d,!1),this.terrain&&this._prepareElevation(dt),this._ease(Xe=>{let Vi=Xe*dr,Jr=1/Kr(Vi);v.zoom=Xe===1?U:b+v.scaleZoom(Jr),this._rotating&&(v.bearing=n.B.number(M,W,Xe)),this._pitching&&(v.pitch=n.B.number(O,Z,Xe)),this._padding&&(v.interpolatePadding(B,$,Xe),pt=v.centerPoint.add(At)),this.terrain&&!l.freezeElevation&&this._updateElevation(Xe);let Vr=Xe===1?dt:v.unproject(Ft.add(Wt.mult(Me(Vi))).mult(Jr));v.setLocationAtPoint(v.renderWorldCopies?Vr.wrap():Vr,pt),this._applyUpdatedTransform(v),this._fireMoveEvents(d)},()=>{this.terrain&&this._finalizeElevation(),this._afterEase(d)},l),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(l,d){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let v=this._onEaseEnd;delete this._onEaseEnd,v.call(this,d)}if(!l){let v=this.handlers;v&&v.stop(!1)}return this}_ease(l,d,v){v.animate===!1||v.duration===0?(l(1),d()):(this._easeStart=n.h.now(),this._easeOptions=v,this._onEaseFrame=l,this._onEaseEnd=d,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(l,d){l=n.b5(l,-180,180);let v=Math.abs(l-d);return Math.abs(l-360-d)180?-360:v<-180?360:0}queryTerrainElevation(l){return this.terrain?this.terrain.getElevationForLngLatZoom(n.L.convert(l),this.transform.tileZoom)-this.transform.elevation:null}}class ua{constructor(l={}){this._toggleAttribution=()=>{this._container.classList.contains(\"maplibregl-compact\")&&(this._container.classList.contains(\"maplibregl-compact-show\")?(this._container.setAttribute(\"open\",\"\"),this._container.classList.remove(\"maplibregl-compact-show\")):(this._container.classList.add(\"maplibregl-compact-show\"),this._container.removeAttribute(\"open\")))},this._updateData=d=>{!d||d.sourceDataType!==\"metadata\"&&d.sourceDataType!==\"visibility\"&&d.dataType!==\"style\"&&d.type!==\"terrain\"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute(\"open\",\"\"):this._container.classList.contains(\"maplibregl-compact\")||this._container.classList.contains(\"maplibregl-attrib-empty\")||(this._container.setAttribute(\"open\",\"\"),this._container.classList.add(\"maplibregl-compact\",\"maplibregl-compact-show\")):(this._container.setAttribute(\"open\",\"\"),this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.remove(\"maplibregl-compact\",\"maplibregl-compact-show\"))},this._updateCompactMinimize=()=>{this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.contains(\"maplibregl-compact-show\")&&this._container.classList.remove(\"maplibregl-compact-show\")},this.options=l}getDefaultPosition(){return\"bottom-right\"}onAdd(l){return this._map=l,this._compact=this.options&&this.options.compact,this._container=c.create(\"details\",\"maplibregl-ctrl maplibregl-ctrl-attrib\"),this._compactButton=c.create(\"summary\",\"maplibregl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=c.create(\"div\",\"maplibregl-ctrl-attrib-inner\",this._container),this._updateAttributions(),this._updateCompact(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"terrain\",this._updateData),this._map.on(\"resize\",this._updateCompact),this._map.on(\"drag\",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"terrain\",this._updateData),this._map.off(\"resize\",this._updateCompact),this._map.off(\"drag\",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(l,d){let v=this._map._getUIString(`AttributionControl.${d}`);l.title=v,l.setAttribute(\"aria-label\",v)}_updateAttributions(){if(!this._map.style)return;let l=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?l=l.concat(this.options.customAttribution.map(b=>typeof b!=\"string\"?\"\":b)):typeof this.options.customAttribution==\"string\"&&l.push(this.options.customAttribution)),this._map.style.stylesheet){let b=this._map.style.stylesheet;this.styleOwner=b.owner,this.styleId=b.id}let d=this._map.style.sourceCaches;for(let b in d){let M=d[b];if(M.used||M.usedForTerrain){let O=M.getSource();O.attribution&&l.indexOf(O.attribution)<0&&l.push(O.attribution)}}l=l.filter(b=>String(b).trim()),l.sort((b,M)=>b.length-M.length),l=l.filter((b,M)=>{for(let O=M+1;O=0)return!1;return!0});let v=l.join(\" | \");v!==this._attribHTML&&(this._attribHTML=v,l.length?(this._innerContainer.innerHTML=v,this._container.classList.remove(\"maplibregl-attrib-empty\")):this._container.classList.add(\"maplibregl-attrib-empty\"),this._updateCompact(),this._editLink=null)}}class ln{constructor(l={}){this._updateCompact=()=>{let d=this._container.children;if(d.length){let v=d[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&v.classList.add(\"maplibregl-compact\"):v.classList.remove(\"maplibregl-compact\")}},this.options=l}getDefaultPosition(){return\"bottom-left\"}onAdd(l){this._map=l,this._compact=this.options&&this.options.compact,this._container=c.create(\"div\",\"maplibregl-ctrl\");let d=c.create(\"a\",\"maplibregl-ctrl-logo\");return d.target=\"_blank\",d.rel=\"noopener nofollow\",d.href=\"https://maplibre.org/\",d.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),d.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(d),this._container.style.display=\"block\",this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._compact=void 0}}class sA{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(l){let d=++this._id;return this._queue.push({callback:l,id:d,cancelled:!1}),d}remove(l){let d=this._currentlyRunning,v=d?this._queue.concat(d):this._queue;for(let b of v)if(b.id===l)return void(b.cancelled=!0)}run(l=0){if(this._currentlyRunning)throw new Error(\"Attempting to run(), but is already running.\");let d=this._currentlyRunning=this._queue;this._queue=[];for(let v of d)if(!v.cancelled&&(v.callback(l),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}let f0={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"TerrainControl.enableTerrain\":\"Enable terrain\",\"TerrainControl.disableTerrain\":\"Disable terrain\"};var ph=n.Q([{name:\"a_pos3d\",type:\"Int16\",components:3}]);class p_ extends n.E{constructor(l){super(),this.sourceCache=l,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,l.usedForTerrain=!0,l.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(l,d){this.sourceCache.update(l,d),this._renderableTilesKeys=[];let v={};for(let b of l.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:d}))v[b.key]=!0,this._renderableTilesKeys.push(b.key),this._tiles[b.key]||(b.posMatrix=new Float64Array(16),n.aS(b.posMatrix,0,n.N,0,n.N,0,1),this._tiles[b.key]=new so(b,this.tileSize));for(let b in this._tiles)v[b]||delete this._tiles[b]}freeRtt(l){for(let d in this._tiles){let v=this._tiles[d];(!l||v.tileID.equals(l)||v.tileID.isChildOf(l)||l.isChildOf(v.tileID))&&(v.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(l=>this.getTileByID(l))}getTileByID(l){return this._tiles[l]}getTerrainCoords(l){let d={};for(let v of this._renderableTilesKeys){let b=this._tiles[v].tileID;if(b.canonical.equals(l.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16),n.aS(M.posMatrix,0,n.N,0,n.N,0,1),d[v]=M}else if(b.canonical.isChildOf(l.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16);let O=b.canonical.z-l.canonical.z,B=b.canonical.x-(b.canonical.x>>O<>O<>O;n.aS(M.posMatrix,0,W,0,W,0,1),n.$(M.posMatrix,M.posMatrix,[-B*W,-U*W,0]),d[v]=M}else if(l.canonical.isChildOf(b.canonical)){let M=l.clone();M.posMatrix=new Float64Array(16);let O=l.canonical.z-b.canonical.z,B=l.canonical.x-(l.canonical.x>>O<>O<>O;n.aS(M.posMatrix,0,n.N,0,n.N,0,1),n.$(M.posMatrix,M.posMatrix,[B*W,U*W,0]),n.a0(M.posMatrix,M.posMatrix,[1/2**O,1/2**O,0]),d[v]=M}}return d}getSourceTile(l,d){let v=this.sourceCache._source,b=l.overscaledZ-this.deltaZoom;if(b>v.maxzoom&&(b=v.maxzoom),b=v.minzoom&&(!M||!M.dem);)M=this.sourceCache.getTileByID(l.scaledTo(b--).key);return M}tilesAfterTime(l=Date.now()){return Object.values(this._tiles).filter(d=>d.timeAdded>=l)}}class A_{constructor(l,d,v){this.painter=l,this.sourceCache=new p_(d),this.options=v,this.exaggeration=typeof v.exaggeration==\"number\"?v.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(l,d,v,b=n.N){var M;if(!(d>=0&&d=0&&vl.canonical.z&&(l.canonical.z>=b?M=l.canonical.z-b:n.w(\"cannot calculate elevation if elevation maxzoom > source.maxzoom\"));let O=l.canonical.x-(l.canonical.x>>M<>M<>8<<4|M>>8,d[O+3]=0;let v=new n.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(d.buffer)),b=new Zt(l,v,l.gl.RGBA,{premultiply:!1});return b.bind(l.gl.NEAREST,l.gl.CLAMP_TO_EDGE),this._coordsTexture=b,b}pointCoordinate(l){let d=new Uint8Array(4),v=this.painter.context,b=v.gl;v.bindFramebuffer.set(this.getFramebuffer(\"coords\").framebuffer),b.readPixels(l.x,this.painter.height/devicePixelRatio-l.y-1,1,1,b.RGBA,b.UNSIGNED_BYTE,d),v.bindFramebuffer.set(null);let M=d[0]+(d[2]>>4<<8),O=d[1]+((15&d[2])<<8),B=this.coordsIndex[255-d[3]],U=B&&this.sourceCache.getTileByID(B);if(!U)return null;let W=this._coordsTextureSize,Z=(1<0&&Math.sign(M)<0||!v&&Math.sign(b)<0&&Math.sign(M)>0?(b=360*Math.sign(M)+b,n.G(b)):d}}class Rx{constructor(l,d,v){this._context=l,this._size=d,this._tileSize=v,this._objects=[],this._recentlyUsed=[],this._stamp=0}destruct(){for(let l of this._objects)l.texture.destroy(),l.fbo.destroy()}_createObject(l){let d=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),v=new Zt(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return v.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),d.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),d.colorAttachment.set(v.texture),{id:l,fbo:d,texture:v,stamp:-1,inUse:!1}}getObjectForId(l){return this._objects[l]}useObject(l){l.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter(d=>l.id!==d),this._recentlyUsed.push(l.id)}stampObject(l){l.stamp=++this._stamp}getOrCreateFreeObject(){for(let d of this._recentlyUsed)if(!this._objects[d].inUse)return this._objects[d];if(this._objects.length>=this._size)throw new Error(\"No free RenderPool available, call freeAllObjects() required!\");let l=this._createObject(this._objects.length);return this._objects.push(l),l}freeObject(l){l.inUse=!1}freeAllObjects(){for(let l of this._objects)this.freeObject(l)}isFull(){return!(this._objects.length!l.inUse)===!1}}let To={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class oA{constructor(l,d){this.painter=l,this.terrain=d,this.pool=new Rx(l.context,30,d.sourceCache.tileSize*d.qualityFactor)}destruct(){this.pool.destruct()}getTexture(l){return this.pool.getObjectForId(l.rtt[this._stacks.length-1].id).texture}prepareForRender(l,d){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=l._order.filter(v=>!l._layers[v].isHidden(d)),this._coordsDescendingInv={};for(let v in l.sourceCaches){this._coordsDescendingInv[v]={};let b=l.sourceCaches[v].getVisibleCoordinates();for(let M of b){let O=this.terrain.sourceCache.getTerrainCoords(M);for(let B in O)this._coordsDescendingInv[v][B]||(this._coordsDescendingInv[v][B]=[]),this._coordsDescendingInv[v][B].push(O[B])}}this._coordsDescendingInvStr={};for(let v of l._order){let b=l._layers[v],M=b.source;if(To[b.type]&&!this._coordsDescendingInvStr[M]){this._coordsDescendingInvStr[M]={};for(let O in this._coordsDescendingInv[M])this._coordsDescendingInvStr[M][O]=this._coordsDescendingInv[M][O].map(B=>B.key).sort().join()}}for(let v of this._renderableTiles)for(let b in this._coordsDescendingInvStr){let M=this._coordsDescendingInvStr[b][v.tileID.key];M&&M!==v.rttCoords[b]&&(v.rtt=[])}}renderLayer(l){if(l.isHidden(this.painter.transform.zoom))return!1;let d=l.type,v=this.painter,b=this._renderableLayerIds[this._renderableLayerIds.length-1]===l.id;if(To[d]&&(this._prevType&&To[this._prevType]||this._stacks.push([]),this._prevType=d,this._stacks[this._stacks.length-1].push(l.id),!b))return!0;if(To[this._prevType]||To[d]&&b){this._prevType=d;let M=this._stacks.length-1,O=this._stacks[M]||[];for(let B of this._renderableTiles){if(this.pool.isFull()&&(Pn(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(B),B.rtt[M]){let W=this.pool.getObjectForId(B.rtt[M].id);if(W.stamp===B.rtt[M].stamp){this.pool.useObject(W);continue}}let U=this.pool.getOrCreateFreeObject();this.pool.useObject(U),this.pool.stampObject(U),B.rtt[M]={id:U.id,stamp:U.stamp},v.context.bindFramebuffer.set(U.fbo.framebuffer),v.context.clear({color:n.aT.transparent,stencil:0}),v.currentStencilSource=void 0;for(let W=0;W{T.touchstart=T.dragStart,T.touchmoveWindow=T.dragMove,T.touchend=T.dragEnd},aA={showCompass:!0,showZoom:!0,visualizePitch:!1};class Bd{constructor(l,d,v=!1){this.mousedown=O=>{this.startMouse(n.e({},O,{ctrlKey:!0,preventDefault:()=>O.preventDefault()}),c.mousePos(this.element,O)),c.addEventListener(window,\"mousemove\",this.mousemove),c.addEventListener(window,\"mouseup\",this.mouseup)},this.mousemove=O=>{this.moveMouse(O,c.mousePos(this.element,O))},this.mouseup=O=>{this.mouseRotate.dragEnd(O),this.mousePitch&&this.mousePitch.dragEnd(O),this.offTemp()},this.touchstart=O=>{O.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,O.targetTouches)[0],this.startTouch(O,this._startPos),c.addEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.addEventListener(window,\"touchend\",this.touchend))},this.touchmove=O=>{O.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,O.targetTouches)[0],this.moveTouch(O,this._lastPos))},this.touchend=O=>{O.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let b=l.dragRotate._mouseRotate.getClickTolerance(),M=l.dragRotate._mousePitch.getClickTolerance();this.element=d,this.mouseRotate=Na({clickTolerance:b,enable:!0}),this.touchRotate=(({enable:O,clickTolerance:B,bearingDegreesPerPixelMoved:U=.8})=>{let W=new n0;return new za({clickTolerance:B,move:(Z,$)=>({bearingDelta:($.x-Z.x)*U}),moveStateManager:W,enable:O,assignEvents:bf})})({clickTolerance:b,enable:!0}),this.map=l,v&&(this.mousePitch=ao({clickTolerance:M,enable:!0}),this.touchPitch=(({enable:O,clickTolerance:B,pitchDegreesPerPixelMoved:U=-.5})=>{let W=new n0;return new za({clickTolerance:B,move:(Z,$)=>({pitchDelta:($.y-Z.y)*U}),moveStateManager:W,enable:O,assignEvents:bf})})({clickTolerance:M,enable:!0})),c.addEventListener(d,\"mousedown\",this.mousedown),c.addEventListener(d,\"touchstart\",this.touchstart,{passive:!1}),c.addEventListener(d,\"touchcancel\",this.reset)}startMouse(l,d){this.mouseRotate.dragStart(l,d),this.mousePitch&&this.mousePitch.dragStart(l,d),c.disableDrag()}startTouch(l,d){this.touchRotate.dragStart(l,d),this.touchPitch&&this.touchPitch.dragStart(l,d),c.disableDrag()}moveMouse(l,d){let v=this.map,{bearingDelta:b}=this.mouseRotate.dragMove(l,d)||{};if(b&&v.setBearing(v.getBearing()+b),this.mousePitch){let{pitchDelta:M}=this.mousePitch.dragMove(l,d)||{};M&&v.setPitch(v.getPitch()+M)}}moveTouch(l,d){let v=this.map,{bearingDelta:b}=this.touchRotate.dragMove(l,d)||{};if(b&&v.setBearing(v.getBearing()+b),this.touchPitch){let{pitchDelta:M}=this.touchPitch.dragMove(l,d)||{};M&&v.setPitch(v.getPitch()+M)}}off(){let l=this.element;c.removeEventListener(l,\"mousedown\",this.mousedown),c.removeEventListener(l,\"touchstart\",this.touchstart,{passive:!1}),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend),c.removeEventListener(l,\"touchcancel\",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,\"mousemove\",this.mousemove),c.removeEventListener(window,\"mouseup\",this.mouseup),c.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),c.removeEventListener(window,\"touchend\",this.touchend)}}let Gn;function lo(T,l,d){if(T=new n.L(T.lng,T.lat),l){let v=new n.L(T.lng-360,T.lat),b=new n.L(T.lng+360,T.lat),M=d.locationPoint(T).distSqr(l);d.locationPoint(v).distSqr(l)180;){let v=d.locationPoint(T);if(v.x>=0&&v.y>=0&&v.x<=d.width&&v.y<=d.height)break;T.lng>d.center.lng?T.lng-=360:T.lng+=360}return T}let Ui={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function m_(T,l,d){let v=T.classList;for(let b in Ui)v.remove(`maplibregl-${d}-anchor-${b}`);v.add(`maplibregl-${d}-anchor-${l}`)}class Ah extends n.E{constructor(l){if(super(),this._onKeyPress=d=>{let v=d.code,b=d.charCode||d.keyCode;v!==\"Space\"&&v!==\"Enter\"&&b!==32&&b!==13||this.togglePopup()},this._onMapClick=d=>{let v=d.originalEvent.target,b=this._element;this._popup&&(v===b||b.contains(v))&&this.togglePopup()},this._update=d=>{if(!this._map)return;let v=this._map.loaded()&&!this._map.isMoving();(d?.type===\"terrain\"||d?.type===\"render\"&&!v)&&this._map.once(\"render\",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=lo(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let b=\"\";this._rotationAlignment===\"viewport\"||this._rotationAlignment===\"auto\"?b=`rotateZ(${this._rotation}deg)`:this._rotationAlignment===\"map\"&&(b=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let M=\"\";this._pitchAlignment===\"viewport\"||this._pitchAlignment===\"auto\"?M=\"rotateX(0deg)\":this._pitchAlignment===\"map\"&&(M=`rotateX(${this._map.getPitch()}deg)`),d&&d.type!==\"moveend\"||(this._pos=this._pos.round()),c.setTransform(this._element,`${Ui[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${M} ${b}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout(()=>{let O=this._map.unproject(this._pos),B=40075016686e-3*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=O.distanceTo(this._lngLat)>20*B?\"0.2\":\"1.0\",this._opacityTimeout=null},100))},this._onMove=d=>{if(!this._isDragging){let v=this._clickTolerance||this._map._clickTolerance;this._isDragging=d.point.dist(this._pointerdownPos)>=v}this._isDragging&&(this._pos=d.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",this._state===\"pending\"&&(this._state=\"active\",this.fire(new n.k(\"dragstart\"))),this.fire(new n.k(\"drag\")))},this._onUp=()=>{this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),this._state===\"active\"&&this.fire(new n.k(\"dragend\")),this._state=\"inactive\"},this._addDragHandler=d=>{this._element.contains(d.originalEvent.target)&&(d.preventDefault(),this._positionDelta=d.point.sub(this._pos).add(this._offset),this._pointerdownPos=d.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp))},this._anchor=l&&l.anchor||\"center\",this._color=l&&l.color||\"#3FB1CE\",this._scale=l&&l.scale||1,this._draggable=l&&l.draggable||!1,this._clickTolerance=l&&l.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=l&&l.rotation||0,this._rotationAlignment=l&&l.rotationAlignment||\"auto\",this._pitchAlignment=l&&l.pitchAlignment&&l.pitchAlignment!==\"auto\"?l.pitchAlignment:this._rotationAlignment,l&&l.element)this._element=l.element,this._offset=n.P.convert(l&&l.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");let d=c.createNS(\"http://www.w3.org/2000/svg\",\"svg\"),v=41,b=27;d.setAttributeNS(null,\"display\",\"block\"),d.setAttributeNS(null,\"height\",`${v}px`),d.setAttributeNS(null,\"width\",`${b}px`),d.setAttributeNS(null,\"viewBox\",`0 0 ${b} ${v}`);let M=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");M.setAttributeNS(null,\"stroke\",\"none\"),M.setAttributeNS(null,\"stroke-width\",\"1\"),M.setAttributeNS(null,\"fill\",\"none\"),M.setAttributeNS(null,\"fill-rule\",\"evenodd\");let O=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");O.setAttributeNS(null,\"fill-rule\",\"nonzero\");let B=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");B.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),B.setAttributeNS(null,\"fill\",\"#000000\");let U=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];for(let Ft of U){let Wt=c.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");Wt.setAttributeNS(null,\"opacity\",\"0.04\"),Wt.setAttributeNS(null,\"cx\",\"10.5\"),Wt.setAttributeNS(null,\"cy\",\"5.80029008\"),Wt.setAttributeNS(null,\"rx\",Ft.rx),Wt.setAttributeNS(null,\"ry\",Ft.ry),B.appendChild(Wt)}let W=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");W.setAttributeNS(null,\"fill\",this._color);let Z=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");Z.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),W.appendChild(Z);let $=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");$.setAttributeNS(null,\"opacity\",\"0.25\"),$.setAttributeNS(null,\"fill\",\"#000000\");let st=c.createNS(\"http://www.w3.org/2000/svg\",\"path\");st.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),$.appendChild(st);let At=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");At.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),At.setAttributeNS(null,\"fill\",\"#FFFFFF\");let pt=c.createNS(\"http://www.w3.org/2000/svg\",\"g\");pt.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");let yt=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");yt.setAttributeNS(null,\"fill\",\"#000000\"),yt.setAttributeNS(null,\"opacity\",\"0.25\"),yt.setAttributeNS(null,\"cx\",\"5.5\"),yt.setAttributeNS(null,\"cy\",\"5.5\"),yt.setAttributeNS(null,\"r\",\"5.4999962\");let dt=c.createNS(\"http://www.w3.org/2000/svg\",\"circle\");dt.setAttributeNS(null,\"fill\",\"#FFFFFF\"),dt.setAttributeNS(null,\"cx\",\"5.5\"),dt.setAttributeNS(null,\"cy\",\"5.5\"),dt.setAttributeNS(null,\"r\",\"5.4999962\"),pt.appendChild(yt),pt.appendChild(dt),O.appendChild(B),O.appendChild(W),O.appendChild($),O.appendChild(At),O.appendChild(pt),d.appendChild(O),d.setAttributeNS(null,\"height\",v*this._scale+\"px\"),d.setAttributeNS(null,\"width\",b*this._scale+\"px\"),this._element.appendChild(d),this._offset=n.P.convert(l&&l.offset||[0,-14])}if(this._element.classList.add(\"maplibregl-marker\"),this._element.addEventListener(\"dragstart\",d=>{d.preventDefault()}),this._element.addEventListener(\"mousedown\",d=>{d.preventDefault()}),m_(this._element,this._anchor,\"marker\"),l&&l.className)for(let d of l.className.split(\" \"))this._element.classList.add(d);this._popup=null}addTo(l){return this.remove(),this._map=l,l.getCanvasContainer().appendChild(this._element),l.on(\"move\",this._update),l.on(\"moveend\",this._update),l.on(\"terrain\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(l){return this._lngLat=n.L.convert(l),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(l){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),l){if(!(\"offset\"in l.options)){let b=Math.abs(13.5)/Math.SQRT2;l.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-38.1],\"bottom-left\":[b,-1*(38.1-13.5+b)],\"bottom-right\":[-b,-1*(38.1-13.5+b)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=l,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress)}return this}getPopup(){return this._popup}togglePopup(){let l=this._popup;return l?(l.isOpen()?l.remove():l.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(l){return this._offset=n.P.convert(l),this._update(),this}addClassName(l){this._element.classList.add(l)}removeClassName(l){this._element.classList.remove(l)}toggleClassName(l){return this._element.classList.toggle(l)}setDraggable(l){return this._draggable=!!l,this._map&&(l?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(l){return this._rotation=l||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(l){return this._rotationAlignment=l||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(l){return this._pitchAlignment=l&&l!==\"auto\"?l:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}let Cn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},xn=0,wf=!1,Es={maxWidth:100,unit:\"metric\"};function mh(T,l,d){let v=d&&d.maxWidth||100,b=T._container.clientHeight/2,M=T.unproject([0,b]),O=T.unproject([v,b]),B=M.distanceTo(O);if(d&&d.unit===\"imperial\"){let U=3.2808*B;U>5280?Ho(l,v,U/5280,T._getUIString(\"ScaleControl.Miles\")):Ho(l,v,U,T._getUIString(\"ScaleControl.Feet\"))}else d&&d.unit===\"nautical\"?Ho(l,v,B/1852,T._getUIString(\"ScaleControl.NauticalMiles\")):B>=1e3?Ho(l,v,B/1e3,T._getUIString(\"ScaleControl.Kilometers\")):Ho(l,v,B,T._getUIString(\"ScaleControl.Meters\"))}function Ho(T,l,d,v){let b=function(M){let O=Math.pow(10,`${Math.floor(M)}`.length-1),B=M/O;return B=B>=10?10:B>=5?5:B>=3?3:B>=2?2:B>=1?1:function(U){let W=Math.pow(10,Math.ceil(-Math.log(U)/Math.LN10));return Math.round(U*W)/W}(B),O*B}(d);T.style.width=l*(b/d)+\"px\",T.innerHTML=`${b} ${v}`}let d0={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},Fd=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function Sf(T){if(T){if(typeof T==\"number\"){let l=Math.round(Math.abs(T)/Math.SQRT2);return{center:new n.P(0,0),top:new n.P(0,T),\"top-left\":new n.P(l,l),\"top-right\":new n.P(-l,l),bottom:new n.P(0,-T),\"bottom-left\":new n.P(l,-l),\"bottom-right\":new n.P(-l,-l),left:new n.P(T,0),right:new n.P(-T,0)}}if(T instanceof n.P||Array.isArray(T)){let l=n.P.convert(T);return{center:l,top:l,\"top-left\":l,\"top-right\":l,bottom:l,\"bottom-left\":l,\"bottom-right\":l,left:l,right:l}}return{center:n.P.convert(T.center||[0,0]),top:n.P.convert(T.top||[0,0]),\"top-left\":n.P.convert(T[\"top-left\"]||[0,0]),\"top-right\":n.P.convert(T[\"top-right\"]||[0,0]),bottom:n.P.convert(T.bottom||[0,0]),\"bottom-left\":n.P.convert(T[\"bottom-left\"]||[0,0]),\"bottom-right\":n.P.convert(T[\"bottom-right\"]||[0,0]),left:n.P.convert(T.left||[0,0]),right:n.P.convert(T.right||[0,0])}}return Sf(new n.P(0,0))}let qo={extend:(T,...l)=>n.e(T,...l),run(T){T()},logToElement(T,l=!1,d=\"log\"){let v=window.document.getElementById(d);v&&(l&&(v.innerHTML=\"\"),v.innerHTML+=`
${T}`)}},lA=o;class xi{static get version(){return lA}static get workerCount(){return oo.workerCount}static set workerCount(l){oo.workerCount=l}static get maxParallelImageRequests(){return n.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(l){n.c.MAX_PARALLEL_IMAGE_REQUESTS=l}static get workerUrl(){return n.c.WORKER_URL}static set workerUrl(l){n.c.WORKER_URL=l}static addProtocol(l,d){n.c.REGISTERED_PROTOCOLS[l]=d}static removeProtocol(l){delete n.c.REGISTERED_PROTOCOLS[l]}}return xi.Map=class extends d_{constructor(T){if(n.bg.mark(n.bh.create),(T=n.e({},fr,T)).minZoom!=null&&T.maxZoom!=null&&T.minZoom>T.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(T.minPitch!=null&&T.maxPitch!=null&&T.minPitch>T.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(T.minPitch!=null&&T.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(T.maxPitch!=null&&T.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(super(new Kp(T.minZoom,T.maxZoom,T.minPitch,T.maxPitch,T.renderWorldCopies),{bearingSnap:T.bearingSnap}),this._cooperativeGesturesOnWheel=l=>{this._onCooperativeGesture(l,l[this._metaKey],1)},this._contextLost=l=>{l.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new n.k(\"webglcontextlost\",{originalEvent:l}))},this._contextRestored=l=>{this._setupPainter(),this.resize(),this._update(),this.fire(new n.k(\"webglcontextrestored\",{originalEvent:l}))},this._onMapScroll=l=>{if(l.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=T.interactive,this._cooperativeGestures=T.cooperativeGestures,this._metaKey=navigator.platform.indexOf(\"Mac\")===0?\"metaKey\":\"ctrlKey\",this._maxTileCacheSize=T.maxTileCacheSize,this._maxTileCacheZoomLevels=T.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=T.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=T.preserveDrawingBuffer,this._antialias=T.antialias,this._trackResize=T.trackResize,this._bearingSnap=T.bearingSnap,this._refreshExpiredTiles=T.refreshExpiredTiles,this._fadeDuration=T.fadeDuration,this._crossSourceCollisions=T.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=T.collectResourceTiming,this._renderTaskQueue=new sA,this._controls=[],this._mapId=n.a2(),this._locale=n.e({},f0,T.locale),this._clickTolerance=T.clickTolerance,this._overridePixelRatio=T.pixelRatio,this._maxCanvasSize=T.maxCanvasSize,this.transformCameraUpdate=T.transformCameraUpdate,this._imageQueueHandle=j.addThrottleControl(()=>this.isMoving()),this._requestManager=new et(T.transformRequest),typeof T.container==\"string\"){if(this._container=document.getElementById(T.container),!this._container)throw new Error(`Container '${T.container}' not found.`)}else{if(!(T.container instanceof HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=T.container}if(T.maxBounds&&this.setMaxBounds(T.maxBounds),this._setupContainer(),this._setupPainter(),this.on(\"move\",()=>this._update(!1)),this.on(\"moveend\",()=>this._update(!1)),this.on(\"zoom\",()=>this._update(!0)),this.on(\"terrain\",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once(\"idle\",()=>{this._idleTriggered=!0}),typeof window<\"u\"){addEventListener(\"online\",this._onWindowOnline,!1);let l=!1,d=ah(v=>{this._trackResize&&!this._removed&&this.resize(v)._update()},50);this._resizeObserver=new ResizeObserver(v=>{l?d(v):l=!0}),this._resizeObserver.observe(this._container)}this.handlers=new h0(this,T),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=T.hash&&new Ld(typeof T.hash==\"string\"&&T.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:T.center,zoom:T.zoom,bearing:T.bearing,pitch:T.pitch}),T.bounds&&(this.resize(),this.fitBounds(T.bounds,n.e({},T.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=T.localIdeographFontFamily,this._validateStyle=T.validateStyle,T.style&&this.setStyle(T.style,{localIdeographFontFamily:T.localIdeographFontFamily}),T.attributionControl&&this.addControl(new ua({customAttribution:T.customAttribution})),T.maplibreLogo&&this.addControl(new ln,T.logoPosition),this.on(\"style.load\",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on(\"data\",l=>{this._update(l.dataType===\"style\"),this.fire(new n.k(`${l.dataType}data`,l))}),this.on(\"dataloading\",l=>{this.fire(new n.k(`${l.dataType}dataloading`,l))}),this.on(\"dataabort\",l=>{this.fire(new n.k(\"sourcedataabort\",l))})}_getMapId(){return this._mapId}addControl(T,l){if(l===void 0&&(l=T.getDefaultPosition?T.getDefaultPosition():\"top-right\"),!T||!T.onAdd)return this.fire(new n.j(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));let d=T.onAdd(this);this._controls.push(T);let v=this._controlPositions[l];return l.indexOf(\"bottom\")!==-1?v.insertBefore(d,v.firstChild):v.appendChild(d),this}removeControl(T){if(!T||!T.onRemove)return this.fire(new n.j(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));let l=this._controls.indexOf(T);return l>-1&&this._controls.splice(l,1),T.onRemove(this),this}hasControl(T){return this._controls.indexOf(T)>-1}calculateCameraOptionsFromTo(T,l,d,v){return v==null&&this.terrain&&(v=this.terrain.getElevationForLngLatZoom(d,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(T,l,d,v)}resize(T){var l;let d=this._containerDimensions(),v=d[0],b=d[1],M=this._getClampedPixelRatio(v,b);if(this._resizeCanvas(v,b,M),this.painter.resize(v,b,M),this.painter.overLimit()){let B=this.painter.context.gl;this._maxCanvasSize=[B.drawingBufferWidth,B.drawingBufferHeight];let U=this._getClampedPixelRatio(v,b);this._resizeCanvas(v,b,U),this.painter.resize(v,b,U)}this.transform.resize(v,b),(l=this._requestedCameraState)===null||l===void 0||l.resize(v,b);let O=!this._moving;return O&&(this.stop(),this.fire(new n.k(\"movestart\",T)).fire(new n.k(\"move\",T))),this.fire(new n.k(\"resize\",T)),O&&this.fire(new n.k(\"moveend\",T)),this}_getClampedPixelRatio(T,l){let{0:d,1:v}=this._maxCanvasSize,b=this.getPixelRatio(),M=T*b,O=l*b;return Math.min(M>d?d/M:1,O>v?v/O:1)*b}getPixelRatio(){var T;return(T=this._overridePixelRatio)!==null&&T!==void 0?T:devicePixelRatio}setPixelRatio(T){this._overridePixelRatio=T,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(T){return this.transform.setMaxBounds(wi.convert(T)),this._update()}setMinZoom(T){if((T=T??-2)>=-2&&T<=this.transform.maxZoom)return this.transform.minZoom=T,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=T,this._update(),this.getZoom()>T&&this.setZoom(T),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(T){if((T=T??0)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(T>=0&&T<=this.transform.maxPitch)return this.transform.minPitch=T,this._update(),this.getPitch()85)throw new Error(\"maxPitch must be less than or equal to 85\");if(T>=this.transform.minPitch)return this.transform.maxPitch=T,this._update(),this.getPitch()>T&&this.setPitch(T),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(T){return this.transform.renderWorldCopies=T,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(T){return this._cooperativeGestures=T,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(T){return this.transform.locationPoint(n.L.convert(T),this.style&&this.terrain)}unproject(T){return this.transform.pointLocation(n.P.convert(T),this.terrain)}isMoving(){var T;return this._moving||((T=this.handlers)===null||T===void 0?void 0:T.isMoving())}isZooming(){var T;return this._zooming||((T=this.handlers)===null||T===void 0?void 0:T.isZooming())}isRotating(){var T;return this._rotating||((T=this.handlers)===null||T===void 0?void 0:T.isRotating())}_createDelegatedListener(T,l,d){if(T===\"mouseenter\"||T===\"mouseover\"){let v=!1;return{layer:l,listener:d,delegates:{mousemove:M=>{let O=this.getLayer(l)?this.queryRenderedFeatures(M.point,{layers:[l]}):[];O.length?v||(v=!0,d.call(this,new la(T,this,M.originalEvent,{features:O}))):v=!1},mouseout:()=>{v=!1}}}}if(T===\"mouseleave\"||T===\"mouseout\"){let v=!1;return{layer:l,listener:d,delegates:{mousemove:O=>{(this.getLayer(l)?this.queryRenderedFeatures(O.point,{layers:[l]}):[]).length?v=!0:v&&(v=!1,d.call(this,new la(T,this,O.originalEvent)))},mouseout:O=>{v&&(v=!1,d.call(this,new la(T,this,O.originalEvent)))}}}}{let v=b=>{let M=this.getLayer(l)?this.queryRenderedFeatures(b.point,{layers:[l]}):[];M.length&&(b.features=M,d.call(this,b),delete b.features)};return{layer:l,listener:d,delegates:{[T]:v}}}}on(T,l,d){if(d===void 0)return super.on(T,l);let v=this._createDelegatedListener(T,l,d);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[T]=this._delegatedListeners[T]||[],this._delegatedListeners[T].push(v);for(let b in v.delegates)this.on(b,v.delegates[b]);return this}once(T,l,d){if(d===void 0)return super.once(T,l);let v=this._createDelegatedListener(T,l,d);for(let b in v.delegates)this.once(b,v.delegates[b]);return this}off(T,l,d){return d===void 0?super.off(T,l):(this._delegatedListeners&&this._delegatedListeners[T]&&(v=>{let b=this._delegatedListeners[T];for(let M=0;Mthis._updateStyle(T,l));let d=this.style&&l.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!T)),T?(this.style=new Vn(this,l||{}),this.style.setEventedParent(this,{style:this.style}),typeof T==\"string\"?this.style.loadURL(T,l,d):this.style.loadJSON(T,l,d),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Vn(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(T,l){if(typeof T==\"string\"){let d=this._requestManager.transformRequest(T,Q.Style);n.f(d,(v,b)=>{v?this.fire(new n.j(v)):b&&this._updateDiff(b,l)})}else typeof T==\"object\"&&this._updateDiff(T,l)}_updateDiff(T,l){try{this.style.setState(T,l)&&this._update(!0)}catch(d){n.w(`Unable to perform style diff: ${d.message||d.error||d}. Rebuilding the style from scratch.`),this._updateStyle(T,l)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():n.w(\"There is no style added to the map.\")}addSource(T,l){return this._lazyInitEmptyStyle(),this.style.addSource(T,l),this._update(!0)}isSourceLoaded(T){let l=this.style&&this.style.sourceCaches[T];if(l!==void 0)return l.loaded();this.fire(new n.j(new Error(`There is no source with ID '${T}'`)))}setTerrain(T){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off(\"data\",this._terrainDataCallback),T){let l=this.style.sourceCaches[T.source];if(!l)throw new Error(`cannot load terrain, because there exists no source with ID: ${T.source}`);for(let d in this.style._layers){let v=this.style._layers[d];v.type===\"hillshade\"&&v.source===T.source&&n.w(\"You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.\")}this.terrain=new A_(this.painter,l,T),this.painter.renderToTexture=new oA(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=d=>{d.dataType===\"style\"?this.terrain.sourceCache.freeRtt():d.dataType===\"source\"&&d.tile&&(d.sourceId!==T.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(d.tile.tileID))},this.style.on(\"data\",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new n.k(\"terrain\",{terrain:T})),this}getTerrain(){var T,l;return(l=(T=this.terrain)===null||T===void 0?void 0:T.options)!==null&&l!==void 0?l:null}areTilesLoaded(){let T=this.style&&this.style.sourceCaches;for(let l in T){let d=T[l]._tiles;for(let v in d){let b=d[v];if(b.state!==\"loaded\"&&b.state!==\"errored\")return!1}}return!0}addSourceType(T,l,d){return this._lazyInitEmptyStyle(),this.style.addSourceType(T,l,d)}removeSource(T){return this.style.removeSource(T),this._update(!0)}getSource(T){return this.style.getSource(T)}addImage(T,l,d={}){let{pixelRatio:v=1,sdf:b=!1,stretchX:M,stretchY:O,content:B}=d;if(this._lazyInitEmptyStyle(),!(l instanceof HTMLImageElement||n.a(l))){if(l.width===void 0||l.height===void 0)return this.fire(new n.j(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{let{width:U,height:W,data:Z}=l,$=l;return this.style.addImage(T,{data:new n.R({width:U,height:W},new Uint8Array(Z)),pixelRatio:v,stretchX:M,stretchY:O,content:B,sdf:b,version:0,userImage:$}),$.onAdd&&$.onAdd(this,T),this}}{let{width:U,height:W,data:Z}=n.h.getImageData(l);this.style.addImage(T,{data:new n.R({width:U,height:W},Z),pixelRatio:v,stretchX:M,stretchY:O,content:B,sdf:b,version:0})}}updateImage(T,l){let d=this.style.getImage(T);if(!d)return this.fire(new n.j(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));let v=l instanceof HTMLImageElement||n.a(l)?n.h.getImageData(l):l,{width:b,height:M,data:O}=v;if(b===void 0||M===void 0)return this.fire(new n.j(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(b!==d.data.width||M!==d.data.height)return this.fire(new n.j(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));let B=!(l instanceof HTMLImageElement||n.a(l));return d.data.replace(O,B),this.style.updateImage(T,d),this}getImage(T){return this.style.getImage(T)}hasImage(T){return T?!!this.style.getImage(T):(this.fire(new n.j(new Error(\"Missing required image id\"))),!1)}removeImage(T){this.style.removeImage(T)}loadImage(T,l){j.getImage(this._requestManager.transformRequest(T,Q.Image),l)}listImages(){return this.style.listImages()}addLayer(T,l){return this._lazyInitEmptyStyle(),this.style.addLayer(T,l),this._update(!0)}moveLayer(T,l){return this.style.moveLayer(T,l),this._update(!0)}removeLayer(T){return this.style.removeLayer(T),this._update(!0)}getLayer(T){return this.style.getLayer(T)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(T,l,d){return this.style.setLayerZoomRange(T,l,d),this._update(!0)}setFilter(T,l,d={}){return this.style.setFilter(T,l,d),this._update(!0)}getFilter(T){return this.style.getFilter(T)}setPaintProperty(T,l,d,v={}){return this.style.setPaintProperty(T,l,d,v),this._update(!0)}getPaintProperty(T,l){return this.style.getPaintProperty(T,l)}setLayoutProperty(T,l,d,v={}){return this.style.setLayoutProperty(T,l,d,v),this._update(!0)}getLayoutProperty(T,l){return this.style.getLayoutProperty(T,l)}setGlyphs(T,l={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(T,l),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(T,l,d={}){return this._lazyInitEmptyStyle(),this.style.addSprite(T,l,d,v=>{v||this._update(!0)}),this}removeSprite(T){return this._lazyInitEmptyStyle(),this.style.removeSprite(T),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(T,l={}){return this._lazyInitEmptyStyle(),this.style.setSprite(T,l,d=>{d||this._update(!0)}),this}setLight(T,l={}){return this._lazyInitEmptyStyle(),this.style.setLight(T,l),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(T,l){return this.style.setFeatureState(T,l),this._update()}removeFeatureState(T,l){return this.style.removeFeatureState(T,l),this._update()}getFeatureState(T){return this.style.getFeatureState(T)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let T=0,l=0;return this._container&&(T=this._container.clientWidth||400,l=this._container.clientHeight||300),[T,l]}_setupContainer(){let T=this._container;T.classList.add(\"maplibregl-map\");let l=this._canvasContainer=c.create(\"div\",\"maplibregl-canvas-container\",T);this._interactive&&l.classList.add(\"maplibregl-interactive\"),this._canvas=c.create(\"canvas\",\"maplibregl-canvas\",l),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\");let d=this._containerDimensions(),v=this._getClampedPixelRatio(d[0],d[1]);this._resizeCanvas(d[0],d[1],v);let b=this._controlContainer=c.create(\"div\",\"maplibregl-control-container\",T),M=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach(O=>{M[O]=c.create(\"div\",`maplibregl-ctrl-${O} `,b)}),this._container.addEventListener(\"scroll\",this._onMapScroll,!1)}_setupCooperativeGestures(){this._cooperativeGesturesScreen=c.create(\"div\",\"maplibregl-cooperative-gesture-screen\",this._container);let T=typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:\"Use Ctrl + scroll to zoom the map\";navigator.platform.indexOf(\"Mac\")===0&&(T=typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:\"Use \\u2318 + scroll to zoom the map\"),this._cooperativeGesturesScreen.innerHTML=`\n
${T}
\n
${typeof this._cooperativeGestures!=\"boolean\"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:\"Use two fingers to move the map\"}
\n `,this._cooperativeGesturesScreen.setAttribute(\"aria-hidden\",\"true\"),this._canvasContainer.addEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add(\"maplibregl-cooperative-gestures\")}_destroyCooperativeGestures(){c.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove(\"maplibregl-cooperative-gestures\")}_resizeCanvas(T,l,d){this._canvas.width=Math.floor(d*T),this._canvas.height=Math.floor(d*l),this._canvas.style.width=`${T}px`,this._canvas.style.height=`${l}px`}_setupPainter(){let T={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},l=null;this._canvas.addEventListener(\"webglcontextcreationerror\",v=>{l={requestedAttributes:T},v&&(l.statusMessage=v.statusMessage,l.type=v.type)},{once:!0});let d=this._canvas.getContext(\"webgl2\",T)||this._canvas.getContext(\"webgl\",T);if(!d){let v=\"Failed to initialize WebGL\";throw l?(l.message=v,new Error(JSON.stringify(l))):new Error(v)}this.painter=new oh(d,this.transform),f.testSupport(d)}_onCooperativeGesture(T,l,d){return!l&&d<2&&(this._cooperativeGesturesScreen.classList.add(\"maplibregl-show\"),setTimeout(()=>{this._cooperativeGesturesScreen.classList.remove(\"maplibregl-show\")},100)),!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(T){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||T,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(T){return this._update(),this._renderTaskQueue.add(T)}_cancelRenderFrame(T){this._renderTaskQueue.remove(T)}_render(T){let l=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(T),this._removed)return;let d=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let b=this.transform.zoom,M=n.h.now();this.style.zoomHistory.update(b,M);let O=new n.a8(b,{now:M,fadeDuration:l,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),B=O.crossFadingFactor();B===1&&B===this._crossFadingFactor||(d=!0,this._crossFadingFactor=B),this.style.update(O)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,l,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:l,showPadding:this.showPadding}),this.fire(new n.k(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,n.bg.mark(n.bh.load),this.fire(new n.k(\"load\"))),this.style&&(this.style.hasTransitions()||d)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let v=this._sourcesDirty||this._styleDirty||this._placementDirty;return v||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new n.k(\"idle\")),!this._loaded||this._fullyLoaded||v||(this._fullyLoaded=!0,n.bg.mark(n.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var T;this._hash&&this._hash.remove();for(let d of this._controls)d.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<\"u\"&&removeEventListener(\"online\",this._onWindowOnline,!1),j.removeThrottleControl(this._imageQueueHandle),(T=this._resizeObserver)===null||T===void 0||T.disconnect();let l=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");l&&l.loseContext(),this._canvas.removeEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.removeEventListener(\"webglcontextlost\",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove(\"maplibregl-map\"),n.bg.clearMetrics(),this._removed=!0,this.fire(new n.k(\"remove\"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=n.h.frame(T=>{n.bg.frame(T),this._frame=null,this._render(T)}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(T){this._showTileBoundaries!==T&&(this._showTileBoundaries=T,this._update())}get showPadding(){return!!this._showPadding}set showPadding(T){this._showPadding!==T&&(this._showPadding=T,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(T){this._showCollisionBoxes!==T&&(this._showCollisionBoxes=T,T?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(T){this._showOverdrawInspector!==T&&(this._showOverdrawInspector=T,this._update())}get repaint(){return!!this._repaint}set repaint(T){this._repaint!==T&&(this._repaint=T,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(T){this._vertices=T,this._update()}get version(){return rr}getCameraTargetElevation(){return this.transform.elevation}},xi.NavigationControl=class{constructor(T){this._updateZoomButtons=()=>{let l=this._map.getZoom(),d=l===this._map.getMaxZoom(),v=l===this._map.getMinZoom();this._zoomInButton.disabled=d,this._zoomOutButton.disabled=v,this._zoomInButton.setAttribute(\"aria-disabled\",d.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",v.toString())},this._rotateCompassArrow=()=>{let l=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=l},this._setButtonTitle=(l,d)=>{let v=this._map._getUIString(`NavigationControl.${d}`);l.title=v,l.setAttribute(\"aria-label\",v)},this.options=n.e({},aA,T),this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",l=>l.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton(\"maplibregl-ctrl-zoom-in\",l=>this._map.zoomIn({},{originalEvent:l})),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"maplibregl-ctrl-zoom-out\",l=>this._map.zoomOut({},{originalEvent:l})),c.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(this._compass=this._createButton(\"maplibregl-ctrl-compass\",l=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:l}):this._map.resetNorth({},{originalEvent:l})}),this._compassIcon=c.create(\"span\",\"maplibregl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"))}onAdd(T){return this._map=T,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Bd(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(T,l){let d=c.create(\"button\",T,this._container);return d.type=\"button\",d.addEventListener(\"click\",l),d}},xi.GeolocateControl=class extends n.E{constructor(T){super(),this._onSuccess=l=>{if(this._map){if(this._isOutOfMapMaxBounds(l))return this._setErrorState(),this.fire(new n.k(\"outofmaxbounds\",l)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=l,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!==\"OFF\"&&this._updateMarker(l),this.options.trackUserLocation&&this._watchState!==\"ACTIVE_LOCK\"||this._updateCamera(l),this.options.showUserLocation&&this._dotElement.classList.remove(\"maplibregl-user-location-dot-stale\"),this.fire(new n.k(\"geolocate\",l)),this._finish()}},this._updateCamera=l=>{let d=new n.L(l.coords.longitude,l.coords.latitude),v=l.coords.accuracy,b=this._map.getBearing(),M=n.e({bearing:b},this.options.fitBoundsOptions),O=wi.fromLngLat(d,v);this._map.fitBounds(O,M,{geolocateSource:!0})},this._updateMarker=l=>{if(l){let d=new n.L(l.coords.longitude,l.coords.latitude);this._accuracyCircleMarker.setLngLat(d).addTo(this._map),this._userLocationDotMarker.setLngLat(d).addTo(this._map),this._accuracy=l.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=l=>{if(this._map){if(this.options.trackUserLocation)if(l.code===1){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;let d=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(l.code===3&&wf)return;this._setErrorState()}this._watchState!==\"OFF\"&&this.options.showUserLocation&&this._dotElement.classList.add(\"maplibregl-user-location-dot-stale\"),this.fire(new n.k(\"error\",l)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=l=>{if(this._map){if(this._container.addEventListener(\"contextmenu\",d=>d.preventDefault()),this._geolocateButton=c.create(\"button\",\"maplibregl-ctrl-geolocate\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",l===!1){n.w(\"Geolocation support is not available so the GeolocateControl will be disabled.\");let d=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d)}else{let d=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=d,this._geolocateButton.setAttribute(\"aria-label\",d)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=c.create(\"div\",\"maplibregl-user-location-dot\"),this._userLocationDotMarker=new Ah({element:this._dotElement}),this._circleElement=c.create(\"div\",\"maplibregl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Ah({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",d=>{d.geolocateSource||this._watchState!==\"ACTIVE_LOCK\"||d.originalEvent&&d.originalEvent.type===\"resize\"||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this.fire(new n.k(\"trackuserlocationend\")))})}},this.options=n.e({},Cn,T)}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),function(l,d=!1){Gn===void 0||d?window.navigator.permissions!==void 0?window.navigator.permissions.query({name:\"geolocation\"}).then(v=>{Gn=v.state!==\"denied\",l(Gn)}).catch(()=>{Gn=!!window.navigator.geolocation,l(Gn)}):(Gn=!!window.navigator.geolocation,l(Gn)):l(Gn)}(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off(\"zoom\",this._onZoom),this._map=void 0,xn=0,wf=!1}_isOutOfMapMaxBounds(T){let l=this._map.getMaxBounds(),d=T.coords;return l&&(d.longitudel.getEast()||d.latitudel.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"ACTIVE_ERROR\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let T=this._map.getBounds(),l=T.getSouthEast(),d=T.getNorthEast(),v=l.distanceTo(d),b=Math.ceil(this._accuracy/(v/this._map._container.clientHeight)*2);this._circleElement.style.width=`${b}px`,this._circleElement.style.height=`${b}px`}trigger(){if(!this._setup)return n.w(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new n.k(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":xn--,wf=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this.fire(new n.k(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new n.k(\"trackuserlocationstart\"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"OFF\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState===\"OFF\"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let T;this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),xn++,xn>1?(T={maximumAge:6e5,timeout:0},wf=!0):(T=this.options.positionOptions,wf=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,T)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null)}},xi.AttributionControl=ua,xi.LogoControl=ln,xi.ScaleControl=class{constructor(T){this._onMove=()=>{mh(this._map,this._container,this.options)},this.setUnit=l=>{this.options.unit=l,mh(this._map,this._container,this.options)},this.options=n.e({},Es,T)}getDefaultPosition(){return\"bottom-left\"}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-scale\",T.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0}},xi.FullscreenControl=class extends n.E{constructor(T={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,T&&T.container&&(T.container instanceof HTMLElement?this._container=T.container:n.w(\"Full screen control 'container' must be a DOM element.\")),\"onfullscreenchange\"in document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in document&&(this._fullscreenchange=\"MSFullscreenChange\")}onAdd(T){return this._map=T,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let T=this._fullscreenButton=c.create(\"button\",\"maplibregl-ctrl-fullscreen\",this._controlContainer);c.create(\"span\",\"maplibregl-ctrl-icon\",T).setAttribute(\"aria-hidden\",\"true\"),T.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let T=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",T),this._fullscreenButton.title=T}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-fullscreen\"),this._updateTitle(),this._fullscreen?(this.fire(new n.k(\"fullscreenstart\")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new n.k(\"fullscreenend\")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures))}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle(\"maplibregl-pseudo-fullscreen\"),this._handleFullscreenChange(),this._map.resize()}},xi.TerrainControl=class{constructor(T){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain\"),this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain-enabled\"),this._map.terrain?(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain-enabled\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.disableTerrain\")):(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.enableTerrain\"))},this.options=T}onAdd(T){return this._map=T,this._container=c.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._terrainButton=c.create(\"button\",\"maplibregl-ctrl-terrain\",this._container),c.create(\"span\",\"maplibregl-ctrl-icon\",this._terrainButton).setAttribute(\"aria-hidden\",\"true\"),this._terrainButton.type=\"button\",this._terrainButton.addEventListener(\"click\",this._toggleTerrain),this._updateTerrainIcon(),this._map.on(\"terrain\",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off(\"terrain\",this._updateTerrainIcon),this._map=void 0}},xi.Popup=class extends n.E{constructor(T){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new n.k(\"close\")),this),this._onMouseUp=l=>{this._update(l.point)},this._onMouseMove=l=>{this._update(l.point)},this._onDrag=l=>{this._update(l.point)},this._update=l=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create(\"div\",\"maplibregl-popup\",this._map.getContainer()),this._tip=c.create(\"div\",\"maplibregl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className)for(let O of this.options.className.split(\" \"))this._container.classList.add(O);this._trackPointer&&this._container.classList.add(\"maplibregl-popup-track-pointer\")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=lo(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!l)return;let d=this._pos=this._trackPointer&&l?l:this._map.project(this._lngLat),v=this.options.anchor,b=Sf(this.options.offset);if(!v){let O=this._container.offsetWidth,B=this._container.offsetHeight,U;U=d.y+b.bottom.ythis._map.transform.height-B?[\"bottom\"]:[],d.xthis._map.transform.width-O/2&&U.push(\"right\"),v=U.length===0?\"bottom\":U.join(\"-\")}let M=d.add(b[v]).round();c.setTransform(this._container,`${Ui[v]} translate(${M.x}px,${M.y}px)`),m_(this._container,v,\"popup\")},this._onClose=()=>{this.remove()},this.options=n.e(Object.create(d0),T)}addTo(T){return this._map&&this.remove(),this._map=T,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new n.k(\"open\")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(T){return this._lngLat=n.L.convert(T),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")),this}getElement(){return this._container}setText(T){return this.setDOMContent(document.createTextNode(T))}setHTML(T){let l=document.createDocumentFragment(),d=document.createElement(\"body\"),v;for(d.innerHTML=T;v=d.firstChild,v;)l.appendChild(v);return this.setDOMContent(l)}getMaxWidth(){var T;return(T=this._container)===null||T===void 0?void 0:T.style.maxWidth}setMaxWidth(T){return this.options.maxWidth=T,this._update(),this}setDOMContent(T){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create(\"div\",\"maplibregl-popup-content\",this._container);return this._content.appendChild(T),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(T){this._container&&this._container.classList.add(T)}removeClassName(T){this._container&&this._container.classList.remove(T)}setOffset(T){return this.options.offset=T,this._update(),this}toggleClassName(T){if(this._container)return this._container.classList.toggle(T)}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create(\"button\",\"maplibregl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let T=this._container.querySelector(Fd);T&&T.focus()}},xi.Marker=Ah,xi.Style=Vn,xi.LngLat=n.L,xi.LngLatBounds=wi,xi.Point=n.P,xi.MercatorCoordinate=n.U,xi.Evented=n.E,xi.AJAXError=n.bi,xi.config=n.c,xi.CanvasSource=jo,xi.GeoJSONSource=Qi,xi.ImageSource=Ci,xi.RasterDEMTileSource=Lc,xi.RasterTileSource=Cc,xi.VectorTileSource=ll,xi.VideoSource=Kn,xi.setRTLTextPlugin=n.bj,xi.getRTLTextPluginStatus=n.bk,xi.prewarm=function(){xo().acquire(oi)},xi.clearPrewarmedResources=function(){let T=ul;T&&(T.isPreloaded()&&T.numActive()===1?(T.release(oi),ul=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"))},qo.extend(xi,{isSafari:n.ac,getPerformanceMetrics:n.bg.getPerformanceMetrics}),xi});var s=r;return s})});var AG=Br((F6t,QE)=>{(function(e,t,r,i){\"use strict\";var s=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],n=t.createElement(\"div\"),o=\"function\",c=Math.round,f=Math.abs,_=Date.now;function w(lt,ft,Lt){return setTimeout(K(lt,Lt),ft)}function I(lt,ft,Lt){return Array.isArray(lt)?(R(lt,Lt[ft],Lt),!0):!1}function R(lt,ft,Lt){var $t;if(lt)if(lt.forEach)lt.forEach(ft,Lt);else if(lt.length!==i)for($t=0;$t\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",ti=e.console&&(e.console.warn||e.console.log);return ti&&ti.call(e.console,$t,qe),lt.apply(this,arguments)}}var j;typeof Object.assign!=\"function\"?j=function(ft){if(ft===i||ft===null)throw new TypeError(\"Cannot convert undefined or null to object\");for(var Lt=Object(ft),$t=1;$t-1}function ce(lt){return lt.trim().split(/\\s+/g)}function ue(lt,ft,Lt){if(lt.indexOf&&!Lt)return lt.indexOf(ft);for(var $t=0;$tzs[ft]}):$t=$t.sort()),$t}function er(lt,ft){for(var Lt,$t,ge=ft[0].toUpperCase()+ft.slice(1),qe=0;qe1&&!Lt.firstMultiple?Lt.firstMultiple=xo(ft):ge===1&&(Lt.firstMultiple=!1);var qe=Lt.firstInput,ti=Lt.firstMultiple,es=ti?ti.center:qe.center,Ts=ft.center=hl($t);ft.timeStamp=_(),ft.deltaTime=ft.timeStamp-qe.timeStamp,ft.angle=Go(es,Ts),ft.distance=ve(es,Ts),uu(Lt,ft),ft.offsetDirection=bo(ft.deltaX,ft.deltaY);var zs=Ia(ft.deltaTime,ft.deltaX,ft.deltaY);ft.overallVelocityX=zs.x,ft.overallVelocityY=zs.y,ft.overallVelocity=f(zs.x)>f(zs.y)?zs.x:zs.y,ft.scale=ti?zl(ti.pointers,$t):1,ft.rotation=ti?An(ti.pointers,$t):0,ft.maxPointers=Lt.prevInput?ft.pointers.length>Lt.prevInput.maxPointers?ft.pointers.length:Lt.prevInput.maxPointers:ft.pointers.length,ul(Lt,ft);var Ra=lt.element;Kt(ft.srcEvent.target,Ra)&&(Ra=ft.srcEvent.target),ft.target=Ra}function uu(lt,ft){var Lt=ft.center,$t=lt.offsetDelta||{},ge=lt.prevDelta||{},qe=lt.prevInput||{};(ft.eventType===Qi||qe.eventType===Ci)&&(ge=lt.prevDelta={x:qe.deltaX||0,y:qe.deltaY||0},$t=lt.offsetDelta={x:Lt.x,y:Lt.y}),ft.deltaX=ge.x+(Lt.x-$t.x),ft.deltaY=ge.y+(Lt.y-$t.y)}function ul(lt,ft){var Lt=lt.lastInterval||ft,$t=ft.timeStamp-Lt.timeStamp,ge,qe,ti,es;if(ft.eventType!=Kn&&($t>Lc||Lt.velocity===i)){var Ts=ft.deltaX-Lt.deltaX,zs=ft.deltaY-Lt.deltaY,Ra=Ia($t,Ts,zs);qe=Ra.x,ti=Ra.y,ge=f(Ra.x)>f(Ra.y)?Ra.x:Ra.y,es=bo(Ts,zs),lt.lastInterval=ft}else ge=Lt.velocity,qe=Lt.velocityX,ti=Lt.velocityY,es=Lt.direction;ft.velocity=ge,ft.velocityX=qe,ft.velocityY=ti,ft.direction=es}function xo(lt){for(var ft=[],Lt=0;Lt=f(ft)?lt<0?cl:vo:ft<0?Pa:na}function ve(lt,ft,Lt){Lt||(Lt=te);var $t=ft[Lt[0]]-lt[Lt[0]],ge=ft[Lt[1]]-lt[Lt[1]];return Math.sqrt($t*$t+ge*ge)}function Go(lt,ft,Lt){Lt||(Lt=te);var $t=ft[Lt[0]]-lt[Lt[0]],ge=ft[Lt[1]]-lt[Lt[1]];return Math.atan2(ge,$t)*180/Math.PI}function An(lt,ft){return Go(ft[1],ft[0],as)+Go(lt[1],lt[0],as)}function zl(lt,ft){return ve(ft[0],ft[1],as)/ve(lt[0],lt[1],as)}var Ca={mousedown:Qi,mousemove:Xn,mouseup:Ci},Se=\"mousedown\",Dr=\"mousemove mouseup\";function mr(){this.evEl=Se,this.evWin=Dr,this.pressed=!1,pn.apply(this,arguments)}Y(mr,pn,{handler:function(ft){var Lt=Ca[ft.type];Lt&Qi&&ft.button===0&&(this.pressed=!0),Lt&Xn&&ft.which!==1&&(Lt=Ci),this.pressed&&(Lt&Ci&&(this.pressed=!1),this.callback(this.manager,Lt,{pointers:[ft],changedPointers:[ft],pointerType:ll,srcEvent:ft}))}});var Fs={pointerdown:Qi,pointermove:Xn,pointerup:Ci,pointercancel:Kn,pointerout:Kn},La={2:wi,3:Bs,4:ll,5:Cc},Tr=\"pointerdown\",sa=\"pointermove pointerup pointercancel\";e.MSPointerEvent&&!e.PointerEvent&&(Tr=\"MSPointerDown\",sa=\"MSPointerMove MSPointerUp MSPointerCancel\");function gt(){this.evEl=Tr,this.evWin=sa,pn.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}Y(gt,pn,{handler:function(ft){var Lt=this.store,$t=!1,ge=ft.type.toLowerCase().replace(\"ms\",\"\"),qe=Fs[ge],ti=La[ft.pointerType]||ft.pointerType,es=ti==wi,Ts=ue(Lt,ft.pointerId,\"pointerId\");qe&Qi&&(ft.button===0||es)?Ts<0&&(Lt.push(ft),Ts=Lt.length-1):qe&(Ci|Kn)&&($t=!0),!(Ts<0)&&(Lt[Ts]=ft,this.callback(this.manager,qe,{pointers:Lt,changedPointers:[ft],pointerType:ti,srcEvent:ft}),$t&&Lt.splice(Ts,1))}});var tt={touchstart:Qi,touchmove:Xn,touchend:Ci,touchcancel:Kn},nt=\"touchstart\",ht=\"touchstart touchmove touchend touchcancel\";function vt(){this.evTarget=nt,this.evWin=ht,this.started=!1,pn.apply(this,arguments)}Y(vt,pn,{handler:function(ft){var Lt=tt[ft.type];if(Lt===Qi&&(this.started=!0),!!this.started){var $t=xt.call(this,ft,Lt);Lt&(Ci|Kn)&&$t[0].length-$t[1].length===0&&(this.started=!1),this.callback(this.manager,Lt,{pointers:$t[0],changedPointers:$t[1],pointerType:wi,srcEvent:ft})}}});function xt(lt,ft){var Lt=Ge(lt.touches),$t=Ge(lt.changedTouches);return ft&(Ci|Kn)&&(Lt=tr(Lt.concat($t),\"identifier\",!0)),[Lt,$t]}var _t={touchstart:Qi,touchmove:Xn,touchend:Ci,touchcancel:Kn},Ot=\"touchstart touchmove touchend touchcancel\";function Mt(){this.evTarget=Ot,this.targetIds={},pn.apply(this,arguments)}Y(Mt,pn,{handler:function(ft){var Lt=_t[ft.type],$t=Ut.call(this,ft,Lt);$t&&this.callback(this.manager,Lt,{pointers:$t[0],changedPointers:$t[1],pointerType:wi,srcEvent:ft})}});function Ut(lt,ft){var Lt=Ge(lt.touches),$t=this.targetIds;if(ft&(Qi|Xn)&&Lt.length===1)return $t[Lt[0].identifier]=!0,[Lt,Lt];var ge,qe,ti=Ge(lt.changedTouches),es=[],Ts=this.target;if(qe=Lt.filter(function(zs){return Kt(zs.target,Ts)}),ft===Qi)for(ge=0;ge-1&&$t.splice(qe,1)};setTimeout(ge,re)}}function Ye(lt){for(var ft=lt.srcEvent.clientX,Lt=lt.srcEvent.clientY,$t=0;$t-1&&this.requireFail.splice(ft,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(lt){return!!this.simultaneous[lt.id]},emit:function(lt){var ft=this,Lt=this.state;function $t(ge){ft.manager.emit(ge,lt)}Lt=ai&&$t(ft.options.event+Um(Lt))},tryEmit:function(lt){if(this.canEmit())return this.emit(lt);this.state=on},canEmit:function(){for(var lt=0;ltft.threshold&&ge&ft.direction},attrTest:function(lt){return wo.prototype.attrTest.call(this,lt)&&(this.state&Ss||!(this.state&Ss)&&this.directionTest(lt))},emit:function(lt){this.pX=lt.deltaX,this.pY=lt.deltaY;var ft=Wo(lt.direction);ft&&(lt.additionalEvent=this.options.event+ft),this._super.emit.call(this,lt)}});function $i(){wo.apply(this,arguments)}Y($i,wo,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[Hr]},attrTest:function(lt){return this._super.attrTest.call(this,lt)&&(Math.abs(lt.scale-1)>this.options.threshold||this.state&Ss)},emit:function(lt){if(lt.scale!==1){var ft=lt.scale<1?\"in\":\"out\";lt.additionalEvent=this.options.event+ft}this._super.emit.call(this,lt)}});function _i(){kn.apply(this,arguments),this._timer=null,this._input=null}Y(_i,kn,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Bi]},process:function(lt){var ft=this.options,Lt=lt.pointers.length===ft.pointers,$t=lt.distanceft.time;if(this._input=lt,!$t||!Lt||lt.eventType&(Ci|Kn)&&!ge)this.reset();else if(lt.eventType&Qi)this.reset(),this._timer=w(function(){this.state=ka,this.tryEmit()},ft.time,this);else if(lt.eventType&Ci)return ka;return on},reset:function(){clearTimeout(this._timer)},emit:function(lt){this.state===ka&&(lt&<.eventType&Ci?this.manager.emit(this.options.event+\"up\",lt):(this._input.timeStamp=_(),this.manager.emit(this.options.event,this._input)))}});function Vl(){wo.apply(this,arguments)}Y(Vl,wo,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[Hr]},attrTest:function(lt){return this._super.attrTest.call(this,lt)&&(Math.abs(lt.rotation)>this.options.threshold||this.state&Ss)}});function an(){wo.apply(this,arguments)}Y(an,wo,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:os|so,pointers:1},getTouchAction:function(){return Ul.prototype.getTouchAction.call(this)},attrTest:function(lt){var ft=this.options.direction,Lt;return ft&(os|so)?Lt=lt.overallVelocity:ft&os?Lt=lt.overallVelocityX:ft&so&&(Lt=lt.overallVelocityY),this._super.attrTest.call(this,lt)&&ft<.offsetDirection&<.distance>this.options.threshold&<.maxPointers==this.options.pointers&&f(Lt)>this.options.velocity&<.eventType&Ci},emit:function(lt){var ft=Wo(lt.offsetDirection);ft&&this.manager.emit(this.options.event+ft,lt),this.manager.emit(this.options.event,lt)}});function hu(){kn.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}Y(hu,kn,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ni]},process:function(lt){var ft=this.options,Lt=lt.pointers.length===ft.pointers,$t=lt.distance{\"use strict\";iB.exports=P3;iB.exports.default=P3;function P3(e,t,r){r=r||2;var i=t&&t.length,s=i?t[0]*r:e.length,n=aq(e,0,s,r,!0),o=[];if(!n||n.next===n.prev)return o;var c,f,_,w,I,R,N;if(i&&(n=Qdt(e,t,n,r)),e.length>80*r){c=_=e[0],f=w=e[1];for(var j=r;j_&&(_=I),R>w&&(w=R);N=Math.max(_-c,w-f),N=N!==0?32767/N:0}return V2(n,o,r,c,f,N,0),o}function aq(e,t,r,i,s){var n,o;if(s===rB(e,t,r,i)>0)for(n=t;n=t;n-=i)o=oq(n,e[n],e[n+1],o);return o&&I3(o,o.next)&&(G2(o),o=o.next),o}function zg(e,t){if(!e)return e;t||(t=e);var r=e,i;do if(i=!1,!r.steiner&&(I3(r,r.next)||_s(r.prev,r,r.next)===0)){if(G2(r),r=t=r.prev,r===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function V2(e,t,r,i,s,n,o){if(e){!o&&n&&tpt(e,i,s,n);for(var c=e,f,_;e.prev!==e.next;){if(f=e.prev,_=e.next,n?qdt(e,i,s,n):Hdt(e)){t.push(f.i/r|0),t.push(e.i/r|0),t.push(_.i/r|0),G2(e),e=_.next,c=_.next;continue}if(e=_,e===c){o?o===1?(e=Zdt(zg(e),t,r),V2(e,t,r,i,s,n,2)):o===2&&Ydt(e,t,r,i,s,n):V2(zg(e),t,r,i,s,n,1);break}}}}function Hdt(e){var t=e.prev,r=e,i=e.next;if(_s(t,r,i)>=0)return!1;for(var s=t.x,n=r.x,o=i.x,c=t.y,f=r.y,_=i.y,w=sn?s>o?s:o:n>o?n:o,N=c>f?c>_?c:_:f>_?f:_,j=i.next;j!==t;){if(j.x>=w&&j.x<=R&&j.y>=I&&j.y<=N&&Hv(s,c,n,f,o,_,j.x,j.y)&&_s(j.prev,j,j.next)>=0)return!1;j=j.next}return!0}function qdt(e,t,r,i){var s=e.prev,n=e,o=e.next;if(_s(s,n,o)>=0)return!1;for(var c=s.x,f=n.x,_=o.x,w=s.y,I=n.y,R=o.y,N=cf?c>_?c:_:f>_?f:_,et=w>I?w>R?w:R:I>R?I:R,Y=tB(N,j,t,r,i),K=tB(Q,et,t,r,i),J=e.prevZ,ut=e.nextZ;J&&J.z>=Y&&ut&&ut.z<=K;){if(J.x>=N&&J.x<=Q&&J.y>=j&&J.y<=et&&J!==s&&J!==o&&Hv(c,w,f,I,_,R,J.x,J.y)&&_s(J.prev,J,J.next)>=0||(J=J.prevZ,ut.x>=N&&ut.x<=Q&&ut.y>=j&&ut.y<=et&&ut!==s&&ut!==o&&Hv(c,w,f,I,_,R,ut.x,ut.y)&&_s(ut.prev,ut,ut.next)>=0))return!1;ut=ut.nextZ}for(;J&&J.z>=Y;){if(J.x>=N&&J.x<=Q&&J.y>=j&&J.y<=et&&J!==s&&J!==o&&Hv(c,w,f,I,_,R,J.x,J.y)&&_s(J.prev,J,J.next)>=0)return!1;J=J.prevZ}for(;ut&&ut.z<=K;){if(ut.x>=N&&ut.x<=Q&&ut.y>=j&&ut.y<=et&&ut!==s&&ut!==o&&Hv(c,w,f,I,_,R,ut.x,ut.y)&&_s(ut.prev,ut,ut.next)>=0)return!1;ut=ut.nextZ}return!0}function Zdt(e,t,r){var i=e;do{var s=i.prev,n=i.next.next;!I3(s,n)&&lq(s,i,i.next,n)&&j2(s,n)&&j2(n,s)&&(t.push(s.i/r|0),t.push(i.i/r|0),t.push(n.i/r|0),G2(i),G2(i.next),i=e=n),i=i.next}while(i!==e);return zg(i)}function Ydt(e,t,r,i,s,n){var o=e;do{for(var c=o.next.next;c!==o.prev;){if(o.i!==c.i&&ipt(o,c)){var f=cq(o,c);o=zg(o,o.next),f=zg(f,f.next),V2(o,t,r,i,s,n,0),V2(f,t,r,i,s,n,0);return}c=c.next}o=o.next}while(o!==e)}function Qdt(e,t,r,i){var s=[],n,o,c,f,_;for(n=0,o=t.length;n=r.next.y&&r.next.y!==r.y){var c=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(c<=i&&c>n&&(n=c,o=r.x=r.x&&r.x>=_&&i!==r.x&&Hv(so.x||r.x===o.x&&Jdt(o,r)))&&(o=r,I=R)),r=r.next;while(r!==f);return o}function Jdt(e,t){return _s(e.prev,e,t.prev)<0&&_s(t.next,e,e.next)<0}function tpt(e,t,r,i){var s=e;do s.z===0&&(s.z=tB(s.x,s.y,t,r,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,ept(s)}function ept(e){var t,r,i,s,n,o,c,f,_=1;do{for(r=e,e=null,n=null,o=0;r;){for(o++,i=r,c=0,t=0;t<_&&(c++,i=i.nextZ,!!i);t++);for(f=_;c>0||f>0&&i;)c!==0&&(f===0||!i||r.z<=i.z)?(s=r,r=r.nextZ,c--):(s=i,i=i.nextZ,f--),n?n.nextZ=s:e=s,s.prevZ=n,n=s;r=i}n.nextZ=null,_*=2}while(o>1);return e}function tB(e,t,r,i,s){return e=(e-r)*s|0,t=(t-i)*s|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function rpt(e){var t=e,r=e;do(t.x=(e-o)*(n-c)&&(e-o)*(i-c)>=(r-o)*(t-c)&&(r-o)*(n-c)>=(s-o)*(i-c)}function ipt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!npt(e,t)&&(j2(e,t)&&j2(t,e)&&spt(e,t)&&(_s(e.prev,e,t.prev)||_s(e,t.prev,t))||I3(e,t)&&_s(e.prev,e,e.next)>0&&_s(t.prev,t,t.next)>0)}function _s(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function I3(e,t){return e.x===t.x&&e.y===t.y}function lq(e,t,r,i){var s=E3(_s(e,t,r)),n=E3(_s(e,t,i)),o=E3(_s(r,i,e)),c=E3(_s(r,i,t));return!!(s!==n&&o!==c||s===0&&M3(e,r,t)||n===0&&M3(e,i,t)||o===0&&M3(r,e,i)||c===0&&M3(r,t,i))}function M3(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function E3(e){return e>0?1:e<0?-1:0}function npt(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&lq(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function j2(e,t){return _s(e.prev,e,e.next)<0?_s(e,t,e.next)>=0&&_s(e,e.prev,t)>=0:_s(e,t,e.prev)<0||_s(e,e.next,t)<0}function spt(e,t){var r=e,i=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do r.y>n!=r.next.y>n&&r.next.y!==r.y&&s<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next;while(r!==e);return i}function cq(e,t){var r=new eB(e.i,e.x,e.y),i=new eB(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,r.next=s,s.prev=r,i.next=r,r.prev=i,n.next=i,i.prev=n,i}function oq(e,t,r,i){var s=new eB(e,t,r);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function G2(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function eB(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}P3.deviation=function(e,t,r,i){var s=t&&t.length,n=s?t[0]*r:e.length,o=Math.abs(rB(e,0,n,r));if(s)for(var c=0,f=t.length;c0&&(i+=e[s-1].length,r.holes.push(i))}return r}});var $B=Br(_x=>{\"use strict\";Object.defineProperty(_x,\"__esModule\",{value:!0});_x.DefaultSerializer=_x.extendSerializer=void 0;function gyt(e,t){let r=e.deserialize.bind(e),i=e.serialize.bind(e);return{deserialize(s){return t.deserialize(s,r)},serialize(s){return t.serialize(s,i)}}}_x.extendSerializer=gyt;var JQ={deserialize(e){return Object.assign(Error(e.message),{name:e.name,stack:e.stack})},serialize(e){return{__error_marker:\"$$error\",message:e.message,name:e.name,stack:e.stack}}},_yt=e=>e&&typeof e==\"object\"&&\"__error_marker\"in e&&e.__error_marker===\"$$error\";_x.DefaultSerializer={deserialize(e){return _yt(e)?JQ.deserialize(e):e},serialize(e){return e instanceof Error?JQ.serialize(e):e}}});var yx=Br(Cm=>{\"use strict\";Object.defineProperty(Cm,\"__esModule\",{value:!0});Cm.serialize=Cm.deserialize=Cm.registerSerializer=void 0;var t$=$B(),MI=t$.DefaultSerializer;function yyt(e){MI=t$.extendSerializer(MI,e)}Cm.registerSerializer=yyt;function vyt(e){return MI.deserialize(e)}Cm.deserialize=vyt;function xyt(e){return MI.serialize(e)}Cm.serialize=xyt});var r$=Br(vx=>{\"use strict\";Object.defineProperty(vx,\"__esModule\",{value:!0});vx.getBundleURL=vx.getBaseURL=void 0;var XB;function byt(){return XB||(XB=wyt()),XB}vx.getBundleURL=byt;function wyt(){try{throw new Error}catch(e){let t=(\"\"+e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\\/\\/[^)\\n]+/g);if(t)return e$(t[0])}return\"/\"}function e$(e){return(\"\"+e).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\\/\\/.+)?\\/[^/]+(?:\\?.*)?$/,\"$1\")+\"/\"}vx.getBaseURL=e$});var JB=Br(Lm=>{\"use strict\";Object.defineProperty(Lm,\"__esModule\",{value:!0});Lm.isWorkerRuntime=Lm.getWorkerImplementation=Lm.defaultPoolSize=void 0;var i$=r$();Lm.defaultPoolSize=typeof navigator<\"u\"&&navigator.hardwareConcurrency?navigator.hardwareConcurrency:4;var n$=e=>/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(e);function s$(e){let t=new Blob([e],{type:\"application/javascript\"});return URL.createObjectURL(t)}function Syt(){if(typeof Worker>\"u\")return class{constructor(){throw Error(\"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.\")}};class e extends Worker{constructor(i,s){var n,o;typeof i==\"string\"&&s&&s._baseURL?i=new URL(i,s._baseURL):typeof i==\"string\"&&!n$(i)&&i$.getBundleURL().match(/^file:\\/\\//i)&&(i=new URL(i,i$.getBundleURL().replace(/\\/[^\\/]+$/,\"/\")),(!((n=s?.CORSWorkaround)!==null&&n!==void 0)||n)&&(i=s$(`importScripts(${JSON.stringify(i)});`))),typeof i==\"string\"&&n$(i)&&(!((o=s?.CORSWorkaround)!==null&&o!==void 0)||o)&&(i=s$(`importScripts(${JSON.stringify(i)});`)),super(i,s)}}class t extends e{constructor(i,s){let n=window.URL.createObjectURL(i);super(n,s)}static fromText(i,s){let n=new window.Blob([i],{type:\"text/javascript\"});return new t(n,s)}}return{blob:t,default:e}}var KB;function Tyt(){return KB||(KB=Syt()),KB}Lm.getWorkerImplementation=Tyt;function Myt(){let e=typeof self<\"u\"&&typeof Window<\"u\"&&self instanceof Window;return!!(typeof self<\"u\"&&self.postMessage&&!e)}Lm.isWorkerRuntime=Myt});var a$=Br((Gae,o$)=>{var xx=1e3,bx=xx*60,wx=bx*60,Xg=wx*24,Eyt=Xg*7,Pyt=Xg*365.25;o$.exports=function(e,t){t=t||{};var r=typeof e;if(r===\"string\"&&e.length>0)return Iyt(e);if(r===\"number\"&&isFinite(e))return t.long?Lyt(e):Cyt(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))};function Iyt(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),i=(t[2]||\"ms\").toLowerCase();switch(i){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*Pyt;case\"weeks\":case\"week\":case\"w\":return r*Eyt;case\"days\":case\"day\":case\"d\":return r*Xg;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*wx;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*bx;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*xx;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function Cyt(e){var t=Math.abs(e);return t>=Xg?Math.round(e/Xg)+\"d\":t>=wx?Math.round(e/wx)+\"h\":t>=bx?Math.round(e/bx)+\"m\":t>=xx?Math.round(e/xx)+\"s\":e+\"ms\"}function Lyt(e){var t=Math.abs(e);return t>=Xg?EI(e,t,Xg,\"day\"):t>=wx?EI(e,t,wx,\"hour\"):t>=bx?EI(e,t,bx,\"minute\"):t>=xx?EI(e,t,xx,\"second\"):e+\" ms\"}function EI(e,t,r,i){var s=t>=r*1.5;return Math.round(e/r)+\" \"+i+(s?\"s\":\"\")}});var c$=Br((Wae,l$)=>{function kyt(e){r.debug=r,r.default=r,r.coerce=f,r.disable=n,r.enable=s,r.enabled=o,r.humanize=a$(),r.destroy=_,Object.keys(e).forEach(w=>{r[w]=e[w]}),r.names=[],r.skips=[],r.formatters={};function t(w){let I=0;for(let R=0;R{if(kt===\"%%\")return\"%\";ut++;let Zt=r.formatters[Kt];if(typeof Zt==\"function\"){let ce=et[ut];kt=Zt.call(Y,ce),et.splice(ut,1),ut--}return kt}),r.formatArgs.call(Y,et),(Y.log||r.log).apply(Y,et)}return Q.namespace=w,Q.useColors=r.useColors(),Q.color=r.selectColor(w),Q.extend=i,Q.destroy=r.destroy,Object.defineProperty(Q,\"enabled\",{enumerable:!0,configurable:!1,get:()=>R!==null?R:(N!==r.namespaces&&(N=r.namespaces,j=r.enabled(w)),j),set:et=>{R=et}}),typeof r.init==\"function\"&&r.init(Q),Q}function i(w,I){let R=r(this.namespace+(typeof I>\"u\"?\":\":I)+w);return R.log=this.log,R}function s(w){r.save(w),r.namespaces=w,r.names=[],r.skips=[];let I,R=(typeof w==\"string\"?w:\"\").split(/[\\s,]+/),N=R.length;for(I=0;I\"-\"+I)].join(\",\");return r.enable(\"\"),w}function o(w){if(w[w.length-1]===\"*\")return!0;let I,R;for(I=0,R=r.skips.length;I{lu.formatArgs=Dyt;lu.save=Oyt;lu.load=Byt;lu.useColors=Ryt;lu.storage=Fyt();lu.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();lu.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function Ryt(){return typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs)?!0:typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)?!1:typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function Dyt(e){if(e[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+e[0]+(this.useColors?\"%c \":\" \")+\"+\"+PI.exports.humanize(this.diff),!this.useColors)return;let t=\"color: \"+this.color;e.splice(1,0,t,\"color: inherit\");let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,s=>{s!==\"%%\"&&(r++,s===\"%c\"&&(i=r))}),e.splice(i,0,t)}lu.log=console.debug||console.log||(()=>{});function Oyt(e){try{e?lu.storage.setItem(\"debug\",e):lu.storage.removeItem(\"debug\")}catch{}}function Byt(){let e;try{e=lu.storage.getItem(\"debug\")}catch{}return!e&&typeof process<\"u\"&&\"env\"in process&&(e=process.env.DEBUG),e}function Fyt(){try{return localStorage}catch{}}PI.exports=c$()(lu);var{formatters:zyt}=PI.exports;zyt.j=function(e){try{return JSON.stringify(e)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}}});var bS=Br(Sx=>{\"use strict\";var Nyt=Sx&&Sx.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(Sx,\"__esModule\",{value:!0});Sx.AsyncSerialScheduler=void 0;var t6=class{constructor(t){this._baseObserver=t,this._pendingPromises=new Set}complete(){Promise.all(this._pendingPromises).then(()=>this._baseObserver.complete()).catch(t=>this._baseObserver.error(t))}error(t){this._baseObserver.error(t)}schedule(t){let r=Promise.all(this._pendingPromises),i=[],s=o=>i.push(o),n=Promise.resolve().then(()=>Nyt(this,void 0,void 0,function*(){yield r,yield t(s),this._pendingPromises.delete(n);for(let o of i)this._baseObserver.next(o)})).catch(o=>{this._pendingPromises.delete(n),this._baseObserver.error(o)});this._pendingPromises.add(n)}};Sx.AsyncSerialScheduler=t6});var h$=Br(u$=>{\"use strict\";Object.defineProperty(u$,\"__esModule\",{value:!0})});var e6=Br(Ol=>{\"use strict\";Object.defineProperty(Ol,\"__esModule\",{value:!0});Ol.registerObservableSymbol=Ol.getSymbol=Ol.hasSymbol=Ol.hasSymbols=void 0;var Uyt=()=>typeof Symbol==\"function\";Ol.hasSymbols=Uyt;var Vyt=e=>Ol.hasSymbols()&&!!Symbol[e];Ol.hasSymbol=Vyt;var jyt=e=>Ol.hasSymbol(e)?Symbol[e]:\"@@\"+e;Ol.getSymbol=jyt;function Gyt(){Ol.hasSymbols()&&!Ol.hasSymbol(\"observable\")&&(Symbol.observable=Symbol(\"observable\"))}Ol.registerObservableSymbol=Gyt;Ol.hasSymbol(\"asyncIterator\")||(Symbol.asyncIterator=Symbol.asyncIterator||Symbol.for(\"Symbol.asyncIterator\"))});var md=Br(Vp=>{\"use strict\";Object.defineProperty(Vp,\"__esModule\",{value:!0});Vp.Observable=Vp.SubscriptionObserver=Vp.Subscription=void 0;h$();var SS=e6(),Wyt=SS.getSymbol(\"iterator\"),i6=SS.getSymbol(\"observable\"),f$=SS.getSymbol(\"species\");function LI(e,t){let r=e[t];if(r!=null){if(typeof r!=\"function\")throw new TypeError(r+\" is not a function\");return r}}function wS(e){let t=e.constructor;return t!==void 0&&(t=t[f$],t===null&&(t=void 0)),t!==void 0?t:Kg}function Hyt(e){return e instanceof Kg}function Tx(e){Tx.log?Tx.log(e):setTimeout(()=>{throw e},0)}function CI(e){Promise.resolve().then(()=>{try{e()}catch(t){Tx(t)}})}function d$(e){let t=e._cleanup;if(t!==void 0&&(e._cleanup=void 0,!!t))try{if(typeof t==\"function\")t();else{let r=LI(t,\"unsubscribe\");r&&r.call(t)}}catch(r){Tx(r)}}function n6(e){e._observer=void 0,e._queue=void 0,e._state=\"closed\"}function qyt(e){let t=e._queue;if(t){e._queue=void 0,e._state=\"ready\";for(let r of t)if(p$(e,r.type,r.value),e._state===\"closed\")break}}function p$(e,t,r){e._state=\"running\";let i=e._observer;try{let s=i?LI(i,t):void 0;switch(t){case\"next\":s&&s.call(i,r);break;case\"error\":if(n6(e),s)s.call(i,r);else throw r;break;case\"complete\":n6(e),s&&s.call(i);break}}catch(s){Tx(s)}e._state===\"closed\"?d$(e):e._state===\"running\"&&(e._state=\"ready\")}function r6(e,t,r){if(e._state!==\"closed\"){if(e._state===\"buffering\"){e._queue=e._queue||[],e._queue.push({type:t,value:r});return}if(e._state!==\"ready\"){e._state=\"buffering\",e._queue=[{type:t,value:r}],CI(()=>qyt(e));return}p$(e,t,r)}}var kI=class{constructor(t,r){this._cleanup=void 0,this._observer=t,this._queue=void 0,this._state=\"initializing\";let i=new RI(this);try{this._cleanup=r.call(void 0,i)}catch(s){i.error(s)}this._state===\"initializing\"&&(this._state=\"ready\")}get closed(){return this._state===\"closed\"}unsubscribe(){this._state!==\"closed\"&&(n6(this),d$(this))}};Vp.Subscription=kI;var RI=class{constructor(t){this._subscription=t}get closed(){return this._subscription._state===\"closed\"}next(t){r6(this._subscription,\"next\",t)}error(t){r6(this._subscription,\"error\",t)}complete(){r6(this._subscription,\"complete\")}};Vp.SubscriptionObserver=RI;var Kg=class e{constructor(t){if(!(this instanceof e))throw new TypeError(\"Observable cannot be called as a function\");if(typeof t!=\"function\")throw new TypeError(\"Observable initializer must be a function\");this._subscriber=t}subscribe(t,r,i){return(typeof t!=\"object\"||t===null)&&(t={next:t,error:r,complete:i}),new kI(t,this._subscriber)}pipe(t,...r){let i=this;for(let s of[t,...r])i=s(i);return i}tap(t,r,i){let s=typeof t!=\"object\"||t===null?{next:t,error:r,complete:i}:t;return new e(n=>this.subscribe({next(o){s.next&&s.next(o),n.next(o)},error(o){s.error&&s.error(o),n.error(o)},complete(){s.complete&&s.complete(),n.complete()},start(o){s.start&&s.start(o)}}))}forEach(t){return new Promise((r,i)=>{if(typeof t!=\"function\"){i(new TypeError(t+\" is not a function\"));return}function s(){n.unsubscribe(),r(void 0)}let n=this.subscribe({next(o){try{t(o,s)}catch(c){i(c),n.unsubscribe()}},error(o){i(o)},complete(){r(void 0)}})})}map(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=wS(this);return new r(i=>this.subscribe({next(s){let n=s;try{n=t(s)}catch(o){return i.error(o)}i.next(n)},error(s){i.error(s)},complete(){i.complete()}}))}filter(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=wS(this);return new r(i=>this.subscribe({next(s){try{if(!t(s))return}catch(n){return i.error(n)}i.next(s)},error(s){i.error(s)},complete(){i.complete()}}))}reduce(t,r){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let i=wS(this),s=arguments.length>1,n=!1,o=r;return new i(c=>this.subscribe({next(f){let _=!n;if(n=!0,!_||s)try{o=t(o,f)}catch(w){return c.error(w)}else o=f},error(f){c.error(f)},complete(){if(!n&&!s)return c.error(new TypeError(\"Cannot reduce an empty sequence\"));c.next(o),c.complete()}}))}concat(...t){let r=wS(this);return new r(i=>{let s,n=0;function o(c){s=c.subscribe({next(f){i.next(f)},error(f){i.error(f)},complete(){n===t.length?(s=void 0,i.complete()):o(r.from(t[n++]))}})}return o(this),()=>{s&&(s.unsubscribe(),s=void 0)}})}flatMap(t){if(typeof t!=\"function\")throw new TypeError(t+\" is not a function\");let r=wS(this);return new r(i=>{let s=[],n=this.subscribe({next(c){let f;if(t)try{f=t(c)}catch(w){return i.error(w)}else f=c;let _=r.from(f).subscribe({next(w){i.next(w)},error(w){i.error(w)},complete(){let w=s.indexOf(_);w>=0&&s.splice(w,1),o()}});s.push(_)},error(c){i.error(c)},complete(){o()}});function o(){n.closed&&s.length===0&&i.complete()}return()=>{s.forEach(c=>c.unsubscribe()),n.unsubscribe()}})}[(Symbol.observable,i6)](){return this}static from(t){let r=typeof this==\"function\"?this:e;if(t==null)throw new TypeError(t+\" is not an object\");let i=LI(t,i6);if(i){let s=i.call(t);if(Object(s)!==s)throw new TypeError(s+\" is not an object\");return Hyt(s)&&s.constructor===r?s:new r(n=>s.subscribe(n))}if(SS.hasSymbol(\"iterator\")){let s=LI(t,Wyt);if(s)return new r(n=>{CI(()=>{if(!n.closed){for(let o of s.call(t))if(n.next(o),n.closed)return;n.complete()}})})}if(Array.isArray(t))return new r(s=>{CI(()=>{if(!s.closed){for(let n of t)if(s.next(n),s.closed)return;s.complete()}})});throw new TypeError(t+\" is not observable\")}static of(...t){let r=typeof this==\"function\"?this:e;return new r(i=>{CI(()=>{if(!i.closed){for(let s of t)if(i.next(s),i.closed)return;i.complete()}})})}static get[f$](){return this}};Vp.Observable=Kg;SS.hasSymbols()&&Object.defineProperty(Kg,Symbol(\"extensions\"),{value:{symbol:i6,hostReportError:Tx},configurable:!0});Vp.default=Kg});var km=Br(s6=>{\"use strict\";Object.defineProperty(s6,\"__esModule\",{value:!0});function Zyt(e){typeof e==\"function\"?e():e&&typeof e.unsubscribe==\"function\"&&e.unsubscribe()}s6.default=Zyt});var A$=Br(TS=>{\"use strict\";var Yyt=TS&&TS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(TS,\"__esModule\",{value:!0});var Qyt=bS(),$yt=md(),Xyt=km();function Kyt(e){return t=>new $yt.default(r=>{let i=new Qyt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>Yyt(this,void 0,void 0,function*(){(yield e(n))&&o(n)}))}});return()=>Xyt.default(s)})}TS.default=Kyt});var g$=Br(Mx=>{\"use strict\";Object.defineProperty(Mx,\"__esModule\",{value:!0});Mx.isIterator=Mx.isAsyncIterator=void 0;var m$=e6();function Jyt(e){return e&&m$.hasSymbol(\"asyncIterator\")&&e[Symbol.asyncIterator]}Mx.isAsyncIterator=Jyt;function tvt(e){return e&&m$.hasSymbol(\"iterator\")&&e[Symbol.iterator]}Mx.isIterator=tvt});var y$=Br(Jg=>{\"use strict\";var evt=Jg&&Jg.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},rvt=Jg&&Jg.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof __values==\"function\"?__values(e):e[Symbol.iterator](),r={},i(\"next\"),i(\"throw\"),i(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=e[n]&&function(o){return new Promise(function(c,f){o=e[n](o),s(c,f,o.done,o.value)})}}function s(n,o,c,f){Promise.resolve(f).then(function(_){n({value:_,done:c})},o)}};Object.defineProperty(Jg,\"__esModule\",{value:!0});var ivt=bS(),_$=g$(),nvt=md(),svt=km();function ovt(e){return t=>new nvt.default(r=>{let i=new ivt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>evt(this,void 0,void 0,function*(){var c,f;let _=yield e(n);if(_$.isIterator(_)||_$.isAsyncIterator(_))try{for(var w=rvt(_),I;I=yield w.next(),!I.done;){let R=I.value;o(R)}}catch(R){c={error:R}}finally{try{I&&!I.done&&(f=w.return)&&(yield f.call(w))}finally{if(c)throw c.error}}else _.map(R=>o(R))}))}});return()=>svt.default(s)})}Jg.default=ovt});var v$=Br(o6=>{\"use strict\";Object.defineProperty(o6,\"__esModule\",{value:!0});var avt=md();function lvt(e){return new avt.Observable(t=>{let r=0,i=setInterval(()=>{t.next(r++)},e);return()=>clearInterval(i)})}o6.default=lvt});var x$=Br(MS=>{\"use strict\";var cvt=MS&&MS.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(MS,\"__esModule\",{value:!0});var uvt=bS(),hvt=md(),fvt=km();function dvt(e){return t=>new hvt.default(r=>{let i=new uvt.AsyncSerialScheduler(r),s=t.subscribe({complete(){i.complete()},error(n){i.error(n)},next(n){i.schedule(o=>cvt(this,void 0,void 0,function*(){let c=yield e(n);o(c)}))}});return()=>fvt.default(s)})}MS.default=dvt});var w$=Br(a6=>{\"use strict\";Object.defineProperty(a6,\"__esModule\",{value:!0});var b$=md(),pvt=km();function Avt(...e){return e.length===0?b$.Observable.from([]):new b$.Observable(t=>{let r=0,i=e.map(n=>n.subscribe({error(o){t.error(o),s()},next(o){t.next(o)},complete(){++r===e.length&&(t.complete(),s())}})),s=()=>{i.forEach(n=>pvt.default(n))};return s})}a6.default=Avt});var u6=Br(c6=>{\"use strict\";Object.defineProperty(c6,\"__esModule\",{value:!0});var mvt=md(),l6=class extends mvt.default{constructor(){super(t=>(this._observers.add(t),()=>this._observers.delete(t))),this._observers=new Set}next(t){for(let r of this._observers)r.next(t)}error(t){for(let r of this._observers)r.error(t)}complete(){for(let t of this._observers)t.complete()}};c6.default=l6});var S$=Br(h6=>{\"use strict\";Object.defineProperty(h6,\"__esModule\",{value:!0});var gvt=md(),_vt=u6(),yvt=km();function vvt(e){let t=new _vt.default,r,i=0;return new gvt.default(s=>{r||(r=e.subscribe(t));let n=t.subscribe(s);return i++,()=>{i--,n.unsubscribe(),i===0&&(yvt.default(r),r=void 0)}})}h6.default=vvt});var T$=Br(ES=>{\"use strict\";var xvt=ES&&ES.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})};Object.defineProperty(ES,\"__esModule\",{value:!0});var bvt=bS(),wvt=md(),Svt=km();function Tvt(e,t){return r=>new wvt.default(i=>{let s,n=0,o=new bvt.AsyncSerialScheduler(i),c=r.subscribe({complete(){o.complete()},error(f){o.error(f)},next(f){o.schedule(_=>xvt(this,void 0,void 0,function*(){s=yield e(n===0?typeof t>\"u\"?f:t:s,f,n++),_(s)}))}});return()=>Svt.default(c)})}ES.default=Tvt});var M$=Br(Os=>{\"use strict\";Object.defineProperty(Os,\"__esModule\",{value:!0});Os.unsubscribe=Os.Subject=Os.scan=Os.Observable=Os.multicast=Os.merge=Os.map=Os.interval=Os.flatMap=Os.filter=void 0;var Mvt=A$();Object.defineProperty(Os,\"filter\",{enumerable:!0,get:function(){return Mvt.default}});var Evt=y$();Object.defineProperty(Os,\"flatMap\",{enumerable:!0,get:function(){return Evt.default}});var Pvt=v$();Object.defineProperty(Os,\"interval\",{enumerable:!0,get:function(){return Pvt.default}});var Ivt=x$();Object.defineProperty(Os,\"map\",{enumerable:!0,get:function(){return Ivt.default}});var Cvt=w$();Object.defineProperty(Os,\"merge\",{enumerable:!0,get:function(){return Cvt.default}});var Lvt=S$();Object.defineProperty(Os,\"multicast\",{enumerable:!0,get:function(){return Lvt.default}});var kvt=md();Object.defineProperty(Os,\"Observable\",{enumerable:!0,get:function(){return kvt.default}});var Rvt=T$();Object.defineProperty(Os,\"scan\",{enumerable:!0,get:function(){return Rvt.default}});var Dvt=u6();Object.defineProperty(Os,\"Subject\",{enumerable:!0,get:function(){return Dvt.default}});var Ovt=km();Object.defineProperty(Os,\"unsubscribe\",{enumerable:!0,get:function(){return Ovt.default}})});var PS=Br((ole,E$)=>{E$.exports=M$()});var P$=Br(DI=>{\"use strict\";Object.defineProperty(DI,\"__esModule\",{value:!0});DI.allSettled=void 0;function Bvt(e){return Promise.all(e.map(t=>{let r=n=>({status:\"fulfilled\",value:n}),i=n=>({status:\"rejected\",reason:n}),s=Promise.resolve(t);try{return s.then(r,i)}catch(n){return Promise.reject(n)}}))}DI.allSettled=Bvt});var I$=Br(IS=>{\"use strict\";Object.defineProperty(IS,\"__esModule\",{value:!0});IS.PoolEventType=void 0;var Fvt;(function(e){e.initialized=\"initialized\",e.taskCanceled=\"taskCanceled\",e.taskCompleted=\"taskCompleted\",e.taskFailed=\"taskFailed\",e.taskQueued=\"taskQueued\",e.taskQueueDrained=\"taskQueueDrained\",e.taskStart=\"taskStart\",e.terminated=\"terminated\"})(Fvt=IS.PoolEventType||(IS.PoolEventType={}))});var CS=Br(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.$worker=th.$transferable=th.$terminate=th.$events=th.$errors=void 0;th.$errors=Symbol(\"thread.errors\");th.$events=Symbol(\"thread.events\");th.$terminate=Symbol(\"thread.terminate\");th.$transferable=Symbol(\"thread.transferable\");th.$worker=Symbol(\"thread.worker\")});var d6=Br(OI=>{\"use strict\";Object.defineProperty(OI,\"__esModule\",{value:!0});OI.Thread=void 0;var f6=CS();function C$(e){throw Error(e)}OI.Thread={errors(e){return e[f6.$errors]||C$(\"Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\")},events(e){return e[f6.$events]||C$(\"Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.\")},terminate(e){return e[f6.$terminate]()}}});var D$=Br(eh=>{\"use strict\";var t_=eh&&eh.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},zvt=eh&&eh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eh,\"__esModule\",{value:!0});eh.Pool=eh.Thread=eh.PoolEventType=void 0;var Nvt=zvt(II()),p6=PS(),L$=P$(),Uvt=JB(),ia=I$();Object.defineProperty(eh,\"PoolEventType\",{enumerable:!0,get:function(){return ia.PoolEventType}});var k$=d6();Object.defineProperty(eh,\"Thread\",{enumerable:!0,get:function(){return k$.Thread}});var Vvt=1;function jvt(e){let t=[];for(let r=0;rsetTimeout(t,e))}function Wvt(e,t){return e.reduce((r,i)=>[...r,...t(i)],[])}function Hvt(e){return e.replace(/\\W/g,\" \").trim().replace(/\\s+/g,\"-\")}function qvt(e,t){return jvt(t).map(()=>({init:e(),runningTasks:[]}))}var BI=class{constructor(t,r){this.eventSubject=new p6.Subject,this.initErrors=[],this.isClosing=!1,this.nextTaskID=1,this.taskQueue=[];let i=typeof r==\"number\"?{size:r}:r||{},{size:s=Uvt.defaultPoolSize}=i;this.debug=Nvt.default(`threads:pool:${Hvt(i.name||String(Vvt++))}`),this.options=i,this.workers=qvt(t,s),this.eventObservable=p6.multicast(p6.Observable.from(this.eventSubject)),Promise.all(this.workers.map(n=>n.init)).then(()=>this.eventSubject.next({type:ia.PoolEventType.initialized,size:this.workers.length}),n=>{this.debug(\"Error while initializing pool worker:\",n),this.eventSubject.error(n),this.initErrors.push(n)})}findIdlingWorker(){let{concurrency:t=1}=this.options;return this.workers.find(r=>r.runningTasks.length{t.runningTasks=t.runningTasks.filter(n=>n!==i)};yield Gvt(0);try{yield this.runPoolTask(t,r)}finally{s(),this.isClosing||this.scheduleWork()}});t.runningTasks.push(i)})}scheduleWork(){this.debug(\"Attempt de-queueing a task in order to run it...\");let t=this.findIdlingWorker();if(!t)return;let r=this.taskQueue.shift();if(!r){this.debug(\"Task queue is empty\"),this.eventSubject.next({type:ia.PoolEventType.taskQueueDrained});return}this.run(t,r)}taskCompletion(t){return new Promise((r,i)=>{let s=this.events().subscribe(n=>{n.type===ia.PoolEventType.taskCompleted&&n.taskID===t?(s.unsubscribe(),r(n.returnValue)):n.type===ia.PoolEventType.taskFailed&&n.taskID===t?(s.unsubscribe(),i(n.error)):n.type===ia.PoolEventType.terminated&&(s.unsubscribe(),i(Error(\"Pool has been terminated before task was run.\")))})})}settled(t=!1){return t_(this,void 0,void 0,function*(){let r=()=>Wvt(this.workers,n=>n.runningTasks),i=[],s=this.eventObservable.subscribe(n=>{n.type===ia.PoolEventType.taskFailed&&i.push(n.error)});return this.initErrors.length>0?Promise.reject(this.initErrors[0]):t&&this.taskQueue.length===0?(yield L$.allSettled(r()),i):(yield new Promise((n,o)=>{let c=this.eventObservable.subscribe({next(f){f.type===ia.PoolEventType.taskQueueDrained&&(c.unsubscribe(),n(void 0))},error:o})}),yield L$.allSettled(r()),s.unsubscribe(),i)})}completed(t=!1){return t_(this,void 0,void 0,function*(){let r=this.settled(t),i=new Promise((n,o)=>{let c=this.eventObservable.subscribe({next(f){f.type===ia.PoolEventType.taskQueueDrained?(c.unsubscribe(),n(r)):f.type===ia.PoolEventType.taskFailed&&(c.unsubscribe(),o(f.error))},error:o})}),s=yield Promise.race([r,i]);if(s.length>0)throw s[0]})}events(){return this.eventObservable}queue(t){let{maxQueuedJobs:r=1/0}=this.options;if(this.isClosing)throw Error(\"Cannot schedule pool tasks after terminate() has been called.\");if(this.initErrors.length>0)throw this.initErrors[0];let i=this.nextTaskID++,s=this.taskCompletion(i);s.catch(o=>{this.debug(`Task #${i} errored:`,o)});let n={id:i,run:t,cancel:()=>{this.taskQueue.indexOf(n)!==-1&&(this.taskQueue=this.taskQueue.filter(o=>o!==n),this.eventSubject.next({type:ia.PoolEventType.taskCanceled,taskID:n.id}))},then:s.then.bind(s)};if(this.taskQueue.length>=r)throw Error(`Maximum number of pool tasks queued. Refusing to queue another one.\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool.`);return this.debug(`Queueing task #${n.id}...`),this.taskQueue.push(n),this.eventSubject.next({type:ia.PoolEventType.taskQueued,taskID:n.id}),this.scheduleWork(),n}terminate(t){return t_(this,void 0,void 0,function*(){this.isClosing=!0,t||(yield this.completed(!0)),this.eventSubject.next({type:ia.PoolEventType.terminated,remainingQueue:[...this.taskQueue]}),this.eventSubject.complete(),yield Promise.all(this.workers.map(r=>t_(this,void 0,void 0,function*(){return k$.Thread.terminate(yield r.init)})))})}};BI.EventType=ia.PoolEventType;function R$(e,t){return new BI(e,t)}R$.EventType=ia.PoolEventType;eh.Pool=R$});var O$=Br(FI=>{\"use strict\";Object.defineProperty(FI,\"__esModule\",{value:!0});FI.createPromiseWithResolver=void 0;var Zvt=()=>{};function Yvt(){let e=!1,t,r=Zvt;return[new Promise(n=>{e?n(t):r=n}),n=>{e=!0,t=n,r(t)}]}FI.createPromiseWithResolver=Yvt});var B$=Br(LS=>{\"use strict\";Object.defineProperty(LS,\"__esModule\",{value:!0});LS.WorkerEventType=void 0;var dle=CS(),Qvt;(function(e){e.internalError=\"internalError\",e.message=\"message\",e.termination=\"termination\"})(Qvt=LS.WorkerEventType||(LS.WorkerEventType={}))});var z$=Br(zI=>{\"use strict\";Object.defineProperty(zI,\"__esModule\",{value:!0});zI.ObservablePromise=void 0;var $vt=PS(),Xvt=()=>{},Kvt=e=>e,F$=e=>Promise.resolve().then(e);function Jvt(e){throw e}function txt(e){return e&&typeof e.then==\"function\"}var A6=class e extends $vt.Observable{constructor(t){super(r=>{let i=this,s=Object.assign(Object.assign({},r),{complete(){r.complete(),i.onCompletion()},error(n){r.error(n),i.onError(n)},next(n){r.next(n),i.onNext(n)}});try{return this.initHasRun=!0,t(s)}catch(n){s.error(n)}}),this.initHasRun=!1,this.fulfillmentCallbacks=[],this.rejectionCallbacks=[],this.firstValueSet=!1,this.state=\"pending\"}onNext(t){this.firstValueSet||(this.firstValue=t,this.firstValueSet=!0)}onError(t){this.state=\"rejected\",this.rejection=t;for(let r of this.rejectionCallbacks)F$(()=>r(t))}onCompletion(){this.state=\"fulfilled\";for(let t of this.fulfillmentCallbacks)F$(()=>t(this.firstValue))}then(t,r){let i=t||Kvt,s=r||Jvt,n=!1;return new Promise((o,c)=>{let f=w=>{if(!n){n=!0;try{o(s(w))}catch(I){c(I)}}},_=w=>{try{o(i(w))}catch(I){f(I)}};if(this.initHasRun||this.subscribe({error:f}),this.state===\"fulfilled\")return o(i(this.firstValue));if(this.state===\"rejected\")return n=!0,o(s(this.rejection));this.fulfillmentCallbacks.push(_),this.rejectionCallbacks.push(f)})}catch(t){return this.then(void 0,t)}finally(t){let r=t||Xvt;return this.then(i=>(r(),i),()=>r())}static from(t){return txt(t)?new e(r=>{let i=n=>{r.next(n),r.complete()},s=n=>{r.error(n)};t.then(i,s)}):super.from(t)}};zI.ObservablePromise=A6});var kS=Br(Ex=>{\"use strict\";Object.defineProperty(Ex,\"__esModule\",{value:!0});Ex.Transfer=Ex.isTransferDescriptor=void 0;var N$=CS();function ext(e){return!(!e||typeof e!=\"object\")}function rxt(e){return e&&typeof e==\"object\"&&e[N$.$transferable]}Ex.isTransferDescriptor=rxt;function ixt(e,t){if(!t){if(!ext(e))throw Error();t=[e]}return{[N$.$transferable]:!0,send:e,transferables:t}}Ex.Transfer=ixt});var m6=Br(Rm=>{\"use strict\";Object.defineProperty(Rm,\"__esModule\",{value:!0});Rm.WorkerMessageType=Rm.MasterMessageType=void 0;var nxt;(function(e){e.cancel=\"cancel\",e.run=\"run\"})(nxt=Rm.MasterMessageType||(Rm.MasterMessageType={}));var sxt;(function(e){e.error=\"error\",e.init=\"init\",e.result=\"result\",e.running=\"running\",e.uncaughtError=\"uncaughtError\"})(sxt=Rm.WorkerMessageType||(Rm.WorkerMessageType={}))});var W$=Br(Dm=>{\"use strict\";var oxt=Dm&&Dm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Dm,\"__esModule\",{value:!0});Dm.createProxyModule=Dm.createProxyFunction=void 0;var axt=oxt(II()),V$=PS(),RS=yx(),U$=z$(),lxt=kS(),DS=m6(),j$=axt.default(\"threads:master:messages\"),cxt=1,uxt=e=>Array.from(new Set(e)),hxt=e=>e&&e.type===DS.WorkerMessageType.error,fxt=e=>e&&e.type===DS.WorkerMessageType.result,dxt=e=>e&&e.type===DS.WorkerMessageType.running;function pxt(e,t){return new V$.Observable(r=>{let i,s=n=>{if(j$(\"Message from worker:\",n.data),!(!n.data||n.data.uid!==t)){if(dxt(n.data))i=n.data.resultType;else if(fxt(n.data))i===\"promise\"?(typeof n.data.payload<\"u\"&&r.next(RS.deserialize(n.data.payload)),r.complete(),e.removeEventListener(\"message\",s)):(n.data.payload&&r.next(RS.deserialize(n.data.payload)),n.data.complete&&(r.complete(),e.removeEventListener(\"message\",s)));else if(hxt(n.data)){let o=RS.deserialize(n.data.error);r.error(o),e.removeEventListener(\"message\",s)}}};return e.addEventListener(\"message\",s),()=>{if(i===\"observable\"||!i){let n={type:DS.MasterMessageType.cancel,uid:t};e.postMessage(n)}e.removeEventListener(\"message\",s)}})}function Axt(e){if(e.length===0)return{args:[],transferables:[]};let t=[],r=[];for(let i of e)lxt.isTransferDescriptor(i)?(t.push(RS.serialize(i.send)),r.push(...i.transferables)):t.push(RS.serialize(i));return{args:t,transferables:r.length===0?r:uxt(r)}}function G$(e,t){return(...r)=>{let i=cxt++,{args:s,transferables:n}=Axt(r),o={type:DS.MasterMessageType.run,uid:i,method:t,args:s};j$(\"Sending command to run function to worker:\",o);try{e.postMessage(o,n)}catch(c){return U$.ObservablePromise.from(Promise.reject(c))}return U$.ObservablePromise.from(V$.multicast(pxt(e,i)))}}Dm.createProxyFunction=G$;function mxt(e,t){let r={};for(let i of t)r[i]=G$(e,i);return r}Dm.createProxyModule=mxt});var Y$=Br(Om=>{\"use strict\";var g6=Om&&Om.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},gxt=Om&&Om.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Om,\"__esModule\",{value:!0});Om.spawn=void 0;var _6=gxt(II()),_xt=PS(),yxt=yx(),vxt=O$(),NI=CS(),UI=B$(),H$=W$(),xxt=_6.default(\"threads:master:messages\"),bxt=_6.default(\"threads:master:spawn\"),Z$=_6.default(\"threads:master:thread-utils\"),wxt=e=>e&&e.type===\"init\",Sxt=e=>e&&e.type===\"uncaughtError\",Txt=typeof process<\"u\"&&process.env.THREADS_WORKER_INIT_TIMEOUT?Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT,10):1e4;function Mxt(e,t,r){return g6(this,void 0,void 0,function*(){let i,s=new Promise((o,c)=>{i=setTimeout(()=>c(Error(r)),t)}),n=yield Promise.race([e,s]);return clearTimeout(i),n})}function Ext(e){return new Promise((t,r)=>{let i=s=>{xxt(\"Message from worker before finishing initialization:\",s.data),wxt(s.data)?(e.removeEventListener(\"message\",i),t(s.data)):Sxt(s.data)&&(e.removeEventListener(\"message\",i),r(yxt.deserialize(s.data.error)))};e.addEventListener(\"message\",i)})}function Pxt(e,t){return new _xt.Observable(r=>{let i=n=>{let o={type:UI.WorkerEventType.message,data:n.data};r.next(o)},s=n=>{Z$(\"Unhandled promise rejection event in thread:\",n);let o={type:UI.WorkerEventType.internalError,error:Error(n.reason)};r.next(o)};e.addEventListener(\"message\",i),e.addEventListener(\"unhandledrejection\",s),t.then(()=>{let n={type:UI.WorkerEventType.termination};e.removeEventListener(\"message\",i),e.removeEventListener(\"unhandledrejection\",s),r.next(n),r.complete()})})}function Ixt(e){let[t,r]=vxt.createPromiseWithResolver();return{terminate:()=>g6(this,void 0,void 0,function*(){Z$(\"Terminating worker\"),yield e.terminate(),r()}),termination:t}}function q$(e,t,r,i){let s=r.filter(n=>n.type===UI.WorkerEventType.internalError).map(n=>n.error);return Object.assign(e,{[NI.$errors]:s,[NI.$events]:r,[NI.$terminate]:i,[NI.$worker]:t})}function Cxt(e,t){return g6(this,void 0,void 0,function*(){bxt(\"Initializing new thread\");let r=t&&t.timeout?t.timeout:Txt,s=(yield Mxt(Ext(e),r,`Timeout: Did not receive an init message from worker after ${r}ms. Make sure the worker calls expose().`)).exposed,{termination:n,terminate:o}=Ixt(e),c=Pxt(e,n);if(s.type===\"function\"){let f=H$.createProxyFunction(e);return q$(f,e,c,o)}else if(s.type===\"module\"){let f=H$.createProxyModule(e,s.methods);return q$(f,e,c,o)}else{let f=s.type;throw Error(`Worker init message states unexpected type of expose(): ${f}`)}})}Om.spawn=Cxt});var Q$=Br(Ec=>{\"use strict\";Object.defineProperty(Ec,\"__esModule\",{value:!0});Ec.Worker=Ec.BlobWorker=Ec.isWorkerRuntime=Ec.Thread=Ec.spawn=Ec.Pool=void 0;var y6=JB();Object.defineProperty(Ec,\"isWorkerRuntime\",{enumerable:!0,get:function(){return y6.isWorkerRuntime}});var Lxt=D$();Object.defineProperty(Ec,\"Pool\",{enumerable:!0,get:function(){return Lxt.Pool}});var kxt=Y$();Object.defineProperty(Ec,\"spawn\",{enumerable:!0,get:function(){return kxt.spawn}});var Rxt=d6();Object.defineProperty(Ec,\"Thread\",{enumerable:!0,get:function(){return Rxt.Thread}});Ec.BlobWorker=y6.getWorkerImplementation().blob;Ec.Worker=y6.getWorkerImplementation().default});var X$=Br((xle,$$)=>{\"use strict\";$$.exports=e=>e?typeof Symbol.observable==\"symbol\"&&typeof e[Symbol.observable]==\"function\"?e===e[Symbol.observable]():typeof e[\"@@observable\"]==\"function\"?e===e[\"@@observable\"]():!1:!1});var K$=Br(v6=>{\"use strict\";Object.defineProperty(v6,\"__esModule\",{value:!0});var Dxt=function(){let t=typeof self<\"u\"&&typeof Window<\"u\"&&self instanceof Window;return!!(typeof self<\"u\"&&self.postMessage&&!t)},Oxt=function(t,r){self.postMessage(t,r)},Bxt=function(t){let r=s=>{t(s.data)},i=()=>{self.removeEventListener(\"message\",r)};return self.addEventListener(\"message\",r),i};v6.default={isWorkerRuntime:Dxt,postMessageToMaster:Oxt,subscribeToMasterMessages:Bxt}});var sX=Br(Pc=>{\"use strict\";var Fxt=Pc&&Pc.__awaiter||function(e,t,r,i){function s(n){return n instanceof r?n:new r(function(o){o(n)})}return new(r||(r=Promise))(function(n,o){function c(w){try{_(i.next(w))}catch(I){o(I)}}function f(w){try{_(i.throw(w))}catch(I){o(I)}}function _(w){w.done?n(w.value):s(w.value).then(c,f)}_((i=i.apply(e,t||[])).next())})},iX=Pc&&Pc.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Pc,\"__esModule\",{value:!0});Pc.expose=Pc.isWorkerRuntime=Pc.Transfer=Pc.registerSerializer=void 0;var zxt=iX(X$()),Bm=yx(),Nxt=kS(),Fm=m6(),cu=iX(K$()),Uxt=yx();Object.defineProperty(Pc,\"registerSerializer\",{enumerable:!0,get:function(){return Uxt.registerSerializer}});var Vxt=kS();Object.defineProperty(Pc,\"Transfer\",{enumerable:!0,get:function(){return Vxt.Transfer}});Pc.isWorkerRuntime=cu.default.isWorkerRuntime;var J$=!1,OS=new Map,jxt=e=>e&&e.type===Fm.MasterMessageType.cancel,tX=e=>e&&e.type===Fm.MasterMessageType.run,eX=e=>zxt.default(e)||Gxt(e);function Gxt(e){return e&&typeof e==\"object\"&&typeof e.subscribe==\"function\"}function nX(e){return Nxt.isTransferDescriptor(e)?{payload:e.send,transferables:e.transferables}:{payload:e,transferables:void 0}}function Wxt(){let e={type:Fm.WorkerMessageType.init,exposed:{type:\"function\"}};cu.default.postMessageToMaster(e)}function Hxt(e){let t={type:Fm.WorkerMessageType.init,exposed:{type:\"module\",methods:e}};cu.default.postMessageToMaster(t)}function x6(e,t){let{payload:r,transferables:i}=nX(t),s={type:Fm.WorkerMessageType.error,uid:e,error:Bm.serialize(r)};cu.default.postMessageToMaster(s,i)}function b6(e,t,r){let{payload:i,transferables:s}=nX(r),n={type:Fm.WorkerMessageType.result,uid:e,complete:t?!0:void 0,payload:i};cu.default.postMessageToMaster(n,s)}function qxt(e,t){let r={type:Fm.WorkerMessageType.running,uid:e,resultType:t};cu.default.postMessageToMaster(r)}function VI(e){try{let t={type:Fm.WorkerMessageType.uncaughtError,error:Bm.serialize(e)};cu.default.postMessageToMaster(t)}catch(t){console.error(`Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:`,t,`\nOriginal error:`,e)}}function rX(e,t,r){return Fxt(this,void 0,void 0,function*(){let i;try{i=t(...r)}catch(n){return x6(e,n)}let s=eX(i)?\"observable\":\"promise\";if(qxt(e,s),eX(i)){let n=i.subscribe(o=>b6(e,!1,Bm.serialize(o)),o=>{x6(e,Bm.serialize(o)),OS.delete(e)},()=>{b6(e,!0),OS.delete(e)});OS.set(e,n)}else try{let n=yield i;b6(e,!0,Bm.serialize(n))}catch(n){x6(e,Bm.serialize(n))}})}function Zxt(e){if(!cu.default.isWorkerRuntime())throw Error(\"expose() called in the master thread.\");if(J$)throw Error(\"expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.\");if(J$=!0,typeof e==\"function\")cu.default.subscribeToMasterMessages(t=>{tX(t)&&!t.method&&rX(t.uid,e,t.args.map(Bm.deserialize))}),Wxt();else if(typeof e==\"object\"&&e){cu.default.subscribeToMasterMessages(r=>{tX(r)&&r.method&&rX(r.uid,e[r.method],r.args.map(Bm.deserialize))});let t=Object.keys(e).filter(r=>typeof e[r]==\"function\");Hxt(t)}else throw Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${e}`);cu.default.subscribeToMasterMessages(t=>{if(jxt(t)){let r=t.uid,i=OS.get(r);i&&(i.unsubscribe(),OS.delete(r))}})}Pc.expose=Zxt;typeof self<\"u\"&&typeof self.addEventListener==\"function\"&&cu.default.isWorkerRuntime()&&(self.addEventListener(\"error\",e=>{setTimeout(()=>VI(e.error||e),250)}),self.addEventListener(\"unhandledrejection\",e=>{let t=e.reason;t&&typeof t.message==\"string\"&&setTimeout(()=>VI(t),250)}));typeof process<\"u\"&&typeof process.on==\"function\"&&cu.default.isWorkerRuntime()&&(process.on(\"uncaughtException\",e=>{setTimeout(()=>VI(e),250)}),process.on(\"unhandledRejection\",e=>{e&&typeof e.message==\"string\"&&setTimeout(()=>VI(e),250)}))});var oX=Br(Bl=>{\"use strict\";var Yxt=Bl&&Bl.__createBinding||(Object.create?function(e,t,r,i){i===void 0&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){i===void 0&&(i=r),e[i]=t[r]}),Qxt=Bl&&Bl.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&Yxt(t,e,r)};Object.defineProperty(Bl,\"__esModule\",{value:!0});Bl.Transfer=Bl.DefaultSerializer=Bl.expose=Bl.registerSerializer=void 0;var $xt=yx();Object.defineProperty(Bl,\"registerSerializer\",{enumerable:!0,get:function(){return $xt.registerSerializer}});Qxt(Q$(),Bl);var Xxt=sX();Object.defineProperty(Bl,\"expose\",{enumerable:!0,get:function(){return Xxt.expose}});var Kxt=$B();Object.defineProperty(Bl,\"DefaultSerializer\",{enumerable:!0,get:function(){return Kxt.DefaultSerializer}});var Jxt=kS();Object.defineProperty(Bl,\"Transfer\",{enumerable:!0,get:function(){return Jxt.Transfer}})});var XI=Ri(en(),1),zm=Ri(en(),1);var Jl=Ri(en(),1),R8=Ri(k8(),1),D8=Jl.createContext(null);function r4(){let e=Jl.useContext(D8);if(!e)throw new Error(\"Model not found\");return e}function Jd(e){let t=r4(),[r,i]=Jl.useState(t.get(e));return Jl.useEffect(()=>{let s=()=>i(t.get(e));return t.on(`change:${e}`,s),()=>t.off(`change:${e}`,s)},[t,e]),[r,s=>{t.set(e,s),t.save_changes()}]}function O8(e){return({model:t,el:r})=>{let i=R8.createRoot(r);return i.render(Jl.createElement(Jl.StrictMode,null,Jl.createElement(D8.Provider,{value:t},Jl.createElement(e)))),()=>i.unmount()}}var Q8=Ri(en());var ry=Ri(en()),qc=Ri(en());var i4=Ri(en()),EM=Ri(en());var B8=i4.createContext(null);function F8(e,t){let r=Array.isArray(e)?e[0]:e?e.x:0,i=Array.isArray(e)?e[1]:e?e.y:0,s=Array.isArray(t)?t[0]:t?t.x:0,n=Array.isArray(t)?t[1]:t?t.y:0;return r===s&&i===n}function tc(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r{let s=null;\"interactive\"in i&&(s=Object.assign({},i),delete s.interactive);let n=t[i.ref];if(n){s=s||Object.assign({},i),delete s.ref;for(let o of wet)o in n&&(s[o]=n[o])}return s||i});return{...e,layers:r}}var N8={version:8,sources:{},layers:[]},U8={mousedown:\"onMouseDown\",mouseup:\"onMouseUp\",mouseover:\"onMouseOver\",mousemove:\"onMouseMove\",click:\"onClick\",dblclick:\"onDblClick\",mouseenter:\"onMouseEnter\",mouseleave:\"onMouseLeave\",mouseout:\"onMouseOut\",contextmenu:\"onContextMenu\",touchstart:\"onTouchStart\",touchend:\"onTouchEnd\",touchmove:\"onTouchMove\",touchcancel:\"onTouchCancel\"},l4={movestart:\"onMoveStart\",move:\"onMove\",moveend:\"onMoveEnd\",dragstart:\"onDragStart\",drag:\"onDrag\",dragend:\"onDragEnd\",zoomstart:\"onZoomStart\",zoom:\"onZoom\",zoomend:\"onZoomEnd\",rotatestart:\"onRotateStart\",rotate:\"onRotate\",rotateend:\"onRotateEnd\",pitchstart:\"onPitchStart\",pitch:\"onPitch\",pitchend:\"onPitchEnd\"},V8={wheel:\"onWheel\",boxzoomstart:\"onBoxZoomStart\",boxzoomend:\"onBoxZoomEnd\",boxzoomcancel:\"onBoxZoomCancel\",resize:\"onResize\",load:\"onLoad\",render:\"onRender\",idle:\"onIdle\",remove:\"onRemove\",data:\"onData\",styledata:\"onStyleData\",sourcedata:\"onSourceData\",error:\"onError\"},Tet=[\"minZoom\",\"maxZoom\",\"minPitch\",\"maxPitch\",\"maxBounds\",\"projection\",\"renderWorldCopies\"],Met=[\"scrollZoom\",\"boxZoom\",\"dragRotate\",\"dragPan\",\"keyboard\",\"doubleClickZoom\",\"touchZoomRotate\",\"touchPitch\"],k0=class e{constructor(t,r,i){this._map=null,this._internalUpdate=!1,this._inRender=!1,this._hoveredFeatures=null,this._deferredEvents={move:!1,zoom:!1,pitch:!1,rotate:!1},this._onEvent=s=>{let n=this.props[V8[s.type]];n?n(s):s.type===\"error\"&&console.error(s.error)},this._onPointerEvent=s=>{(s.type===\"mousemove\"||s.type===\"mouseout\")&&this._updateHover(s);let n=this.props[U8[s.type]];n&&(this.props.interactiveLayerIds&&s.type!==\"mouseover\"&&s.type!==\"mouseout\"&&(s.features=this._hoveredFeatures||this._queryRenderedFeatures(s.point)),n(s),delete s.features)},this._onCameraEvent=s=>{if(!this._internalUpdate){let n=this.props[l4[s.type]];n&&n(s)}s.type in this._deferredEvents&&(this._deferredEvents[s.type]=!1)},this._MapClass=t,this.props=r,this._initialize(i)}get map(){return this._map}get transform(){return this._renderTransform}setProps(t){let r=this.props;this.props=t;let i=this._updateSettings(t,r);i&&this._createShadowTransform(this._map);let s=this._updateSize(t),n=this._updateViewState(t,!0);this._updateStyle(t,r),this._updateStyleComponents(t,r),this._updateHandlers(t,r),(i||s||n&&!this._map.isMoving())&&this.redraw()}static reuse(t,r){let i=e.savedMaps.pop();if(!i)return null;let s=i.map,n=s.getContainer();for(r.className=n.className;n.childNodes.length>0;)r.appendChild(n.childNodes[0]);s._container=r;let o=s._resizeObserver;o&&(o.disconnect(),o.observe(r)),i.setProps({...t,styleDiffing:!1}),s.resize();let{initialViewState:c}=t;return c&&(c.bounds?s.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):i._updateViewState(c,!1)),s.isStyleLoaded()?s.fire(\"load\"):s.once(\"styledata\",()=>s.fire(\"load\")),s._update(),i}_initialize(t){let{props:r}=this,{mapStyle:i=N8}=r,s={...r,...r.initialViewState,accessToken:r.mapboxAccessToken||Eet()||null,container:t,style:a4(i)},n=s.initialViewState||s.viewState||s;if(Object.assign(s,{center:[n.longitude||0,n.latitude||0],zoom:n.zoom||0,pitch:n.pitch||0,bearing:n.bearing||0}),r.gl){let w=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=w,r.gl)}let o=new this._MapClass(s);n.padding&&o.setPadding(n.padding),r.cursor&&(o.getCanvas().style.cursor=r.cursor),this._createShadowTransform(o);let c=o._render;o._render=w=>{this._inRender=!0,c.call(o,w),this._inRender=!1};let f=o._renderTaskQueue.run;o._renderTaskQueue.run=w=>{f.call(o._renderTaskQueue,w),this._onBeforeRepaint()},o.on(\"render\",()=>this._onAfterRepaint());let _=o.fire;o.fire=this._fireEvent.bind(this,_),o.on(\"resize\",()=>{this._renderTransform.resize(o.transform.width,o.transform.height)}),o.on(\"styledata\",()=>{this._updateStyleComponents(this.props,{}),n4(o.transform,this._renderTransform)}),o.on(\"sourcedata\",()=>this._updateStyleComponents(this.props,{}));for(let w in U8)o.on(w,this._onPointerEvent);for(let w in l4)o.on(w,this._onCameraEvent);for(let w in V8)o.on(w,this._onEvent);this._map=o}recycle(){let r=this.map.getContainer().querySelector(\"[mapboxgl-children]\");r?.remove(),e.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){let t=this._map;!this._inRender&&t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_createShadowTransform(t){let r=z8(t.transform);t.painter.transform=r,this._renderTransform=r}_updateSize(t){let{viewState:r}=t;if(r){let i=this._map;if(r.width!==i.transform.width||r.height!==i.transform.height)return i.resize(),!0}return!1}_updateViewState(t,r){if(this._internalUpdate)return!1;let i=this._map,s=this._renderTransform,{zoom:n,pitch:o,bearing:c}=s,f=i.isMoving();f&&(s.cameraElevationReference=\"sea\");let _=o4(s,{...s4(i.transform),...t});if(f&&(s.cameraElevationReference=\"ground\"),_&&r){let w=this._deferredEvents;w.move=!0,w.zoom||(w.zoom=n!==s.zoom),w.rotate||(w.rotate=c!==s.bearing),w.pitch||(w.pitch=o!==s.pitch)}return f||o4(i.transform,t),_}_updateSettings(t,r){let i=this._map,s=!1;for(let n of Tet)if(n in t&&!tc(t[n],r[n])){s=!0;let o=i[`set${n[0].toUpperCase()}${n.slice(1)}`];o?.call(i,t[n])}return s}_updateStyle(t,r){if(t.cursor!==r.cursor&&(this._map.getCanvas().style.cursor=t.cursor||\"\"),t.mapStyle!==r.mapStyle){let{mapStyle:i=N8,styleDiffing:s=!0}=t,n={diff:s};return\"localIdeographFontFamily\"in t&&(n.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(a4(i),n),!0}return!1}_updateStyleComponents(t,r){let i=this._map,s=!1;return i.isStyleLoaded()&&(\"light\"in t&&i.setLight&&!tc(t.light,r.light)&&(s=!0,i.setLight(t.light)),\"fog\"in t&&i.setFog&&!tc(t.fog,r.fog)&&(s=!0,i.setFog(t.fog)),\"terrain\"in t&&i.setTerrain&&!tc(t.terrain,r.terrain)&&(!t.terrain||i.getSource(t.terrain.source))&&(s=!0,i.setTerrain(t.terrain))),s}_updateHandlers(t,r){var i,s;let n=this._map,o=!1;for(let c of Met){let f=(i=t[c])!==null&&i!==void 0?i:!0,_=(s=r[c])!==null&&s!==void 0?s:!0;tc(f,_)||(o=!0,f?n[c].enable(f):n[c].disable())}return o}_queryRenderedFeatures(t){let r=this._map,i=r.transform,{interactiveLayerIds:s=[]}=this.props;try{return r.transform=this._renderTransform,r.queryRenderedFeatures(t,{layers:s.filter(r.getLayer.bind(r))})}catch{return[]}finally{r.transform=i}}_updateHover(t){var r;let{props:i}=this;if(i.interactiveLayerIds&&(i.onMouseMove||i.onMouseEnter||i.onMouseLeave)){let n=t.type,o=((r=this._hoveredFeatures)===null||r===void 0?void 0:r.length)>0,c=this._queryRenderedFeatures(t.point),f=c.length>0;!f&&o&&(t.type=\"mouseleave\",this._onPointerEvent(t)),this._hoveredFeatures=c,f&&!o&&(t.type=\"mouseenter\",this._onPointerEvent(t)),t.type=n}else this._hoveredFeatures=null}_fireEvent(t,r,i){let s=this._map,n=s.transform,o=typeof r==\"string\"?r:r.type;return o===\"move\"&&this._updateViewState(this.props,!1),o in l4&&(typeof r==\"object\"&&(r.viewState=s4(n)),this._map.isMoving())?(s.transform=this._renderTransform,t.call(s,r,i),s.transform=n,s):(t.call(s,r,i),s)}_onBeforeRepaint(){let t=this._map;this._internalUpdate=!0;for(let i in this._deferredEvents)this._deferredEvents[i]&&t.fire(i);this._internalUpdate=!1;let r=this._map.transform;t.transform=this._renderTransform,this._onAfterRepaint=()=>{n4(this._renderTransform,r),t.transform=r}}};k0.savedMaps=[];function Eet(){let e=null;if(typeof location<\"u\"){let t=/access_token=([^&\\/]*)/.exec(location.search);e=t&&t[1]}try{e=e||process.env.MapboxAccessToken}catch{}try{e=e||process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}catch{}return e}var Pet=[\"setMaxBounds\",\"setMinZoom\",\"setMaxZoom\",\"setMinPitch\",\"setMaxPitch\",\"setRenderWorldCopies\",\"setProjection\",\"setStyle\",\"addSource\",\"removeSource\",\"addLayer\",\"removeLayer\",\"setLayerZoomRange\",\"setFilter\",\"setPaintProperty\",\"setLayoutProperty\",\"setLight\",\"setTerrain\",\"setFog\",\"remove\"];function c4(e){if(!e)return null;let t=e.map,r={getMap:()=>t,getCenter:()=>e.transform.center,getZoom:()=>e.transform.zoom,getBearing:()=>e.transform.bearing,getPitch:()=>e.transform.pitch,getPadding:()=>e.transform.padding,getBounds:()=>e.transform.getBounds(),project:i=>{let s=t.transform;t.transform=e.transform;let n=t.project(i);return t.transform=s,n},unproject:i=>{let s=t.transform;t.transform=e.transform;let n=t.unproject(i);return t.transform=s,n},queryTerrainElevation:(i,s)=>{let n=t.transform;t.transform=e.transform;let o=t.queryTerrainElevation(i,s);return t.transform=n,o},queryRenderedFeatures:(i,s)=>{let n=t.transform;t.transform=e.transform;let o=t.queryRenderedFeatures(i,s);return t.transform=n,o}};for(let i of Iet(t))!(i in r)&&!Pet.includes(i)&&(r[i]=t[i].bind(t));return r}function Iet(e){let t=new Set,r=e;for(;r;){for(let i of Object.getOwnPropertyNames(r))i[0]!==\"_\"&&typeof e[i]==\"function\"&&i!==\"fire\"&&i!==\"setEventedParent\"&&t.add(i);r=Object.getPrototypeOf(r)}return Array.from(t)}var PM=Ri(en()),Cet=typeof document<\"u\"?PM.useLayoutEffect:PM.useEffect,j8=Cet;var Let=[\"baseApiUrl\",\"maxParallelImageRequests\",\"workerClass\",\"workerCount\",\"workerUrl\"];function u4(e,t){for(let i of Let)i in t&&(e[i]=t[i]);let{RTLTextPlugin:r=\"https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js\"}=t;r&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()===\"unavailable\"&&e.setRTLTextPlugin(r,i=>{i&&console.error(i)},!0)}var Df=ry.createContext(null);function h4(e,t,r){let i=(0,qc.useContext)(B8),[s,n]=(0,qc.useState)(null),o=(0,qc.useRef)(),{current:c}=(0,qc.useRef)({mapLib:null,map:null});(0,qc.useEffect)(()=>{let w=e.mapLib,I=!0,R;return Promise.resolve(w||r).then(N=>{if(!I)return;if(!N)throw new Error(\"Invalid mapLib\");let j=\"Map\"in N?N:N.default;if(!j.Map)throw new Error(\"Invalid mapLib\");if(u4(j,e),!j.supported||j.supported(e))e.reuseMaps&&(R=k0.reuse(e,o.current)),R||(R=new k0(j.Map,e,o.current)),c.map=c4(R),c.mapLib=j,n(R),i?.onMapMount(c.map,e.id);else throw new Error(\"Map is not supported by this browser\")}).catch(N=>{let{onError:j}=e;j?j({type:\"error\",target:null,originalEvent:null,error:N}):console.error(N)}),()=>{I=!1,R&&(i?.onMapUnmount(e.id),e.reuseMaps?R.recycle():R.destroy())}},[]),j8(()=>{s&&s.setProps(e)}),(0,qc.useImperativeHandle)(t,()=>c.map,[s]);let f=(0,qc.useMemo)(()=>({position:\"relative\",width:\"100%\",height:\"100%\",...e.style}),[e.style]),_={height:\"100%\"};return ry.createElement(\"div\",{id:e.id,ref:o,style:f},s&&ry.createElement(Df.Provider,{value:c},ry.createElement(\"div\",{\"mapboxgl-children\":\"\",style:_},e.children)))}var G8=Ri(en()),W8=Ri(MM()),Tl=Ri(en());var ket=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function ec(e,t){if(!e||!t)return;let r=e.style;for(let i in t){let s=t[i];Number.isFinite(s)&&!ket.test(i)?r[i]=`${s}px`:r[i]=s}}function Ret(e,t){let{map:r,mapLib:i}=(0,Tl.useContext)(Df),s=(0,Tl.useRef)({props:e});s.current.props=e;let n=(0,Tl.useMemo)(()=>{let Q=!1;G8.Children.forEach(e.children,K=>{K&&(Q=!0)});let et={...e,element:Q?document.createElement(\"div\"):null},Y=new i.Marker(et);return Y.setLngLat([e.longitude,e.latitude]),Y.getElement().addEventListener(\"click\",K=>{var J,ut;(ut=(J=s.current.props).onClick)===null||ut===void 0||ut.call(J,{type:\"click\",target:Y,originalEvent:K})}),Y.on(\"dragstart\",K=>{var J,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(J=s.current.props).onDragStart)===null||ut===void 0||ut.call(J,Pt)}),Y.on(\"drag\",K=>{var J,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(J=s.current.props).onDrag)===null||ut===void 0||ut.call(J,Pt)}),Y.on(\"dragend\",K=>{var J,ut;let Pt=K;Pt.lngLat=n.getLngLat(),(ut=(J=s.current.props).onDragEnd)===null||ut===void 0||ut.call(J,Pt)}),Y},[]);(0,Tl.useEffect)(()=>(n.addTo(r.getMap()),()=>{n.remove()}),[]);let{longitude:o,latitude:c,offset:f,style:_,draggable:w=!1,popup:I=null,rotation:R=0,rotationAlignment:N=\"auto\",pitchAlignment:j=\"auto\"}=e;return(0,Tl.useEffect)(()=>{ec(n.getElement(),_)},[_]),(0,Tl.useImperativeHandle)(t,()=>n,[]),(n.getLngLat().lng!==o||n.getLngLat().lat!==c)&&n.setLngLat([o,c]),f&&!F8(n.getOffset(),f)&&n.setOffset(f),n.isDraggable()!==w&&n.setDraggable(w),n.getRotation()!==R&&n.setRotation(R),n.getRotationAlignment()!==N&&n.setRotationAlignment(N),n.getPitchAlignment()!==j&&n.setPitchAlignment(j),n.getPopup()!==I&&n.setPopup(I),(0,W8.createPortal)(e.children,n.getElement())}var Det=(0,Tl.memo)((0,Tl.forwardRef)(Ret));var q8=Ri(MM()),Xa=Ri(en());function H8(e){return new Set(e?e.trim().split(/\\s+/):[])}function Oet(e,t){let{map:r,mapLib:i}=(0,Xa.useContext)(Df),s=(0,Xa.useMemo)(()=>document.createElement(\"div\"),[]),n=(0,Xa.useRef)({props:e});n.current.props=e;let o=(0,Xa.useMemo)(()=>{let c={...e},f=new i.Popup(c);return f.setLngLat([e.longitude,e.latitude]),f.once(\"open\",_=>{var w,I;(I=(w=n.current.props).onOpen)===null||I===void 0||I.call(w,_)}),f},[]);if((0,Xa.useEffect)(()=>{let c=f=>{var _,w;(w=(_=n.current.props).onClose)===null||w===void 0||w.call(_,f)};return o.on(\"close\",c),o.setDOMContent(s).addTo(r.getMap()),()=>{o.off(\"close\",c),o.isOpen()&&o.remove()}},[]),(0,Xa.useEffect)(()=>{ec(o.getElement(),e.style)},[e.style]),(0,Xa.useImperativeHandle)(t,()=>o,[]),o.isOpen()&&((o.getLngLat().lng!==e.longitude||o.getLngLat().lat!==e.latitude)&&o.setLngLat([e.longitude,e.latitude]),e.offset&&!tc(o.options.offset,e.offset)&&o.setOffset(e.offset),(o.options.anchor!==e.anchor||o.options.maxWidth!==e.maxWidth)&&(o.options.anchor=e.anchor,o.setMaxWidth(e.maxWidth)),o.options.className!==e.className)){let c=H8(o.options.className),f=H8(e.className);for(let _ of c)f.has(_)||o.removeClassName(_);for(let _ of f)c.has(_)||o.addClassName(_);o.options.className=e.className}return(0,q8.createPortal)(e.children,s)}var Bet=(0,Xa.memo)((0,Xa.forwardRef)(Oet));var IM=Ri(en());var iy=Ri(en());function Fet(e,t,r,i){let s=(0,iy.useContext)(Df),n=(0,iy.useMemo)(()=>e(s),[]);return(0,iy.useEffect)(()=>{let o=i||r||t,c=typeof t==\"function\"&&typeof r==\"function\"?t:null,f=typeof r==\"function\"?r:typeof t==\"function\"?t:null,{map:_}=s;return _.hasControl(n)||(_.addControl(n,o?.position),c&&c(s)),()=>{f&&f(s),_.hasControl(n)&&_.removeControl(n)}},[]),n}var Lh=Fet;function zet(e){let t=Lh(({mapLib:r})=>new r.AttributionControl(e),{position:e.position});return(0,IM.useEffect)(()=>{ec(t._container,e.style)},[e.style]),null}var Net=(0,IM.memo)(zet);var CM=Ri(en());function Uet(e){let t=Lh(({mapLib:r})=>new r.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return(0,CM.useEffect)(()=>{ec(t._controlContainer,e.style)},[e.style]),null}var Vet=(0,CM.memo)(Uet);var Of=Ri(en());function jet(e,t){let r=(0,Of.useRef)({props:e}),i=Lh(({mapLib:s})=>{let n=new s.GeolocateControl(e),o=n._setupUI;return n._setupUI=c=>{n._container.hasChildNodes()||o(c)},n.on(\"geolocate\",c=>{var f,_;(_=(f=r.current.props).onGeolocate)===null||_===void 0||_.call(f,c)}),n.on(\"error\",c=>{var f,_;(_=(f=r.current.props).onError)===null||_===void 0||_.call(f,c)}),n.on(\"outofmaxbounds\",c=>{var f,_;(_=(f=r.current.props).onOutOfMaxBounds)===null||_===void 0||_.call(f,c)}),n.on(\"trackuserlocationstart\",c=>{var f,_;(_=(f=r.current.props).onTrackUserLocationStart)===null||_===void 0||_.call(f,c)}),n.on(\"trackuserlocationend\",c=>{var f,_;(_=(f=r.current.props).onTrackUserLocationEnd)===null||_===void 0||_.call(f,c)}),n},{position:e.position});return r.current.props=e,(0,Of.useImperativeHandle)(t,()=>i,[]),(0,Of.useEffect)(()=>{ec(i._container,e.style)},[e.style]),null}var Get=(0,Of.memo)((0,Of.forwardRef)(jet));var LM=Ri(en());function Wet(e){let t=Lh(({mapLib:r})=>new r.NavigationControl(e),{position:e.position});return(0,LM.useEffect)(()=>{ec(t._container,e.style)},[e.style]),null}var Het=(0,LM.memo)(Wet);var ny=Ri(en());function qet(e){let t=Lh(({mapLib:n})=>new n.ScaleControl(e),{position:e.position}),r=(0,ny.useRef)(e),i=r.current;r.current=e;let{style:s}=e;return e.maxWidth!==void 0&&e.maxWidth!==i.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==i.unit&&t.setUnit(e.unit),(0,ny.useEffect)(()=>{ec(t._container,s)},[s]),null}var Zet=(0,ny.memo)(qet);var j1=Ri(en());var Qet=Ri(en()),G1=Ri(en()),$et=Ri(en());var Xet=Promise.resolve().then(()=>Ri(Y8())),Ket=Q8.forwardRef(function(t,r){return h4(t,r,Xet)});var $8=Ket;var Ro=Ri(en());function zA(e,t){if(!e)throw new Error(t||\"loader assertion failed.\")}var Bf={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document},Jet=Bf.self||Bf.window||Bf.global||{},trt=Bf.window||Bf.self||Bf.global||{},ert=Bf.global||Bf.self||Bf.window||{},rrt=Bf.document||{};var R0=!!(typeof process!=\"object\"||String(process)!==\"[object process]\"||process.browser);var X8=typeof process<\"u\"&&process.version&&/v([0-9]*)/.exec(process.version),irt=X8&&parseFloat(X8[1])||0;var K8=\"3.4.14\";function Ka(e,t){if(!e)throw new Error(t||\"loaders.gl assertion failed.\")}var Ff={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document},vwt=Ff.self||Ff.window||Ff.global||{},xwt=Ff.window||Ff.self||Ff.global||{},bwt=Ff.global||Ff.self||Ff.window||{},wwt=Ff.document||{};var D0=typeof process!=\"object\"||String(process)!==\"[object process]\"||process.browser;var tU=typeof window<\"u\"&&typeof window.orientation<\"u\",J8=typeof process<\"u\"&&process.version&&/v([0-9]*)/.exec(process.version),Swt=J8&&parseFloat(J8[1])||0;function NA(e){\"@babel/helpers - typeof\";return NA=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},NA(e)}function p4(e,t){if(NA(e)!=\"object\"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||\"default\");if(NA(i)!=\"object\")return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(t===\"string\"?String:Number)(e)}function A4(e){var t=p4(e,\"string\");return NA(t)==\"symbol\"?t:String(t)}function G(e,t,r){return t=A4(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var W1=class{constructor(t,r){G(this,\"name\",void 0),G(this,\"workerThread\",void 0),G(this,\"isRunning\",!0),G(this,\"result\",void 0),G(this,\"_resolve\",()=>{}),G(this,\"_reject\",()=>{}),this.name=t,this.workerThread=r,this.result=new Promise((i,s)=>{this._resolve=i,this._reject=s})}postMessage(t,r){this.workerThread.postMessage({source:\"loaders.gl\",type:t,payload:r})}done(t){Ka(this.isRunning),this.isRunning=!1,this._resolve(t)}error(t){Ka(this.isRunning),this.isRunning=!1,this._reject(t)}};var sy=class{terminate(){}};var m4=new Map;function eU(e){Ka(e.source&&!e.url||!e.source&&e.url);let t=m4.get(e.source||e.url);return t||(e.url&&(t=nrt(e.url),m4.set(e.url,t)),e.source&&(t=rU(e.source),m4.set(e.source,t))),Ka(t),t}function nrt(e){if(!e.startsWith(\"http\"))return e;let t=srt(e);return rU(t)}function rU(e){let t=new Blob([e],{type:\"application/javascript\"});return URL.createObjectURL(t)}function srt(e){return`try {\n importScripts('`.concat(e,`');\n} catch (error) {\n console.error(error);\n throw error;\n}`)}function g4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=arguments.length>2?arguments[2]:void 0,i=r||new Set;if(e){if(iU(e))i.add(e);else if(iU(e.buffer))i.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(t&&typeof e==\"object\")for(let s in e)g4(e[s],t,i)}}return r===void 0?Array.from(i):[]}function iU(e){return e?e instanceof ArrayBuffer||typeof MessagePort<\"u\"&&e instanceof MessagePort||typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap||typeof OffscreenCanvas<\"u\"&&e instanceof OffscreenCanvas:!1}var _4=()=>{},UA=class{static isSupported(){return typeof Worker<\"u\"&&D0||typeof sy<\"u\"&&!D0}constructor(t){G(this,\"name\",void 0),G(this,\"source\",void 0),G(this,\"url\",void 0),G(this,\"terminated\",!1),G(this,\"worker\",void 0),G(this,\"onMessage\",void 0),G(this,\"onError\",void 0),G(this,\"_loadableURL\",\"\");let{name:r,source:i,url:s}=t;Ka(i||s),this.name=r,this.source=i,this.url=s,this.onMessage=_4,this.onError=n=>console.log(n),this.worker=D0?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=_4,this.onError=_4,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(t,r){r=r||g4(t),this.worker.postMessage(t,r)}_getErrorFromErrorEvent(t){let r=\"Failed to load \";return r+=\"worker \".concat(this.name,\" from \").concat(this.url,\". \"),t.message&&(r+=\"\".concat(t.message,\" in \")),t.lineno&&(r+=\":\".concat(t.lineno,\":\").concat(t.colno)),new Error(r)}_createBrowserWorker(){this._loadableURL=eU({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error(\"No data received\"))},t.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},t.onmessageerror=r=>console.error(r),t}_createNodeWorker(){let t;if(this.url){let i=this.url.includes(\":/\")||this.url.startsWith(\"/\")?this.url:\"./\".concat(this.url);t=new sy(i,{eval:!1})}else if(this.source)t=new sy(this.source,{eval:!0});else throw new Error(\"no worker\");return t.on(\"message\",r=>{this.onMessage(r)}),t.on(\"error\",r=>{this.onError(r)}),t.on(\"exit\",r=>{}),t}};var H1=class{static isSupported(){return UA.isSupported()}constructor(t){G(this,\"name\",\"unnamed\"),G(this,\"source\",void 0),G(this,\"url\",void 0),G(this,\"maxConcurrency\",1),G(this,\"maxMobileConcurrency\",1),G(this,\"onDebug\",()=>{}),G(this,\"reuseWorkers\",!0),G(this,\"props\",{}),G(this,\"jobQueue\",[]),G(this,\"idleQueue\",[]),G(this,\"count\",0),G(this,\"isDestroyed\",!1),this.source=t.source,this.url=t.url,this.setProps(t)}destroy(){this.idleQueue.forEach(t=>t.destroy()),this.isDestroyed=!0}setProps(t){this.props={...this.props,...t},t.name!==void 0&&(this.name=t.name),t.maxConcurrency!==void 0&&(this.maxConcurrency=t.maxConcurrency),t.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=t.maxMobileConcurrency),t.reuseWorkers!==void 0&&(this.reuseWorkers=t.reuseWorkers),t.onDebug!==void 0&&(this.onDebug=t.onDebug)}async startJob(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(n,o,c)=>n.done(c),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(n,o)=>n.error(o),s=new Promise(n=>(this.jobQueue.push({name:t,onMessage:r,onError:i,onStart:n}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:\"Starting job\",name:r.name,workerThread:t,backlog:this.jobQueue.length});let i=new W1(r.name,t);t.onMessage=s=>r.onMessage(i,s.type,s.payload),t.onError=s=>r.onError(i,s),r.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(t.destroy(),this.count--):this.idleQueue.push(t),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}},VA=class e{static isSupported(){return UA.isSupported()}static getWorkerFarm(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e._workerFarm=e._workerFarm||new e({}),e._workerFarm.setProps(t),e._workerFarm}constructor(t){G(this,\"props\",void 0),G(this,\"workerPools\",new Map),this.props={...ort},this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props={...this.props,...t};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:r,source:i,url:s}=t,n=this.workerPools.get(r);return n||(n=new H1({name:r,source:i,url:s}),n.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}};G(VA,\"_workerFarm\",void 0);var art=\"latest\";function y4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t[e.id]||{},i=\"\".concat(e.id,\"-worker.js\"),s=r.workerUrl;if(!s&&e.id===\"compression\"&&(s=t.workerUrl),t._workerType===\"test\"&&(s=\"modules/\".concat(e.module,\"/dist/\").concat(i)),!s){let n=e.version;n===\"latest\"&&(n=art);let o=n?\"@\".concat(n):\"\";s=\"https://unpkg.com/@loaders.gl/\".concat(e.module).concat(o,\"/dist/\").concat(i)}return Ka(s),s}function v4(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:K8;Ka(e,\"no worker provided\");let r=e.version;return!(!t||!r)}function x4(e,t){return!VA.isSupported()||!D0&&!(t!=null&&t._nodeWorkers)?!1:e.worker&&t?.worker}async function b4(e,t,r,i,s){let n=e.id,o=y4(e,r),f=VA.getWorkerFarm(r).getWorkerPool({name:n,url:o});r=JSON.parse(JSON.stringify(r)),i=JSON.parse(JSON.stringify(i||{}));let _=await f.startJob(\"process-on-worker\",lrt.bind(null,s));return _.postMessage(\"process\",{input:t,options:r,context:i}),await(await _.result).result}async function lrt(e,t,r,i){switch(r){case\"done\":t.done(i);break;case\"error\":t.error(new Error(i.error));break;case\"process\":let{id:s,input:n,options:o}=i;try{let c=await e(n,o);t.postMessage(\"done\",{id:s,result:c})}catch(c){let f=c instanceof Error?c.message:\"unknown error\";t.postMessage(\"error\",{id:s,error:f})}break;default:console.warn(\"parse-with-worker unknown message \".concat(r))}}function w4(e,t,r){if(r=r||e.byteLength,e.byteLengthc instanceof ArrayBuffer?new Uint8Array(c):c),s=i.reduce((c,f)=>c+f.byteLength,0),n=new Uint8Array(s),o=0;for(let c of i)n.set(c,o),o+=c.byteLength;return n.buffer}async function T4(e){let t=[];for await(let r of e)t.push(r);return S4(...t)}function q1(){let e;if(typeof window<\"u\"&&window.performance)e=window.performance.now();else if(typeof process<\"u\"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var O0=class{constructor(t,r){this.name=void 0,this.type=void 0,this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=q1(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(q1()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var oy=class{constructor(t){this.id=void 0,this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"count\";return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let r of Object.values(this.stats))t(r)}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(r=>this._getOrCreate(r))}_getOrCreate(t){let{name:r,type:i}=t,s=this.stats[r];return s||(t instanceof O0?s=t:s=new O0(r,i),this.stats[r]=s),s}};var crt=\"Queued Requests\",urt=\"Active Requests\",hrt=\"Cancelled Requests\",frt=\"Queued Requests Ever\",drt=\"Active Requests Ever\",prt={id:\"request-scheduler\",throttleRequests:!0,maxRequests:6},ay=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};G(this,\"props\",void 0),G(this,\"stats\",void 0),G(this,\"activeRequestCount\",0),G(this,\"requestQueue\",[]),G(this,\"requestMap\",new Map),G(this,\"deferredUpdate\",null),this.props={...prt,...t},this.stats=new oy({id:this.props.id}),this.stats.get(crt),this.stats.get(urt),this.stats.get(hrt),this.stats.get(frt),this.stats.get(drt)}scheduleRequest(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:()=>0;if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let i={handle:t,priority:0,getPriority:r},s=new Promise(n=>(i.resolve=n,i));return this.requestQueue.push(i),this.requestMap.set(t,s),this._issueNewRequests(),s}_issueRequest(t){let{handle:r,resolve:i}=t,s=!1,n=()=>{s||(s=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,i?i({done:n}):Promise.resolve({done:n})}_issueNewRequests(){this.deferredUpdate||(this.deferredUpdate=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequestsAsync(){this.deferredUpdate=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let r=0;rr.priority-i.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var Art=\"\",nU={};function M4(e){for(let t in nU)if(e.startsWith(t)){let r=nU[t];e=e.replace(t,r)}return!e.startsWith(\"http://\")&&!e.startsWith(\"https://\")&&(e=\"\".concat(Art).concat(e)),e}function sU(e){return e&&typeof e==\"object\"&&e.isBuffer}function kM(e){if(sU(e))return e;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e==\"string\"){let t=e;return new TextEncoder().encode(t).buffer}if(e&&typeof e==\"object\"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error(\"toArrayBuffer\")}var B0={};mA(B0,{dirname:()=>grt,filename:()=>mrt,join:()=>_rt,resolve:()=>yrt});function oU(){var e;if(typeof process<\"u\"&&typeof process.cwd<\"u\")return process.cwd();let t=(e=window.location)===null||e===void 0?void 0:e.pathname;return t?.slice(0,t.lastIndexOf(\"/\")+1)||\"\"}function mrt(e){let t=e?e.lastIndexOf(\"/\"):-1;return t>=0?e.substr(t+1):\"\"}function grt(e){let t=e?e.lastIndexOf(\"/\"):-1;return t>=0?e.substr(0,t):\"\"}function _rt(){for(var e=arguments.length,t=new Array(e),r=0;r(n&&(s=s.replace(new RegExp(\"^\".concat(i)),\"\")),n!==t.length-1&&(s=s.replace(new RegExp(\"\".concat(i,\"$\")),\"\")),s)),t.join(i)}function yrt(){let e=[];for(let s=0;s=-1&&!r;s--){let n;s>=0?n=e[s]:(i===void 0&&(i=oU()),n=i),n.length!==0&&(t=\"\".concat(n,\"/\").concat(t),r=n.charCodeAt(0)===Z1)}return t=vrt(t,!r),r?\"/\".concat(t):t.length>0?t:\".\"}var Z1=47,E4=46;function vrt(e,t){let r=\"\",i=-1,s=0,n,o=!1;for(let c=0;c<=e.length;++c){if(c2){let f=r.length-1,_=f;for(;_>=0&&r.charCodeAt(_)!==Z1;--_);if(_!==f){r=_===-1?\"\":r.slice(0,_),i=c,s=0,o=!1;continue}}else if(r.length===2||r.length===1){r=\"\",i=c,s=0,o=!1;continue}}t&&(r.length>0?r+=\"/..\":r=\"..\",o=!0)}else{let f=e.slice(i+1,c);r.length>0?r+=\"/\".concat(f):r=f,o=!1}i=c,s=0}else n===E4&&s!==-1?++s:s=-1}return r}var xrt=e=>typeof e==\"boolean\",Y1=e=>typeof e==\"function\",F0=e=>e!==null&&typeof e==\"object\",P4=e=>F0(e)&&e.constructor==={}.constructor;var aU=e=>e&&typeof e[Symbol.iterator]==\"function\",lU=e=>e&&typeof e[Symbol.asyncIterator]==\"function\";var Eu=e=>typeof Response<\"u\"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json;var Pu=e=>typeof Blob<\"u\"&&e instanceof Blob,cU=e=>e&&typeof e==\"object\"&&e.isBuffer;var brt=e=>typeof ReadableStream<\"u\"&&e instanceof ReadableStream||F0(e)&&Y1(e.tee)&&Y1(e.cancel)&&Y1(e.getReader);var wrt=e=>F0(e)&&Y1(e.read)&&Y1(e.pipe)&&xrt(e.readable),RM=e=>brt(e)||wrt(e);var Srt=/^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/,Trt=/^([-\\w.]+\\/[-\\w.+]+)/;function uU(e){let t=Trt.exec(e);return t?t[1]:e}function I4(e){let t=Srt.exec(e);return t?t[1]:\"\"}var hU=/\\?.*/;function fU(e){let t=e.match(hU);return t&&t[0]}function ly(e){return e.replace(hU,\"\")}function z0(e){return Eu(e)?e.url:Pu(e)?e.name||\"\":typeof e==\"string\"?e:\"\"}function Q1(e){if(Eu(e)){let t=e,r=t.headers.get(\"content-type\")||\"\",i=ly(t.url);return uU(r)||I4(i)}return Pu(e)?e.type||\"\":typeof e==\"string\"?I4(e):\"\"}function dU(e){return Eu(e)?e.headers[\"content-length\"]||-1:Pu(e)?e.size:typeof e==\"string\"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function DM(e){if(Eu(e))return e;let t={},r=dU(e);r>=0&&(t[\"content-length\"]=String(r));let i=z0(e),s=Q1(e);s&&(t[\"content-type\"]=s);let n=await Ert(e);n&&(t[\"x-first-bytes\"]=n),typeof e==\"string\"&&(e=new TextEncoder().encode(e));let o=new Response(e,{headers:t});return Object.defineProperty(o,\"url\",{value:i}),o}async function pU(e){if(!e.ok){let t=await Mrt(e);throw new Error(t)}}async function Mrt(e){let t=\"Failed to fetch resource \".concat(e.url,\" (\").concat(e.status,\"): \");try{let r=e.headers.get(\"Content-Type\"),i=e.statusText;r.includes(\"application/json\")&&(i+=\" \".concat(await e.text())),t+=i,t=t.length>60?\"\".concat(t.slice(0,60),\"...\"):t}catch{}return t}async function Ert(e){if(typeof e==\"string\")return\"data:,\".concat(e.slice(0,5));if(e instanceof Blob){let r=e.slice(0,5);return await new Promise(i=>{let s=new FileReader;s.onload=n=>{var o;return i(n==null||(o=n.target)===null||o===void 0?void 0:o.result)},s.readAsDataURL(r)})}if(e instanceof ArrayBuffer){let r=e.slice(0,5),i=Prt(r);return\"data:base64,\".concat(i)}return null}function Prt(e){let t=\"\",r=new Uint8Array(e);for(let i=0;i=0)}function kh(){return!(typeof process==\"object\"&&String(process)===\"[object process]\"&&!process.browser)||L4()}var Irt=globalThis.self||globalThis.window||globalThis.global,cy=globalThis.window||globalThis.self||globalThis.global,Crt=globalThis.document||{},N0=globalThis.process||{},Lrt=globalThis.console,ASt=globalThis.navigator||{};var OM=typeof __VERSION__<\"u\"?__VERSION__:\"untranspiled source\",_St=kh();function krt(e){try{let t=window[e],r=\"__storage_test__\";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var BM=class{constructor(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"sessionStorage\";this.storage=void 0,this.id=void 0,this.config=void 0,this.storage=krt(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}};function AU(e){let t;return e<10?t=\"\".concat(e.toFixed(2),\"ms\"):e<100?t=\"\".concat(e.toFixed(1),\"ms\"):e<1e3?t=\"\".concat(e.toFixed(0),\"ms\"):t=\"\".concat((e/1e3).toFixed(2),\"s\"),t}function mU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,r=Math.max(t-e.length,0);return\"\".concat(\" \".repeat(r)).concat(e)}function FM(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,s=e.src.replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\");e.width>i&&(r=Math.min(r,i/e.width));let n=e.width*r,o=e.height*r,c=[\"font-size:1px;\",\"padding:\".concat(Math.floor(o/2),\"px \").concat(Math.floor(n/2),\"px;\"),\"line-height:\".concat(o,\"px;\"),\"background:url(\".concat(s,\");\"),\"background-size:\".concat(n,\"px \").concat(o,\"px;\"),\"color:transparent;\"].join(\"\");return[\"\".concat(t,\" %c+\"),c]}var zM;(function(e){e[e.BLACK=30]=\"BLACK\",e[e.RED=31]=\"RED\",e[e.GREEN=32]=\"GREEN\",e[e.YELLOW=33]=\"YELLOW\",e[e.BLUE=34]=\"BLUE\",e[e.MAGENTA=35]=\"MAGENTA\",e[e.CYAN=36]=\"CYAN\",e[e.WHITE=37]=\"WHITE\",e[e.BRIGHT_BLACK=90]=\"BRIGHT_BLACK\",e[e.BRIGHT_RED=91]=\"BRIGHT_RED\",e[e.BRIGHT_GREEN=92]=\"BRIGHT_GREEN\",e[e.BRIGHT_YELLOW=93]=\"BRIGHT_YELLOW\",e[e.BRIGHT_BLUE=94]=\"BRIGHT_BLUE\",e[e.BRIGHT_MAGENTA=95]=\"BRIGHT_MAGENTA\",e[e.BRIGHT_CYAN=96]=\"BRIGHT_CYAN\",e[e.BRIGHT_WHITE=97]=\"BRIGHT_WHITE\"})(zM||(zM={}));var Rrt=10;function gU(e){return typeof e!=\"string\"?e:(e=e.toUpperCase(),zM[e]||zM.WHITE)}function _U(e,t,r){if(!kh&&typeof e==\"string\"){if(t){let i=gU(t);e=\"\\x1B[\".concat(i,\"m\").concat(e,\"\\x1B[39m\")}if(r){let i=gU(r);e=\"\\x1B[\".concat(i+Rrt,\"m\").concat(e,\"\\x1B[49m\")}}return e}function yU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[\"constructor\"],r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r),s=e;for(let n of i){let o=s[n];typeof o==\"function\"&&(t.find(c=>n===c)||(s[n]=o.bind(e)))}}function uy(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function U0(){let e;if(kh()&&cy.performance){var t,r;e=cy===null||cy===void 0||(t=cy.performance)===null||t===void 0||(r=t.now)===null||r===void 0?void 0:r.call(t)}else if(\"hrtime\"in N0){var i;let s=N0===null||N0===void 0||(i=N0.hrtime)===null||i===void 0?void 0:i.call(N0);e=s[0]*1e3+s[1]/1e6}else e=Date.now();return e}var hy={debug:kh()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},Drt={enabled:!0,level:0};function Iu(){}var vU={},xU={once:!0},zf=class{constructor(){let{id:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:\"\"};this.id=void 0,this.VERSION=OM,this._startTs=U0(),this._deltaTs=U0(),this._storage=void 0,this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=t,this.userData={},this._storage=new BM(\"__probe-\".concat(this.id,\"__\"),Drt),this.timeStamp(\"\".concat(this.id,\" started\")),yU(this),Object.seal(this)}set level(t){this.setLevel(t)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((U0()-this._startTs).toPrecision(10))}getDelta(){return Number((U0()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:t}),this}setLevel(t){return this._storage.setConfiguration({level:t}),this}get(t){return this._storage.config[t]}set(t,r){this._storage.setConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){uy(t,r)}warn(t){return this._getLogFunction(0,t,hy.warn,arguments,xU)}error(t){return this._getLogFunction(0,t,hy.error,arguments)}deprecated(t,r){return this.warn(\"`\".concat(t,\"` is deprecated and will be removed in a later version. Use `\").concat(r,\"` instead\"))}removed(t,r){return this.error(\"`\".concat(t,\"` has been removed. Use `\").concat(r,\"` instead\"))}probe(t,r){return this._getLogFunction(t,r,hy.log,arguments,{time:!0,once:!0})}log(t,r){return this._getLogFunction(t,r,hy.debug,arguments)}info(t,r){return this._getLogFunction(t,r,console.info,arguments)}once(t,r){return this._getLogFunction(t,r,hy.debug||hy.info,arguments,xU)}table(t,r,i){return r?this._getLogFunction(t,r,console.table||Iu,i&&[i],{tag:zrt(r)}):Iu}image(t){let{logLevel:r,priority:i,image:s,message:n=\"\",scale:o=1}=t;return this._shouldLog(r||i)?kh()?Frt({image:s,message:n,scale:o}):Brt({image:s,message:n,scale:o}):Iu}time(t,r){return this._getLogFunction(t,r,console.time?console.time:console.info)}timeEnd(t,r){return this._getLogFunction(t,r,console.timeEnd?console.timeEnd:console.info)}timeStamp(t,r){return this._getLogFunction(t,r,console.timeStamp||Iu)}group(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},s=bU({logLevel:t,message:r,opts:i}),{collapsed:n}=i;return s.method=(n?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._getLogFunction(t,\"\",console.groupEnd||Iu)}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&this.getLevel()>=wU(t)}_getLogFunction(t,r,i,s,n){if(this._shouldLog(t)){n=bU({logLevel:t,message:r,args:s,opts:n}),i=i||n.method,uy(i),n.total=this.getTotal(),n.delta=this.getDelta(),this._deltaTs=U0();let o=n.tag||n.message;if(n.once&&o)if(!vU[o])vU[o]=U0();else return Iu;return r=Ort(this.id,n.message,n),i.bind(console,r,...n.args)}return Iu}};zf.VERSION=OM;function wU(e){if(!e)return 0;let t;switch(typeof e){case\"number\":t=e;break;case\"object\":t=e.logLevel||e.priority||0;break;default:return 0}return uy(Number.isFinite(t)&&t>=0),t}function bU(e){let{logLevel:t,message:r}=e;e.logLevel=wU(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case\"string\":case\"function\":r!==void 0&&i.unshift(r),e.message=t;break;case\"object\":Object.assign(e,t);break;default:}typeof e.message==\"function\"&&(e.message=e.message());let s=typeof e.message;return uy(s===\"string\"||s===\"object\"),Object.assign(e,{args:i},e.opts)}function Ort(e,t,r){if(typeof t==\"string\"){let i=r.time?mU(AU(r.total)):\"\";t=r.time?\"\".concat(e,\": \").concat(i,\" \").concat(t):\"\".concat(e,\": \").concat(t),t=_U(t,r.color,r.background)}return t}function Brt(e){let{image:t,message:r=\"\",scale:i=1}=e;return console.warn(\"removed\"),Iu}function Frt(e){let{image:t,message:r=\"\",scale:i=1}=e;if(typeof t==\"string\"){let n=new Image;return n.onload=()=>{let o=FM(n,r,i);console.log(...o)},n.src=t,Iu}let s=t.nodeName||\"\";if(s.toLowerCase()===\"img\")return console.log(...FM(t,r,i)),Iu;if(s.toLowerCase()===\"canvas\"){let n=new Image;return n.onload=()=>console.log(...FM(n,r,i)),n.src=t.toDataURL(),Iu}return Iu}function zrt(e){for(let t in e)for(let r in e[t])return r||\"untitled\";return\"empty\"}var GSt=new zf({id:\"@probe.gl/log\"});var k4=new zf({id:\"loaders.gl\"}),NM=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},UM=class{constructor(){G(this,\"console\",void 0),this.console=console}log(){for(var t=arguments.length,r=new Array(t),i=0;i{let e=D4();return e.globalOptions=e.globalOptions||{...R4},e.globalOptions};function EU(e,t,r,i){return r=r||[],r=Array.isArray(r)?r:[r],Nrt(e,r),Vrt(t,e,i)}function Nrt(e,t){TU(e,null,R4,SU,t);for(let r of t){let i=e&&e[r.id]||{},s=r.options&&r.options[r.id]||{},n=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};TU(i,r.id,s,n,t)}}function TU(e,t,r,i,s){let n=t||\"Top level\",o=t?\"\".concat(t,\".\"):\"\";for(let c in e){let f=!t&&F0(e[c]),_=c===\"baseUri\"&&!t,w=c===\"workerUrl\"&&t;if(!(c in r)&&!_&&!w){if(c in i)k4.warn(\"\".concat(n,\" loader option '\").concat(o).concat(c,\"' no longer supported, use '\").concat(i[c],\"'\"))();else if(!f){let I=Urt(c,s);k4.warn(\"\".concat(n,\" loader option '\").concat(o).concat(c,\"' not recognized. \").concat(I))()}}}}function Urt(e,t){let r=e.toLowerCase(),i=\"\";for(let s of t)for(let n in s.options){if(e===n)return\"Did you mean '\".concat(s.id,\".\").concat(n,\"'?\");let o=n.toLowerCase();(r.startsWith(o)||o.startsWith(r))&&(i=i||\"Did you mean '\".concat(s.id,\".\").concat(n,\"'?\"))}return i}function Vrt(e,t,r){let s={...e.options||{}};return jrt(s,r),s.log===null&&(s.log=new NM),MU(s,O4()),MU(s,t),s}function MU(e,t){for(let r in t)if(r in t){let i=t[r];P4(i)&&P4(e[r])?e[r]={...e[r],...t[r]}:e[r]=t[r]}}function jrt(e,t){t&&!(\"baseUri\"in e)&&(e.baseUri=t)}function $1(e){var t;return e?(Array.isArray(e)&&(e=e[0]),Array.isArray((t=e)===null||t===void 0?void 0:t.extensions)):!1}function X1(e){var t,r;zA(e,\"null loader\"),zA($1(e),\"invalid loader\");let i;return Array.isArray(e)&&(i=e[1],e=e[0],e={...e,options:{...e.options,...i}}),((t=e)!==null&&t!==void 0&&t.parseTextSync||(r=e)!==null&&r!==void 0&&r.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var PU=()=>{let e=D4();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function B4(e){let t=PU();e=Array.isArray(e)?e:[e];for(let r of e){let i=X1(r);t.find(s=>i===s)||t.unshift(i)}}function IU(){return PU()}var CU=new zf({id:\"loaders.gl\"});var Grt=/\\.([^.]+)$/;async function RU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(!DU(e))return null;let s=LU(e,t,{...r,nothrow:!0},i);if(s)return s;if(Pu(e)&&(e=await e.slice(0,10).arrayBuffer(),s=LU(e,t,r,i)),!s&&!(r!=null&&r.nothrow))throw new Error(OU(e));return s}function LU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;if(!DU(e))return null;if(t&&!Array.isArray(t))return X1(t);let s=[];t&&(s=s.concat(t)),r!=null&&r.ignoreRegisteredLoaders||s.push(...IU()),Hrt(s);let n=Wrt(e,s,r,i);if(!n&&!(r!=null&&r.nothrow))throw new Error(OU(e));return n}function Wrt(e,t,r,i){let s=z0(e),n=Q1(e),o=ly(s)||i?.url,c=null,f=\"\";if(r!=null&&r.mimeType&&(c=F4(t,r?.mimeType),f=\"match forced by supplied MIME type \".concat(r?.mimeType)),c=c||qrt(t,o),f=f||(c?\"matched url \".concat(o):\"\"),c=c||F4(t,n),f=f||(c?\"matched MIME type \".concat(n):\"\"),c=c||Yrt(t,e),f=f||(c?\"matched initial data \".concat(BU(e)):\"\"),c=c||F4(t,r?.fallbackMimeType),f=f||(c?\"matched fallback MIME type \".concat(n):\"\"),f){var _;CU.log(1,\"selectLoader selected \".concat((_=c)===null||_===void 0?void 0:_.name,\": \").concat(f,\".\"))}return c}function DU(e){return!(e instanceof Response&&e.status===204)}function OU(e){let t=z0(e),r=Q1(e),i=\"No valid loader found (\";i+=t?\"\".concat(B0.filename(t),\", \"):\"no url provided, \",i+=\"MIME type: \".concat(r?'\"'.concat(r,'\"'):\"not provided\",\", \");let s=e?BU(e):\"\";return i+=s?' first bytes: \"'.concat(s,'\"'):\"first bytes: not available\",i+=\")\",i}function Hrt(e){for(let t of e)X1(t)}function qrt(e,t){let r=t&&Grt.exec(t),i=r&&r[1];return i?Zrt(e,i):null}function Zrt(e,t){t=t.toLowerCase();for(let r of e)for(let i of r.extensions)if(i.toLowerCase()===t)return r;return null}function F4(e,t){for(let r of e)if(r.mimeTypes&&r.mimeTypes.includes(t)||t===\"application/x.\".concat(r.id))return r;return null}function Yrt(e,t){if(!t)return null;for(let r of e)if(typeof t==\"string\"){if(Qrt(t,r))return r}else if(ArrayBuffer.isView(t)){if(kU(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer&&kU(t,0,r))return r;return null}function Qrt(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(i=>e.startsWith(i))}function kU(e,t,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>$rt(e,t,r,s))}function $rt(e,t,r,i){if(i instanceof ArrayBuffer)return w4(i,e,i.byteLength);switch(typeof i){case\"function\":return i(e,r);case\"string\":let s=z4(e,t,i.length);return i===s;default:return!1}}function BU(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5;return typeof e==\"string\"?e.slice(0,t):ArrayBuffer.isView(e)?z4(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?z4(e,0,t):\"\"}function z4(e,t,r){if(e.byteLength1&&arguments[1]!==void 0?arguments[1]:{};return function*(){let{chunkSize:r=262144}=t,i=0;for(;iC4(s,i):t!=null&&t.fetch?t?.fetch:C4}function GU(e,t,r){if(r)return r;let i={fetch:VM(t,e),...e};if(i.url){let s=ly(i.url);i.baseUrl=s,i.queryString=fU(i.url),i.filename=B0.filename(s),i.baseUrl=B0.dirname(s)}return Array.isArray(i.loaders)||(i.loaders=null),i}function WU(e,t){if(!t&&e&&!Array.isArray(e))return e;let r;if(e&&(r=Array.isArray(e)?e:[e]),t&&t.loaders){let i=Array.isArray(t.loaders)?t.loaders:[t.loaders];r=r?[...r,...i]:i}return r&&r.length?r:null}async function jM(e,t,r,i){Ka(!i||typeof i==\"object\"),t&&!Array.isArray(t)&&!$1(t)&&(i=void 0,r=t,t=void 0),e=await e,r=r||{};let s=z0(e),o=WU(t,i),c=await RU(e,o,r);return c?(r=EU(r,c,o,s),i=GU({url:s,parse:jM,loaders:o},r,i||null),await tit(c,e,r,i)):null}async function tit(e,t,r,i){if(v4(e),Eu(t)){let s=t,{ok:n,redirected:o,status:c,statusText:f,type:_,url:w}=s,I=Object.fromEntries(s.headers.entries());i.response={headers:I,ok:n,redirected:o,status:c,statusText:f,type:_,url:w}}if(t=await jU(t,e,r),e.parseTextSync&&typeof t==\"string\")return r.dataType=\"text\",e.parseTextSync(t,r,i,e);if(x4(e,r))return await b4(e,t,r,i,jM);if(e.parseText&&typeof t==\"string\")return await e.parseText(t,r,i,e);if(e.parse)return await e.parse(t,r,i,e);throw Ka(!e.parseSync),new Error(\"\".concat(e.id,\" loader - no parser found and worker is disabled\"))}async function jA(e,t,r,i){!Array.isArray(t)&&!$1(t)&&(i=void 0,r=t,t=void 0);let s=VM(r),n=e;return typeof e==\"string\"&&(n=await s(e)),Pu(e)&&(n=await s(e)),await jM(n,t,r)}var HU=\"3.4.14\";var{_parseImageNode:eit}=globalThis,U4=typeof Image<\"u\",V4=typeof ImageBitmap<\"u\",rit=!!eit,j4=R0?!0:rit;function qU(e){switch(e){case\"auto\":return V4||U4||j4;case\"imagebitmap\":return V4;case\"image\":return U4;case\"data\":return j4;default:throw new Error(\"@loaders.gl/images: image \".concat(e,\" not supported in this environment\"))}}function ZU(){if(V4)return\"imagebitmap\";if(U4)return\"image\";if(j4)return\"data\";throw new Error(\"Install '@loaders.gl/polyfills' to parse images under Node.js\")}function iit(e){let t=nit(e);if(!t)throw new Error(\"Not an image\");return t}function YU(e){switch(iit(e)){case\"data\":return e;case\"image\":case\"imagebitmap\":let t=document.createElement(\"canvas\"),r=t.getContext(\"2d\");if(!r)throw new Error(\"getImageData\");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error(\"getImageData\")}}function nit(e){return typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap?\"imagebitmap\":typeof Image<\"u\"&&e instanceof Image?\"image\":e&&typeof e==\"object\"&&e.data&&e.width&&e.height?\"data\":null}var sit=/^data:image\\/svg\\+xml/,oit=/\\.svg((\\?|#).*)?$/;function GM(e){return e&&(sit.test(e)||oit.test(e))}function QU(e,t){if(GM(t)){let i=new TextDecoder().decode(e);try{typeof unescape==\"function\"&&typeof encodeURIComponent==\"function\"&&(i=unescape(encodeURIComponent(i)))}catch(n){throw new Error(n.message)}return\"data:image/svg+xml;base64,\".concat(btoa(i))}return G4(e,t)}function G4(e,t){if(GM(t))throw new Error(\"SVG cannot be parsed directly to imagebitmap\");return new Blob([new Uint8Array(e)])}async function WM(e,t,r){let i=QU(e,r),s=self.URL||self.webkitURL,n=typeof i!=\"string\"&&s.createObjectURL(i);try{return await ait(n||i,t)}finally{n&&s.revokeObjectURL(n)}}async function ait(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((i,s)=>{try{r.onload=()=>i(r),r.onerror=n=>s(new Error(\"Could not load image \".concat(e,\": \").concat(n)))}catch(n){s(n)}})}var lit={},$U=!0;async function XU(e,t,r){let i;GM(r)?i=await WM(e,t,r):i=G4(e,r);let s=t&&t.imagebitmap;return await cit(i,s)}async function cit(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if((uit(t)||!$U)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),$U=!1}return await createImageBitmap(e)}function uit(e){for(let t in e||lit)return!1;return!0}function KU(e){return!pit(e,\"ftyp\",4)||!(e[8]&96)?null:hit(e)}function hit(e){switch(fit(e,8,12).replace(\"\\0\",\" \").trim()){case\"avif\":case\"avis\":return{extension:\"avif\",mimeType:\"image/avif\"};default:return null}}function fit(e,t,r){return String.fromCharCode(...e.slice(t,r))}function dit(e){return[...e].map(t=>t.charCodeAt(0))}function pit(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=dit(t);for(let s=0;s=24&&t.getUint32(0,Nf)===2303741511?{mimeType:\"image/png\",width:t.getUint32(16,Nf),height:t.getUint32(20,Nf)}:null}function git(e){let t=J1(e);return t.byteLength>=10&&t.getUint32(0,Nf)===1195984440?{mimeType:\"image/gif\",width:t.getUint16(6,K1),height:t.getUint16(8,K1)}:null}function _it(e){let t=J1(e);return t.byteLength>=14&&t.getUint16(0,Nf)===16973&&t.getUint32(2,K1)===t.byteLength?{mimeType:\"image/bmp\",width:t.getUint32(18,K1),height:t.getUint32(22,K1)}:null}function yit(e){let t=J1(e);if(!(t.byteLength>=3&&t.getUint16(0,Nf)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:s}=vit(),n=2;for(;n+9!!HM(new DataView(e))],options:Sit};function tb(e){if(typeof window<\"u\"&&typeof window.process==\"object\"&&window.process.type===\"renderer\"||typeof process<\"u\"&&typeof process.versions==\"object\"&&process.versions.electron)return!0;let t=typeof navigator==\"object\"&&typeof navigator.userAgent==\"string\"&&navigator.userAgent,r=e||t;return!!(r&&r.indexOf(\"Electron\")>=0)}function Co(){return!(typeof process==\"object\"&&String(process)===\"[object process]\"&&!process.browser)||tb()}var GA={self:typeof self<\"u\"&&self,window:typeof window<\"u\"&&window,global:typeof global<\"u\"&&global,document:typeof document<\"u\"&&document,process:typeof process==\"object\"&&process};var Tit=GA.self||GA.window||GA.global,fy=GA.window||GA.self||GA.global,Mit=GA.document||{},V0=GA.process||{};var qM=typeof __VERSION__<\"u\"?__VERSION__:\"untranspiled source\",UMt=Co();var H4=globalThis;function dy(e){if(!e&&!Co())return\"Node\";if(tb(e))return\"Electron\";let r=e||(typeof navigator<\"u\"?navigator:{}).userAgent||\"\";if(r.indexOf(\"Edge\")>-1)return\"Edge\";let i=r.indexOf(\"MSIE \")!==-1,s=r.indexOf(\"Trident/\")!==-1;return i||s?\"IE\":H4.chrome?\"Chrome\":H4.safari?\"Safari\":H4.mozInnerScreenX?\"Firefox\":\"Unknown\"}function Eit(e){try{let t=window[e],r=\"__storage_test__\";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var ZM=class{constructor(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"sessionStorage\";G(this,\"storage\",void 0),G(this,\"id\",void 0),G(this,\"config\",void 0),this.storage=Eit(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}};function eV(e){let t;return e<10?t=\"\".concat(e.toFixed(2),\"ms\"):e<100?t=\"\".concat(e.toFixed(1),\"ms\"):e<1e3?t=\"\".concat(e.toFixed(0),\"ms\"):t=\"\".concat((e/1e3).toFixed(2),\"s\"),t}function rV(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8,r=Math.max(t-e.length,0);return\"\".concat(\" \".repeat(r)).concat(e)}function YM(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600,s=e.src.replace(/\\(/g,\"%28\").replace(/\\)/g,\"%29\");e.width>i&&(r=Math.min(r,i/e.width));let n=e.width*r,o=e.height*r,c=[\"font-size:1px;\",\"padding:\".concat(Math.floor(o/2),\"px \").concat(Math.floor(n/2),\"px;\"),\"line-height:\".concat(o,\"px;\"),\"background:url(\".concat(s,\");\"),\"background-size:\".concat(n,\"px \").concat(o,\"px;\"),\"color:transparent;\"].join(\"\");return[\"\".concat(t,\" %c+\"),c]}var QM;(function(e){e[e.BLACK=30]=\"BLACK\",e[e.RED=31]=\"RED\",e[e.GREEN=32]=\"GREEN\",e[e.YELLOW=33]=\"YELLOW\",e[e.BLUE=34]=\"BLUE\",e[e.MAGENTA=35]=\"MAGENTA\",e[e.CYAN=36]=\"CYAN\",e[e.WHITE=37]=\"WHITE\",e[e.BRIGHT_BLACK=90]=\"BRIGHT_BLACK\",e[e.BRIGHT_RED=91]=\"BRIGHT_RED\",e[e.BRIGHT_GREEN=92]=\"BRIGHT_GREEN\",e[e.BRIGHT_YELLOW=93]=\"BRIGHT_YELLOW\",e[e.BRIGHT_BLUE=94]=\"BRIGHT_BLUE\",e[e.BRIGHT_MAGENTA=95]=\"BRIGHT_MAGENTA\",e[e.BRIGHT_CYAN=96]=\"BRIGHT_CYAN\",e[e.BRIGHT_WHITE=97]=\"BRIGHT_WHITE\"})(QM||(QM={}));function iV(e){return typeof e==\"string\"?QM[e.toUpperCase()]||QM.WHITE:e}function nV(e,t,r){return!Co&&typeof e==\"string\"&&(t&&(t=iV(t),e=\"\\x1B[\".concat(t,\"m\").concat(e,\"\\x1B[39m\")),r&&(t=iV(r),e=\"\\x1B[\".concat(r+10,\"m\").concat(e,\"\\x1B[49m\"))),e}function sV(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[\"constructor\"],r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r);for(let s of i)typeof e[s]==\"function\"&&(t.find(n=>s===n)||(e[s]=e[s].bind(e)))}function py(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function j0(){let e;if(Co&&\"performance\"in fy){var t,r;e=fy===null||fy===void 0||(t=fy.performance)===null||t===void 0||(r=t.now)===null||r===void 0?void 0:r.call(t)}else if(\"hrtime\"in V0){var i;let s=V0===null||V0===void 0||(i=V0.hrtime)===null||i===void 0?void 0:i.call(V0);e=s[0]*1e3+s[1]/1e6}else e=Date.now();return e}var Ay={debug:Co&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},Pit={enabled:!0,level:0};function Cu(){}var oV={},aV={once:!0},Uf=class{constructor(){let{id:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:\"\"};G(this,\"id\",void 0),G(this,\"VERSION\",qM),G(this,\"_startTs\",j0()),G(this,\"_deltaTs\",j0()),G(this,\"_storage\",void 0),G(this,\"userData\",{}),G(this,\"LOG_THROTTLE_TIMEOUT\",0),this.id=t,this.userData={},this._storage=new ZM(\"__probe-\".concat(this.id,\"__\"),Pit),this.timeStamp(\"\".concat(this.id,\" started\")),sV(this),Object.seal(this)}set level(t){this.setLevel(t)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((j0()-this._startTs).toPrecision(10))}getDelta(){return Number((j0()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:t}),this}setLevel(t){return this._storage.setConfiguration({level:t}),this}get(t){return this._storage.config[t]}set(t,r){this._storage.setConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){py(t,r)}warn(t){return this._getLogFunction(0,t,Ay.warn,arguments,aV)}error(t){return this._getLogFunction(0,t,Ay.error,arguments)}deprecated(t,r){return this.warn(\"`\".concat(t,\"` is deprecated and will be removed in a later version. Use `\").concat(r,\"` instead\"))}removed(t,r){return this.error(\"`\".concat(t,\"` has been removed. Use `\").concat(r,\"` instead\"))}probe(t,r){return this._getLogFunction(t,r,Ay.log,arguments,{time:!0,once:!0})}log(t,r){return this._getLogFunction(t,r,Ay.debug,arguments)}info(t,r){return this._getLogFunction(t,r,console.info,arguments)}once(t,r){for(var i=arguments.length,s=new Array(i>2?i-2:0),n=2;n2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1},s=lV({logLevel:t,message:r,opts:i}),{collapsed:n}=i;return s.method=(n?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._getLogFunction(t,\"\",console.groupEnd||Cu)}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&this.getLevel()>=cV(t)}_getLogFunction(t,r,i,s,n){if(this._shouldLog(t)){n=lV({logLevel:t,message:r,args:s,opts:n}),i=i||n.method,py(i),n.total=this.getTotal(),n.delta=this.getDelta(),this._deltaTs=j0();let o=n.tag||n.message;if(n.once)if(!oV[o])oV[o]=j0();else return Cu;return r=Iit(this.id,n.message,n),i.bind(console,r,...n.args)}return Cu}};G(Uf,\"VERSION\",qM);function cV(e){if(!e)return 0;let t;switch(typeof e){case\"number\":t=e;break;case\"object\":t=e.logLevel||e.priority||0;break;default:return 0}return py(Number.isFinite(t)&&t>=0),t}function lV(e){let{logLevel:t,message:r}=e;e.logLevel=cV(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case\"string\":case\"function\":r!==void 0&&i.unshift(r),e.message=t;break;case\"object\":Object.assign(e,t);break;default:}typeof e.message==\"function\"&&(e.message=e.message());let s=typeof e.message;return py(s===\"string\"||s===\"object\"),Object.assign(e,{args:i},e.opts)}function Iit(e,t,r){if(typeof t==\"string\"){let i=r.time?rV(eV(r.total)):\"\";t=r.time?\"\".concat(e,\": \").concat(i,\" \").concat(t):\"\".concat(e,\": \").concat(t),t=nV(t,r.color,r.background)}return t}function Cit(e){let{image:t,message:r=\"\",scale:i=1}=e;return console.warn(\"removed\"),Cu}function Lit(e){let{image:t,message:r=\"\",scale:i=1}=e;if(typeof t==\"string\"){let n=new Image;return n.onload=()=>{let o=YM(n,r,i);console.log(...o)},n.src=t,Cu}let s=t.nodeName||\"\";if(s.toLowerCase()===\"img\")return console.log(...YM(t,r,i)),Cu;if(s.toLowerCase()===\"canvas\"){let n=new Image;return n.onload=()=>console.log(...YM(n,r,i)),n.src=t.toDataURL(),Cu}return Cu}function kit(e){for(let t in e)for(let r in e[t])return r||\"untitled\";return\"empty\"}var yEt=new Uf({id:\"@probe.gl/log\"});var nr=new Uf({id:\"deck\"});var q4={};function uV(e){q4=e}function Ls(e,t,r,i){nr.level>0&&q4[e]&&q4[e].call(null,t,r,i)}function Rit(e){let t=e[0],r=e[e.length-1];return t===\"{\"&&r===\"}\"||t===\"[\"&&r===\"]\"}var hV={id:\"JSON\",name:\"JSON\",module:\"\",version:\"\",options:{},extensions:[\"json\",\"geojson\"],mimeTypes:[\"application/json\",\"application/geo+json\"],testText:Rit,parseTextSync:JSON.parse};function Dit(){let e=\"8.9.35\",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(\"deck.gl - multiple versions detected: \".concat(t,\" vs \").concat(e));return t||(nr.log(1,\"deck.gl \".concat(e))(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:nr,_registerLoggers:uV},B4([hV,[W4,{imagebitmap:{premultiplyAlpha:\"none\"}}]])),e}var fV=Dit();var Yr={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(Yr,\"IDENTITY\",{get:()=>(nr.deprecated(\"COORDINATE_SYSTEM.IDENTITY\",\"COORDINATE_SYSTEM.CARTESIAN\")(),0)});var Ja={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},ho={common:0,meters:1,pixels:2},Z4={click:{handler:\"onClick\"},panstart:{handler:\"onDragStart\"},panmove:{handler:\"onDrag\"},panend:{handler:\"onDragEnd\"}};var je=new Uf({id:\"luma.gl\"});function Qs(e,t){if(!e)throw new Error(t||\"luma.gl: assertion failed.\")}var Oit=\"Invalid WebGLRenderingContext\";var Bit=\"Requires WebGL2\";function tp(e){return typeof WebGLRenderingContext<\"u\"&&e instanceof WebGLRenderingContext||typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&Number.isFinite(e._version))}function hr(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function Y4(e){return hr(e)?e:null}function ep(e){return Qs(tp(e),Oit),e}function qn(e){return Qs(hr(e),Bit),e}var eb={};function Fit(e){globalThis.console&&globalThis.console.error&&globalThis.console.error(e)}function zit(e){globalThis.console&&globalThis.console.log&&globalThis.console.log(e)}function Nit(e,t){eb[e]=!0,t!==void 0&&Fit(t)}function Uit(e){let t=e.getError;e.getError=function(){let i;do i=t.apply(e),i!==0&&(eb[i]=!0);while(i!==0);for(i in eb)if(eb[i])return delete eb[i],parseInt(i,10);return 0}}var rb=function e(t){let r=t.gl;this.ext=t,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(t.maxVertexAttribs);for(let i=0;i{zit(\"OESVertexArrayObject emulation library context restored\"),r.reset_()},!0),this.reset_()};G0.prototype.VERTEX_ARRAY_BINDING_OES=34229;G0.prototype.reset_=function(){if(this.vertexArrayObjects!==void 0)for(let i=0;ihr(e)?void 0:0,$it={3074:e=>hr(e)?void 0:36064,[Wit]:e=>hr(e)?void 0:Hit,35977:zn,32937:zn,[qit]:(e,t)=>{let r=hr(e)?e.getExtension(jit):e.getExtension(Vit);return r&&r.GPU_DISJOINT_EXT?t(r.GPU_DISJOINT_EXT):0},[Yit]:(e,t)=>{let r=e.getExtension(mV);return t(r&&r.UNMASKED_VENDOR_WEBGL||7936)},[Qit]:(e,t)=>{let r=e.getExtension(mV);return t(r&&r.UNMASKED_RENDERER_WEBGL||7937)},[Zit]:(e,t)=>{let r=e.luma.extensions[Git];return r?t(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1},32883:zn,35071:zn,37447:zn,36063:(e,t)=>{if(!hr(e)){let r=e.getExtension(AV);return r?t(r.MAX_COLOR_ATTACHMENTS_WEBGL):0}},35379:zn,35374:zn,35377:zn,34852:e=>{if(!hr(e)){let t=e.getExtension(AV);return t?t.MAX_DRAW_BUFFERS_WEBGL:0}},36203:e=>e.getExtension(pV)?2147483647:65535,33001:e=>e.getExtension(pV)?16777216:65535,33e3:e=>16777216,37157:zn,35373:zn,35657:zn,36183:zn,37137:zn,34045:zn,35978:zn,35979:zn,35968:zn,35376:zn,35375:zn,35659:zn,37154:zn,35371:zn,35658:zn,35076:zn,35077:zn,35380:zn};function gV(e,t,r){let i=$it[r],s=typeof i==\"function\"?i(e,t,r):i;return s!==void 0?s:t(r)}var Xit=\"OES_vertex_array_object\",_V=\"ANGLE_instanced_arrays\",Kit=\"WEBGL_draw_buffers\",Jit=\"EXT_disjoint_timer_query\",tnt=\"EXT_texture_filter_anisotropic\",ent=\"VertexArray requires WebGL2 or OES_vertex_array_object extension\";function rnt(e,t){return{webgl2:hr(e),ext:e.getExtension(t)}}var Q4={[Xit]:{meta:{suffix:\"OES\"},createVertexArray:()=>{Qs(!1,ent)},deleteVertexArray:()=>{},bindVertexArray:()=>{},isVertexArray:()=>!1},[_V]:{meta:{suffix:\"ANGLE\"},vertexAttribDivisor(e,t){Qs(t===0,\"WebGL instanced rendering not supported\")},drawElementsInstanced:()=>{},drawArraysInstanced:()=>{}},[Kit]:{meta:{suffix:\"WEBGL\"},drawBuffers:()=>{Qs(!1)}},[Jit]:{meta:{suffix:\"EXT\"},createQuery:()=>{Qs(!1)},deleteQuery:()=>{Qs(!1)},beginQuery:()=>{Qs(!1)},endQuery:()=>{},getQuery(e,t){return this.getQueryObject(e,t)},getQueryParameter(e,t){return this.getQueryObject(e,t)},getQueryObject:()=>{}}},$M={readBuffer:(e,t,r)=>{hr(e)&&t(r)},getVertexAttrib:(e,t,r,i)=>{let{webgl2:s,ext:n}=rnt(e,_V),o;switch(i){case 35069:o=s?void 0:!1;break;case 35070:o=!s&&!n?0:void 0;break;default:}return o!==void 0?o:t(r,i)},getProgramParameter:(e,t,r,i)=>{if(!hr(e))switch(i){case 35967:return 35981;case 35971:return 0;case 35382:return 0;default:}return t(r,i)},getInternalformatParameter:(e,t,r,i,s)=>{if(!hr(e))switch(s){case 32937:return new Int32Array([0]);default:}return e.getInternalformatParameter(r,i,s)},getTexParameter(e,t,r,i){switch(i){case 34046:let{extensions:s}=e.luma,n=s[tnt];i=n&&n.TEXTURE_MAX_ANISOTROPY_EXT||34046;break;default:}return t(r,i)},getParameter:gV,hint(e,t,r,i){return t(r,i)}};function yV(e){e.luma=e.luma||{};let{luma:t}=e;return t.polyfilled||(dV(e),int(e),snt(e,Q4),nnt(e,{target:t,target2:e}),t.polyfilled=!0),e}globalThis.polyfillContext=yV;function int(e){e.luma.extensions={};let t=e.getSupportedExtensions()||[];for(let r of t)e.luma[r]=e.getExtension(r)}function nnt(e,t){let{target:r,target2:i}=t;Object.keys($M).forEach(s=>{if(typeof $M[s]==\"function\"){let n=e[s]?e[s].bind(e):()=>{},o=$M[s].bind(null,e,n);r[s]=o,i[s]=o}})}function snt(e,t){for(let r of Object.getOwnPropertyNames(t))r!==\"overrides\"&&ont(e,{extension:r,target:e.luma,target2:e})}function ont(e,t){let{extension:r,target:i,target2:s}=t,n=Q4[r];Qs(n);let{meta:o={}}=n,{suffix:c=\"\"}=o,f=e.getExtension(r);for(let _ of Object.keys(n)){let w=\"\".concat(_).concat(c),I=null;_===\"meta\"||typeof e[_]==\"function\"||(f&&typeof f[w]==\"function\"?I=function(){return f[w](...arguments)}:typeof n[_]==\"function\"&&(I=n[_].bind(i))),I&&(i[_]=I,s[_]=I)}}var nb={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,36006:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],3333:4,3317:4,37440:!1,37441:!1,37443:37444,35723:4352,36010:null,35977:!1,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},WA=(e,t,r)=>t?e.enable(r):e.disable(r),vV=(e,t,r)=>e.hint(r,t),Zc=(e,t,r)=>e.pixelStorei(r,t),ant=(e,t)=>{let r=hr(e)?36009:36160;return e.bindFramebuffer(r,t)},lnt=(e,t)=>e.bindFramebuffer(36008,t);function ib(e){return Array.isArray(e)||ArrayBuffer.isView(e)}var xV={3042:WA,32773:(e,t)=>e.blendColor(...t),32777:\"blendEquation\",34877:\"blendEquation\",32969:\"blendFunc\",32968:\"blendFunc\",32971:\"blendFunc\",32970:\"blendFunc\",3106:(e,t)=>e.clearColor(...t),3107:(e,t)=>e.colorMask(...t),2884:WA,2885:(e,t)=>e.cullFace(t),2929:WA,2931:(e,t)=>e.clearDepth(t),2932:(e,t)=>e.depthFunc(t),2928:(e,t)=>e.depthRange(...t),2930:(e,t)=>e.depthMask(t),3024:WA,35723:vV,36006:ant,2886:(e,t)=>e.frontFace(t),33170:vV,2849:(e,t)=>e.lineWidth(t),32823:WA,32824:\"polygonOffset\",10752:\"polygonOffset\",35977:WA,32938:\"sampleCoverage\",32939:\"sampleCoverage\",3089:WA,3088:(e,t)=>e.scissor(...t),2960:WA,2961:(e,t)=>e.clearStencil(t),2968:(e,t)=>e.stencilMaskSeparate(1028,t),36005:(e,t)=>e.stencilMaskSeparate(1029,t),2962:\"stencilFuncFront\",2967:\"stencilFuncFront\",2963:\"stencilFuncFront\",34816:\"stencilFuncBack\",36003:\"stencilFuncBack\",36004:\"stencilFuncBack\",2964:\"stencilOpFront\",2965:\"stencilOpFront\",2966:\"stencilOpFront\",34817:\"stencilOpBack\",34818:\"stencilOpBack\",34819:\"stencilOpBack\",2978:(e,t)=>e.viewport(...t),3333:Zc,3317:Zc,37440:Zc,37441:Zc,37443:Zc,3330:Zc,3332:Zc,3331:Zc,36010:lnt,3314:Zc,32878:Zc,3316:Zc,3315:Zc,32877:Zc,framebuffer:(e,t)=>{let r=t&&\"handle\"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{t=ib(t)?t:[t,t],e.blendEquationSeparate(...t)},blendFunc:(e,t)=>{t=ib(t)&&t.length===2?[...t,...t]:t,e.blendFuncSeparate(...t)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(...t),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=ib(t)?t:[t,t];let[r,i]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,t)=>{t=ib(t)&&t.length===3?[...t,...t]:t;let[r,i,s,n,o,c]=t;e.stencilFuncSeparate(1028,r,i,s),e.stencilFuncSeparate(1029,n,o,c)},stencilOp:(e,t)=>{t=ib(t)&&t.length===3?[...t,...t]:t;let[r,i,s,n,o,c]=t;e.stencilOpSeparate(1028,r,i,s),e.stencilOpSeparate(1029,n,o,c)},viewport:(e,t)=>e.viewport(...t)};function ks(e,t,r){return t[e]!==void 0?t[e]:r[e]}var bV={blendEquation:(e,t,r)=>e.blendEquationSeparate(ks(32777,t,r),ks(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(ks(32969,t,r),ks(32968,t,r),ks(32971,t,r),ks(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(ks(32824,t,r),ks(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(ks(32938,t,r),ks(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,ks(2962,t,r),ks(2967,t,r),ks(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,ks(34816,t,r),ks(36003,t,r),ks(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,ks(2964,t,r),ks(2965,t,r),ks(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,ks(34817,t,r),ks(34818,t,r),ks(34819,t,r))},$4={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({36006:r,36010:r});case 36009:return e({36006:r});case 36008:return e({36010:r});default:return null}},blendColor:(e,t,r,i,s)=>e({32773:new Float32Array([t,r,i,s])}),blendEquation:(e,t)=>e({32777:t,34877:t}),blendEquationSeparate:(e,t,r)=>e({32777:t,34877:r}),blendFunc:(e,t,r)=>e({32969:t,32968:r,32971:t,32970:r}),blendFuncSeparate:(e,t,r,i,s)=>e({32969:t,32968:r,32971:i,32970:s}),clearColor:(e,t,r,i,s)=>e({3106:new Float32Array([t,r,i,s])}),clearDepth:(e,t)=>e({2931:t}),clearStencil:(e,t)=>e({2961:t}),colorMask:(e,t,r,i,s)=>e({3107:[t,r,i,s]}),cullFace:(e,t)=>e({2885:t}),depthFunc:(e,t)=>e({2932:t}),depthRange:(e,t,r)=>e({2928:new Float32Array([t,r])}),depthMask:(e,t)=>e({2930:t}),frontFace:(e,t)=>e({2886:t}),lineWidth:(e,t)=>e({2849:t}),polygonOffset:(e,t,r)=>e({32824:t,10752:r}),sampleCoverage:(e,t,r)=>e({32938:t,32939:r}),scissor:(e,t,r,i,s)=>e({3088:new Int32Array([t,r,i,s])}),stencilMask:(e,t)=>e({2968:t,36005:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,i)=>e({2962:t,2967:r,2963:i,34816:t,36003:r,36004:i}),stencilFuncSeparate:(e,t,r,i,s)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:i,[t===1028?2963:36004]:s}),stencilOp:(e,t,r,i)=>e({2964:t,2965:r,2966:i,34817:t,34818:r,34819:i}),stencilOpSeparate:(e,t,r,i,s)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:i,[t===1028?2966:34819]:s}),viewport:(e,t,r,i,s)=>e({2978:[t,r,i,s]})},Vf=(e,t)=>e.isEnabled(t),X4={3042:Vf,2884:Vf,2929:Vf,3024:Vf,32823:Vf,32926:Vf,32928:Vf,3089:Vf,2960:Vf,35977:Vf};function K4(e){for(let t in e)return!1;return!0}function wV(e,t){if(e===t)return!0;let r=Array.isArray(e)||ArrayBuffer.isView(e),i=Array.isArray(t)||ArrayBuffer.isView(t);if(r&&i&&e.length===t.length){for(let s=0;s{}}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.program=null,this.stateStack=[],this.enable=!0,this.cache=r?my(t):Object.assign({},nb),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.stateStack.push({})}pop(){Qs(this.stateStack.length>0);let t=this.stateStack[this.stateStack.length-1];Ml(this.gl,t),this.stateStack.pop()}_updateCache(t){let r=!1,i,s=this.stateStack.length>0&&this.stateStack[this.stateStack.length-1];for(let n in t){Qs(n!==void 0);let o=t[n],c=this.cache[n];wV(o,c)||(r=!0,i=c,s&&!(n in s)&&(s[n]=c),this.cache[n]=o)}return{valueChanged:r,oldValue:i}}};function XM(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{enable:r=!0,copyState:i}=t;if(Qs(i!==void 0),!e.state){let{polyfillContext:s}=globalThis;s&&s(e),e.state=new J4(e,{copyState:i}),unt(e);for(let n in $4){let o=$4[n];cnt(e,n,o)}SV(e,\"getParameter\"),SV(e,\"isEnabled\")}return e.state.enable=r,e}function tR(e){e.state||XM(e,{copyState:!1}),e.state.push()}function KM(e){Qs(e.state),e.state.pop()}function Ml(e,t){if(Qs(tp(e),\"setParameters requires a WebGL context\"),K4(t))return;let r={};for(let s in t){let n=Number(s),o=xV[s];o&&(typeof o==\"string\"?r[o]=!0:o(e,t[s],n))}let i=e.state&&e.state.cache;if(i)for(let s in r){let n=bV[s];n(e,t,i)}}function my(e,t){if(t=t||nb,typeof t==\"number\"){let s=t,n=X4[s];return n?n(e,s):e.getParameter(s)}let r=Array.isArray(t)?t:Object.keys(t),i={};for(let s of r){let n=X4[s];i[s]=n?n(e,Number(s)):e.getParameter(Number(s))}return i}function JM(e){Ml(e,nb)}function Sn(e,t,r){if(K4(t))return r(e);let{nocatch:i=!0}=t;tR(e),Ml(e,t);let s;if(i)s=r(e),KM(e);else try{s=r(e)}finally{KM(e)}return s}function El(e){let{luma:t}=e;if(e.canvas&&t){let r=t.canvasSizeInfo,i=\"clientWidth\"in r?r.clientWidth:e.canvas.clientWidth;return i?e.drawingBufferWidth/i:1}return 1}function gy(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=El(e),s=e.drawingBufferWidth,n=e.drawingBufferHeight;return hnt(t,i,s,n,r)}function EV(e){let t=typeof window>\"u\"?1:window.devicePixelRatio||1;return Number.isFinite(e)?e<=0?1:e:e?t:1}function hnt(e,t,r,i,s){let n=TV(e[0],t,r),o=MV(e[1],t,i,s),c=TV(e[0]+1,t,r),f=c===r-1?c:c-1;c=MV(e[1]+1,t,i,s);let _;return s?(c=c===0?c:c+1,_=o,o=c):_=c===i-1?c:c-1,{x:n,y:o,width:Math.max(f-n+1,1),height:Math.max(_-o+1,1)}}function TV(e,t,r){return Math.min(Math.round(e*t),r-1)}function MV(e,t,r,i){return i?Math.max(0,r-1-Math.round(e*t)):Math.min(Math.round(e*t),r-1)}var eR=Co(),fnt=eR&&typeof document<\"u\",PV={webgl2:!0,webgl1:!0,throwOnError:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function _y(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Qs(eR,`createGLContext only available in the browser.\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils`),e=Object.assign({},PV,e);let{width:t,height:r}=e;function i(c){if(e.throwOnError)throw new Error(c);return console.error(c),null}e.onError=i;let s,{canvas:n}=e,o=pnt({canvas:n,width:t,height:r,onError:i});return s=dnt(o,e),s?(s=W0(s,e),Ant(s),s):null}function W0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||e._instrumented)return e;e._version=e._version||mnt(e),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{},t=Object.assign({},PV,t);let{manageState:r,debug:i}=t;return r&&XM(e,{copyState:!1,log:function(){for(var s=arguments.length,n=new Array(s),o=0;o1&&arguments[1]!==void 0?arguments[1]:{};if(e.canvas){let i=EV(t.useDevicePixels);gnt(e,i,t);return}let r=e.getExtension(\"STACKGL_resize_drawingbuffer\");r&&\"width\"in t&&\"height\"in t&&r.resize(t.width,t.height)}function dnt(e,t){let{onError:r}=t,i=null,s=f=>i=f.statusMessage||i;e.addEventListener(\"webglcontextcreationerror\",s,!1);let{webgl1:n=!0,webgl2:o=!0}=t,c=null;return o&&(c=c||e.getContext(\"webgl2\",t),c=c||e.getContext(\"experimental-webgl2\",t)),n&&(c=c||e.getContext(\"webgl\",t),c=c||e.getContext(\"experimental-webgl\",t)),e.removeEventListener(\"webglcontextcreationerror\",s,!1),c?(t.onContextLost&&e.addEventListener(\"webglcontextlost\",t.onContextLost,!1),t.onContextRestored&&e.addEventListener(\"webglcontextrestored\",t.onContextRestored,!1),c):r(\"Failed to create \".concat(o&&!n?\"WebGL2\":\"WebGL\",\" context: \").concat(i||\"Unknown error\"))}function pnt(e){let{canvas:t,width:r=800,height:i=600,onError:s}=e,n;return typeof t==\"string\"?(fnt&&document.readyState===\"complete\"||s(\"createGLContext called on canvas '\".concat(t,\"' before page was loaded\")),n=document.getElementById(t)):t?n=t:(n=document.createElement(\"canvas\"),n.id=\"lumagl-canvas\",n.style.width=Number.isFinite(r)?\"\".concat(r,\"px\"):\"100%\",n.style.height=Number.isFinite(i)?\"\".concat(i,\"px\"):\"100%\",document.body.insertBefore(n,document.body.firstChild)),n}function Ant(e){let t=hr(e)?\"WebGL2\":\"WebGL1\",r=IV(e),i=r?\"(\".concat(r.vendor,\",\").concat(r.renderer,\")\"):\"\",s=e.debug?\" debug\":\"\";je.info(1,\"\".concat(t).concat(s,\" context \").concat(i))()}function mnt(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?2:1}function gnt(e,t,r){let i=\"width\"in r?r.width:e.canvas.clientWidth,s=\"height\"in r?r.height:e.canvas.clientHeight;(!i||!s)&&(je.log(1,\"Canvas clientWidth/clientHeight is 0\")(),t=1,i=e.canvas.width||1,s=e.canvas.height||1),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{};let n=e.luma.canvasSizeInfo;if(n.clientWidth!==i||n.clientHeight!==s||n.devicePixelRatio!==t){let o=t,c=Math.floor(i*o),f=Math.floor(s*o);e.canvas.width=c,e.canvas.height=f,(e.drawingBufferWidth!==c||e.drawingBufferHeight!==f)&&(je.warn(\"Device pixel ratio clamped\")(),o=Math.min(e.drawingBufferWidth/i,e.drawingBufferHeight/s),e.canvas.width=Math.floor(i*o),e.canvas.height=Math.floor(s*o)),Object.assign(e.luma.canvasSizeInfo,{clientWidth:i,clientHeight:s,devicePixelRatio:t})}}function sb(){let e;if(typeof window<\"u\"&&window.performance)e=window.performance.now();else if(typeof process<\"u\"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var H0=class{constructor(t,r){G(this,\"name\",void 0),G(this,\"type\",void 0),G(this,\"sampleSize\",1),G(this,\"time\",void 0),G(this,\"count\",void 0),G(this,\"samples\",void 0),G(this,\"lastTiming\",void 0),G(this,\"lastSampleTime\",void 0),G(this,\"lastSampleCount\",void 0),G(this,\"_count\",0),G(this,\"_time\",0),G(this,\"_samples\",0),G(this,\"_startTime\",0),G(this,\"_timerPending\",!1),this.name=t,this.type=r,this.reset()}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=sb(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(sb()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var jf=class{constructor(t){G(this,\"id\",void 0),G(this,\"stats\",{}),this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"count\";return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t in this.stats)this.stats[t].reset();return this}forEach(t){for(let r in this.stats)t(this.stats[r])}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(r=>this._getOrCreate(r))}_getOrCreate(t){if(!t||!t.name)return null;let{name:r,type:i}=t;return this.stats[r]||(t instanceof H0?this.stats[r]=t:this.stats[r]=new H0(r,i)),this.stats[r]}};var ob=\"8.5.21\",_nt=\"set luma.log.level=1 (or higher) to trace rendering\",iR=class{constructor(){this.stats=new Map}get(t){return this.stats.has(t)||this.stats.set(t,new jf({id:t})),this.stats.get(t)}},Lu=new iR;if(globalThis.luma&&globalThis.luma.VERSION!==ob)throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION,\" vs \").concat(ob));globalThis.luma||(Co()&&je.log(1,\"luma.gl \".concat(ob,\" - \").concat(_nt))(),globalThis.luma=globalThis.luma||{VERSION:ob,version:ob,log:je,stats:Lu,globals:{modules:{},nodeIO:{}}});var VPt=globalThis.luma;function nR(e){return typeof window<\"u\"&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)}function sR(e){return typeof window<\"u\"&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e)}function ye(e,t){if(!e)throw new Error(t||\"luma.gl: assertion failed.\")}function tE(e,t){if(typeof t!=\"string\")return t;let r=Number(t);if(!isNaN(r))return r;t=t.replace(/^.*\\./,\"\");let i=e[t];return ye(i!==void 0,\"Accessing undefined constant GL.\".concat(t)),i}function ku(e,t){t=Number(t);for(let r in e)if(e[r]===t)return\"GL.\".concat(r);return String(t)}var oR={};function ea(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:\"id\";oR[e]=oR[e]||1;let t=oR[e]++;return\"\".concat(e,\"-\").concat(t)}function aR(e){return ye(typeof e==\"number\",\"Input must be a number\"),e&&(e&e-1)===0}function Gf(e){let t=!0;for(let r in e){t=!1;break}return t}function eE(e,t,r,i){let s=\"See luma.gl \".concat(r,\" Upgrade Guide at https://luma.gl/docs/upgrade-guide\"),n=Object.getPrototypeOf(e);i.forEach(o=>{n.methodName||(n[o]=()=>{throw je.removed(\"Calling removed method \".concat(t,\".\").concat(o,\": \"),s)(),new Error(o)})})}var yy=\"Resource subclass must define virtual methods\",$s=class{get[Symbol.toStringTag](){return\"Resource\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};ep(t);let{id:i,userData:s={}}=r;this.gl=t,this.gl2=t,this.id=i||ea(this[Symbol.toStringTag]),this.userData=s,this._bound=!1,this._handle=r.handle,this._handle===void 0&&(this._handle=this._createHandle()),this.byteLength=0,this._addStats()}toString(){return\"\".concat(this[Symbol.toStringTag]||this.constructor.name,\"(\").concat(this.id,\")\")}get handle(){return this._handle}delete(){let{deleteChildren:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this._handle&&this._deleteHandle(this._handle);return this._handle&&this._removeStats(),this._handle=null,r&&t&&r.filter(Boolean).forEach(i=>i.delete()),this}bind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.handle;if(typeof t!=\"function\")return this._bindHandle(t),this;let r;return this._bound?r=t():(this._bindHandle(this.handle),this._bound=!0,r=t(),this._bound=!1,this._bindHandle(null)),r}unbind(){this.bind(null)}getParameter(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};t=tE(this.gl,t),ye(t);let s=(this.constructor.PARAMETERS||{})[t];if(s){let n=hr(this.gl);if(!((!(\"webgl2\"in s)||n)&&(!(\"extension\"in s)||this.gl.getExtension(s.extension)))){let c=s.webgl1,f=\"webgl2\"in s?s.webgl2:s.webgl1;return n?f:c}}return this._getParameter(t,r)}getParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{parameters:r,keys:i}=t,s=this.constructor.PARAMETERS||{},n=hr(this.gl),o={},c=r||Object.keys(s);for(let f of c){let _=s[f];if(_&&(!(\"webgl2\"in _)||n)&&(!(\"extension\"in _)||this.gl.getExtension(_.extension))){let I=i?ku(this.gl,f):f;o[I]=this.getParameter(f,t),i&&_.type===\"GLenum\"&&(o[I]=ku(this.gl,o[I]))}}return o}setParameter(t,r){t=tE(this.gl,t),ye(t);let s=(this.constructor.PARAMETERS||{})[t];if(s){let n=hr(this.gl);if(!((!(\"webgl2\"in s)||n)&&(!(\"extension\"in s)||this.gl.getExtension(s.extension))))throw new Error(\"Parameter not available on this platform\");s.type===\"GLenum\"&&(r=tE(r))}return this._setParameter(t,r),this}setParameters(t){for(let r in t)this.setParameter(r,t[r]);return this}stubRemovedMethods(t,r,i){return eE(this,t,r,i)}initialize(t){}_createHandle(){throw new Error(yy)}_deleteHandle(){throw new Error(yy)}_bindHandle(t){throw new Error(yy)}_getOptsFromHandle(){throw new Error(yy)}_getParameter(t,r){throw new Error(yy)}_setParameter(t,r){throw new Error(yy)}_context(){return this.gl.luma=this.gl.luma||{},this.gl.luma}_addStats(){let t=this[Symbol.toStringTag],r=Lu.get(\"Resource Counts\");r.get(\"Resources Created\").incrementCount(),r.get(\"\".concat(t,\"s Created\")).incrementCount(),r.get(\"\".concat(t,\"s Active\")).incrementCount()}_removeStats(){let t=this[Symbol.toStringTag];Lu.get(\"Resource Counts\").get(\"\".concat(t,\"s Active\")).decrementCount()}_trackAllocatedMemory(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag];this._trackAllocatedMemoryForContext(t,r),this._trackAllocatedMemoryForContext(t,r,this.gl.canvas&&this.gl.canvas.id),this.byteLength=t}_trackAllocatedMemoryForContext(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\"\",s=Lu.get(\"Memory Usage\".concat(i));s.get(\"GPU Memory\").addCount(t),s.get(\"\".concat(r,\" Memory\")).addCount(t)}_trackDeallocatedMemory(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag];this._trackDeallocatedMemoryForContext(t),this._trackDeallocatedMemoryForContext(t,this.gl.canvas&&this.gl.canvas.id),this.byteLength=0}_trackDeallocatedMemoryForContext(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\",i=Lu.get(\"Memory Usage\".concat(r));i.get(\"GPU Memory\").subtractCount(this.byteLength),i.get(\"\".concat(t,\" Memory\")).subtractCount(this.byteLength)}};var ynt=\"Failed to deduce GL constant from typed array\";function ab(e){switch(ArrayBuffer.isView(e)?e.constructor:e){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(ynt)}}function HA(e){let{clamped:t=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return t?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error(\"Failed to deduce typed array type from GL constant\")}}function CV(e){let{data:t,width:r,height:i,bytesPerPixel:s=4,temp:n}=e,o=r*s;n=n||new Uint8Array(o);for(let c=0;cthis._assign(s)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return e.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return e.getBytesPerVertex(this)}_assign(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t=lb(\"Accessor\",t,xnt),t.type!==void 0&&(this.type=t.type,(t.type===5124||t.type===5125)&&(this.integer=!0)),t.size!==void 0&&(this.size=t.size),t.offset!==void 0&&(this.offset=t.offset),t.stride!==void 0&&(this.stride=t.stride),t.normalized!==void 0&&(this.normalized=t.normalized),t.integer!==void 0&&(this.integer=t.integer),t.divisor!==void 0&&(this.divisor=t.divisor),t.buffer!==void 0&&(this.buffer=t.buffer),t.index!==void 0&&(typeof t.index==\"boolean\"?this.index=t.index?1:0:this.index=t.index),t.instanced!==void 0&&(this.divisor=t.instanced?1:0),t.isInstanced!==void 0&&(this.divisor=t.isInstanced?1:0),this}};var kV=10,RV={offset:\"accessor.offset\",stride:\"accessor.stride\",type:\"accessor.type\",size:\"accessor.size\",divisor:\"accessor.divisor\",normalized:\"accessor.normalized\",integer:\"accessor.integer\",instanced:\"accessor.divisor\",isInstanced:\"accessor.divisor\"},bnt={removedProps:{},replacedProps:{bytes:\"byteLength\"},deprecatedProps:RV},wnt={removedProps:RV},Fr=class extends $s{get[Symbol.toStringTag](){return\"Buffer\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.stubRemovedMethods(\"Buffer\",\"v6.0\",[\"layout\",\"setLayout\",\"getIndexedParameter\"]),this.target=r.target||(this.gl.webgl2?36662:34962),this.initialize(r),Object.seal(this)}getElementCount(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Pl.getBytesPerElement(t))}getVertexCount(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Pl.getBytesPerVertex(t))}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ArrayBuffer.isView(t)&&(t={data:t}),Number.isFinite(t)&&(t={byteLength:t}),t=lb(\"Buffer\",t,bnt),this.usage=t.usage||35044,this.debugData=null,this.setAccessor(Object.assign({},t,t.accessor)),t.data?this._setData(t.data,t.offset,t.byteLength):this._setByteLength(t.byteLength||0),this}setProps(t){return t=lb(\"Buffer\",t,wnt),\"accessor\"in t&&this.setAccessor(t.accessor),this}setAccessor(t){return t=Object.assign({},t),delete t.buffer,this.accessor=new Pl(t),this}reallocate(t){return t>this.byteLength?(this._setByteLength(t),!0):(this.bytesUsed=t,!1)}setData(t){return this.initialize(t)}subData(t){ArrayBuffer.isView(t)&&(t={data:t});let{data:r,offset:i=0,srcOffset:s=0}=t,n=t.byteLength||t.length;ye(r);let o=this.gl.webgl2?36663:this.target;return this.gl.bindBuffer(o,this.handle),s!==0||n!==void 0?(qn(this.gl),this.gl.bufferSubData(this.target,i,r,s,n)):this.gl.bufferSubData(o,i,r),this.gl.bindBuffer(o,null),this.debugData=null,this._inferType(r),this}copyData(t){let{sourceBuffer:r,readOffset:i=0,writeOffset:s=0,size:n}=t,{gl:o}=this;return qn(o),o.bindBuffer(36662,r.handle),o.bindBuffer(36663,this.handle),o.copyBufferSubData(36662,36663,i,s,n),o.bindBuffer(36662,null),o.bindBuffer(36663,null),this.debugData=null,this}getData(){let{dstData:t=null,srcByteOffset:r=0,dstOffset:i=0,length:s=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};qn(this.gl);let n=HA(this.accessor.type||5126,{clamped:!1}),o=this._getAvailableElementCount(r),c=i,f,_;t?(_=t.length,f=_-c):(f=Math.min(o,s||o),_=c+f);let w=Math.min(o,f);return s=s||w,ye(s<=w),t=t||new n(_),this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,r,t,i,s),this.gl.bindBuffer(36662,null),t}bind(){let{target:t=this.target,index:r=this.accessor&&this.accessor.index,offset:i=0,size:s}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t===35345||t===35982?s!==void 0?this.gl.bindBufferRange(t,r,this.handle,i,s):(ye(i===0),this.gl.bindBufferBase(t,r,this.handle)):this.gl.bindBuffer(t,this.handle),this}unbind(){let{target:t=this.target,index:r=this.accessor&&this.accessor.index}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t===35345||t===35982?this.gl.bindBufferBase(t,r,null):this.gl.bindBuffer(t,null),this}getDebugData(){return this.debugData?{data:this.debugData,changed:!1}:(this.debugData=this.getData({length:Math.min(kV,this.byteLength)}),{data:this.debugData,changed:!0})}invalidateDebugData(){this.debugData=null}_setData(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.byteLength+r;ye(ArrayBuffer.isView(t)),this._trackDeallocatedMemory();let s=this._getTarget();this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.usage),this.gl.bufferSubData(s,r,t),this.gl.bindBuffer(s,null),this.debugData=t.slice(0,kV),this.bytesUsed=i,this._trackAllocatedMemory(i);let n=ab(t);return ye(n),this.setAccessor(new Pl(this.accessor,{type:n})),this}_setByteLength(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.usage;ye(t>=0),this._trackDeallocatedMemory();let i=t;t===0&&(i=new Float32Array(0));let s=this._getTarget();return this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,r),this.gl.bindBuffer(s,null),this.usage=r,this.debugData=null,this.bytesUsed=t,this._trackAllocatedMemory(t),this}_getTarget(){return this.gl.webgl2?36663:this.target}_getAvailableElementCount(t){let r=HA(this.accessor.type||5126,{clamped:!1}),i=t/r.BYTES_PER_ELEMENT;return this.getElementCount()-i}_inferType(t){this.accessor.type||this.setAccessor(new Pl(this.accessor,{type:ab(t)}))}_createHandle(){return this.gl.createBuffer()}_deleteHandle(){this.gl.deleteBuffer(this.handle),this._trackDeallocatedMemory()}_getParameter(t){this.gl.bindBuffer(this.target,this.handle);let r=this.gl.getBufferParameter(this.target,t);return this.gl.bindBuffer(this.target,null),r}get type(){return je.deprecated(\"Buffer.type\",\"Buffer.accessor.type\")(),this.accessor.type}get bytes(){return je.deprecated(\"Buffer.bytes\",\"Buffer.byteLength\")(),this.byteLength}setByteLength(t){return je.deprecated(\"setByteLength\",\"reallocate\")(),this.reallocate(t)}updateAccessor(t){return je.deprecated(\"updateAccessor(...)\",\"setAccessor(new Accessor(buffer.accessor, ...)\")(),this.accessor=new Pl(this.accessor,t),this}};var rE={6407:{dataFormat:6407,types:[5121,33635]},6408:{dataFormat:6408,types:[5121,32819,32820]},6406:{dataFormat:6406,types:[5121]},6409:{dataFormat:6409,types:[5121]},6410:{dataFormat:6410,types:[5121]},33326:{dataFormat:6403,types:[5126],gl2:!0},33328:{dataFormat:33319,types:[5126],gl2:!0},34837:{dataFormat:6407,types:[5126],gl2:!0},34836:{dataFormat:6408,types:[5126],gl2:!0}},iE={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},nE={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function DV(e,t){let r=rE[t];if(!r)return!1;if(r.gl1===void 0&&r.gl2===void 0)return!0;let i=hr(e)&&r.gl2||r.gl1;return typeof i==\"string\"?e.getExtension(i):i}function OV(e,t){let r=rE[t];switch(r&&r.types[0]){case 5126:return e.getExtension(\"OES_texture_float_linear\");case 5131:return e.getExtension(\"OES_texture_half_float_linear\");default:return!0}}var Snt=[9729,9728],BV=globalThis.WebGLBuffer||function(){},tl=class extends $s{get[Symbol.toStringTag](){return\"Texture\"}static isSupported(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{format:i,linearFiltering:s}=r,n=!0;return i&&(n=n&&DV(t,i),n=n&&(!s||OV(t,i))),n}constructor(t,r){let{id:i=ea(\"texture\"),handle:s,target:n}=r;super(t,{id:i,handle:s}),this.target=n,this.textureUnit=void 0,this.loaded=!1,this.width=void 0,this.height=void 0,this.depth=void 0,this.format=void 0,this.type=void 0,this.dataFormat=void 0,this.border=void 0,this.textureUnit=void 0,this.mipmaps=void 0}toString(){return\"Texture(\".concat(this.id,\",\").concat(this.width,\"x\").concat(this.height,\")\")}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=t.data;if(r instanceof Promise)return r.then(K=>this.initialize(Object.assign({},t,{pixels:K,data:K}))),this;let i=typeof HTMLVideoElement<\"u\"&&r instanceof HTMLVideoElement;if(i&&r.readyStatethis.initialize(t)),this;let{pixels:s=null,format:n=6408,border:o=0,recreate:c=!1,parameters:f={},pixelStore:_={},textureUnit:w=void 0}=t;r||(r=s);let{width:I,height:R,dataFormat:N,type:j,compressed:Q=!1,mipmaps:et=!0}=t,{depth:Y=0}=t;return{width:I,height:R,compressed:Q,dataFormat:N,type:j}=this._deduceParameters({format:n,type:j,dataFormat:N,compressed:Q,data:r,width:I,height:R}),this.width=I,this.height=R,this.depth=Y,this.format=n,this.type=j,this.dataFormat=N,this.border=o,this.textureUnit=w,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),et&&this._isNPOT()&&(je.warn(\"texture: \".concat(this,\" is Non-Power-Of-Two, disabling mipmaping\"))(),et=!1,this._updateForNPOT(f)),this.mipmaps=et,this.setImageData({data:r,width:I,height:R,depth:Y,format:n,type:j,dataFormat:N,border:o,mipmaps:et,parameters:_,compressed:Q}),et&&this.generateMipmap(),this.setParameters(f),c&&(this.data=r),i&&(this._video={video:r,parameters:f,lastTime:r.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?r.currentTime:-1}),this}update(){if(this._video){let{video:t,parameters:r,lastTime:i}=this._video;if(i===t.currentTime||t.readyState0&&arguments[0]!==void 0?arguments[0]:{};return this._isNPOT()?(je.warn(\"texture: \".concat(this,\" is Non-Power-Of-Two, disabling mipmaping\"))(),this):(this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),Sn(this.gl,t,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this)}setImageData(t){this._trackDeallocatedMemory(\"Texture\");let{target:r=this.target,pixels:i=null,level:s=0,format:n=this.format,border:o=this.border,offset:c=0,parameters:f={}}=t,{data:_=null,type:w=this.type,width:I=this.width,height:R=this.height,dataFormat:N=this.dataFormat,compressed:j=!1}=t;_||(_=i),{type:w,dataFormat:N,compressed:j,width:I,height:R}=this._deduceParameters({format:n,type:w,dataFormat:N,compressed:j,data:_,width:I,height:R});let{gl:Q}=this;Q.bindTexture(this.target,this.handle);let et=null;({data:_,dataType:et}=this._getDataType({data:_,compressed:j}));let Y,K=0;if(Sn(this.gl,f,()=>{switch(et){case\"null\":Q.texImage2D(r,s,n,I,R,o,N,w,_);break;case\"typed-array\":Q.texImage2D(r,s,n,I,R,o,N,w,_,c);break;case\"buffer\":Y=qn(Q),Y.bindBuffer(35052,_.handle||_),Y.texImage2D(r,s,n,I,R,o,N,w,c),Y.bindBuffer(35052,null);break;case\"browser-object\":hr(Q)?Q.texImage2D(r,s,n,I,R,o,N,w,_):Q.texImage2D(r,s,n,N,w,_);break;case\"compressed\":for(let[J,ut]of _.entries())Q.compressedTexImage2D(r,J,ut.format,ut.width,ut.height,o,ut.data),K+=ut.levelSize;break;default:ye(!1,\"Unknown image data type\")}}),et===\"compressed\")this._trackAllocatedMemory(K,\"Texture\");else if(_&&_.byteLength)this._trackAllocatedMemory(_.byteLength,\"Texture\");else{let J=iE[this.dataFormat]||4,ut=nE[this.type]||1;this._trackAllocatedMemory(this.width*this.height*J*ut,\"Texture\")}return this.loaded=!0,this}setSubImageData(t){let{target:r=this.target,pixels:i=null,data:s=null,x:n=0,y:o=0,width:c=this.width,height:f=this.height,level:_=0,format:w=this.format,type:I=this.type,dataFormat:R=this.dataFormat,compressed:N=!1,offset:j=0,border:Q=this.border,parameters:et={}}=t;if({type:I,dataFormat:R,compressed:N,width:c,height:f}=this._deduceParameters({format:w,type:I,dataFormat:R,compressed:N,data:s,width:c,height:f}),ye(this.depth===0,\"texSubImage not supported for 3D textures\"),s||(s=i),s&&s.data){let Y=s;s=Y.data,c=Y.shape[0],f=Y.shape[1]}s instanceof Fr&&(s=s.handle),this.gl.bindTexture(this.target,this.handle),Sn(this.gl,et,()=>{if(N)this.gl.compressedTexSubImage2D(r,_,n,o,c,f,w,s);else if(s===null)this.gl.texSubImage2D(r,_,n,o,c,f,R,I,null);else if(ArrayBuffer.isView(s))this.gl.texSubImage2D(r,_,n,o,c,f,R,I,s,j);else if(s instanceof BV){let Y=qn(this.gl);Y.bindBuffer(35052,s),Y.texSubImage2D(r,_,n,o,c,f,R,I,j),Y.bindBuffer(35052,null)}else hr(this.gl)?qn(this.gl).texSubImage2D(r,_,n,o,c,f,R,I,s):this.gl.texSubImage2D(r,_,n,o,R,I,s)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})\")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit,{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,this.handle),t}unbind(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit,{gl:r}=this;return t!==void 0&&(this.textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.target,null),t}_getDataType(t){let{data:r,compressed:i=!1}=t;return i?{data:r,dataType:\"compressed\"}:r===null?{data:r,dataType:\"null\"}:ArrayBuffer.isView(r)?{data:r,dataType:\"typed-array\"}:r instanceof Fr?{data:r.handle,dataType:\"buffer\"}:r instanceof BV?{data:r,dataType:\"buffer\"}:{data:r,dataType:\"browser-object\"}}_deduceParameters(t){let{format:r,data:i}=t,{width:s,height:n,dataFormat:o,type:c,compressed:f}=t,_=rE[r];return o=o||_&&_.dataFormat,c=c||_&&_.types[0],f=f||_&&_.compressed,{width:s,height:n}=this._deduceImageSize(i,s,n),{dataFormat:o,type:c,compressed:f,width:s,height:n,format:r,data:i}}_deduceImageSize(t,r,i){let s;return typeof ImageData<\"u\"&&t instanceof ImageData?s={width:t.width,height:t.height}:typeof HTMLImageElement<\"u\"&&t instanceof HTMLImageElement?s={width:t.naturalWidth,height:t.naturalHeight}:typeof HTMLCanvasElement<\"u\"&&t instanceof HTMLCanvasElement?s={width:t.width,height:t.height}:typeof ImageBitmap<\"u\"&&t instanceof ImageBitmap?s={width:t.width,height:t.height}:typeof HTMLVideoElement<\"u\"&&t instanceof HTMLVideoElement?s={width:t.videoWidth,height:t.videoHeight}:t?s={width:r,height:i}:s={width:r>=0?r:1,height:i>=0?i:1},ye(s,\"Could not deduced texture size\"),ye(r===void 0||s.width===r,\"Deduced texture width does not match supplied width\"),ye(i===void 0||s.height===i,\"Deduced texture height does not match supplied height\"),s}_createHandle(){return this.gl.createTexture()}_deleteHandle(){this.gl.deleteTexture(this.handle),this._trackDeallocatedMemory(\"Texture\")}_getParameter(t){switch(t){case 4096:return this.width;case 4097:return this.height;default:this.gl.bindTexture(this.target,this.handle);let r=this.gl.getTexParameter(this.target,t);return this.gl.bindTexture(this.target,null),r}}_setParameter(t,r){switch(this.gl.bindTexture(this.target,this.handle),r=this._getNPOTParam(t,r),t){case 33082:case 33083:this.gl.texParameterf(this.handle,t,r);break;case 4096:case 4097:ye(!1);break;default:this.gl.texParameteri(this.target,t,r);break}return this.gl.bindTexture(this.target,null),this}_isNPOT(){return hr(this.gl)||!this.width||!this.height?!1:!aR(this.width)||!aR(this.height)}_updateForNPOT(t){t[this.gl.TEXTURE_MIN_FILTER]===void 0&&(t[this.gl.TEXTURE_MIN_FILTER]=this.gl.LINEAR),t[this.gl.TEXTURE_WRAP_S]===void 0&&(t[this.gl.TEXTURE_WRAP_S]=this.gl.CLAMP_TO_EDGE),t[this.gl.TEXTURE_WRAP_T]===void 0&&(t[this.gl.TEXTURE_WRAP_T]=this.gl.CLAMP_TO_EDGE)}_getNPOTParam(t,r){if(this._isNPOT())switch(t){case 10241:Snt.indexOf(r)===-1&&(r=9729);break;case 10242:case 10243:r!==33071&&(r=33071);break;default:break}return r}};var Tnt=\"\";function FV(e,t){return ye(typeof e==\"string\"),e=Tnt+e,new Promise((r,i)=>{try{let s=new Image;s.onload=()=>r(s),s.onerror=()=>i(new Error(\"Could not load image \".concat(e,\".\"))),s.crossOrigin=t&&t.crossOrigin||\"anonymous\",s.src=e}catch(s){i(s)}})}var pi=class extends tl{get[Symbol.toStringTag](){return\"Texture2D\"}static isSupported(t,r){return tl.isSupported(t,r)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};ep(t),(r instanceof Promise||typeof r==\"string\")&&(r={data:r}),typeof r.data==\"string\"&&(r=Object.assign({},r,{data:FV(r.data)})),super(t,Object.assign({},r,{target:3553})),this.initialize(r),Object.seal(this)}};var lR=[34069,34070,34071,34072,34073,34074],q0=class extends tl{get[Symbol.toStringTag](){return\"TextureCube\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};ep(t),super(t,Object.assign({},r,{target:34067})),this.initialize(r),Object.seal(this)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{mipmaps:r=!0,parameters:i={}}=t;return this.opts=t,this.setCubeMapImageData(t).then(()=>{this.loaded=!0,r&&this.generateMipmap(t),this.setParameters(i)}),this}subImage(t){let{face:r,data:i,x:s=0,y:n=0,mipmapLevel:o=0}=t;return this._subImage({target:r,data:i,x:s,y:n,mipmapLevel:o})}async setCubeMapImageData(t){let{width:r,height:i,pixels:s,data:n,border:o=0,format:c=6408,type:f=5121}=t,{gl:_}=this,w=s||n,I=await Promise.all(lR.map(R=>{let N=w[R];return Promise.all(Array.isArray(N)?N:[N])}));this.bind(),lR.forEach((R,N)=>{I[N].length>1&&this.opts.mipmaps!==!1&&je.warn(\"\".concat(this.id,\" has mipmap and multiple LODs.\"))(),I[N].forEach((j,Q)=>{r&&i?_.texImage2D(R,Q,c,r,i,o,c,f,j):_.texImage2D(R,Q,c,c,f,j)})}),this.unbind()}setImageDataForFace(t){let{face:r,width:i,height:s,pixels:n,data:o,border:c=0,format:f=6408,type:_=5121}=t,{gl:w}=this,I=n||o;return this.bind(),I instanceof Promise?I.then(R=>this.setImageDataForFace(Object.assign({},t,{face:r,data:R,pixels:R}))):this.width||this.height?w.texImage2D(r,0,f,i,s,c,f,_,I):w.texImage2D(r,0,f,f,_,I),this}};q0.FACES=lR;var vy=class extends tl{get[Symbol.toStringTag](){return\"Texture3D\"}static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(t),r=Object.assign({depth:1},r,{target:32879,unpackFlipY:!1}),super(t,r),this.initialize(r),Object.seal(this)}setImageData(t){let{level:r=0,dataFormat:i=6408,width:s,height:n,depth:o=1,border:c=0,format:f,type:_=5121,offset:w=0,data:I,parameters:R={}}=t;if(this._trackDeallocatedMemory(\"Texture\"),this.gl.bindTexture(this.target,this.handle),Sn(this.gl,R,()=>{ArrayBuffer.isView(I)&&this.gl.texImage3D(this.target,r,i,s,n,o,c,f,_,I),I instanceof Fr&&(this.gl.bindBuffer(35052,I.handle),this.gl.texImage3D(this.target,r,i,s,n,o,c,f,_,w))}),I&&I.byteLength)this._trackAllocatedMemory(I.byteLength,\"Texture\");else{let N=iE[this.dataFormat]||4,j=nE[this.type]||1;this._trackAllocatedMemory(this.width*this.height*this.depth*N*j,\"Texture\")}return this.loaded=!0,this}};var Z0=\"EXT_color_buffer_float\",cR={33189:{bpp:2},33190:{gl2:!0,bpp:3},36012:{gl2:!0,bpp:4},36168:{bpp:1},34041:{bpp:4},35056:{gl2:!0,bpp:4},36013:{gl2:!0,bpp:5},32854:{bpp:2},36194:{bpp:2},32855:{bpp:2},33321:{gl2:!0,bpp:1},33330:{gl2:!0,bpp:1},33329:{gl2:!0,bpp:1},33332:{gl2:!0,bpp:2},33331:{gl2:!0,bpp:2},33334:{gl2:!0,bpp:4},33333:{gl2:!0,bpp:4},33323:{gl2:!0,bpp:2},33336:{gl2:!0,bpp:2},33335:{gl2:!0,bpp:2},33338:{gl2:!0,bpp:4},33337:{gl2:!0,bpp:4},33340:{gl2:!0,bpp:8},33339:{gl2:!0,bpp:8},32849:{gl2:!0,bpp:3},32856:{gl2:!0,bpp:4},32857:{gl2:!0,bpp:4},36220:{gl2:!0,bpp:4},36238:{gl2:!0,bpp:4},36975:{gl2:!0,bpp:4},36214:{gl2:!0,bpp:8},36232:{gl2:!0,bpp:8},36226:{gl2:!0,bpp:16},36208:{gl2:!0,bpp:16},33325:{gl2:Z0,bpp:2},33327:{gl2:Z0,bpp:4},34842:{gl2:Z0,bpp:8},33326:{gl2:Z0,bpp:4},33328:{gl2:Z0,bpp:8},34836:{gl2:Z0,bpp:16},35898:{gl2:Z0,bpp:4}};function Mnt(e,t,r){let i=r[t];if(!i)return!1;let s=hr(e)&&i.gl2||i.gl1;return typeof s==\"string\"?e.getExtension(s):s}var el=class extends $s{get[Symbol.toStringTag](){return\"Renderbuffer\"}static isSupported(t){let{format:r}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{format:null};return!r||Mnt(t,r,cR)}static getSamplesForFormat(t,r){let{format:i}=r;return t.getInternalformatParameter(36161,i,32937)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.initialize(r),Object.seal(this)}initialize(t){let{format:r,width:i=1,height:s=1,samples:n=0}=t;return ye(r,\"Needs format\"),this._trackDeallocatedMemory(),this.gl.bindRenderbuffer(36161,this.handle),n!==0&&hr(this.gl)?this.gl.renderbufferStorageMultisample(36161,n,r,i,s):this.gl.renderbufferStorage(36161,r,i,s),this.format=r,this.width=i,this.height=s,this.samples=n,this._trackAllocatedMemory(this.width*this.height*(this.samples||1)*cR[this.format].bpp),this}resize(t){let{width:r,height:i}=t;return r!==this.width||i!==this.height?this.initialize({width:r,height:i,format:this.format,samples:this.samples}):this}_createHandle(){return this.gl.createRenderbuffer()}_deleteHandle(){this.gl.deleteRenderbuffer(this.handle),this._trackDeallocatedMemory()}_bindHandle(t){this.gl.bindRenderbuffer(36161,t)}_syncHandle(t){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}_getParameter(t){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,t)}};var Ent=256,Pnt=1024,Int=16384,zV=6144,NV=6145,UV=6146,VV=34041,jV=\"clear: bad arguments\";function Wf(e){let{framebuffer:t=null,color:r=null,depth:i=null,stencil:s=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={};t&&(n.framebuffer=t);let o=0;r&&(o|=Int,r!==!0&&(n.clearColor=r)),i&&(o|=Ent,i!==!0&&(n.clearDepth=i)),s&&(o|=Pnt,i!==!0&&(n.clearStencil=i)),ye(o!==0,jV),Sn(e,n,()=>{e.clear(o)})}function uR(e){let{framebuffer:t=null,buffer:r=zV,drawBuffer:i=0,value:s=[0,0,0,0]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(e),Sn(e,{framebuffer:t},()=>{switch(r){case zV:switch(s.constructor){case Int32Array:e.clearBufferiv(r,i,s);break;case Uint32Array:e.clearBufferuiv(r,i,s);break;case Float32Array:default:e.clearBufferfv(r,i,s)}break;case NV:e.clearBufferfv(NV,0,[s]);break;case UV:e.clearBufferiv(UV,0,[s]);break;case VV:let[n,o]=s;e.clearBufferfi(VV,0,n,o);break;default:ye(!1,jV)}})}function GV(e){switch(e){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return ye(!1),0}}function Rh(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{sourceX:r=0,sourceY:i=0,sourceFormat:s=6408}=t,{sourceAttachment:n=36064,target:o=null,sourceWidth:c,sourceHeight:f,sourceType:_}=t,{framebuffer:w,deleteFramebuffer:I}=WV(e);ye(w);let{gl:R,handle:N,attachments:j}=w;c=c||w.width,f=f||w.height,n===36064&&N===null&&(n=1028),ye(j[n]),_=_||j[n].type,o=Cnt(o,_,s,c,f),_=_||ab(o);let Q=R.bindFramebuffer(36160,N);return R.readPixels(r,i,c,f,s,_,o),R.bindFramebuffer(36160,Q||null),I&&w.delete(),o}function sE(e){let{sourceAttachment:t=36064,targetMaxHeight:r=Number.MAX_SAFE_INTEGER}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=Rh(e,{sourceAttachment:t}),{width:s,height:n}=e;for(;n>r;)({data:i,width:s,height:n}=LV({data:i,width:s,height:n}));CV({data:i,width:s,height:n});let o=document.createElement(\"canvas\");o.width=s,o.height=n;let c=o.getContext(\"2d\"),f=c.createImageData(s,n);return f.data.set(i),c.putImageData(f,0,0),o.toDataURL()}function oE(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{sourceX:i=0,sourceY:s=0,targetMipmaplevel:n=0,targetInternalFormat:o=6408}=r,{targetX:c,targetY:f,targetZ:_,width:w,height:I}=r,{framebuffer:R,deleteFramebuffer:N}=WV(e);ye(R);let{gl:j,handle:Q}=R,et=typeof c<\"u\"||typeof f<\"u\"||typeof _<\"u\";c=c||0,f=f||0,_=_||0;let Y=j.bindFramebuffer(36160,Q);ye(t);let K=null;if(t instanceof tl&&(K=t,w=Number.isFinite(w)?w:K.width,I=Number.isFinite(I)?I:K.height,K.bind(0),t=K.target),!et)j.copyTexImage2D(t,n,o,i,s,w,I,0);else switch(t){case 3553:case 34067:j.copyTexSubImage2D(t,n,c,f,i,s,w,I);break;case 35866:case 32879:qn(j).copyTexSubImage3D(t,n,c,f,_,i,s,w,I);break;default:}return K&&K.unbind(),j.bindFramebuffer(36160,Y||null),N&&R.delete(),K}function WV(e){return e instanceof yi?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:HV(e),deleteFramebuffer:!0}}function Cnt(e,t,r,i,s){if(e)return e;t=t||5121;let n=HA(t,{clamped:!1}),o=GV(r);return new n(i*s*o)}var Pi={WEBGL2:\"WEBGL2\",VERTEX_ARRAY_OBJECT:\"VERTEX_ARRAY_OBJECT\",TIMER_QUERY:\"TIMER_QUERY\",INSTANCED_RENDERING:\"INSTANCED_RENDERING\",MULTIPLE_RENDER_TARGETS:\"MULTIPLE_RENDER_TARGETS\",ELEMENT_INDEX_UINT32:\"ELEMENT_INDEX_UINT32\",BLEND_EQUATION_MINMAX:\"BLEND_EQUATION_MINMAX\",FLOAT_BLEND:\"FLOAT_BLEND\",COLOR_ENCODING_SRGB:\"COLOR_ENCODING_SRGB\",TEXTURE_DEPTH:\"TEXTURE_DEPTH\",TEXTURE_FLOAT:\"TEXTURE_FLOAT\",TEXTURE_HALF_FLOAT:\"TEXTURE_HALF_FLOAT\",TEXTURE_FILTER_LINEAR_FLOAT:\"TEXTURE_FILTER_LINEAR_FLOAT\",TEXTURE_FILTER_LINEAR_HALF_FLOAT:\"TEXTURE_FILTER_LINEAR_HALF_FLOAT\",TEXTURE_FILTER_ANISOTROPIC:\"TEXTURE_FILTER_ANISOTROPIC\",COLOR_ATTACHMENT_RGBA32F:\"COLOR_ATTACHMENT_RGBA32F\",COLOR_ATTACHMENT_FLOAT:\"COLOR_ATTACHMENT_FLOAT\",COLOR_ATTACHMENT_HALF_FLOAT:\"COLOR_ATTACHMENT_HALF_FLOAT\",GLSL_FRAG_DATA:\"GLSL_FRAG_DATA\",GLSL_FRAG_DEPTH:\"GLSL_FRAG_DEPTH\",GLSL_DERIVATIVES:\"GLSL_DERIVATIVES\",GLSL_TEXTURE_LOD:\"GLSL_TEXTURE_LOD\"};function Lnt(e){let t=new pi(e,{format:6408,type:5126,dataFormat:6408}),r=new yi(e,{id:\"test-framebuffer\",check:!1,attachments:{36064:t}}),i=r.getStatus();return t.delete(),r.delete(),i===36053}var hR={[Pi.WEBGL2]:[!1,!0],[Pi.VERTEX_ARRAY_OBJECT]:[\"OES_vertex_array_object\",!0],[Pi.TIMER_QUERY]:[\"EXT_disjoint_timer_query\",\"EXT_disjoint_timer_query_webgl2\"],[Pi.INSTANCED_RENDERING]:[\"ANGLE_instanced_arrays\",!0],[Pi.MULTIPLE_RENDER_TARGETS]:[\"WEBGL_draw_buffers\",!0],[Pi.ELEMENT_INDEX_UINT32]:[\"OES_element_index_uint\",!0],[Pi.BLEND_EQUATION_MINMAX]:[\"EXT_blend_minmax\",!0],[Pi.FLOAT_BLEND]:[\"EXT_float_blend\"],[Pi.COLOR_ENCODING_SRGB]:[\"EXT_sRGB\",!0],[Pi.TEXTURE_DEPTH]:[\"WEBGL_depth_texture\",!0],[Pi.TEXTURE_FLOAT]:[\"OES_texture_float\",!0],[Pi.TEXTURE_HALF_FLOAT]:[\"OES_texture_half_float\",!0],[Pi.TEXTURE_FILTER_LINEAR_FLOAT]:[\"OES_texture_float_linear\"],[Pi.TEXTURE_FILTER_LINEAR_HALF_FLOAT]:[\"OES_texture_half_float_linear\"],[Pi.TEXTURE_FILTER_ANISOTROPIC]:[\"EXT_texture_filter_anisotropic\"],[Pi.COLOR_ATTACHMENT_RGBA32F]:[Lnt,\"EXT_color_buffer_float\"],[Pi.COLOR_ATTACHMENT_FLOAT]:[!1,\"EXT_color_buffer_float\"],[Pi.COLOR_ATTACHMENT_HALF_FLOAT]:[\"EXT_color_buffer_half_float\"],[Pi.GLSL_FRAG_DATA]:[\"WEBGL_draw_buffers\",!0],[Pi.GLSL_FRAG_DEPTH]:[\"EXT_frag_depth\",!0],[Pi.GLSL_DERIVATIVES]:[\"OES_standard_derivatives\",!0],[Pi.GLSL_TEXTURE_LOD]:[\"EXT_shader_texture_lod\",!0]};var knt=2;function Y0(e,t){return Dh(e,t)}function Dh(e,t){return t=Array.isArray(t)?t:[t],t.every(r=>qV(e,r))}function aE(e){e.luma=e.luma||{},e.luma.caps=e.luma.caps||{};for(let t in hR)e.luma.caps[t]===void 0&&(e.luma.caps[t]=qV(e,t));return e.luma.caps}function qV(e,t){return e.luma=e.luma||{},e.luma.caps=e.luma.caps||{},e.luma.caps[t]===void 0&&(e.luma.caps[t]=Rnt(e,t)),e.luma.caps[t]||je.log(knt,\"Feature: \".concat(t,\" not supported\"))(),e.luma.caps[t]}function Rnt(e,t){let r=hR[t];ye(r,t);let i,s=hr(e)&&r[1]||r[0];if(typeof s==\"function\")i=s(e);else if(Array.isArray(s)){i=!0;for(let n of s)i=i&&!!e.getExtension(n)}else typeof s==\"string\"?i=!!e.getExtension(s):typeof s==\"boolean\"?i=s:ye(!1);return i}var ZV=\"Multiple render targets not supported\",yi=class e extends $s{get[Symbol.toStringTag](){return\"Framebuffer\"}static isSupported(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{colorBufferFloat:i,colorBufferHalfFloat:s}=r,n=!0;return i&&(n=!!(t.getExtension(\"EXT_color_buffer_float\")||t.getExtension(\"WEBGL_color_buffer_float\")||t.getExtension(\"OES_texture_float\"))),s&&(n=n&&!!(t.getExtension(\"EXT_color_buffer_float\")||t.getExtension(\"EXT_color_buffer_half_float\"))),n}static getDefaultFramebuffer(t){return t.luma=t.luma||{},t.luma.defaultFramebuffer=t.luma.defaultFramebuffer||new e(t,{id:\"default-framebuffer\",handle:null,attachments:{}}),t.luma.defaultFramebuffer}get MAX_COLOR_ATTACHMENTS(){let t=qn(this.gl);return t.getParameter(t.MAX_COLOR_ATTACHMENTS)}get MAX_DRAW_BUFFERS(){let t=qn(this.gl);return t.getParameter(t.MAX_DRAW_BUFFERS)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.width=null,this.height=null,this.attachments={},this.readBuffer=36064,this.drawBuffers=[36064],this.ownResources=[],this.initialize(r),Object.seal(this)}get color(){return this.attachments[36064]||null}get texture(){return this.attachments[36064]||null}get depth(){return this.attachments[36096]||this.attachments[33306]||null}get stencil(){return this.attachments[36128]||this.attachments[33306]||null}initialize(t){let{width:r=1,height:i=1,attachments:s=null,color:n=!0,depth:o=!0,stencil:c=!1,check:f=!0,readBuffer:_=void 0,drawBuffers:w=void 0}=t;if(ye(r>=0&&i>=0,\"Width and height need to be integers\"),this.width=r,this.height=i,s)for(let I in s){let R=s[I];(Array.isArray(R)?R[0]:R).resize({width:r,height:i})}else s=this._createDefaultAttachments(n,o,c,r,i);this.update({clearAttachments:!0,attachments:s,readBuffer:_,drawBuffers:w}),s&&f&&this.checkStatus()}delete(){for(let t of this.ownResources)t.delete();return super.delete(),this}update(t){let{attachments:r={},readBuffer:i,drawBuffers:s,clearAttachments:n=!1,resizeAttachments:o=!0}=t;this.attach(r,{clearAttachments:n,resizeAttachments:o});let{gl:c}=this,f=c.bindFramebuffer(36160,this.handle);return i&&this._setReadBuffer(i),s&&this._setDrawBuffers(s),c.bindFramebuffer(36160,f||null),this}resize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{width:r,height:i}=t;if(this.handle===null)return ye(r===void 0&&i===void 0),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;r===void 0&&(r=this.gl.drawingBufferWidth),i===void 0&&(i=this.gl.drawingBufferHeight),r!==this.width&&i!==this.height&&je.log(2,\"Resizing framebuffer \".concat(this.id,\" to \").concat(r,\"x\").concat(i))();for(let s in this.attachments)this.attachments[s].resize({width:r,height:i});return this.width=r,this.height=i,this}attach(t){let{clearAttachments:r=!1,resizeAttachments:i=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s={};r&&Object.keys(this.attachments).forEach(o=>{s[o]=null}),Object.assign(s,t);let n=this.gl.bindFramebuffer(36160,this.handle);for(let o in s){ye(o!==void 0,\"Misspelled framebuffer binding point?\");let c=Number(o),f=s[c],_=f;if(!_)this._unattach(c);else if(_ instanceof el)this._attachRenderbuffer({attachment:c,renderbuffer:_});else if(Array.isArray(f)){let[w,I=0,R=0]=f;_=w,this._attachTexture({attachment:c,texture:w,layer:I,level:R})}else this._attachTexture({attachment:c,texture:_,layer:0,level:0});i&&_&&_.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,n||null),Object.assign(this.attachments,t),Object.keys(this.attachments).filter(o=>!this.attachments[o]).forEach(o=>{delete this.attachments[o]})}checkStatus(){let{gl:t}=this,r=this.getStatus();if(r!==36053)throw new Error(Ont(r));return this}getStatus(){let{gl:t}=this,r=t.bindFramebuffer(36160,this.handle),i=t.checkFramebufferStatus(36160);return t.bindFramebuffer(36160,r||null),i}clear(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{color:r,depth:i,stencil:s,drawBuffers:n=[]}=t,o=this.gl.bindFramebuffer(36160,this.handle);return(r||i||s)&&Wf(this.gl,{color:r,depth:i,stencil:s}),n.forEach((c,f)=>{uR(this.gl,{drawBuffer:f,value:c})}),this.gl.bindFramebuffer(36160,o||null),this}readPixels(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)\")(),null}readPixelsToBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)\")(),null}copyToDataUrl(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)\")(),null}copyToImage(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)\")(),null}copyToTexture(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})\")(),null}blit(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.error(\"Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)\")(),null}invalidate(t){let{attachments:r=[],x:i=0,y:s=0,width:n,height:o}=t,c=qn(this.gl),f=c.bindFramebuffer(36008,this.handle);return i===0&&s===0&&n===void 0&&o===void 0?c.invalidateFramebuffer(36008,r):c.invalidateFramebuffer(36008,r,i,s,n,o),c.bindFramebuffer(36008,f),this}getAttachmentParameter(t,r,i){let s=this._getAttachmentParameterFallback(r);return s===null&&(this.gl.bindFramebuffer(36160,this.handle),s=this.gl.getFramebufferAttachmentParameter(36160,t,r),this.gl.bindFramebuffer(36160,null)),i&&s>1e3&&(s=ku(this.gl,s)),s}getAttachmentParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:36064,r=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[],s={};for(let n of i){let o=r?ku(this.gl,n):n;s[o]=this.getAttachmentParameter(t,n,r)}return s}getParameters(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,r=Object.keys(this.attachments),i={};for(let s of r){let n=Number(s),o=t?ku(this.gl,n):n;i[o]=this.getAttachmentParameters(n,t)}return i}show(){return typeof window<\"u\"&&window.open(sE(this),\"luma-debug-texture\"),this}log(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"\";if(t>je.level||typeof window>\"u\")return this;r=r||\"Framebuffer \".concat(this.id);let i=sE(this,{targetMaxHeight:100});return je.image({logLevel:t,message:r,image:i},r)(),this}bind(){let{target:t=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(t,this.handle),this}unbind(){let{target:t=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(t,null),this}_createDefaultAttachments(t,r,i,s,n){let o=null;return t&&(o=o||{},o[36064]=new pi(this.gl,{id:\"\".concat(this.id,\"-color0\"),pixels:null,format:6408,type:5121,width:s,height:n,mipmaps:!1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.ownResources.push(o[36064])),r&&i?(o=o||{},o[33306]=new el(this.gl,{id:\"\".concat(this.id,\"-depth-stencil\"),format:35056,width:s,height:111}),this.ownResources.push(o[33306])):r?(o=o||{},o[36096]=new el(this.gl,{id:\"\".concat(this.id,\"-depth\"),format:33189,width:s,height:n}),this.ownResources.push(o[36096])):i&&ye(!1),o}_unattach(t){let r=this.attachments[t];r&&(r instanceof el?this.gl.framebufferRenderbuffer(36160,t,36161,null):this.gl.framebufferTexture2D(36160,t,3553,null,0),delete this.attachments[t])}_attachRenderbuffer(t){let{attachment:r=36064,renderbuffer:i}=t,{gl:s}=this;s.framebufferRenderbuffer(36160,r,36161,i.handle),this.attachments[r]=i}_attachTexture(t){let{attachment:r=36064,texture:i,layer:s,level:n}=t,{gl:o}=this;switch(o.bindTexture(i.target,i.handle),i.target){case 35866:case 32879:qn(o).framebufferTextureLayer(36160,r,i.target,n,s);break;case 34067:let f=Dnt(s);o.framebufferTexture2D(36160,r,f,i.handle,n);break;case 3553:o.framebufferTexture2D(36160,r,3553,i.handle,n);break;default:ye(!1,\"Illegal texture type\")}o.bindTexture(i.target,null),this.attachments[r]=i}_setReadBuffer(t){let r=Y4(this.gl);r?r.readBuffer(t):ye(t===36064||t===1029,ZV),this.readBuffer=t}_setDrawBuffers(t){let{gl:r}=this,i=qn(r);if(i)i.drawBuffers(t);else{let s=r.getExtension(\"WEBGL_draw_buffers\");s?s.drawBuffersWEBGL(t):ye(t.length===1&&(t[0]===36064||t[0]===1029),ZV)}this.drawBuffers=t}_getAttachmentParameterFallback(t){let r=aE(this.gl);switch(t){case 36052:return r.WEBGL2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return r.WEBGL2?null:8;case 33297:return r.WEBGL2?null:5125;case 33296:return!r.WEBGL2&&!r.EXT_sRGB?9729:null;default:return null}}_createHandle(){return this.gl.createFramebuffer()}_deleteHandle(){this.gl.deleteFramebuffer(this.handle)}_bindHandle(t){return this.gl.bindFramebuffer(36160,t)}};function Dnt(e){return e<34069?e+34069:e}function Ont(e){return(yi.STATUS||{})[e]||\"Framebuffer error \".concat(e)}var Bnt=[36049,36048,33296,33298,33299,33300,33301,33302,33303];yi.ATTACHMENT_PARAMETERS=Bnt;function lE(e,t){ye(e instanceof pi||e instanceof q0||e instanceof vy);let r=e.constructor,{gl:i,width:s,height:n,format:o,type:c,dataFormat:f,border:_,mipmaps:w}=e,I=Object.assign({width:s,height:n,format:o,type:c,dataFormat:f,border:_,mipmaps:w},t);return new r(i,I)}function HV(e,t){let{gl:r,width:i,height:s,id:n}=e;return new yi(r,Object.assign({},t,{id:\"framebuffer-for-\".concat(n),width:i,height:s,attachments:{36064:e}}))}function qA(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"unnamed\",r=/#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/,i=e.match(r);return i?i[1]:t}function fR(e){switch(e){case 35632:return\"fragment\";case 35633:return\"vertex\";default:return\"unknown type\"}}function dR(e,t,r,i){let s=e.split(/\\r?\\n/),n={},o={},c=i||qA(t)||\"(unnamed)\",f=\"\".concat(fR(r),\" shader \").concat(c);for(let w=0;w1&&arguments[1]!==void 0?arguments[1]:1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:\": \",i=e.split(/\\r?\\n/),s=String(i.length+t-1).length;return i.map((n,o)=>{let c=String(o+t),f=c.length;return QV(c,s-f)+r+n})}function QV(e,t){let r=\"\";for(let i=0;i=2&&r[0]===\"#version\"){let i=parseInt(r[1],10);Number.isFinite(i)&&(t=i)}return t}var znt=\"Shader: GLSL source code must be a JavaScript string\",cE=class e extends $s{get[Symbol.toStringTag](){return\"Shader\"}static getTypeName(t){switch(t){case 35633:return\"vertex-shader\";case 35632:return\"fragment-shader\";default:return ye(!1),\"unknown\"}}constructor(t,r){ep(t),ye(typeof r.source==\"string\",znt);let i=qA(r.source,null)||r.id||ea(\"unnamed \".concat(e.getTypeName(r.shaderType)));super(t,{id:i}),this.shaderType=r.shaderType,this.source=r.source,this.initialize(r)}initialize(t){let{source:r}=t,i=qA(r,null);i&&(this.id=ea(i)),this._compile(r)}getParameter(t){return this.gl.getShaderParameter(this.handle,t)}toString(){return\"\".concat(e.getTypeName(this.shaderType),\":\").concat(this.id)}getName(){return qA(this.source)||\"unnamed-shader\"}getSource(){return this.gl.getShaderSource(this.handle)}getTranslatedSource(){let t=this.gl.getExtension(\"WEBGL_debug_shaders\");return t?t.getTranslatedShaderSource(this.handle):\"No translated source available. WEBGL_debug_shaders not implemented\"}_compile(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.source;if(t.startsWith(\"#version \")||(t=`#version 100\n`.concat(t)),this.source=t,this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){let i=this.gl.getShaderInfoLog(this.handle),{shaderName:s,errors:n,warnings:o}=dR(i,this.source,this.shaderType,this.id);throw je.error(\"GLSL compilation errors in \".concat(s,`\n`).concat(n))(),je.warn(\"GLSL compilation warnings in \".concat(s,`\n`).concat(o))(),new Error(\"GLSL compilation errors in \".concat(s))}}_deleteHandle(){this.gl.deleteShader(this.handle)}_getOptsFromHandle(){return{type:this.getParameter(35663),source:this.getSource()}}},Q0=class extends cE{get[Symbol.toStringTag](){return\"VertexShader\"}constructor(t,r){typeof r==\"string\"&&(r={source:r}),super(t,Object.assign({},r,{shaderType:35633}))}_createHandle(){return this.gl.createShader(35633)}},$0=class extends cE{get[Symbol.toStringTag](){return\"FragmentShader\"}constructor(t,r){typeof r==\"string\"&&(r={source:r}),super(t,Object.assign({},r,{shaderType:35632}))}_createHandle(){return this.gl.createShader(35632)}};var Nnt={5126:Zn.bind(null,\"uniform1fv\",Yc,1,rl),35664:Zn.bind(null,\"uniform2fv\",Yc,2,rl),35665:Zn.bind(null,\"uniform3fv\",Yc,3,rl),35666:Zn.bind(null,\"uniform4fv\",Yc,4,rl),5124:Zn.bind(null,\"uniform1iv\",ZA,1,rl),35667:Zn.bind(null,\"uniform2iv\",ZA,2,rl),35668:Zn.bind(null,\"uniform3iv\",ZA,3,rl),35669:Zn.bind(null,\"uniform4iv\",ZA,4,rl),35670:Zn.bind(null,\"uniform1iv\",ZA,1,rl),35671:Zn.bind(null,\"uniform2iv\",ZA,2,rl),35672:Zn.bind(null,\"uniform3iv\",ZA,3,rl),35673:Zn.bind(null,\"uniform4iv\",ZA,4,rl),35674:Zn.bind(null,\"uniformMatrix2fv\",Yc,4,rp),35675:Zn.bind(null,\"uniformMatrix3fv\",Yc,9,rp),35676:Zn.bind(null,\"uniformMatrix4fv\",Yc,16,rp),35678:_a,35680:_a,5125:Zn.bind(null,\"uniform1uiv\",uE,1,rl),36294:Zn.bind(null,\"uniform2uiv\",uE,2,rl),36295:Zn.bind(null,\"uniform3uiv\",uE,3,rl),36296:Zn.bind(null,\"uniform4uiv\",uE,4,rl),35685:Zn.bind(null,\"uniformMatrix2x3fv\",Yc,6,rp),35686:Zn.bind(null,\"uniformMatrix2x4fv\",Yc,8,rp),35687:Zn.bind(null,\"uniformMatrix3x2fv\",Yc,6,rp),35688:Zn.bind(null,\"uniformMatrix3x4fv\",Yc,12,rp),35689:Zn.bind(null,\"uniformMatrix4x2fv\",Yc,8,rp),35690:Zn.bind(null,\"uniformMatrix4x3fv\",Yc,12,rp),35678:_a,35680:_a,35679:_a,35682:_a,36289:_a,36292:_a,36293:_a,36298:_a,36299:_a,36300:_a,36303:_a,36306:_a,36307:_a,36308:_a,36311:_a},Unt={},Vnt={},jnt={},$V=[0];function pR(e,t,r,i){t===1&&typeof e==\"boolean\"&&(e=e?1:0),Number.isFinite(e)&&($V[0]=e,e=$V);let s=e.length;if(s%t&&je.warn(\"Uniform size should be multiples of \".concat(t),e)(),e instanceof r)return e;let n=i[s];n||(n=new r(s),i[s]=n);for(let o=0;o{let s=e!==i;return s&&(t.uniform1i(r,i),e=i),s}}function Zn(e,t,r,i){let s=null,n=null;return(o,c,f)=>{let _=t(f,r),w=_.length,I=!1;if(s===null)s=new Float32Array(w),n=w,I=!0;else{ye(n===w,\"Uniform length cannot change.\");for(let R=0;R=0&&this._addAttribute(f,n,o,c)}this.attributeInfos.sort((s,n)=>s.location-n.location)}_readVaryingsFromProgram(t){let{gl:r}=t;if(!hr(r))return;let i=r.getProgramParameter(t.handle,35971);for(let s=0;ss.location-n.location)}_addAttribute(t,r,i,s){let{type:n,components:o}=gR(i),c={type:n,size:s*o};this._inferProperties(t,r,c);let f={location:t,name:r,accessor:new Pl(c)};this.attributeInfos.push(f),this.attributeInfosByLocation[t]=f,this.attributeInfosByName[f.name]=f}_inferProperties(t,r,i){/instance/i.test(r)&&(i.divisor=1)}_addVarying(t,r,i,s){let{type:n,components:o}=gR(i),c=new Pl({type:n,size:s*o}),f={location:t,name:r,accessor:c};this.varyingInfos.push(f),this.varyingInfosByName[f.name]=f}};var rj=4,xst=35981,bst=[\"setVertexArray\",\"setAttributes\",\"setBuffers\",\"unsetBuffers\",\"use\",\"getUniformCount\",\"getUniformInfo\",\"getUniformLocation\",\"getUniformValue\",\"getVarying\",\"getFragDataLocation\",\"getAttachedShaders\",\"getAttributeCount\",\"getAttributeLocation\",\"getAttributeInfo\"],ip=class extends $s{get[Symbol.toStringTag](){return\"Program\"}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.stubRemovedMethods(\"Program\",\"v6.0\",bst),this._isCached=!1,this.initialize(r),Object.seal(this),this._setId(r.id)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{hash:r,vs:i,fs:s,varyings:n,bufferMode:o=xst}=t;return this.hash=r||\"\",this.vs=typeof i==\"string\"?new Q0(this.gl,{id:\"\".concat(t.id,\"-vs\"),source:i}):i,this.fs=typeof s==\"string\"?new $0(this.gl,{id:\"\".concat(t.id,\"-fs\"),source:s}):s,ye(this.vs instanceof Q0),ye(this.fs instanceof $0),this.uniforms={},this._textureUniforms={},n&&n.length>0&&(qn(this.gl),this.varyings=n,this.gl2.transformFeedbackVaryings(this.handle,n,o)),this._compileAndLink(),this._readUniformLocationsFromLinkedProgram(),this.configuration=new hb(this),this.setProps(t)}delete(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this._isCached?this:super.delete(t)}setProps(t){return\"uniforms\"in t&&this.setUniforms(t.uniforms),this}draw(t){let{logPriority:r,drawMode:i=4,vertexCount:s,offset:n=0,start:o,end:c,isIndexed:f=!1,indexType:_=5123,instanceCount:w=0,isInstanced:I=w>0,vertexArray:R=null,transformFeedback:N,framebuffer:j,parameters:Q={},uniforms:et,samplers:Y}=t;if((et||Y)&&(je.deprecated(\"Program.draw({uniforms})\",\"Program.setUniforms(uniforms)\")(),this.setUniforms(et||{})),je.priority>=r){let K=j?j.id:\"default\",J=\"mode=\".concat(ku(this.gl,i),\" verts=\").concat(s,\" \")+\"instances=\".concat(w,\" indexType=\").concat(ku(this.gl,_),\" \")+\"isInstanced=\".concat(I,\" isIndexed=\").concat(f,\" \")+\"Framebuffer=\".concat(K);je.log(r,J)()}return ye(R),this.gl.useProgram(this.handle),!this._areTexturesRenderable()||s===0||I&&w===0?!1:(R.bindForDraw(s,w,()=>{if(j!==void 0&&(Q=Object.assign({},Q,{framebuffer:j})),N){let K=ej(i);N.begin(K)}this._bindTextures(),Sn(this.gl,Q,()=>{f&&I?this.gl2.drawElementsInstanced(i,s,_,n,w):f&&hr(this.gl)&&!isNaN(o)&&!isNaN(c)?this.gl2.drawRangeElements(i,o,c,s,_,n):f?this.gl.drawElements(i,s,_,n):I?this.gl2.drawArraysInstanced(i,n,s,w):this.gl.drawArrays(i,n,s)}),N&&N.end()}),!0)}setUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};je.priority>=2&&KV(t,this.id,this._uniformSetters),this.gl.useProgram(this.handle);for(let r in t){let i=t[r],s=this._uniformSetters[r];if(s){let n=i,o=!1;if(n instanceof yi&&(n=n.texture),n instanceof tl)if(o=this.uniforms[r]!==i,o){s.textureIndex===void 0&&(s.textureIndex=this._textureIndexCounter++);let c=n,{textureIndex:f}=s;c.bind(f),n=f,this._textureUniforms[r]=c}else n=s.textureIndex;else this._textureUniforms[r]&&delete this._textureUniforms[r];(s(n)||o)&&JV(this.uniforms,r,i)}}return this}_areTexturesRenderable(){let t=!0;for(let r in this._textureUniforms){let i=this._textureUniforms[r];i.update(),t=t&&i.loaded}return t}_bindTextures(){for(let t in this._textureUniforms){let r=this._uniformSetters[t].textureIndex;this._textureUniforms[t].bind(r)}}_createHandle(){return this.gl.createProgram()}_deleteHandle(){this.gl.deleteProgram(this.handle)}_getOptionsFromHandle(t){let r=this.gl.getAttachedShaders(t),i={};for(let s of r)switch(this.gl.getShaderParameter(this.handle,35663)){case 35633:i.vs=new Q0({handle:s});break;case 35632:i.fs=new $0({handle:s});break;default:}return i}_getParameter(t){return this.gl.getProgramParameter(this.handle,t)}_setId(t){if(!t){let r=this._getName();this.id=ea(r)}}_getName(){let t=this.vs.getName()||this.fs.getName();return t=t.replace(/shader/i,\"\"),t=t?\"\".concat(t,\"-program\"):\"program\",t}_compileAndLink(){let{gl:t}=this;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),je.time(rj,\"linkProgram for \".concat(this._getName()))(),t.linkProgram(this.handle),je.timeEnd(rj,\"linkProgram for \".concat(this._getName()))(),t.debug||je.level>0){if(!t.getProgramParameter(this.handle,35714))throw new Error(\"Error linking: \".concat(t.getProgramInfoLog(this.handle)));if(t.validateProgram(this.handle),!t.getProgramParameter(this.handle,35715))throw new Error(\"Error validating: \".concat(t.getProgramInfoLog(this.handle)))}}_readUniformLocationsFromLinkedProgram(){let{gl:t}=this;this._uniformSetters={},this._uniformCount=this._getParameter(35718);for(let r=0;r1)for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:[],i=hr(t),s=Dh(t,Pi.TIMER_QUERY),n=i||s;for(let o of r)switch(o){case\"queries\":n=n&&i;break;case\"timers\":n=n&&s;break;default:ye(!1)}return n}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(t,r),this.target=null,this._queryPending=!1,this._pollingPromise=null,Object.seal(this)}beginTimeElapsedQuery(){return this.begin(Tst)}beginOcclusionQuery(){let{conservative:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.begin(t?Ist:Pst)}beginTransformFeedbackQuery(){return this.begin(Est)}begin(t){return this._queryPending?this:(this.target=t,this.gl2.beginQuery(this.target,this.handle),this)}end(){return this._queryPending?this:(this.target&&(this.gl2.endQuery(this.target),this.target=null,this._queryPending=!0),this)}isResultAvailable(){if(!this._queryPending)return!1;let t=this.gl2.getQueryParameter(this.handle,Sst);return t&&(this._queryPending=!1),t}isTimerDisjoint(){return this.gl2.getParameter(Mst)}getResult(){return this.gl2.getQueryParameter(this.handle,wst)}getTimerMilliseconds(){return this.getResult()/1e6}createPoll(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Number.POSITIVE_INFINITY;if(this._pollingPromise)return this._pollingPromise;let r=0;return this._pollingPromise=new Promise((i,s)=>{let n=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):r++>t?(s(\"Timed out\"),this._pollingPromise=null):requestAnimationFrame(n)};requestAnimationFrame(n)}),this._pollingPromise}_createHandle(){return e.isSupported(this.gl)?this.gl2.createQuery():null}_deleteHandle(){this.gl2.deleteQuery(this.handle)}};var np=class extends $s{get[Symbol.toStringTag](){return\"TransformFeedback\"}static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};qn(t),super(t,r),this.initialize(r),this.stubRemovedMethods(\"TransformFeedback\",\"v6.0\",[\"pause\",\"resume\"]),Object.seal(this)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.buffers={},this.unused={},this.configuration=null,this.bindOnUse=!0,Gf(this.buffers)||this.bind(()=>this._unbindBuffers()),this.setProps(t),this}setProps(t){\"program\"in t&&(this.configuration=t.program&&t.program.configuration),\"configuration\"in t&&(this.configuration=t.configuration),\"bindOnUse\"in t&&(t=t.bindOnUse),\"buffers\"in t&&this.setBuffers(t.buffers)}setBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.bind(()=>{for(let r in t)this.setBuffer(r,t[r])}),this}setBuffer(t,r){let i=this._getVaryingIndex(t),{buffer:s,byteSize:n,byteOffset:o}=this._getBufferParams(r);return i<0?(this.unused[t]=s,je.warn(\"\".concat(this.id,\" unused varying buffer \").concat(t))(),this):(this.buffers[i]=r,this.bindOnUse||this._bindBuffer(i,s,o,n),this)}begin(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.gl.bindTransformFeedback(36386,this.handle),this._bindBuffers(),this.gl.beginTransformFeedback(t),this}end(){return this.gl.endTransformFeedback(),this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null),this}_getBufferParams(t){let r,i,s;return t instanceof Fr?s=t:(s=t.buffer,i=t.byteSize,r=t.byteOffset),(r!==void 0||i!==void 0)&&(r=r||0,i=i||s.byteLength-r),{buffer:s,byteOffset:r,byteSize:i}}_getVaryingInfo(t){return this.configuration&&this.configuration.getVaryingInfo(t)}_getVaryingIndex(t){if(this.configuration)return this.configuration.getVaryingInfo(t).location;let r=Number(t);return Number.isFinite(r)?r:-1}_bindBuffers(){if(this.bindOnUse)for(let t in this.buffers){let{buffer:r,byteSize:i,byteOffset:s}=this._getBufferParams(this.buffers[t]);this._bindBuffer(t,r,s,i)}}_unbindBuffers(){if(this.bindOnUse)for(let t in this.buffers)this._bindBuffer(t,null)}_bindBuffer(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,s=arguments.length>3?arguments[3]:void 0,n=r&&r.handle;return!n||s===void 0?this.gl.bindBufferBase(35982,t,n):this.gl.bindBufferRange(35982,t,n,i,s),this}_createHandle(){return this.gl.createTransformFeedback()}_deleteHandle(){this.gl.deleteTransformFeedback(this.handle)}_bindHandle(t){this.gl.bindTransformFeedback(36386,this.handle)}};var pE=null;function Cst(e){return(!pE||pE.byteLength1&&arguments[1]!==void 0?arguments[1]:{}).constantAttributeZero?hr(t)||dy()===\"Chrome\":!0}static getDefaultArray(t){return t.luma=t.luma||{},t.luma.defaultVertexArray||(t.luma.defaultVertexArray=new e(t,{handle:null,isDefaultArray:!0})),t.luma.defaultVertexArray}static getMaxAttributes(t){return e.MAX_ATTRIBUTES=e.MAX_ATTRIBUTES||t.getParameter(34921),e.MAX_ATTRIBUTES}static setConstant(t,r,i){switch(i.constructor){case Float32Array:e._setConstantFloatArray(t,r,i);break;case Int32Array:e._setConstantIntArray(t,r,i);break;case Uint32Array:e._setConstantUintArray(t,r,i);break;default:ye(!1)}}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.id||r.program&&r.program.id;super(t,Object.assign({},r,{id:i})),this.buffer=null,this.bufferValue=null,this.isDefaultArray=r.isDefaultArray||!1,this.gl2=t,this.initialize(r),Object.seal(this)}delete(){return super.delete(),this.buffer&&this.buffer.delete(),this}get MAX_ATTRIBUTES(){return e.getMaxAttributes(this.gl)}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.setProps(t)}setProps(t){return this}setElementBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return ye(!t||t.target===34963,Lst),this.bind(()=>{this.gl.bindBuffer(34963,t?t.handle:null)}),this}setBuffer(t,r,i){if(r.target===34963)return this.setElementBuffer(r,i);let{size:s,type:n,stride:o,offset:c,normalized:f,integer:_,divisor:w}=i,{gl:I,gl2:R}=this;return t=Number(t),this.bind(()=>{I.bindBuffer(34962,r.handle),_?(ye(hr(I)),R.vertexAttribIPointer(t,s,n,o,c)):I.vertexAttribPointer(t,s,n,f,o,c),I.enableVertexAttribArray(t),R.vertexAttribDivisor(t,w||0)}),this}enable(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return!r&&t===0&&!e.isSupported(this.gl,{constantAttributeZero:!0})||(t=Number(t),this.bind(()=>r?this.gl.enableVertexAttribArray(t):this.gl.disableVertexAttribArray(t))),this}getConstantBuffer(t,r){let i=this._normalizeConstantArrayValue(r),s=i.byteLength*t,n=i.length*t,o=!this.buffer;if(this.buffer=this.buffer||new Fr(this.gl,s),o=o||this.buffer.reallocate(s),o=o||!this._compareConstantArrayValues(i,this.bufferValue),o){let c=ij(r.constructor,n);nj({target:c,source:i,start:0,count:n}),this.buffer.subData(c),this.bufferValue=r}return this.buffer}_normalizeConstantArrayValue(t){return Array.isArray(t)?new Float32Array(t):t}_compareConstantArrayValues(t,r){if(!t||!r||t.length!==r.length||t.constructor!==r.constructor)return!1;for(let i=0;i{switch(t){case 34373:return this.gl.getVertexAttribOffset(i,t);default:return this.gl.getVertexAttrib(i,t)}})}};var kst=\"VertexArray: attributes must be Buffers or constants (i.e. typed array)\",Rst=/^(.+)__LOCATION_([0-9]+)$/,Dst=[\"setBuffers\",\"setGeneric\",\"clearBindings\",\"setLocations\",\"setGenericValues\",\"setDivisor\",\"enable\",\"disable\"],by=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=r.id||r.program&&r.program.id;this.id=i,this.gl=t,this.configuration=null,this.elements=null,this.elementsAccessor=null,this.values=null,this.accessors=null,this.unused=null,this.drawParams=null,this.buffer=null,this.attributes={},this.vertexArrayObject=new K0(t),eE(this,\"VertexArray\",\"v6.0\",Dst),this.initialize(r),Object.seal(this)}delete(){this.buffer&&this.buffer.delete(),this.vertexArrayObject.delete()}initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.reset(),this.configuration=null,this.bindOnUse=!1,this.setProps(t)}reset(){this.elements=null,this.elementsAccessor=null;let{MAX_ATTRIBUTES:t}=this.vertexArrayObject;return this.values=new Array(t).fill(null),this.accessors=new Array(t).fill(null),this.unused={},this.drawParams=null,this}setProps(t){return\"program\"in t&&(this.configuration=t.program&&t.program.configuration),\"configuration\"in t&&(this.configuration=t.configuration),\"attributes\"in t&&this.setAttributes(t.attributes),\"elements\"in t&&this.setElementBuffer(t.elements),\"bindOnUse\"in t&&(t=t.bindOnUse),this}clearDrawParams(){this.drawParams=null}getDrawParams(){return this.drawParams=this.drawParams||this._updateDrawParams(),this.drawParams}setAttributes(t){return Object.assign(this.attributes,t),this.vertexArrayObject.bind(()=>{for(let r in t){let i=t[r];this._setAttribute(r,i)}this.gl.bindBuffer(34962,null)}),this}setElementBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.elements=t,this.elementsAccessor=r,this.clearDrawParams(),this.vertexArrayObject.setElementBuffer(t,r),this}setBuffer(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(r.target===34963)return this.setElementBuffer(r,i);let{location:s,accessor:n}=this._resolveLocationAndAccessor(t,r,r.accessor,i);return s>=0&&(this.values[s]=r,this.accessors[s]=n,this.clearDrawParams(),this.vertexArrayObject.setBuffer(s,r,n)),this}setConstant(t,r){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{location:s,accessor:n}=this._resolveLocationAndAccessor(t,r,Object.assign({size:r.length},i));return s>=0&&(r=this.vertexArrayObject._normalizeConstantArrayValue(r),this.values[s]=r,this.accessors[s]=n,this.clearDrawParams(),this.vertexArrayObject.enable(s,!1)),this}unbindBuffers(){return this.vertexArrayObject.bind(()=>{this.elements&&this.vertexArrayObject.setElementBuffer(null),this.buffer=this.buffer||new Fr(this.gl,{accessor:{size:4}});for(let t=0;t{this.elements&&this.setElementBuffer(this.elements);for(let t=0;t{this._setConstantAttributes(t,r),s=i()}),s}_resolveLocationAndAccessor(t,r,i,s){let n={location:-1,accessor:null},{location:o,name:c}=this._getAttributeIndex(t);if(!Number.isFinite(o)||o<0)return this.unused[t]=r,je.once(3,()=>\"unused value \".concat(t,\" in \").concat(this.id))(),n;let f=this._getAttributeInfo(c||o);if(!f)return n;let _=this.accessors[o]||{},w=Pl.resolve(f.accessor,_,i,s),{size:I,type:R}=w;return ye(Number.isFinite(I)&&Number.isFinite(R)),{location:o,accessor:w}}_getAttributeInfo(t){return this.configuration&&this.configuration.getAttributeInfo(t)}_getAttributeIndex(t){let r=Number(t);if(Number.isFinite(r))return{location:r};let i=Rst.exec(t),s=i?i[1]:t,n=i?Number(i[2]):0;return this.configuration?{location:this.configuration.getAttributeLocation(s)+n,name:s}:{location:-1}}_setAttribute(t,r){if(r instanceof Fr)this.setBuffer(t,r);else if(Array.isArray(r)&&r.length&&r[0]instanceof Fr){let i=r[0],s=r[1];this.setBuffer(t,i,s)}else if(ArrayBuffer.isView(r)||Array.isArray(r)){let i=r;this.setConstant(t,i)}else if(r.buffer instanceof Fr){let i=r;this.setBuffer(t,i.buffer,i)}else throw new Error(kst)}_setConstantAttributes(t,r){let i=Math.max(t|0,r|0),s=this.values[0];ArrayBuffer.isView(s)&&this._setConstantAttributeZero(s,i);for(let n=1;n0;if(t.isInstanced=t.isInstanced||o,i instanceof Fr){let c=i;if(o){let f=c.getVertexCount(s);t.instanceCount=Math.min(t.instanceCount,f)}else{let f=c.getVertexCount(s);t.vertexCount=Math.min(t.vertexCount,f)}}}setElements(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return je.deprecated(\"setElements\",\"setElementBuffer\")(),this.setElementBuffer(t,r)}};function Ost(e,t){let{maxElts:r=16,size:i=1}=t,s=\"[\";for(let o=0;o0&&(s+=\",\".concat(o%i===0?\" \":\"\")),s+=J0(e[o],t);let n=e.length>r?\"...\":\"]\";return\"\".concat(s).concat(n)}function J0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=1e-16,{isInteger:i=!1}=t;if(Array.isArray(e)||ArrayBuffer.isView(e))return Ost(e,t);if(!Number.isFinite(e))return String(e);if(Math.abs(e)100&&Math.abs(e)<1e4)return e.toFixed(0);let s=e.toPrecision(2);return s.indexOf(\".0\")===s.length-2?s.slice(0,-1):s}function AE(e){let{header:t=\"Uniforms\",program:r,uniforms:i,undefinedOnly:s=!1}=e;ye(r);let n=\".*_.*\",o=\".*Matrix\",c=r._uniformSetters,f={},_=Object.keys(c).sort(),w=0;for(let N of _)!N.match(n)&&!N.match(o)&&_R({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;for(let N of _)N.match(o)&&_R({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;for(let N of _)f[N]||_R({table:f,header:t,uniforms:i,uniformName:N,undefinedOnly:s})&&w++;let I=0,R={};if(!s)for(let N in i){let j=i[N];f[N]||(I++,R[N]={Type:\"NOT USED: \".concat(j),[t]:J0(j)})}return{table:f,count:w,unusedTable:R,unusedCount:I}}function _R(e){let{table:t,header:r,uniforms:i,uniformName:s,undefinedOnly:n}=e,o=i[s],c=Bst(o);return!n||!c?(t[s]={[r]:c?J0(o):\"N/A\",\"Uniform Type\":c?o:\"NOT PROVIDED\"},!0):!1}function Bst(e){return e!=null}function yR(e){let{vertexArray:t,header:r=\"Attributes\"}=e;if(!t.configuration)return{};let i={};t.elements&&(i.ELEMENT_ARRAY_BUFFER=sj(t,t.elements,null,r));let s=t.values;for(let n in s){let o=t._getAttributeInfo(n);if(o){let c=\"\".concat(n,\": \").concat(o.name),f=t.accessors[o.location];f&&(c=\"\".concat(n,\": \").concat(Fst(o.name,f))),i[c]=sj(t,s[n],f,r)}}return i}function sj(e,t,r,i){let{gl:s}=e;if(!t)return{[i]:\"null\",\"Format \":\"N/A\"};let n=\"NOT PROVIDED\",o=1,c=0,f=0,_,w,I;if(r&&(n=r.type,o=r.size,n=String(n).replace(\"Array\",\"\"),_=n.indexOf(\"nt\")!==-1),t instanceof Fr){let R=t,{data:N,changed:j}=R.getDebugData();w=j?\"*\":\"\",I=N,f=R.byteLength,c=f/N.BYTES_PER_ELEMENT/o;let Q;if(r){let et=r.divisor>0;Q=\"\".concat(et?\"I \":\"P \",\" \").concat(c,\" (x\").concat(o,\"=\").concat(f,\" bytes \").concat(ku(s,n),\")\")}else _=!0,Q=\"\".concat(f,\" bytes\");return{[i]:\"\".concat(w).concat(J0(I,{size:o,isInteger:_})),\"Format \":Q}}return I=t,o=t.length,n=String(t.constructor.name).replace(\"Array\",\"\"),_=n.indexOf(\"nt\")!==-1,{[i]:\"\".concat(J0(I,{size:o,isInteger:_}),\" (constant)\"),\"Format \":\"\".concat(o,\"x\").concat(n,\" (constant)\")}}function Fst(e,t){let{type:r,size:i}=t,s=dE(r,i);return s?\"\".concat(e,\" (\").concat(s.name,\")\"):e}function vR(e){let t={},r=\"Accessors for \".concat(e.id);for(let i of e.attributeInfos)if(i){let s=oj(i);t[\"in \".concat(s)]={[r]:JSON.stringify(i.accessor)}}for(let i of e.varyingInfos)if(i){let s=oj(i);t[\"out \".concat(s)]={[r]:JSON.stringify(i.accessor)}}return t}function oj(e){let{type:t,size:r}=e.accessor,i=dE(t,r);return i?\"\".concat(i.name,\" \").concat(e.name):e.name}var aj=Co()&&typeof document<\"u\",Nst=0,tg=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{onCreateContext:r=et=>_y(et),onAddHTML:i=null,onInitialize:s=()=>{},onRender:n=()=>{},onFinalize:o=()=>{},onError:c,gl:f=null,glOptions:_={},debug:w=!1,createFramebuffer:I=!1,autoResizeViewport:R=!0,autoResizeDrawingBuffer:N=!0,stats:j=Lu.get(\"animation-loop-\".concat(Nst++))}=t,{useDevicePixels:Q=!0}=t;\"useDevicePixelRatio\"in t&&(je.deprecated(\"useDevicePixelRatio\",\"useDevicePixels\")(),Q=t.useDevicePixelRatio),this.props={onCreateContext:r,onAddHTML:i,onInitialize:s,onRender:n,onFinalize:o,onError:c,gl:f,glOptions:_,debug:w,createFramebuffer:I},this.gl=f,this.needsRedraw=null,this.timeline=null,this.stats=j,this.cpuTime=this.stats.get(\"CPU Time\"),this.gpuTime=this.stats.get(\"GPU Time\"),this.frameRate=this.stats.get(\"Frame Rate\"),this._initialized=!1,this._running=!1,this._animationFrameId=null,this._nextFramePromise=null,this._resolveNextFrame=null,this._cpuStartTime=0,this.setProps({autoResizeViewport:R,autoResizeDrawingBuffer:N,useDevicePixels:Q}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._pageLoadPromise=null,this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}delete(){this.stop(),this._setDisplay(null)}setNeedsRedraw(t){return ye(typeof t==\"string\"),this.needsRedraw=this.needsRedraw||t,this}setProps(t){return\"autoResizeViewport\"in t&&(this.autoResizeViewport=t.autoResizeViewport),\"autoResizeDrawingBuffer\"in t&&(this.autoResizeDrawingBuffer=t.autoResizeDrawingBuffer),\"useDevicePixels\"in t&&(this.useDevicePixels=t.useDevicePixels),this}start(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this._running)return this;this._running=!0;let r=this._getPageLoadPromise().then(()=>!this._running||this._initialized?null:(this._createWebGLContext(t),this._createFramebuffer(),this._startEventHandling(),this._initializeCallbackData(),this._updateCallbackData(),this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._gpuTimeQuery=X0.isSupported(this.gl,[\"timers\"])?new X0(this.gl):null,this._initialized=!0,this.onInitialize(this.animationProps))).then(i=>{this._running&&(this._addCallbackData(i||{}),i!==!1&&this._startLoop())});return this.props.onError&&r.catch(this.props.onError),this}redraw(){return this.isContextLost()?this:(this._beginTimers(),this._setupFrame(),this._updateCallbackData(),this._renderFrame(this.animationProps),this._clearNeedsRedraw(),this.offScreen&&this.gl.commit&&this.gl.commit(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endTimers(),this)}stop(){return this._running&&(this._finalizeCallbackData(),this._cancelAnimationFrame(this._animationFrameId),this._nextFramePromise=null,this._resolveNextFrame=null,this._animationFrameId=null,this._running=!1),this}attachTimeline(t){return this.timeline=t,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw(\"waitForRender\"),this._nextFramePromise||(this._nextFramePromise=new Promise(t=>{this._resolveNextFrame=t})),this._nextFramePromise}async toDataURL(){return this.setNeedsRedraw(\"toDataURL\"),await this.waitForRender(),this.gl.canvas.toDataURL()}isContextLost(){return this.gl.isContextLost()}onCreateContext(){return this.props.onCreateContext(...arguments)}onInitialize(){return this.props.onInitialize(...arguments)}onRender(){return this.props.onRender(...arguments)}onFinalize(){return this.props.onFinalize(...arguments)}getHTMLControlValue(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,i=document.getElementById(t);return i?Number(i.value):r}setViewParameters(){return je.removed(\"AnimationLoop.setViewParameters\",\"AnimationLoop.setProps\")(),this}_startLoop(){let t=()=>{this._running&&(this.redraw(),this._animationFrameId=this._requestAnimationFrame(t))};this._cancelAnimationFrame(this._animationFrameId),this._animationFrameId=this._requestAnimationFrame(t)}_getPageLoadPromise(){return this._pageLoadPromise||(this._pageLoadPromise=aj?new Promise((t,r)=>{if(aj&&document.readyState===\"complete\"){t(document);return}window.addEventListener(\"load\",()=>{t(document)})}):Promise.resolve({})),this._pageLoadPromise}_setDisplay(t){this.display&&(this.display.delete(),this.display.animationLoop=null),t&&(t.animationLoop=this),this.display=t}_cancelAnimationFrame(t){return this.display&&this.display.cancelAnimationFrame?this.display.cancelAnimationFrame(t):sR(t)}_requestAnimationFrame(t){if(this._running)return this.display&&this.display.requestAnimationFrame?this.display.requestAnimationFrame(t):nR(t)}_renderFrame(){if(this.display){this.display._renderFrame(...arguments);return}this.onRender(...arguments)}_clearNeedsRedraw(){this.needsRedraw=null}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._resizeFramebuffer()}_initializeCallbackData(){this.animationProps={gl:this.gl,stop:this.stop,canvas:this.gl.canvas,framebuffer:this.framebuffer,useDevicePixels:this.useDevicePixels,needsRedraw:null,startTime:Date.now(),engineTime:0,tick:0,tock:0,time:0,_timeline:this.timeline,_loop:this,_animationLoop:this,_mousePosition:null}}_updateCallbackData(){let{width:t,height:r,aspect:i}=this._getSizeAndAspect();(t!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw(\"drawing buffer resized\"),i!==this.animationProps.aspect&&this.setNeedsRedraw(\"drawing buffer aspect changed\"),this.animationProps.width=t,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime,this.animationProps._offScreen=this.offScreen}_finalizeCallbackData(){this.onFinalize(this.animationProps)}_addCallbackData(t){typeof t==\"object\"&&t!==null&&(this.animationProps=Object.assign({},this.animationProps,t))}_createWebGLContext(t){if(this.offScreen=t.canvas&&typeof OffscreenCanvas<\"u\"&&t.canvas instanceof OffscreenCanvas,t=Object.assign({},t,this.props.glOptions),this.gl=this.props.gl?W0(this.props.gl,t):this.onCreateContext(t),!tp(this.gl))throw new Error(\"AnimationLoop.onCreateContext - illegal context returned\");JM(this.gl),this._createInfoDiv()}_createInfoDiv(){if(this.gl.canvas&&this.props.onAddHTML){let t=document.createElement(\"div\");document.body.appendChild(t),t.style.position=\"relative\";let r=document.createElement(\"div\");r.style.position=\"absolute\",r.style.left=\"10px\",r.style.bottom=\"10px\",r.style.width=\"300px\",r.style.background=\"white\",t.appendChild(this.gl.canvas),t.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){let t=this.gl.drawingBufferWidth,r=this.gl.drawingBufferHeight,i=1,{canvas:s}=this.gl;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:t>0&&r>0&&(i=t/r),{width:t,height:r,aspect:i}}_resizeViewport(){this.autoResizeViewport&&this.gl.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.autoResizeDrawingBuffer&&rR(this.gl,{useDevicePixels:this.useDevicePixels})}_createFramebuffer(){this.props.createFramebuffer&&(this.framebuffer=new yi(this.gl))}_resizeFramebuffer(){this.framebuffer&&this.framebuffer.resize({width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight})}_beginTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this._gpuTimeQuery&&this._gpuTimeQuery.isResultAvailable()&&!this._gpuTimeQuery.isTimerDisjoint()&&this.stats.get(\"GPU Time\").addTime(this._gpuTimeQuery.getTimerMilliseconds()),this._gpuTimeQuery&&this._gpuTimeQuery.beginTimeElapsedQuery(),this.cpuTime.timeStart()}_endTimers(){this.cpuTime.timeEnd(),this._gpuTimeQuery&&this._gpuTimeQuery.end()}_startEventHandling(){let{canvas:t}=this.gl;t&&(t.addEventListener(\"mousemove\",this._onMousemove),t.addEventListener(\"mouseleave\",this._onMouseleave))}_onMousemove(t){this.animationProps._mousePosition=[t.offsetX,t.offsetY]}_onMouseleave(t){this.animationProps._mousePosition=null}};var eg=\"vs\",fb=\"fs\";function Xs(e,t){if(!e)throw new Error(t||\"shadertools: assertion failed.\")}var xR={number:{validate(e,t){return Number.isFinite(e)&&(!(\"max\"in t)||e<=t.max)&&(!(\"min\"in t)||e>=t.min)}},array:{validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function cj(e){let t={};for(let r in e){let i=e[r],s=Ust(i);t[r]=s}return t}function Ust(e){let t=lj(e);return t===\"object\"?e?\"type\"in e?Object.assign({},e,xR[e.type]):\"value\"in e?(t=lj(e.value),Object.assign({type:t},e,xR[t])):{type:\"object\",value:e}:{type:\"object\",value:null}:Object.assign({type:t,value:e},xR[t])}function lj(e){return Array.isArray(e)||ArrayBuffer.isView(e)?\"array\":typeof e}var Vst=\"vs\",jst=\"fs\",wy=class{constructor(t){let{name:r,vs:i,fs:s,dependencies:n=[],uniforms:o,getUniforms:c,deprecations:f=[],defines:_={},inject:w={},vertexShader:I,fragmentShader:R}=t;Xs(typeof r==\"string\"),this.name=r,this.vs=i||I,this.fs=s||R,this.getModuleUniforms=c,this.dependencies=n,this.deprecations=this._parseDeprecationDefinitions(f),this.defines=_,this.injections=Gst(w),o&&(this.uniforms=cj(o))}getModuleSource(t){let r;switch(t){case Vst:r=this.vs||\"\";break;case jst:r=this.fs||\"\";break;default:Xs(!1)}return\"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi,\"_\"),`\n`).concat(r,\"// END MODULE_\").concat(this.name,`\n\n`)}getUniforms(t,r){return this.getModuleUniforms?this.getModuleUniforms(t,r):this.uniforms?this._defaultGetUniforms(t):{}}getDefines(){return this.defines}checkDeprecations(t,r){this.deprecations.forEach(i=>{i.regex.test(t)&&(i.deprecated?r.deprecated(i.old,i.new)():r.removed(i.old,i.new)())})}_parseDeprecationDefinitions(t){return t.forEach(r=>{switch(r.type){case\"function\":r.regex=new RegExp(\"\\\\b\".concat(r.old,\"\\\\(\"));break;default:r.regex=new RegExp(\"\".concat(r.type,\" \").concat(r.old,\";\"))}}),t}_defaultGetUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r={},i=this.uniforms;for(let s in i){let n=i[s];s in t&&!n.private?(n.validate&&Xs(n.validate(t[s],n),\"\".concat(this.name,\": invalid \").concat(s)),r[s]=t[s]):r[s]=n.value}return r}};function Gst(e){let t={vs:{},fs:{}};for(let r in e){let i=e[r],s=r.slice(0,2);typeof i==\"string\"&&(i={order:0,injection:i}),t[s][r]=i}return t}function uj(e){return Wst(fj(e))}function Wst(e){let t={},r={};return hj({modules:e,level:0,moduleMap:t,moduleDepth:r}),Object.keys(r).sort((i,s)=>r[s]-r[i]).map(i=>t[i])}function hj(e){let{modules:t,level:r,moduleMap:i,moduleDepth:s}=e;if(r>=5)throw new Error(\"Possible loop in shader dependency graph\");for(let n of t)i[n.name]=n,(s[n.name]===void 0||s[n.name](r instanceof wy||(Xs(typeof r!=\"string\",\"Shader module use by name is deprecated. Import shader module '\".concat(r,\"' and use it directly.\")),Xs(r.name,\"shader module has no name\"),r=new wy(r),r.dependencies=fj(r.dependencies)),r))}function bR(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=typeof window<\"u\"?window.navigator||{}:{},r=e.userAgent||t.userAgent||\"\",i=r.indexOf(\"MSIE \")!==-1,s=r.indexOf(\"Trident/\")!==-1;return i||s}var Hst=7936,qst=7937,Zst=7938,Yst=35724,SR={GLSL_FRAG_DATA:[\"WEBGL_draw_buffers\",!0],GLSL_FRAG_DEPTH:[\"EXT_frag_depth\",!0],GLSL_DERIVATIVES:[\"OES_standard_derivatives\",!0],GLSL_TEXTURE_LOD:[\"EXT_shader_texture_lod\",!0]},YA={};Object.keys(SR).forEach(e=>{YA[e]=e});function Qst(e){return typeof WebGL2RenderingContext<\"u\"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function dj(e){let t=e.getExtension(\"WEBGL_debug_renderer_info\"),r=e.getParameter(t&&t.UNMASKED_VENDOR_WEBGL||Hst),i=e.getParameter(t&&t.UNMASKED_RENDERER_WEBGL||qst);return{gpuVendor:$st(r,i),vendor:r,renderer:i,version:e.getParameter(Zst),shadingLanguageVersion:e.getParameter(Yst)}}function $st(e,t){return e.match(/NVIDIA/i)||t.match(/NVIDIA/i)?\"NVIDIA\":e.match(/INTEL/i)||t.match(/INTEL/i)?\"INTEL\":e.match(/AMD/i)||t.match(/AMD/i)||e.match(/ATI/i)||t.match(/ATI/i)?\"AMD\":\"UNKNOWN GPU\"}var wR={};function TR(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=SR[t];if(Xs(i,t),!bR(r))return!0;if(t in wR)return wR[t];let s=i[0],n=r.behavior||\"enable\",o=\"#extension GL_\".concat(s,\" : \").concat(n,`\nvoid main(void) {}`),c=e.createShader(35633);e.shaderSource(c,o),e.compileShader(c);let f=e.getShaderParameter(c,35713);return e.deleteShader(c),wR[t]=f,f}function Xst(e,t){let r=SR[t];Xs(r,t);let i=Qst(e)&&r[1]||r[0],s=typeof i==\"string\"?!!e.getExtension(i):i;return Xs(s===!1||s===!0),s}function db(e,t){return t=Array.isArray(t)?t:[t],t.every(r=>Xst(e,r))}function pj(e){switch(dj(e).gpuVendor.toLowerCase()){case\"nvidia\":return`#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;case\"intel\":return`#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;case\"amd\":return`#define AMD_GPU\n`;default:return`#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`}}function Aj(e,t,r){let i=`#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;return db(e,YA.GLSL_FRAG_DEPTH)&&(i+=`\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`),db(e,YA.GLSL_DERIVATIVES)&&TR(e,YA.GLSL_DERIVATIVES)&&(i+=`\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`),db(e,YA.GLSL_FRAG_DATA)&&TR(e,YA.GLSL_FRAG_DATA,{behavior:\"require\"})&&(i+=`\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`),db(e,YA.GLSL_TEXTURE_LOD)&&(i+=`// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`),i}var mj=`#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`,gj=`#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;var Kst={[eg]:mj,[fb]:gj},pb=\"__LUMA_INJECT_DECLARATIONS__\",_j=/void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/,yj=/}\\n?[^{}]*$/,MR=[];function mE(e,t,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s=t===eg;for(let n in r){let o=r[n];o.sort((f,_)=>f.order-_.order),MR.length=o.length;for(let f=0,_=o.length;f<_;++f)MR[f]=o[f].injection;let c=\"\".concat(MR.join(`\n`),`\n`);switch(n){case\"vs:#decl\":s&&(e=e.replace(pb,c));break;case\"vs:#main-start\":s&&(e=e.replace(_j,f=>f+c));break;case\"vs:#main-end\":s&&(e=e.replace(yj,f=>c+f));break;case\"fs:#decl\":s||(e=e.replace(pb,c));break;case\"fs:#main-start\":s||(e=e.replace(_j,f=>f+c));break;case\"fs:#main-end\":s||(e=e.replace(yj,f=>c+f));break;default:e=e.replace(n,f=>f+c)}}return e=e.replace(pb,\"\"),i&&(e=e.replace(/\\}\\s*$/,n=>n+Kst[t])),e}function Sy(e){let t={};return Xs(Array.isArray(e)&&e.length>1),e.forEach(r=>{for(let i in r)t[i]=t[i]?\"\".concat(t[i],`\n`).concat(r[i]):r[i]}),t}function Ty(e){return new RegExp(\"\\\\b\".concat(e,\"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"),\"g\")}var vj=[[/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/,`#version 300 es\n`],[/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g,\"textureLod(\"],[/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g,\"texture(\"]],Jst=[...vj,[Ty(\"attribute\"),\"in $1\"],[Ty(\"varying\"),\"out $1\"]],tot=[...vj,[Ty(\"varying\"),\"in $1\"]],xj=[[/^#version[ \\t]+300[ \\t]+es/,\"#version 100\"],[/\\btexture(2D|2DProj|Cube)Lod\\(/g,\"texture$1LodEXT(\"],[/\\btexture\\(/g,\"texture2D(\"],[/\\btextureLod\\(/g,\"texture2DLodEXT(\"]],eot=[...xj,[Ty(\"in\"),\"attribute $1\"],[Ty(\"out\"),\"varying $1\"]],rot=[...xj,[Ty(\"in\"),\"varying $1\"]],ER=\"gl_FragColor\",PR=/\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/,iot=/void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;function IR(e,t,r){switch(t){case 300:return r?gE(e,Jst):not(e);case 100:return r?gE(e,eot):sot(e);default:throw new Error(\"unknown GLSL version \".concat(t))}}function gE(e,t){for(let[r,i]of t)e=e.replace(r,i);return e}function not(e){e=gE(e,tot);let t=e.match(PR);if(t){let r=t[1];e=e.replace(new RegExp(\"\\\\b\".concat(ER,\"\\\\b\"),\"g\"),r)}else{let r=\"fragmentColor\";e=e.replace(iot,i=>\"out vec4 \".concat(r,`;\n`).concat(i)).replace(new RegExp(\"\\\\b\".concat(ER,\"\\\\b\"),\"g\"),r)}return e}function sot(e){e=gE(e,rot);let t=e.match(PR);if(t){let r=t[1];e=e.replace(PR,\"\").replace(new RegExp(\"\\\\b\".concat(r,\"\\\\b\"),\"g\"),ER)}return e}var oot=`\n\n`.concat(pb,`\n\n`),wj={[eg]:\"vertex\",[fb]:\"fragment\"},aot=`precision highp float;\n\n`;function CR(e,t){let{vs:r,fs:i}=t,s=uj(t.modules||[]);return{gl:e,vs:bj(e,Object.assign({},t,{source:r,type:eg,modules:s})),fs:bj(e,Object.assign({},t,{source:i,type:fb,modules:s})),getUniforms:lot(s)}}function bj(e,t){let{id:r,source:i,type:s,modules:n,defines:o={},hookFunctions:c=[],inject:f={},transpileToGLSL100:_=!1,prologue:w=!0,log:I}=t;Xs(typeof i==\"string\",\"shader source must be a string\");let R=s===eg,N=i.split(`\n`),j=100,Q=\"\",et=i;N[0].indexOf(\"#version \")===0?(j=300,Q=N[0],et=N.slice(1).join(`\n`)):Q=\"#version \".concat(j);let Y={};n.forEach(Kt=>{Object.assign(Y,Kt.getDefines())}),Object.assign(Y,o);let K=w?\"\".concat(Q,`\n`).concat(uot({id:r,source:i,type:s}),`\n`).concat(cot({type:s}),`\n`).concat(pj(e),`\n`).concat(Aj(e,j,!R),`\n`).concat(hot(Y),`\n`).concat(R?\"\":aot,`\n`):\"\".concat(Q,`\n`),J=dot(c),ut={},Pt={},kt={};for(let Kt in f){let Zt=typeof f[Kt]==\"string\"?{injection:f[Kt],order:0}:f[Kt],ce=Kt.match(/^(v|f)s:(#)?([\\w-]+)$/);if(ce){let ue=ce[2],Ge=ce[3];ue?Ge===\"decl\"?Pt[Kt]=[Zt]:kt[Kt]=[Zt]:ut[Kt]=[Zt]}else kt[Kt]=[Zt]}for(let Kt of n){I&&Kt.checkDeprecations(et,I);let Zt=Kt.getModuleSource(s,j);K+=Zt;let ce=Kt.injections[s];for(let ue in ce){let Ge=ue.match(/^(v|f)s:#([\\w-]+)$/);if(Ge){let er=Ge[2]===\"decl\"?Pt:kt;er[ue]=er[ue]||[],er[ue].push(ce[ue])}else ut[ue]=ut[ue]||[],ut[ue].push(ce[ue])}}return K+=oot,K=mE(K,s,Pt),K+=fot(J[s],ut),K+=et,K=mE(K,s,kt),K=IR(K,_?100:j,R),K}function lot(e){return function(r){let i={};for(let s of e){let n=s.getUniforms(r,i);Object.assign(i,n)}return i}}function cot(e){let{type:t}=e;return`\n#define SHADER_TYPE_`.concat(wj[t].toUpperCase(),`\n`)}function uot(e){let{id:t,source:r,type:i}=e;return t&&typeof t==\"string\"&&r.indexOf(\"SHADER_NAME\")===-1?`\n#define SHADER_NAME `.concat(t,\"_\").concat(wj[i],`\n\n`):\"\"}function hot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=0,r=\"\";for(let i in e){t===0&&(r+=`\n// APPLICATION DEFINES\n`),t++;let s=e[i];(s||Number.isFinite(s))&&(r+=\"#define \".concat(i.toUpperCase(),\" \").concat(e[i],`\n`))}return t===0&&(r+=`\n`),r}function fot(e,t){let r=\"\";for(let i in e){let s=e[i];if(r+=\"void \".concat(s.signature,` {\n`),s.header&&(r+=\" \".concat(s.header)),t[i]){let n=t[i];n.sort((o,c)=>o.order-c.order);for(let o of n)r+=\" \".concat(o.injection,`\n`)}s.footer&&(r+=\" \".concat(s.footer)),r+=`}\n`}return r}function dot(e){let t={vs:{},fs:{}};return e.forEach(r=>{let i;typeof r!=\"string\"?(i=r,r=i.hook):i={},r=r.trim();let[s,n]=r.split(\":\"),o=r.replace(/\\(.+/,\"\");t[s][o]=Object.assign(i,{signature:n})}),t}var pot=\"void main() {gl_FragColor = vec4(0);}\",Sj=`out vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`,Aot=`#version 300 es\n`.concat(Sj);function _E(e,t){t=Array.isArray(t)?t:[t];let r=e.replace(/^\\s+/,\"\").split(/\\s+/),[i,s,n]=r;if(!t.includes(i)||!s||!n)return null;let o=n.split(\";\")[0];return{qualifier:i,type:s,name:o}}function Ab(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{version:t=100,input:r,inputType:i,output:s}=e;if(!r)return t===300?Aot:t>300?\"#version \".concat(t,`\n`).concat(Sj):pot;let n=Tj(r,i);return t>=300?\"#version \".concat(t,\" \").concat(t===300?\"es\":\"\",`\nin `).concat(i,\" \").concat(r,`;\nout vec4 `).concat(s,`;\nvoid main() {\n `).concat(s,\" = \").concat(n,`;\n}`):\"varying \".concat(i,\" \").concat(r,`;\nvoid main() {\n gl_FragColor = `).concat(n,`;\n}`)}function LR(e){switch(e){case\"float\":return\"x\";case\"vec2\":return\"xy\";case\"vec3\":return\"xyz\";case\"vec4\":return\"xyzw\";default:return Xs(!1),null}}function kR(e){switch(e){case\"float\":return 1;case\"vec2\":return 2;case\"vec3\":return 3;case\"vec4\":return 4;default:return Xs(!1),null}}function Tj(e,t){switch(t){case\"float\":return\"vec4(\".concat(e,\", 0.0, 0.0, 1.0)\");case\"vec2\":return\"vec4(\".concat(e,\", 0.0, 1.0)\");case\"vec3\":return\"vec4(\".concat(e,\", 1.0)\");case\"vec4\":return e;default:return Xs(!1),null}}var mot=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`,yE={name:\"fp32\",vs:mot,fs:null};function Oh(e,t){if(!e)throw new Error(\"math.gl assertion \".concat(t))}var fkt=1/Math.PI*180,dkt=1/180*Math.PI,Ks={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function RR(e,{precision:t=Ks.precision}={}){return e=got(e),\"\".concat(parseFloat(e.toPrecision(t)))}function Bh(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Il(e,t,r){return yot(e,i=>Math.max(t,Math.min(r,i)))}function il(e,t,r){return Bh(e)?e.map((i,s)=>il(i,t[s],r)):r*t+(1-r)*e}function ko(e,t,r){let i=Ks.EPSILON;r&&(Ks.EPSILON=r);try{if(e===t)return!0;if(Bh(e)&&Bh(t)){if(e.length!==t.length)return!1;for(let s=0;s0?\", \":\"\")+RR(this[i],t);return\"\".concat(t.printTypes?this.constructor.name:\"\",\"[\").concat(r,\"]\")}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r=0&&t=0&&t0&&(n=1/Math.sqrt(n)),e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function FR(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Ey(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[0],c=r[1],f=r[2];return e[0]=s*f-n*c,e[1]=n*o-i*f,e[2]=i*c-s*o,e}function Bj(e,t,r,i){var s=t[0],n=t[1],o=t[2];return e[0]=s+i*(r[0]-s),e[1]=n+i*(r[1]-n),e[2]=o+i*(r[2]-o),e}function Py(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[3]*i+r[7]*s+r[11]*n+r[15];return o=o||1,e[0]=(r[0]*i+r[4]*s+r[8]*n+r[12])/o,e[1]=(r[1]*i+r[5]*s+r[9]*n+r[13])/o,e[2]=(r[2]*i+r[6]*s+r[10]*n+r[14])/o,e}function SE(e,t,r){var i=t[0],s=t[1],n=t[2];return e[0]=i*r[0]+s*r[3]+n*r[6],e[1]=i*r[1]+s*r[4]+n*r[7],e[2]=i*r[2]+s*r[5]+n*r[8],e}function TE(e,t,r){var i=r[0],s=r[1],n=r[2],o=r[3],c=t[0],f=t[1],_=t[2],w=s*_-n*f,I=n*c-i*_,R=i*f-s*c,N=s*R-n*I,j=n*w-i*R,Q=i*I-s*w,et=o*2;return w*=et,I*=et,R*=et,N*=2,j*=2,Q*=2,e[0]=c+w+N,e[1]=f+I+j,e[2]=_+R+Q,e}function Fj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[0],n[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),n[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function zj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),n[1]=s[1],n[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Nj(e,t,r,i){var s=[],n=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],n[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),n[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),n[2]=s[2],e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Uj(e,t){var r=e[0],i=e[1],s=e[2],n=t[0],o=t[1],c=t[2],f=Math.sqrt(r*r+i*i+s*s),_=Math.sqrt(n*n+o*o+c*c),w=f*_,I=w&&FR(e,t)/w;return Math.acos(Math.min(Math.max(I,-1),1))}var ME=Tot;var EE=Sot,PE=Mot,Mkt=function(){var e=OR();return function(t,r,i,s,n,o){var c,f;for(r||(r=3),i||(i=0),s?f=Math.min(s*r+i,t.length):f=t.length,c=i;c0?this.copy([t,...r]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(Eot)}fromObject(t){return this.check()}fromQuaternion(t){return Zj(this,t),this.check()}set(t,r,i,s,n,o,c,f,_){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this[4]=n,this[5]=o,this[6]=c,this[7]=f,this[8]=_,this.check()}setRowMajor(t,r,i,s,n,o,c,f,_){return this[0]=t,this[1]=s,this[2]=c,this[3]=r,this[4]=n,this[5]=f,this[6]=i,this[7]=o,this[8]=_,this.check()}determinant(){return Wj(this)}transpose(){return jj(this,this),this.check()}invert(){return Gj(this,this),this.check()}multiplyLeft(t){return NR(this,t,this),this.check()}multiplyRight(t){return NR(this,this,t),this.check()}rotate(t){return qj(this,this,t),this.check()}scale(t){return Array.isArray(t)?UR(this,this,t):UR(this,this,[t,t]),this.check()}translate(t){return Hj(this,this,t),this.check()}transform(t,r){let i;switch(t.length){case 2:i=Pj(r||[-0,-0],t,this);break;case 3:i=SE(r||[-0,-0,-0],t,this);break;case 4:i=wE(r||[-0,-0,-0,-0],t,this);break;default:throw new Error(\"Illegal vector\")}return QA(i,t.length),i}transformVector(t,r){return this.transform(t,r)}transformVector2(t,r){return this.transform(t,r)}transformVector3(t,r){return this.transform(t,r)}},LE,kE;function Pot(){return LE||(LE=new is([0,0,0,0,0,0,0,0,0]),Object.freeze(LE)),LE}function Iot(){return kE||(kE=new is,Object.freeze(kE)),kE}function Cot(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Qj(e,t){if(e===t){var r=t[1],i=t[2],s=t[3],n=t[6],o=t[7],c=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=n,e[11]=t[14],e[12]=s,e[13]=o,e[14]=c}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function gb(e,t){var r=t[0],i=t[1],s=t[2],n=t[3],o=t[4],c=t[5],f=t[6],_=t[7],w=t[8],I=t[9],R=t[10],N=t[11],j=t[12],Q=t[13],et=t[14],Y=t[15],K=r*c-i*o,J=r*f-s*o,ut=r*_-n*o,Pt=i*f-s*c,kt=i*_-n*c,Kt=s*_-n*f,Zt=w*Q-I*j,ce=w*et-R*j,ue=w*Y-N*j,Ge=I*et-R*Q,tr=I*Y-N*Q,er=R*Y-N*et,Lr=K*er-J*tr+ut*Ge+Pt*ue-kt*ce+Kt*Zt;return Lr?(Lr=1/Lr,e[0]=(c*er-f*tr+_*Ge)*Lr,e[1]=(s*tr-i*er-n*Ge)*Lr,e[2]=(Q*Kt-et*kt+Y*Pt)*Lr,e[3]=(R*kt-I*Kt-N*Pt)*Lr,e[4]=(f*ue-o*er-_*ce)*Lr,e[5]=(r*er-s*ue+n*ce)*Lr,e[6]=(et*ut-j*Kt-Y*J)*Lr,e[7]=(w*Kt-R*ut+N*J)*Lr,e[8]=(o*tr-c*ue+_*Zt)*Lr,e[9]=(i*ue-r*tr-n*Zt)*Lr,e[10]=(j*kt-Q*ut+Y*K)*Lr,e[11]=(I*ut-w*kt-N*K)*Lr,e[12]=(c*ce-o*Ge-f*Zt)*Lr,e[13]=(r*Ge-i*ce+s*Zt)*Lr,e[14]=(Q*J-j*Pt-et*K)*Lr,e[15]=(w*Pt-I*J+R*K)*Lr,e):null}function $j(e){var t=e[0],r=e[1],i=e[2],s=e[3],n=e[4],o=e[5],c=e[6],f=e[7],_=e[8],w=e[9],I=e[10],R=e[11],N=e[12],j=e[13],Q=e[14],et=e[15],Y=t*o-r*n,K=t*c-i*n,J=t*f-s*n,ut=r*c-i*o,Pt=r*f-s*o,kt=i*f-s*c,Kt=_*j-w*N,Zt=_*Q-I*N,ce=_*et-R*N,ue=w*Q-I*j,Ge=w*et-R*j,tr=I*et-R*Q;return Y*tr-K*Ge+J*ue+ut*ce-Pt*Zt+kt*Kt}function Hf(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3],c=t[4],f=t[5],_=t[6],w=t[7],I=t[8],R=t[9],N=t[10],j=t[11],Q=t[12],et=t[13],Y=t[14],K=t[15],J=r[0],ut=r[1],Pt=r[2],kt=r[3];return e[0]=J*i+ut*c+Pt*I+kt*Q,e[1]=J*s+ut*f+Pt*R+kt*et,e[2]=J*n+ut*_+Pt*N+kt*Y,e[3]=J*o+ut*w+Pt*j+kt*K,J=r[4],ut=r[5],Pt=r[6],kt=r[7],e[4]=J*i+ut*c+Pt*I+kt*Q,e[5]=J*s+ut*f+Pt*R+kt*et,e[6]=J*n+ut*_+Pt*N+kt*Y,e[7]=J*o+ut*w+Pt*j+kt*K,J=r[8],ut=r[9],Pt=r[10],kt=r[11],e[8]=J*i+ut*c+Pt*I+kt*Q,e[9]=J*s+ut*f+Pt*R+kt*et,e[10]=J*n+ut*_+Pt*N+kt*Y,e[11]=J*o+ut*w+Pt*j+kt*K,J=r[12],ut=r[13],Pt=r[14],kt=r[15],e[12]=J*i+ut*c+Pt*I+kt*Q,e[13]=J*s+ut*f+Pt*R+kt*et,e[14]=J*n+ut*_+Pt*N+kt*Y,e[15]=J*o+ut*w+Pt*j+kt*K,e}function sg(e,t,r){var i=r[0],s=r[1],n=r[2],o,c,f,_,w,I,R,N,j,Q,et,Y;return t===e?(e[12]=t[0]*i+t[4]*s+t[8]*n+t[12],e[13]=t[1]*i+t[5]*s+t[9]*n+t[13],e[14]=t[2]*i+t[6]*s+t[10]*n+t[14],e[15]=t[3]*i+t[7]*s+t[11]*n+t[15]):(o=t[0],c=t[1],f=t[2],_=t[3],w=t[4],I=t[5],R=t[6],N=t[7],j=t[8],Q=t[9],et=t[10],Y=t[11],e[0]=o,e[1]=c,e[2]=f,e[3]=_,e[4]=w,e[5]=I,e[6]=R,e[7]=N,e[8]=j,e[9]=Q,e[10]=et,e[11]=Y,e[12]=o*i+w*s+j*n+t[12],e[13]=c*i+I*s+Q*n+t[13],e[14]=f*i+R*s+et*n+t[14],e[15]=_*i+N*s+Y*n+t[15]),e}function Iy(e,t,r){var i=r[0],s=r[1],n=r[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Xj(e,t,r,i){var s=i[0],n=i[1],o=i[2],c=Math.hypot(s,n,o),f,_,w,I,R,N,j,Q,et,Y,K,J,ut,Pt,kt,Kt,Zt,ce,ue,Ge,tr,er,Lr,zi;return c0&&(o=1/Math.sqrt(o)),e[0]=r*o,e[1]=i*o,e[2]=s*o,e[3]=n*o,e}function l7(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function c7(e,t,r,i){var s=t[0],n=t[1],o=t[2],c=t[3];return e[0]=s+i*(r[0]-s),e[1]=n+i*(r[1]-n),e[2]=o+i*(r[2]-o),e[3]=c+i*(r[3]-c),e}function zh(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3];return e[0]=r[0]*i+r[4]*s+r[8]*n+r[12]*o,e[1]=r[1]*i+r[5]*s+r[9]*n+r[13]*o,e[2]=r[2]*i+r[6]*s+r[10]*n+r[14]*o,e[3]=r[3]*i+r[7]*s+r[11]*n+r[15]*o,e}function u7(e,t,r){var i=t[0],s=t[1],n=t[2],o=r[0],c=r[1],f=r[2],_=r[3],w=_*i+c*n-f*s,I=_*s+f*i-o*n,R=_*n+o*s-c*i,N=-o*i-c*s-f*n;return e[0]=w*_+N*-o+I*-f-R*-c,e[1]=I*_+N*-c+R*-o-w*-f,e[2]=R*_+N*-f+w*-c-I*-o,e[3]=t[3],e}var Hkt=function(){var e=Rot();return function(t,r,i,s,n,o){var c,f;for(r||(r=4),i||(i=0),s?f=Math.min(s*r+i,t.length):f=t.length,c=i;cMath.PI*2)throw Error(\"expected radians\")}function Not(e,t,r,i,s,n){let o=2*n/(r-t),c=2*n/(s-i),f=(r+t)/(r-t),_=(s+i)/(s-i),w=-1,I=-1,R=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=f,e[9]=_,e[10]=w,e[11]=I,e[12]=0,e[13]=0,e[14]=R,e[15]=0,e}function f7(){var e=new ya(4);return ya!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function d7(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function qR(e,t,r){r=r*.5;var i=Math.sin(r);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(r),e}function ZR(e,t,r){var i=t[0],s=t[1],n=t[2],o=t[3],c=r[0],f=r[1],_=r[2],w=r[3];return e[0]=i*w+o*c+s*_-n*f,e[1]=s*w+o*f+n*c-i*_,e[2]=n*w+o*_+i*f-s*c,e[3]=o*w-i*c-s*f-n*_,e}function p7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f+o*c,e[1]=s*f+n*c,e[2]=n*f-s*c,e[3]=o*f-i*c,e}function A7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f-n*c,e[1]=s*f+o*c,e[2]=n*f+i*c,e[3]=o*f-s*c,e}function m7(e,t,r){r*=.5;var i=t[0],s=t[1],n=t[2],o=t[3],c=Math.sin(r),f=Math.cos(r);return e[0]=i*f+s*c,e[1]=s*f-i*c,e[2]=n*f+o*c,e[3]=o*f-n*c,e}function g7(e,t){var r=t[0],i=t[1],s=t[2];return e[0]=r,e[1]=i,e[2]=s,e[3]=Math.sqrt(Math.abs(1-r*r-i*i-s*s)),e}function yb(e,t,r,i){var s=t[0],n=t[1],o=t[2],c=t[3],f=r[0],_=r[1],w=r[2],I=r[3],R,N,j,Q,et;return N=s*f+n*_+o*w+c*I,N<0&&(N=-N,f=-f,_=-_,w=-w,I=-I),1-N>Fh?(R=Math.acos(N),j=Math.sin(R),Q=Math.sin((1-i)*R)/j,et=Math.sin(i*R)/j):(Q=1-i,et=i),e[0]=Q*s+et*f,e[1]=Q*n+et*_,e[2]=Q*o+et*w,e[3]=Q*c+et*I,e}function _7(e,t){var r=t[0],i=t[1],s=t[2],n=t[3],o=r*r+i*i+s*s+n*n,c=o?1/o:0;return e[0]=-r*c,e[1]=-i*c,e[2]=-s*c,e[3]=n*c,e}function y7(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function YR(e,t){var r=t[0]+t[4]+t[8],i;if(r>0)i=Math.sqrt(r+1),e[3]=.5*i,i=.5/i,e[0]=(t[5]-t[7])*i,e[1]=(t[6]-t[2])*i,e[2]=(t[1]-t[3])*i;else{var s=0;t[4]>t[0]&&(s=1),t[8]>t[s*3+s]&&(s=2);var n=(s+1)%3,o=(s+2)%3;i=Math.sqrt(t[s*3+s]-t[n*3+n]-t[o*3+o]+1),e[s]=.5*i,i=.5/i,e[3]=(t[n*3+o]-t[o*3+n])*i,e[n]=(t[n*3+s]+t[s*3+n])*i,e[o]=(t[o*3+s]+t[s*3+o])*i}return e}var v7=n7;var x7=Cy,b7=l7,w7=c7,S7=s7;var T7=o7;var M7=a7;var E7=function(){var e=OR(),t=BR(1,0,0),r=BR(0,1,0);return function(i,s,n){var o=FR(s,n);return o<-.999999?(Ey(e,t,s),EE(e)<1e-6&&Ey(e,r,s),Oj(e,e),qR(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(Ey(e,s,n),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,M7(i,i))}}(),r4t=function(){var e=f7(),t=f7();return function(r,i,s,n,o,c){return yb(e,i,o,c),yb(t,s,n,c),yb(r,e,t,2*c*(1-c)),r}}(),i4t=function(){var e=Vj();return function(t,r,i,s){return e[0]=i[0],e[3]=i[1],e[6]=i[2],e[1]=s[0],e[4]=s[1],e[7]=s[2],e[2]=-r[0],e[5]=-r[1],e[8]=-r[2],M7(t,YR(t,e))}}();var Vot=[0,0,0,1],og=class extends sp{constructor(t=0,r=0,i=0,s=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,r,i,s)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,r,i,s){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return YR(this,t),this.check()}fromAxisRotation(t,r){return qR(this,t,r),this.check()}identity(){return d7(this),this.check()}setAxisAngle(t,r){return this.fromAxisRotation(t,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=Zi(t)}get y(){return this[1]}set y(t){this[1]=Zi(t)}get z(){return this[2]}set z(t){this[2]=Zi(t)}get w(){return this[3]}set w(t){this[3]=Zi(t)}len(){return S7(this)}lengthSquared(){return T7(this)}dot(t){return b7(this,t)}rotationTo(t,r){return E7(this,t,r),this.check()}add(t){return v7(this,this,t),this.check()}calculateW(){return g7(this,this),this.check()}conjugate(){return y7(this,this),this.check()}invert(){return _7(this,this),this.check()}lerp(t,r,i){return i===void 0?this.lerp(this,t,r):(w7(this,t,r,i),this.check())}multiplyRight(t){return ZR(this,this,t),this.check()}multiplyLeft(t){return ZR(this,t,this),this.check()}normalize(){let t=this.len(),r=t>0?1/t:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,t===0&&(this[3]=1),this.check()}rotateX(t){return p7(this,this,t),this.check()}rotateY(t){return A7(this,this,t),this.check()}rotateZ(t){return m7(this,this,t),this.check()}scale(t){return x7(this,this,t),this.check()}slerp(t,r,i){let s,n,o;switch(arguments.length){case 1:({start:s=Vot,target:n,ratio:o}=t);break;case 2:s=this,n=t,o=r;break;default:s=t,n=r,o=i}return yb(this,s,n,o),this.check()}transformVector4(t,r=new mb){return u7(r,t,this),QA(r,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,r){return this.setAxisAngle(t,r)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var FE={EPSILON1:.1,EPSILON2:.01,EPSILON3:.001,EPSILON4:1e-4,EPSILON5:1e-5,EPSILON6:1e-6,EPSILON7:1e-7,EPSILON8:1e-8,EPSILON9:1e-9,EPSILON10:1e-10,EPSILON11:1e-11,EPSILON12:1e-12,EPSILON13:1e-13,EPSILON14:1e-14,EPSILON15:1e-15,EPSILON16:1e-16,EPSILON17:1e-17,EPSILON18:1e-18,EPSILON19:1e-19,EPSILON20:1e-20,PI_OVER_TWO:Math.PI/2,PI_OVER_FOUR:Math.PI/4,PI_OVER_SIX:Math.PI/6,TWO_PI:Math.PI*2};var QR=`#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\n\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n vec3 attenuation;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform AmbientLight lighting_uAmbientLight;\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\nuniform int lighting_uPointLightCount;\nuniform int lighting_uDirectionalLightCount;\n\nuniform bool lighting_uEnabled;\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\n#endif\n`;var jot={lightSources:{}};function $R(){let{color:e=[0,0,0],intensity:t=1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.map(r=>r*t/255)}function Got(e){let{ambientLight:t,pointLights:r=[],directionalLights:i=[]}=e,s={};return t?s[\"lighting_uAmbientLight.color\"]=$R(t):s[\"lighting_uAmbientLight.color\"]=[0,0,0],r.forEach((n,o)=>{s[\"lighting_uPointLight[\".concat(o,\"].color\")]=$R(n),s[\"lighting_uPointLight[\".concat(o,\"].position\")]=n.position,s[\"lighting_uPointLight[\".concat(o,\"].attenuation\")]=n.attenuation||[1,0,0]}),s.lighting_uPointLightCount=r.length,i.forEach((n,o)=>{s[\"lighting_uDirectionalLight[\".concat(o,\"].color\")]=$R(n),s[\"lighting_uDirectionalLight[\".concat(o,\"].direction\")]=n.direction}),s.lighting_uDirectionalLightCount=i.length,s}function P7(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:jot;if(\"lightSources\"in e){let{ambientLight:t,pointLights:r,directionalLights:i}=e.lightSources||{};return t||r&&r.length>0||i&&i.length>0?Object.assign({},Got({ambientLight:t,pointLights:r,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if(\"lights\"in e){let t={pointLights:[],directionalLights:[]};for(let r of e.lights||[])switch(r.type){case\"ambient\":t.ambientLight=r;break;case\"directional\":t.directionalLights.push(r);break;case\"point\":t.pointLights.push(r);break;default:}return P7({lightSources:t})}return{}}var XR={name:\"lights\",vs:QR,fs:QR,getUniforms:P7,defines:{MAX_LIGHTS:3}};var Wot=new Uint8Array([0,255,255,255]),Hot={pickingSelectedColor:null,pickingHighlightColor:Wot,pickingActive:!1,pickingAttribute:!1};function qot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Hot,t={};if(e.pickingSelectedColor!==void 0)if(!e.pickingSelectedColor)t.picking_uSelectedColorValid=0;else{let r=e.pickingSelectedColor.slice(0,3);t.picking_uSelectedColorValid=1,t.picking_uSelectedColor=r}if(e.pickingHighlightColor){let r=Array.from(e.pickingHighlightColor,i=>i/255);Number.isFinite(r[3])||(r[3]=1),t.picking_uHighlightColor=r}return e.pickingActive!==void 0&&(t.picking_uActive=!!e.pickingActive,t.picking_uAttribute=!!e.pickingAttribute),t}var Zot=`uniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`,Yot=`uniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`,zE={name:\"picking\",vs:Zot,fs:Yot,getUniforms:qot};var KR=`\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;var Qot={};function $ot(e){let{ambient:t=.35,diffuse:r=.6,shininess:i=32,specularColor:s=[30,30,30]}=e;return{lighting_uAmbient:t,lighting_uDiffuse:r,lighting_uShininess:i,lighting_uSpecularColor:s.map(n=>n/255)}}function I7(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Qot;if(!(\"material\"in e))return{};let{material:t}=e;return t?$ot(t):{lighting_uEnabled:!1}}var qf={name:\"gouraud-lighting\",dependencies:[XR],vs:KR,defines:{LIGHTING_VERTEX:1},getUniforms:I7},ky={name:\"phong-lighting\",dependencies:[XR],fs:KR,defines:{LIGHTING_FRAGMENT:1},getUniforms:I7};var Xot=`attribute float transform_elementID;\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`,JR={name:\"transform\",vs:Xot,fs:null};var Nh=class e{static getDefaultProgramManager(t){return t.luma=t.luma||{},t.luma.defaultProgramManager=t.luma.defaultProgramManager||new e(t),t.luma.defaultProgramManager}constructor(t){this.gl=t,this._programCache={},this._getUniforms={},this._registeredModules={},this._hookFunctions=[],this._defaultModules=[],this._hashes={},this._hashCounter=0,this.stateHash=0,this._useCounts={}}addDefaultModule(t){this._defaultModules.find(r=>r.name===t.name)||this._defaultModules.push(t),this.stateHash++}removeDefaultModule(t){let r=typeof t==\"string\"?t:t.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==r),this.stateHash++}addShaderHook(t,r){r&&(t=Object.assign(r,{hook:t})),this._hookFunctions.push(t),this.stateHash++}get(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{vs:r=\"\",fs:i=\"\",defines:s={},inject:n={},varyings:o=[],bufferMode:c=35981,transpileToGLSL100:f=!1}=t,_=this._getModuleList(t.modules),w=this._getHash(r),I=this._getHash(i),R=_.map(J=>this._getHash(J.name)).sort(),N=o.map(J=>this._getHash(J)),j=Object.keys(s).sort(),Q=Object.keys(n).sort(),et=[],Y=[];for(let J of j)et.push(this._getHash(J)),et.push(this._getHash(s[J]));for(let J of Q)Y.push(this._getHash(J)),Y.push(this._getHash(n[J]));let K=\"\".concat(w,\"/\").concat(I,\"D\").concat(et.join(\"/\"),\"M\").concat(R.join(\"/\"),\"I\").concat(Y.join(\"/\"),\"V\").concat(N.join(\"/\"),\"H\").concat(this.stateHash,\"B\").concat(c).concat(f?\"T\":\"\");if(!this._programCache[K]){let J=CR(this.gl,{vs:r,fs:i,modules:_,inject:n,defines:s,hookFunctions:this._hookFunctions,transpileToGLSL100:f});this._programCache[K]=new ip(this.gl,{hash:K,vs:J.vs,fs:J.fs,varyings:o,bufferMode:c}),this._getUniforms[K]=J.getUniforms||(ut=>{}),this._useCounts[K]=0}return this._useCounts[K]++,this._programCache[K]}getUniforms(t){return this._getUniforms[t.hash]||null}release(t){let r=t.hash;this._useCounts[r]--,this._useCounts[r]===0&&(this._programCache[r].delete(),delete this._programCache[r],delete this._getUniforms[r],delete this._useCounts[r])}_getHash(t){return this._hashes[t]===void 0&&(this._hashes[t]=this._hashCounter++),this._hashes[t]}_getModuleList(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=new Array(this._defaultModules.length+t.length),i={},s=0;for(let n=0,o=this._defaultModules.length;n{},iat={},un=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{id:i=ea(\"model\")}=r;ye(tp(t)),this.id=i,this.gl=t,this.id=r.id||ea(\"Model\"),this.lastLogTime=0,this.animated=!1,this.initialize(r)}initialize(t){this.props={},this.programManager=t.programManager||Nh.getDefaultProgramManager(this.gl),this._programManagerState=-1,this._managedProgram=!1;let{program:r=null,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=t;this.programProps={program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w},this.program=null,this.vertexArray=null,this._programDirty=!0,this.userData={},this.needsRedraw=!0,this._attributes={},this.attributes={},this.uniforms={},this.pickable=!0,this._checkProgram(),this.setUniforms(Object.assign({},this.getModuleUniforms(t.moduleSettings))),this.drawMode=t.drawMode!==void 0?t.drawMode:4,this.vertexCount=t.vertexCount||0,this.geometryBuffers={},this.isInstanced=t.isInstanced||t.instanced||t.instanceCount>0,this._setModelProps(t),this.geometry={},ye(this.drawMode!==void 0&&Number.isFinite(this.vertexCount),rat)}setProps(t){this._setModelProps(t)}delete(){for(let t in this._attributes)this._attributes[t]!==this.attributes[t]&&this._attributes[t].delete();this._managedProgram&&(this.programManager.release(this.program),this._managedProgram=!1),this.vertexArray.delete(),this._deleteGeometryBuffers()}getDrawMode(){return this.drawMode}getVertexCount(){return this.vertexCount}getInstanceCount(){return this.instanceCount}getAttributes(){return this.attributes}getProgram(){return this.program}setProgram(t){let{program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=t;this.programProps={program:r,vs:i,fs:s,modules:n,defines:o,inject:c,varyings:f,bufferMode:_,transpileToGLSL100:w},this._programDirty=!0}getUniforms(){return this.uniforms}setDrawMode(t){return this.drawMode=t,this}setVertexCount(t){return ye(Number.isFinite(t)),this.vertexCount=t,this}setInstanceCount(t){return ye(Number.isFinite(t)),this.instanceCount=t,this}setGeometry(t){return this.drawMode=t.drawMode,this.vertexCount=t.getVertexCount(),this._deleteGeometryBuffers(),this.geometryBuffers=C7(this.gl,t),this.vertexArray.setAttributes(this.geometryBuffers),this}setAttributes(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Gf(t))return this;let r={};for(let i in t){let s=t[i];r[i]=s.getValue?s.getValue():s}return this.vertexArray.setAttributes(r),this}setUniforms(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this.uniforms,t),this}getModuleUniforms(t){this._checkProgram();let r=this.programManager.getUniforms(this.program);return r?r(t):{}}updateModuleSettings(t){let r=this.getModuleUniforms(t||{});return this.setUniforms(r)}clear(t){return Wf(this.program.gl,t),this}draw(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._checkProgram();let{moduleSettings:r=null,framebuffer:i,uniforms:s={},attributes:n={},transformFeedback:o=this.transformFeedback,parameters:c={},vertexArray:f=this.vertexArray}=t;this.setAttributes(n),this.updateModuleSettings(r),this.setUniforms(s);let _;je.priority>=Ry&&(_=this._logDrawCallStart(Ry));let w=this.vertexArray.getDrawParams(),{isIndexed:I=w.isIndexed,indexType:R=w.indexType,indexOffset:N=w.indexOffset,vertexArrayInstanced:j=w.isInstanced}=this.props;j&&!this.isInstanced&&je.warn(\"Found instanced attributes on non-instanced model\",this.id)();let{isInstanced:Q,instanceCount:et}=this,{onBeforeRender:Y=L7,onAfterRender:K=L7}=this.props;Y(),this.program.setUniforms(this.uniforms);let J=this.program.draw(Object.assign(iat,t,{logPriority:_,uniforms:null,framebuffer:i,parameters:c,drawMode:this.getDrawMode(),vertexCount:this.getVertexCount(),vertexArray:f,transformFeedback:o,isIndexed:I,indexType:R,isInstanced:Q,instanceCount:et,offset:I?N:0}));return K(),je.priority>=Ry&&this._logDrawCallEnd(_,f,i),J}transform(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{discard:r=!0,feedbackBuffers:i,unbindModels:s=[]}=t,{parameters:n}=t;i&&this._setFeedbackBuffers(i),r&&(n=Object.assign({},n,{35977:r})),s.forEach(o=>o.vertexArray.unbindBuffers());try{this.draw(Object.assign({},t,{parameters:n}))}finally{s.forEach(o=>o.vertexArray.bindBuffers())}return this}render(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return je.warn(\"Model.render() is deprecated. Use Model.setUniforms() and Model.draw()\")(),this.setUniforms(t).draw()}_setModelProps(t){Object.assign(this.props,t),\"uniforms\"in t&&this.setUniforms(t.uniforms),\"pickable\"in t&&(this.pickable=t.pickable),\"instanceCount\"in t&&(this.instanceCount=t.instanceCount),\"geometry\"in t&&this.setGeometry(t.geometry),\"attributes\"in t&&this.setAttributes(t.attributes),\"_feedbackBuffers\"in t&&this._setFeedbackBuffers(t._feedbackBuffers)}_checkProgram(){if(!(this._programDirty||this.programManager.stateHash!==this._programManagerState))return;let{program:r}=this.programProps;if(r)this._managedProgram=!1;else{let{vs:i,fs:s,modules:n,inject:o,defines:c,varyings:f,bufferMode:_,transpileToGLSL100:w}=this.programProps;r=this.programManager.get({vs:i,fs:s,modules:n,inject:o,defines:c,varyings:f,bufferMode:_,transpileToGLSL100:w}),this.program&&this._managedProgram&&this.programManager.release(this.program),this._programManagerState=this.programManager.stateHash,this._managedProgram=!0}ye(r instanceof ip,\"Model needs a program\"),this._programDirty=!1,r!==this.program&&(this.program=r,this.vertexArray?this.vertexArray.setProps({program:this.program,attributes:this.vertexArray.attributes}):this.vertexArray=new by(this.gl,{program:this.program}),this.setUniforms(Object.assign({},this.getModuleUniforms())))}_deleteGeometryBuffers(){for(let t in this.geometryBuffers){let r=this.geometryBuffers[t][0]||this.geometryBuffers[t];r instanceof Fr&&r.delete()}}_setAnimationProps(t){this.animated&&ye(t,\"Model.draw(): animated uniforms but no animationProps\")}_setFeedbackBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Gf(t))return this;let{gl:r}=this.program;return this.transformFeedback=this.transformFeedback||new np(r,{program:this.program}),this.transformFeedback.setBuffers(t),this}_logDrawCallStart(t){let r=t>3?0:eat;if(!(Date.now()-this.lastLogTime>> DRAWING MODEL \".concat(this.id),{collapsed:je.level<=2})(),t}_logDrawCallEnd(t,r,i,s){if(t===void 0)return;let n=yR({vertexArray:r,header:\"\".concat(this.id,\" attributes\"),attributes:this._attributes}),{table:o,unusedTable:c,unusedCount:f}=AE({header:\"\".concat(this.id,\" uniforms\"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i)}),{table:_,count:w}=AE({header:\"\".concat(this.id,\" uniforms\"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i),undefinedOnly:!0});w>0&&je.log(\"MISSING UNIFORMS\",Object.keys(_))(),f>0&&je.log(\"UNUSED UNIFORMS\",Object.keys(c))();let I=vR(this.vertexArray.configuration);je.table(t,n)(),je.table(t,o)(),je.table(t+1,I)(),s&&s.log({logLevel:Ry,message:\"Rendered to \".concat(s.id)}),je.groupEnd(Ry)()}};var vb=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.currentIndex=0,this.feedbackMap={},this.varyings=null,this.bindings=[],this.resources={},this._initialize(r),Object.seal(this)}setupResources(t){for(let r of this.bindings)this._setupTransformFeedback(r,t)}updateModelProps(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{varyings:r}=this;return r.length>0&&(t=Object.assign({},t,{varyings:r})),t}getDrawOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this.bindings[this.currentIndex],{sourceBuffers:i,transformFeedback:s}=r;return{attributes:Object.assign({},i,t.attributes),transformFeedback:s}}swap(){return this.feedbackMap?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(t)}getBuffer(t){let{feedbackBuffers:r}=this.bindings[this.currentIndex],i=t?r[t]:null;return i?i instanceof Fr?i:i.buffer:null}getData(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{varyingName:r}=t,i=this.getBuffer(r);return i?i.getData():null}delete(){for(let t in this.resources)this.resources[t].delete()}_initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(t),this.varyings=t.varyings||Object.keys(this.bindings[this.currentIndex].feedbackBuffers),this.varyings.length>0&&ye(hr(this.gl))}_getFeedbackBuffers(t){let{sourceBuffers:r={}}=t,i={};if(this.bindings[this.currentIndex]&&Object.assign(i,this.bindings[this.currentIndex].feedbackBuffers),this.feedbackMap)for(let s in this.feedbackMap){let n=this.feedbackMap[s];s in r&&(i[n]=s)}Object.assign(i,t.feedbackBuffers);for(let s in i){let n=i[s];if(typeof n==\"string\"){let o=r[n],{byteLength:c,usage:f,accessor:_}=o;i[s]=this._createNewBuffer(s,{byteLength:c,usage:f,accessor:_})}}return i}_setupBuffers(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r=null}=t;Object.assign(this.feedbackMap,t.feedbackMap);let i=this._getFeedbackBuffers(t);this._updateBindings({sourceBuffers:r,feedbackBuffers:i})}_setupTransformFeedback(t,r){let{model:i}=r,{program:s}=i;t.transformFeedback=new np(this.gl,{program:s,buffers:t.feedbackBuffers})}_updateBindings(t){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t),this.feedbackMap){let{sourceBuffers:r,feedbackBuffers:i}=this._swapBuffers(this.bindings[this.currentIndex]),s=this._getNextIndex();this.bindings[s]=this._updateBinding(this.bindings[s],{sourceBuffers:r,feedbackBuffers:i})}}_updateBinding(t,r){return t?(Object.assign(t.sourceBuffers,r.sourceBuffers),Object.assign(t.feedbackBuffers,r.feedbackBuffers),t.transformFeedback&&t.transformFeedback.setBuffers(t.feedbackBuffers),t):{sourceBuffers:Object.assign({},r.sourceBuffers),feedbackBuffers:Object.assign({},r.feedbackBuffers)}}_swapBuffers(t){if(!this.feedbackMap)return null;let r=Object.assign({},t.sourceBuffers),i=Object.assign({},t.feedbackBuffers);for(let s in this.feedbackMap){let n=this.feedbackMap[s];r[s]=t.feedbackBuffers[n],i[n]=t.sourceBuffers[s],ye(i[n]instanceof Fr)}return{sourceBuffers:r,feedbackBuffers:i}}_createNewBuffer(t,r){let i=new Fr(this.gl,r);return this.resources[t]&&this.resources[t].delete(),this.resources[t]=i,i}_getNextIndex(){return(this.currentIndex+1)%2}};var nat=\"transform_uSampler_\",NE=\"transform_uSize_\",k7=\"transform_position\";function R7(e){let{vs:t,sourceTextureMap:r,targetTextureVarying:i,targetTexture:s}=e,o=Object.keys(r).length,c=null,f={},_=t,w={};if(o>0||i){let I=_.split(`\n`),R=I.slice();if(I.forEach((N,j,Q)=>{if(o>0){let et=lat(N,r);if(et){let{updatedLine:Y,inject:K}=et;R[j]=Y,w=Sy([w,K]),Object.assign(f,et.samplerTextureMap),o--}}i&&!c&&(c=aat(N,i))}),i){ye(s);let N=\"\".concat(NE).concat(i),j=\"uniform vec2 \".concat(N,`;\n`),Q=\" vec2 \".concat(k7,\" = transform_getPos(\").concat(N,`);\n gl_Position = vec4(`).concat(k7,`, 0, 1.);\n`);w=Sy([w,{\"vs:#decl\":j,\"vs:#main-start\":Q}])}_=R.join(`\n`)}return{vs:_,targetTextureType:c,inject:w,samplerTextureMap:f}}function D7(e){let{sourceTextureMap:t,targetTextureVarying:r,targetTexture:i}=e,s={},n,o;r&&({width:n,height:o}=i,s[\"\".concat(NE).concat(r)]=[n,o]);for(let c in t)({width:n,height:o}=t[c]),s[\"\".concat(NE).concat(c)]=[n,o];return s}function sat(e){return _E(e,[\"attribute\",\"in\"])}function oat(e){let t=\"\".concat(nat).concat(e),r=\"\".concat(NE).concat(e),i=\" uniform sampler2D \".concat(t,`;\n uniform vec2 `).concat(r,\";\");return{samplerName:t,sizeName:r,uniformDeclerations:i}}function aat(e,t){let r=_E(e,[\"varying\",\"out\"]);return r&&r.name===t?r.type:null}function lat(e,t){let r={},i=sat(e);if(!i)return null;let{type:s,name:n}=i;if(n&&t[n]){let o=\"// \".concat(e,\" => Replaced by Transform with a sampler\"),{samplerName:c,sizeName:f,uniformDeclerations:_}=oat(n),w=LR(s),I=\" \".concat(s,\" \").concat(n,\" = transform_getInput(\").concat(c,\", \").concat(f,\").\").concat(w,`;\n`);return r[c]=n,{updatedLine:o,inject:{\"vs:#decl\":_,\"vs:#main-start\":I},samplerTextureMap:r}}return null}var cat={10241:9728,10240:9728,10242:33071,10243:33071},uat=\"transform_output\",xb=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.id=this.currentIndex=0,this._swapTexture=null,this.targetTextureVarying=null,this.targetTextureType=null,this.samplerTextureMap=null,this.bindings=[],this.resources={},this._initialize(r),Object.seal(this)}updateModelProps(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=this._processVertexShader(t);return Object.assign({},t,r)}getDrawOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r,sourceTextures:i,framebuffer:s,targetTexture:n}=this.bindings[this.currentIndex],o=Object.assign({},r,t.attributes),c=Object.assign({},t.uniforms),f=Object.assign({},t.parameters),_=t.discard;if(this.hasSourceTextures||this.hasTargetTexture){o.transform_elementID=this.elementIDBuffer;for(let I in this.samplerTextureMap){let R=this.samplerTextureMap[I];c[I]=i[R]}this._setSourceTextureParameters();let w=D7({sourceTextureMap:i,targetTextureVarying:this.targetTextureVarying,targetTexture:n});Object.assign(c,w)}return this.hasTargetTexture&&(_=!1,f.viewport=[0,0,s.width,s.height]),{attributes:o,framebuffer:s,uniforms:c,discard:_,parameters:f}}swap(){return this._swapTexture?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupTextures(t)}getTargetTexture(){let{targetTexture:t}=this.bindings[this.currentIndex];return t}getData(){let{packed:t=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{framebuffer:r}=this.bindings[this.currentIndex],i=Rh(r);if(!t)return i;let s=i.constructor,n=kR(this.targetTextureType),o=new s(i.length*n/4),c=0;for(let f=0;f0&&arguments[0]!==void 0?arguments[0]:{},{_targetTextureVarying:r,_swapTexture:i}=t;this._swapTexture=i,this.targetTextureVarying=r,this.hasTargetTexture=r,this._setupTextures(t)}_createTargetTexture(t){let{sourceTextures:r,textureOrReference:i}=t;if(i instanceof pi)return i;let s=r[i];return s?(this._targetRefTexName=i,this._createNewTexture(s)):null}_setupTextures(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceBuffers:r,_sourceTextures:i={},_targetTexture:s}=t,n=this._createTargetTexture({sourceTextures:i,textureOrReference:s});this.hasSourceTextures=this.hasSourceTextures||i&&Object.keys(i).length>0,this._updateBindings({sourceBuffers:r,sourceTextures:i,targetTexture:n}),\"elementCount\"in t&&this._updateElementIDBuffer(t.elementCount)}_updateElementIDBuffer(t){if(typeof t!=\"number\"||this.elementCount>=t)return;let r=new Float32Array(t);r.forEach((i,s,n)=>{n[s]=s}),this.elementIDBuffer?this.elementIDBuffer.setData({data:r}):this.elementIDBuffer=new Fr(this.gl,{data:r,accessor:{size:1}}),this.elementCount=t}_updateBindings(t){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t),this._swapTexture){let{sourceTextures:r,targetTexture:i}=this._swapTextures(this.bindings[this.currentIndex]),s=this._getNextIndex();this.bindings[s]=this._updateBinding(this.bindings[s],{sourceTextures:r,targetTexture:i})}}_updateBinding(t,r){let{sourceBuffers:i,sourceTextures:s,targetTexture:n}=r;if(t||(t={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(t.sourceTextures,s),Object.assign(t.sourceBuffers,i),n){t.targetTexture=n;let{width:o,height:c}=n,{framebuffer:f}=t;f?(f.update({attachments:{36064:n},resizeAttachments:!1}),f.resize({width:o,height:c})):t.framebuffer=new yi(this.gl,{id:\"transform-framebuffer\",width:o,height:c,attachments:{36064:n}})}return t}_setSourceTextureParameters(){let t=this.currentIndex,{sourceTextures:r}=this.bindings[t];for(let i in r)r[i].setParameters(cat)}_swapTextures(t){if(!this._swapTexture)return null;let r=Object.assign({},t.sourceTextures);r[this._swapTexture]=t.targetTexture;let i=t.sourceTextures[this._swapTexture];return{sourceTextures:r,targetTexture:i}}_createNewTexture(t){let r=lE(t,{parameters:{10241:9728,10240:9728,10242:33071,10243:33071},pixelStore:{37440:!1}});return this.ownTexture&&this.ownTexture.delete(),this.ownTexture=r,r}_getNextIndex(){return(this.currentIndex+1)%2}_processVertexShader(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{sourceTextures:r,targetTexture:i}=this.bindings[this.currentIndex],{vs:s,uniforms:n,targetTextureType:o,inject:c,samplerTextureMap:f}=R7({vs:t.vs,sourceTextureMap:r,targetTextureVarying:this.targetTextureVarying,targetTexture:i}),_=Sy([t.inject||{},c]);this.targetTextureType=o,this.samplerTextureMap=f;let w=t._fs||Ab({version:xy(s),input:this.targetTextureVarying,inputType:o,output:uat}),I=this.hasSourceTextures||this.targetTextureVarying?[JR].concat(t.modules||[]):t.modules;return{vs:s,fs:w,modules:I,uniforms:n,inject:_}}};var rc=class{static isSupported(t){return hr(t)}constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=t,this.model=null,this.elementCount=0,this.bufferTransform=null,this.textureTransform=null,this.elementIDBuffer=null,this._initialize(r),Object.seal(this)}delete(){let{model:t,bufferTransform:r,textureTransform:i}=this;t&&t.delete(),r&&r.delete(),i&&i.delete()}run(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{clearRenderTarget:r=!0}=t,i=this._updateDrawOptions(t);r&&i.framebuffer&&i.framebuffer.clear({color:!0}),this.model.transform(i)}swap(){let t=!1,r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r)t=t||i.swap();ye(t,\"Nothing to swap\")}getBuffer(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.bufferTransform&&this.bufferTransform.getBuffer(t)}getData(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r){let s=i.getData(t);if(s)return s}return null}getFramebuffer(){return this.textureTransform&&this.textureTransform.getFramebuffer()}update(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};\"elementCount\"in t&&this.model.setVertexCount(t.elementCount);let r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let i of r)i.update(t)}_initialize(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{gl:r}=this;this._buildResourceTransforms(r,t),t=this._updateModelProps(t),this.model=new un(r,Object.assign({},t,{fs:t.fs||Ab({version:xy(t.vs)}),id:t.id||\"transform-model\",drawMode:t.drawMode||0,vertexCount:t.elementCount})),this.bufferTransform&&this.bufferTransform.setupResources({model:this.model})}_updateModelProps(t){let r=Object.assign({},t),i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let s of i)r=s.updateModelProps(r);return r}_buildResourceTransforms(t,r){hat(r)&&(this.bufferTransform=new vb(t,r)),fat(r)&&(this.textureTransform=new xb(t,r)),ye(this.bufferTransform||this.textureTransform,\"must provide source/feedback buffers or source/target textures\")}_updateDrawOptions(t){let r=Object.assign({},t),i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(let s of i)r=Object.assign(r,s.getDrawOptions(r));return r}};function hat(e){return!!(!Gf(e.feedbackBuffers)||!Gf(e.feedbackMap)||e.varyings&&e.varyings.length>0)}function fat(e){return!!(!Gf(e._sourceTextures)||e._targetTexture||e._targetTextureVarying)}var O7={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Yn=class{static get DRAW_MODE(){return O7}constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{id:r=ea(\"geometry\"),drawMode:i=O7.TRIANGLES,attributes:s={},indices:n=null,vertexCount:o=null}=t;this.id=r,this.drawMode=i|0,this.attributes={},this.userData={},this._setAttributes(s,n),this.vertexCount=o||this._calculateVertexCount(this.attributes,this.indices)}get mode(){return this.drawMode}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(t){return\"Geometry \".concat(this.id,\" attribute \").concat(t)}_setAttributes(t,r){r&&(this.indices=ArrayBuffer.isView(r)?{value:r,size:1}:r);for(let i in t){let s=t[i];s=ArrayBuffer.isView(s)?{value:s}:s,ye(ArrayBuffer.isView(s.value),\"\".concat(this._print(i),\": must be typed array or object with value as typed array\")),(i===\"POSITION\"||i===\"positions\")&&!s.size&&(s.size=3),i===\"indices\"?(ye(!this.indices),this.indices=s):this.attributes[i]=s}return this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this}_calculateVertexCount(t,r){if(r)return r.value.length;let i=1/0;for(let s in t){let n=t[s],{value:o,size:c,constant:f}=n;!f&&o&&c>=1&&(i=Math.min(i,o.length/c))}return ye(Number.isFinite(i)),i}};var dat=1,pat=1,KA=class{constructor(){this.time=0,this.channels=new Map,this.animations=new Map,this.playing=!1,this.lastEngineTime=-1}addChannel(t){let{delay:r=0,duration:i=Number.POSITIVE_INFINITY,rate:s=1,repeat:n=1}=t,o=dat++,c={time:0,delay:r,duration:i,rate:s,repeat:n};return this._setChannelTime(c,this.time),this.channels.set(o,c),o}removeChannel(t){this.channels.delete(t);for(let[r,i]of this.animations)i.channel===t&&this.detachAnimation(r)}isFinished(t){let r=this.channels.get(t);return r===void 0?!1:this.time>=r.delay+r.duration*r.repeat}getTime(t){if(t===void 0)return this.time;let r=this.channels.get(t);return r===void 0?-1:r.time}setTime(t){this.time=Math.max(0,t);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:n,channel:o}=s;n.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(t,r){let i=pat++;return this.animations.set(i,{animation:t,channel:r}),t.setTime(this.getTime(r)),i}detachAnimation(t){this.animations.delete(t)}update(t){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=t),this.setTime(this.time+(t-this.lastEngineTime)),this.lastEngineTime=t)}_setChannelTime(t,r){let i=r-t.delay,s=t.duration*t.repeat;i>=s?t.time=t.duration*t.rate:(t.time=Math.max(0,i)%t.duration,t.time*=t.rate)}};var Aat=[255,255,255],mat=1,gat=0,UE=class{constructor(t={}){G(this,\"id\",void 0),G(this,\"color\",void 0),G(this,\"intensity\",void 0),G(this,\"type\",\"ambient\");let{color:r=Aat}=t,{intensity:i=mat}=t;this.id=t.id||\"ambient-\".concat(gat++),this.color=r,this.intensity=i}};var _at=[255,255,255],yat=1,vat=[0,0,-1],xat=0,bb=class{constructor(t={}){G(this,\"id\",void 0),G(this,\"color\",void 0),G(this,\"intensity\",void 0),G(this,\"type\",\"directional\"),G(this,\"direction\",void 0),G(this,\"shadow\",void 0);let{color:r=_at}=t,{intensity:i=yat}=t,{direction:s=vat}=t,{_shadow:n=!1}=t;this.id=t.id||\"directional-\".concat(xat++),this.color=r,this.intensity=i,this.type=\"directional\",this.direction=new Fe(s).normalize().toArray(),this.shadow=n}getProjectedLight(t){return this}};var wb=class{constructor(t,r={id:\"pass\"}){G(this,\"id\",void 0),G(this,\"gl\",void 0),G(this,\"props\",void 0);let{id:i}=r;this.id=i,this.gl=t,this.props={...r}}setProps(t){Object.assign(this.props,t)}render(t){}cleanup(){}};var ic=class extends wb{constructor(...t){super(...t),G(this,\"_lastRenderIndex\",-1)}render(t){let r=this.gl;return Ml(r,{framebuffer:t.target}),this._drawLayers(t)}_drawLayers(t){let{target:r,moduleParameters:i,viewports:s,views:n,onViewportActive:o,clearStack:c=!0,clearCanvas:f=!0}=t;t.pass=t.pass||\"unknown\";let _=this.gl;f&&wat(_,r),c&&(this._lastRenderIndex=-1);let w=[];for(let I of s){let R=n&&n[I.id];o?.(I);let N=this._getDrawLayerParams(I,t),j=I.subViewports||[I];for(let Q of j){let et=this._drawLayersInViewport(_,{target:r,moduleParameters:i,viewport:Q,view:R,pass:t.pass,layers:t.layers},N);w.push(et)}}return w}_getDrawLayerParams(t,{layers:r,pass:i,isPicking:s=!1,layerFilter:n,cullRect:o,effects:c,moduleParameters:f},_=!1){let w=[],I=B7(this._lastRenderIndex+1),R={layer:r[0],viewport:t,isPicking:s,renderPass:i,cullRect:o},N={};for(let j=0;jWf(t,I))}let w={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};Ml(t,{viewport:_});for(let I=0;I{let o=s.props._offset,c=s.id,f=s.parent&&s.parent.id,_;if(f&&!(f in t)&&i(s.parent,!1),f in r){let w=r[f]=r[f]||B7(t[f],t);_=w(s,n),r[c]=w}else Number.isFinite(o)?(_=o+(t[f]||0),r[c]=null):_=e;return n&&_>=e&&(e=_+1),t[c]=_,_};return i}function bat(e,{moduleParameters:t,target:r,viewport:i}){let s=r&&r.id!==\"default-framebuffer\",n=t&&t.devicePixelRatio||El(e),o=s?r.height:e.drawingBufferHeight,c=i;return[c.x*n,o-(c.y+c.height)*n,c.width*n,c.height*n]}function wat(e,t){let r=t?t.width:e.drawingBufferWidth,i=t?t.height:e.drawingBufferHeight;Ml(e,{viewport:[0,0,r,i]}),e.clear(16640)}var Sb=class extends ic{constructor(t,r){super(t,r),G(this,\"shadowMap\",void 0),G(this,\"depthBuffer\",void 0),G(this,\"fbo\",void 0),this.shadowMap=new pi(t,{width:1,height:1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.depthBuffer=new el(t,{format:33189,width:1,height:1}),this.fbo=new yi(t,{id:\"shadowmap\",width:1,height:1,attachments:{36064:this.shadowMap,36096:this.depthBuffer}})}render(t){let r=this.fbo;Sn(this.gl,{depthRange:[0,1],depthTest:!0,blend:!1,clearColor:[1,1,1,1]},()=>{let i=t.viewports[0],s=El(this.gl),n=i.width*s,o=i.height*s;(n!==r.width||o!==r.height)&&r.resize({width:n,height:o}),super.render({...t,target:r,pass:\"shadow\"})})}shouldDrawLayer(t){return t.props.shadowEnabled!==!1}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.delete(),this.fbo=null),this.shadowMap&&(this.shadowMap.delete(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.delete(),this.depthBuffer=null)}};var F7=\"#define SMOOTH_EDGE_RADIUS 0.5\",Sat=`\n`.concat(F7,`\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n`),Tat=`\n`.concat(F7,`\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`),z7={name:\"geometry\",vs:Sat,fs:Tat};var Mat=Object.keys(Yr).map(e=>\"const int COORDINATE_SYSTEM_\".concat(e,\" = \").concat(Yr[e],\";\")).join(\"\"),Eat=Object.keys(Ja).map(e=>\"const int PROJECTION_MODE_\".concat(e,\" = \").concat(Ja[e],\";\")).join(\"\"),Pat=Object.keys(ho).map(e=>\"const int UNIT_\".concat(e.toUpperCase(),\" = \").concat(ho[e],\";\")).join(\"\"),N7=\"\".concat(Mat,`\n`).concat(Eat,`\n`).concat(Pat,`\n\nuniform int project_uCoordinateSystem;\nuniform int project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\nuniform vec3 project_uCommonOrigin;\nuniform bool project_uPseudoMeters;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\nconst float EARTH_RADIUS = 6370972.0;\nconst float GLOBE_RADIUS = 256.0;\nfloat project_size_at_latitude(float lat) {\n float y = clamp(lat, -89.9, 89.9);\n return 1.0 / cos(radians(y));\n}\n\nfloat project_size() {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\n project_uPseudoMeters == false) {\n \n if (geometry.position.w == 0.0) {\n return project_size_at_latitude(geometry.worldPosition.y);\n }\n \n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\n float y2 = y * y;\n float y4 = y2 * y2;\n float y6 = y4 * y2;\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n }\n return 1.0;\n}\n\nfloat project_size_at_latitude(float meters, float lat) {\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\n}\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z * project_size();\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter * project_size();\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\nmat3 project_get_orientation_matrix(vec3 up) {\n vec3 uz = normalize(up);\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\n vec3 uy = cross(uz, ux);\n return mat3(ux, uy, uz);\n}\n\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n transform = project_get_orientation_matrix(commonPosition);\n return true;\n }\n return false;\n}\nvec3 project_normal(vec3 vector) {\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n mat3 rotation;\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\n n = rotation * n;\n }\n return n;\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x + 180., 360.0) - 180.;\n }\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\nvec3 project_globe_(vec3 lnglatz) {\n float lambda = radians(lnglatz.x);\n float phi = radians(lnglatz.y);\n float cosPhi = cos(phi);\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\n\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\nvec4 project_position(vec4 position, vec3 position64Low) {\n vec4 position_world = project_uModelMatrix * position;\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy),\n project_size_at_latitude(position_world.z, position_world.y),\n position_world.w\n );\n }\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\n position_world.xyz += project_uCoordinateOrigin;\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_globe_(position_world.xyz),\n position_world.w\n );\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\n return vec4(\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\n project_size(position_world.z),\n position_world.w\n );\n }\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\n position_world.xyz -= project_uCoordinateOrigin;\n }\n return project_offset_(position_world) + project_offset_(project_uModelMatrix * vec4(position64Low, 0.0));\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n return viewProjectionMatrix * position + center;\n}\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_size_to_pixel(float size, int unit) {\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\n if (unit == UNIT_COMMON) return size * project_uScale;\n return size;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`);function Iat(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i{for(let s in i)if(!Iat(i[s],t[s])){r=e(i),t=i;break}return r}}var U7=[0,0,0,0],Cat=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],V7=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],Lat=[0,0,0],j7=[0,0,0],kat=Zf(Dat);function tD(e,t,r=j7){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,n=!0;switch(t===Yr.LNGLAT_OFFSETS||t===Yr.METER_OFFSETS?s=r:s=e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case Ja.WEB_MERCATOR:(t===Yr.LNGLAT||t===Yr.CARTESIAN)&&(s=[0,0,0],n=!1);break;case Ja.WEB_MERCATOR_AUTO_OFFSET:t===Yr.LNGLAT?i=s:t===Yr.CARTESIAN&&(i=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],s=e.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case Ja.IDENTITY:i=e.position.map(Math.fround),i[2]=i[2]||0;break;case Ja.GLOBE:n=!1,s=null;break;default:n=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:n}}function Rat(e,t,r){let{viewMatrixUncentered:i,projectionMatrix:s}=e,{viewMatrix:n,viewProjectionMatrix:o}=e,c=U7,f=U7,_=e.cameraPosition,{geospatialOrigin:w,shaderCoordinateOrigin:I,offsetMode:R}=tD(e,t,r);return R&&(f=e.projectPosition(w||I),_=[_[0]-f[0],_[1]-f[1],_[2]-f[2]],f[3]=1,c=zh([],f,o),n=i||n,o=Hf([],s,n),o=Hf([],o,Cat)),{viewMatrix:n,viewProjectionMatrix:o,projectionCenter:c,originCommon:f,cameraPosCommon:_,shaderCoordinateOrigin:I,geospatialOrigin:w}}function G7({viewport:e,devicePixelRatio:t=1,modelMatrix:r=null,coordinateSystem:i=Yr.DEFAULT,coordinateOrigin:s=j7,autoWrapLongitude:n=!1}){i===Yr.DEFAULT&&(i=e.isGeospatial?Yr.LNGLAT:Yr.CARTESIAN);let o=kat({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:s});return o.project_uWrapLongitude=n,o.project_uModelMatrix=r||V7,o}function Dat({viewport:e,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:n,originCommon:o,cameraPosCommon:c,shaderCoordinateOrigin:f,geospatialOrigin:_}=Rat(e,r,i),w=e.getDistanceScales(),I=[e.width*t,e.height*t],R=zh([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,N={project_uCoordinateSystem:r,project_uProjectionMode:e.projectionMode,project_uCoordinateOrigin:f,project_uCommonOrigin:o.slice(0,3),project_uCenter:s,project_uPseudoMeters:!!e._pseudoMeters,project_uViewportSize:I,project_uDevicePixelRatio:t,project_uFocalDistance:R,project_uCommonUnitsPerMeter:w.unitsPerMeter,project_uCommonUnitsPerWorldUnit:w.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:Lat,project_uScale:e.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:n,project_uModelMatrix:V7,project_uCameraPosition:c};if(_){let j=e.getDistanceScales(_);switch(r){case Yr.METER_OFFSETS:N.project_uCommonUnitsPerWorldUnit=j.unitsPerMeter,N.project_uCommonUnitsPerWorldUnit2=j.unitsPerMeter2;break;case Yr.LNGLAT:case Yr.LNGLAT_OFFSETS:e._pseudoMeters||(N.project_uCommonUnitsPerMeter=j.unitsPerMeter),N.project_uCommonUnitsPerWorldUnit=j.unitsPerDegree,N.project_uCommonUnitsPerWorldUnit2=j.unitsPerDegree2;break;case Yr.CARTESIAN:N.project_uCommonUnitsPerWorldUnit=[1,1,j.unitsPerMeter[2]],N.project_uCommonUnitsPerWorldUnit2=[0,0,j.unitsPerMeter2[2]];break;default:break}}return N}var Oat={};function Bat(e=Oat){return\"viewport\"in e?G7(e):{}}var Uh={name:\"project\",dependencies:[yE,z7],vs:N7,getUniforms:Bat};function eD(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function JA(e,t){let r=zh([],t,e);return Cy(r,r,1/r[3]),r}function rD(e,t){let r=e%t;return r<0?t+r:r}function W7(e,t,r){return r*t+(1-r)*e}function Tb(e,t,r){return er?r:e}function Fat(e){return Math.log(e)*Math.LOG2E}var Dy=Math.log2||Fat;function Ru(e,t){if(!e)throw new Error(t||\"@math.gl/web-mercator: assertion failed.\")}var Vh=Math.PI,H7=Vh/4,Du=Vh/180,iD=180/Vh,Oy=512,VE=4003e4,By=85.051129,q7=1.5;function Mb(e){return Math.pow(2,e)}function jE(e){return Dy(e)}function va(e){let[t,r]=e;Ru(Number.isFinite(t)),Ru(Number.isFinite(r)&&r>=-90&&r<=90,\"invalid latitude\");let i=t*Du,s=r*Du,n=Oy*(i+Vh)/(2*Vh),o=Oy*(Vh+Math.log(Math.tan(H7+s*.5)))/(2*Vh);return[n,o]}function nc(e){let[t,r]=e,i=t/Oy*(2*Vh)-Vh,s=2*(Math.atan(Math.exp(r/Oy*(2*Vh)-Vh))-H7);return[i*iD,s*iD]}function nD(e){let{latitude:t}=e;Ru(Number.isFinite(t));let r=Math.cos(t*Du);return jE(VE*r)-9}function Eb(e){let t=Math.cos(e*Du);return Oy/VE/t}function Fy(e){let{latitude:t,longitude:r,highPrecision:i=!1}=e;Ru(Number.isFinite(t)&&Number.isFinite(r));let s=Oy,n=Math.cos(t*Du),o=s/360,c=o/n,f=s/VE/n,_={unitsPerMeter:[f,f,f],metersPerUnit:[1/f,1/f,1/f],unitsPerDegree:[o,c,f],degreesPerUnit:[1/o,1/c,1/f]};if(i){let w=Du*Math.tan(t*Du)/n,I=o*w/2,R=s/VE*w,N=R/c*f;_.unitsPerDegree2=[0,I,R],_.unitsPerMeter2=[N,0,N]}return _}function Pb(e,t){let[r,i,s]=e,[n,o,c]=t,{unitsPerMeter:f,unitsPerMeter2:_}=Fy({longitude:r,latitude:i,highPrecision:!0}),w=va(e);w[0]+=n*(f[0]+_[0]*o),w[1]+=o*(f[1]+_[1]*o);let I=nc(w),R=(s||0)+(c||0);return Number.isFinite(s)||Number.isFinite(c)?[I[0],I[1],R]:I}function GE(e){let{height:t,pitch:r,bearing:i,altitude:s,scale:n,center:o}=e,c=eD();sg(c,c,[0,0,-s]),RE(c,c,-r*Du),DE(c,c,i*Du);let f=n/t;return Iy(c,c,[f,f,f]),o&&sg(c,c,Dj([],o)),c}function sD(e){let{width:t,height:r,altitude:i,pitch:s=0,offset:n,center:o,scale:c,nearZMultiplier:f=1,farZMultiplier:_=1}=e,{fovy:w=ag(q7)}=e;i!==void 0&&(w=ag(i));let I=w*Du,R=s*Du,N=Ib(w),j=N;o&&(j+=o[2]*c/Math.cos(R)/r);let Q=I*(.5+(n?n[1]:0)/r),et=Math.sin(Q)*j/Math.sin(Tb(Math.PI/2-R-Q,.01,Math.PI-.01)),Y=Math.sin(R)*et+j,K=j*10,J=Math.min(Y*_,K);return{fov:I,aspect:t/r,focalDistance:N,near:f,far:J}}function ag(e){return 2*Math.atan(.5/e)*iD}function Ib(e){return .5/Math.tan(.5*e*Du)}function zy(e,t){let[r,i,s=0]=e;return Ru(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),JA(t,[r,i,s,1])}function Yf(e,t,r=0){let[i,s,n]=e;if(Ru(Number.isFinite(i)&&Number.isFinite(s),\"invalid pixel coordinate\"),Number.isFinite(n))return JA(t,[i,s,n,1]);let o=JA(t,[i,s,0,1]),c=JA(t,[i,s,1,1]),f=o[2],_=c[2],w=f===_?0:((r||0)-f)/(_-f);return xE([],o,c,w)}function Cb(e){let{width:t,height:r,bounds:i,minExtent:s=0,maxZoom:n=24,offset:o=[0,0]}=e,[[c,f],[_,w]]=i,I=zat(e.padding),R=va([c,Tb(w,-By,By)]),N=va([_,Tb(f,-By,By)]),j=[Math.max(Math.abs(N[0]-R[0]),s),Math.max(Math.abs(N[1]-R[1]),s)],Q=[t-I.left-I.right-Math.abs(o[0])*2,r-I.top-I.bottom-Math.abs(o[1])*2];Ru(Q[0]>0&&Q[1]>0);let et=Q[0]/j[0],Y=Q[1]/j[1],K=(I.right-I.left)/2/et,J=(I.top-I.bottom)/2/Y,ut=[(N[0]+R[0])/2+K,(N[1]+R[1])/2+J],Pt=nc(ut),kt=Math.min(n,Dy(Math.abs(Math.min(et,Y))));return Ru(Number.isFinite(kt)),{longitude:Pt[0],latitude:Pt[1],zoom:kt}}function zat(e=0){return typeof e==\"number\"?{top:e,bottom:e,left:e,right:e}:(Ru(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var Z7=Math.PI/180;function Lb(e,t=0){let{width:r,height:i,unproject:s}=e,n={targetZ:t},o=s([0,i],n),c=s([r,i],n),f,_,w=e.fovy?.5*e.fovy*Z7:Math.atan(.5/e.altitude),I=(90-e.pitch)*Z7;return w>I-.01?(f=Y7(e,0,t),_=Y7(e,r,t)):(f=s([0,0],n),_=s([r,0],n)),[o,c,_,f]}function Y7(e,t,r){let{pixelUnprojectionMatrix:i}=e,s=JA(i,[t,0,1,1]),n=JA(i,[t,e.height,1,1]),c=(r*e.distanceScales.unitsPerMeter[2]-s[2])/(n[2]-s[2]),f=xE([],s,n,c),_=nc(f);return _.push(r),_}var Q7=512;function WE(e){let{width:t,height:r,pitch:i=0}=e,{longitude:s,latitude:n,zoom:o,bearing:c=0}=e;(s<-180||s>180)&&(s=rD(s+180,360)-180),(c<-180||c>180)&&(c=rD(c+180,360)-180);let f=Dy(r/Q7);if(o<=f)o=f,n=0;else{let _=r/2/Math.pow(2,o),w=nc([0,_])[1];if(nI&&(n=I)}}return{width:t,height:r,longitude:s,latitude:n,zoom:o,pitch:i,bearing:c}}var $7=.01,Uat=[\"longitude\",\"latitude\",\"zoom\"],X7={curve:1.414,speed:1.2};function HE(e,t,r,i){let{startZoom:s,startCenterXY:n,uDelta:o,w0:c,u1:f,S:_,rho:w,rho2:I,r0:R}=K7(e,t,i);if(f<$7){let ut={};for(let Pt of Uat){let kt=e[Pt],Kt=t[Pt];ut[Pt]=W7(kt,Kt,r)}return ut}let N=r*_,j=Math.cosh(R)/Math.cosh(R+w*N),Q=c*((Math.cosh(R)*Math.tanh(R+w*N)-Math.sinh(R))/I)/f,et=1/j,Y=s+jE(et),K=Mj([],o,Q);$A(K,K,n);let J=nc(K);return{longitude:J[0],latitude:J[1],zoom:Y}}function oD(e,t,r){let i={...X7,...r},{screenSpeed:s,speed:n,maxDuration:o}=i,{S:c,rho:f}=K7(e,t,i),_=1e3*c,w;return Number.isFinite(s)?w=_/(s/f):w=_/n,Number.isFinite(o)&&w>o?0:w}function K7(e,t,r){r=Object.assign({},X7,r);let i=r.curve,s=e.zoom,n=[e.longitude,e.latitude],o=Mb(s),c=t.zoom,f=[t.longitude,t.latitude],_=Mb(c-s),w=va(n),I=va(f),R=Cj([],I,w),N=Math.max(e.width,e.height),j=N/_,Q=Ej(R)*o,et=Math.max(Q,$7),Y=i*i,K=(j*j-N*N+Y*Y*et*et)/(2*N*Y*et),J=(j*j-N*N-Y*Y*et*et)/(2*j*Y*et),ut=Math.log(Math.sqrt(K*K+1)-K),Pt=Math.log(Math.sqrt(J*J+1)-J),kt=(Pt-ut)/i;return{startZoom:s,startCenterXY:w,uDelta:R,w0:N,u1:Q,S:kt,rho:i,rho2:Y,r0:ut,r1:Pt}}var jat=`\nconst int max_lights = 2;\nuniform mat4 shadow_uViewProjectionMatrices[max_lights];\nuniform vec4 shadow_uProjectCenters[max_lights];\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform int shadow_uLightId;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\n if (shadow_uDrawShadowMap) {\n return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]);\n }\n if (shadow_uUseShadowMap) {\n for (int i = 0; i < max_lights; i++) {\n if(i < int(shadow_uLightCount)) {\n vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]);\n shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\n }\n }\n }\n return gl_Position;\n}\n`,Gat=`\nconst int max_lights = 2;\nuniform bool shadow_uDrawShadowMap;\nuniform bool shadow_uUseShadowMap;\nuniform sampler2D shadow_uShadowMap0;\nuniform sampler2D shadow_uShadowMap1;\nuniform vec4 shadow_uColor;\nuniform float shadow_uLightCount;\n\nvarying vec3 shadow_vPosition[max_lights];\n\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\n vec4 rgbaDepth = texture2D(shadowMap, position.xy);\n\n float z = dot(rgbaDepth, bitUnpackShift);\n return smoothstep(0.001, 0.01, position.z - z);\n}\n\nvec4 shadow_filterShadowColor(vec4 color) {\n if (shadow_uDrawShadowMap) {\n vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\n rgbaDepth -= rgbaDepth.gbaa * bitMask;\n return rgbaDepth;\n }\n if (shadow_uUseShadowMap) {\n float shadowAlpha = 0.0;\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\n if(shadow_uLightCount > 1.0) {\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\n }\n shadowAlpha *= shadow_uColor.a / shadow_uLightCount;\n float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\n\n return vec4(\n mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha),\n blendedAlpha\n );\n }\n return color;\n}\n`,Wat=Zf(Qat),Hat=Zf($at),qat=[0,0,0,1],Zat=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function Yat(e,t){let[r,i,s]=e,n=Yf([r,i,s],t);return Number.isFinite(s)?n:[n[0],n[1],0]}function Qat({viewport:e,center:t}){return new Tn(e.viewProjectionMatrix).invert().transform(t)}function $at({viewport:e,shadowMatrices:t}){let r=[],i=e.pixelUnprojectionMatrix,s=e.isGeospatial?void 0:1,n=[[0,0,s],[e.width,0,s],[0,e.height,s],[e.width,e.height,s],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(o=>Yat(o,i));for(let o of t){let c=o.clone().translate(new Fe(e.center).negate()),f=n.map(w=>c.transform(w)),_=new Tn().ortho({left:Math.min(...f.map(w=>w[0])),right:Math.max(...f.map(w=>w[0])),bottom:Math.min(...f.map(w=>w[1])),top:Math.max(...f.map(w=>w[1])),near:Math.min(...f.map(w=>-w[2])),far:Math.max(...f.map(w=>-w[2]))});r.push(_.multiplyRight(o))}return r}function Xat(e,t){let{shadowEnabled:r=!0}=e;if(!r||!e.shadowMatrices||!e.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1};let i={shadow_uDrawShadowMap:!!e.drawToShadowMap,shadow_uUseShadowMap:e.shadowMaps?e.shadowMaps.length>0:!1,shadow_uColor:e.shadowColor||qat,shadow_uLightId:e.shadowLightId||0,shadow_uLightCount:e.shadowMatrices.length},s=Wat({viewport:e.viewport,center:t.project_uCenter}),n=[],o=Hat({shadowMatrices:e.shadowMatrices,viewport:e.viewport}).slice();for(let c=0;c0?i[\"shadow_uShadowMap\".concat(c)]=e.shadowMaps[c]:i[\"shadow_uShadowMap\".concat(c)]=e.dummyShadowMap;return i}var kb={name:\"shadow\",dependencies:[Uh],vs:jat,fs:Gat,inject:{\"vs:DECKGL_FILTER_GL_POSITION\":`\n position = shadow_setVertexPosition(geometry.position);\n `,\"fs:DECKGL_FILTER_COLOR\":`\n color = shadow_filterShadowColor(color);\n `},getUniforms:(e={},t={})=>\"viewport\"in e&&(e.drawToShadowMap||e.shadowMaps&&e.shadowMaps.length>0)?Xat(e,t):{}};var Kat={color:[255,255,255],intensity:1},J7=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],Jat=[0,0,0,200/255],Ny=class{constructor(t={}){G(this,\"id\",\"lighting-effect\"),G(this,\"props\",void 0),G(this,\"shadowColor\",Jat),G(this,\"shadow\",void 0),G(this,\"ambientLight\",void 0),G(this,\"directionalLights\",void 0),G(this,\"pointLights\",void 0),G(this,\"shadowPasses\",[]),G(this,\"shadowMaps\",[]),G(this,\"dummyShadowMap\",null),G(this,\"programManager\",void 0),G(this,\"shadowMatrices\",void 0),this.setProps(t)}setProps(t){this.ambientLight=null,this.directionalLights=[],this.pointLights=[];for(let r in t){let i=t[r];switch(i.type){case\"ambient\":this.ambientLight=i;break;case\"directional\":this.directionalLights.push(i);break;case\"point\":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.props=t}preRender(t,{layers:r,layerFilter:i,viewports:s,onViewportActive:n,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices(),this.shadowPasses.length===0&&this._createShadowPasses(t),this.programManager||(this.programManager=Nh.getDefaultProgramManager(t),kb&&this.programManager.addDefaultModule(kb)),this.dummyShadowMap||(this.dummyShadowMap=new pi(t,{width:1,height:1}));for(let c=0;ci.getProjectedLight({layer:t})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:t}))},r}cleanup(){for(let t of this.shadowPasses)t.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.delete(),this.dummyShadowMap=null),this.shadow&&this.programManager&&(this.programManager.removeDefaultModule(kb),this.programManager=null)}_calculateMatrices(){let t=[];for(let r of this.directionalLights){let i=new Tn().lookAt({eye:new Fe(r.direction).negate()});t.push(i)}return t}_createShadowPasses(t){for(let r=0;rs&&(n=s);let o=this._pool,c=t.BYTES_PER_ELEMENT*n,f=o.findIndex(_=>_.byteLength>=c);if(f>=0){let _=new t(o.splice(f,1)[0],0,n);return i&&_.fill(0),_}return new t(n)}_release(t){if(!ArrayBuffer.isView(t))return;let r=this._pool,{buffer:i}=t,{byteLength:s}=i,n=r.findIndex(o=>o.byteLength>=s);n<0?r.push(i):(n>0||r.lengththis.opts.poolSize&&r.shift()}},jh=new aD;function Vy(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function eG(e){return[e[12],e[13],e[14]]}function rG(e){return{left:Uy(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:Uy(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:Uy(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:Uy(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:Uy(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:Uy(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}var tG=new Fe;function Uy(e,t,r,i){tG.set(e,t,r);let s=tG.len();return{distance:i/s,normal:new Fe(-e/s,-t/s,-r/s)}}function tlt(e){return e-Math.fround(e)}var Rb;function qE(e,t){let{size:r=1,startIndex:i=0}=t,s=t.endIndex!==void 0?t.endIndex:e.length,n=(s-i)/r;Rb=jh.allocate(Rb,n,{type:Float32Array,size:r*2});let o=i,c=0;for(;osuper.render({target:o,layers:t,layerFilter:r,views:i,viewports:s,onViewportActive:n,cullRect:I,effects:R?.filter(ut=>ut.useInPicking),pass:N,isPicking:!0,moduleParameters:Q}));return this._colorEncoderState=null,{decodePickingColor:Y&&alt.bind(null,Y),stats:K}}shouldDrawLayer(t){let{pickable:r,operation:i}=t.props;return r&&i.includes(\"draw\")||i.includes(\"terrain\")||i.includes(\"mask\")}getModuleParameters(){return{pickingActive:1,pickingAttribute:this.pickZ,lightSources:{}}}getLayerParameters(t,r,i){let s={...t.props.parameters},{pickable:n,operation:o}=t.props;return this._colorEncoderState?n&&o.includes(\"draw\")&&(Object.assign(s,aG),s.blend=!0,s.blendColor=olt(this._colorEncoderState,t,i)):s.blend=!1,o.includes(\"terrain\")&&(s.blend=!1),s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function olt(e,t,r){let{byLayer:i,byAlpha:s}=e,n,o=i.get(t);return o?(o.viewports.push(r),n=o.a):(n=i.size+1,n<=255?(o={a:n,layer:t,viewports:[r]},i.set(t,o),s[n]=o):(nr.warn(\"Too many pickable layers, only picking the first 255\")(),n=0)),[0,0,0,n/255]}function alt(e,t){let r=e.byAlpha[t[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(t)}}var tm={NO_STATE:\"Awaiting state\",MATCHED:\"Matched. State transferred from previous layer\",INITIALIZED:\"Initialized\",AWAITING_GC:\"Discarded. Awaiting garbage collection\",AWAITING_FINALIZATION:\"No longer matched. Awaiting garbage collection\",FINALIZED:\"Finalized! Awaiting garbage collection\"},jy=Symbol.for(\"component\"),Ou=Symbol.for(\"propTypes\"),ZE=Symbol.for(\"deprecatedProps\"),op=Symbol.for(\"asyncPropDefaults\"),Qf=Symbol.for(\"asyncPropOriginal\"),Gh=Symbol.for(\"asyncPropResolved\");function ap(e,t=()=>!0){return Array.isArray(e)?lG(e,t,[]):t(e)?[e]:[]}function lG(e,t,r){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(t,r){if(t===this._data&&!r)return;this._data=t;let i=++this._loadCount,s=t;typeof t==\"string\"&&(s=jA(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let n of this._subscribers)n.onChange(this.getData())}};var Ob=class{constructor({gl:t,protocol:r}){G(this,\"protocol\",void 0),G(this,\"_context\",void 0),G(this,\"_resources\",void 0),G(this,\"_consumers\",void 0),G(this,\"_pruneRequest\",void 0),this.protocol=r||\"resource://\",this._context={gl:t,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:r,forceUpdate:i=!1,persistent:s=!0}){let n=this._resources[t];n?n.setData(r,i):(n=new Db(t,r,this._context),this._resources[t]=n),n.persistent=s}remove(t){let r=this._resources[t];r&&(r.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let r=this._consumers[t];if(r){for(let i in r){let s=r[i],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:r,consumerId:i,requestId:s=\"default\"}){let{_resources:n,protocol:o}=this;t.startsWith(o)&&(t=t.replace(o,\"\"),n[t]||this.add({resourceId:t,data:null,persistent:!1}));let c=n[t];if(this._track(i,s,c,r),c)return c.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let t in this._resources)this._resources[t].delete()}_track(t,r,i,s){let n=this._consumers,o=n[t]=n[t]||{},c=o[r]||{},f=c.resourceId&&this._resources[c.resourceId];f&&(f.unsubscribe(c),this.prune()),i&&(o[r]=c,c.onChange=s,c.resourceId=i.id,i.subscribe(c))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let r=this._resources[t];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[t])}}};var llt=`\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n mat3 rotation;\n if (project_needs_rotation(projectedPosition, rotation)) {\n // offset is specified as ENU\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\n offset = rotation * offset;\n }\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`,Rs={name:\"project32\",dependencies:[Uh],vs:llt};var fo={inject:{\"vs:DECKGL_FILTER_GL_POSITION\":`\n // for picking depth values\n picking_setPickingAttribute(position.z / position.w);\n `,\"vs:DECKGL_FILTER_COLOR\":`\n picking_setPickingColor(geometry.pickingColor);\n `,\"fs:#decl\":`\nuniform bool picking_uAttribute;\n `,\"fs:DECKGL_FILTER_COLOR\":{order:99,injection:`\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `}},...zE};var clt=[Uh],ult=[\"vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)\",\"vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)\",\"vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)\",\"fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)\"];function cG(e){let t=Nh.getDefaultProgramManager(e);for(let r of clt)t.addDefaultModule(r);for(let r of ult)t.addShaderHook(r);return t}var hlt=\"layerManager.setLayers\",flt=\"layerManager.activateViewport\",Bb=class{constructor(t,{deck:r,stats:i,viewport:s,timeline:n}={}){G(this,\"layers\",void 0),G(this,\"context\",void 0),G(this,\"resourceManager\",void 0),G(this,\"_lastRenderedLayers\",[]),G(this,\"_needsRedraw\",!1),G(this,\"_needsUpdate\",!1),G(this,\"_nextLayers\",null),G(this,\"_debug\",!1),G(this,\"activateViewport\",o=>{Ls(flt,this,o),o&&(this.context.viewport=o)}),this.layers=[],this.resourceManager=new Ob({gl:t,protocol:\"deck://\"}),this.context={mousePosition:null,userData:{},layerManager:this,gl:t,deck:r,programManager:t&&cG(t),stats:i||new jf({id:\"deck.gl\"}),viewport:s||new sc({id:\"DEFAULT-INITIAL-VIEWPORT\"}),timeline:n||new KA,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(t);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?\"layers changed\":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(r=>t.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(t){\"debug\"in t&&(this._debug=t.debug),\"userData\"in t&&(this.context.userData=t.userData),\"layers\"in t&&(this._nextLayers=t.layers),\"onError\"in t&&(this.context.onError=t.onError)}setLayers(t,r){Ls(hlt,this,r,t),this._lastRenderedLayers=t;let i=ap(t,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let t=this.needsUpdate();t&&(this.setNeedsRedraw(\"updating layers: \".concat(t)),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}_handleError(t,r,i){i.raiseError(r,\"\".concat(t,\" of \").concat(i))}_updateLayers(t,r){let i={};for(let o of t)i[o.id]?nr.warn(\"Multiple old layers with same id \".concat(o.id))():i[o.id]=o;let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let n=!1;for(let o of s)if(o.hasUniformTransition()){n=\"Uniform transition in \".concat(o);break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(t,r,i){for(let s of t){s.context=this.context;let n=r[s.id];n===null&&nr.warn(\"Multiple new layers with same id \".concat(s.id))(),r[s.id]=null;let o=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),o=s.isComposite?s.getSubLayers():null}catch(c){this._handleError(\"matching\",c,s)}o&&this._updateSublayersRecursively(o,r,i)}}_finalizeOldLayers(t){for(let r in t){let i=t[r];i&&this._finalizeLayer(i)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=tm.INITIALIZED}catch(r){this._handleError(\"initialization\",r,t)}}_transferLayerState(t,r){r._transferState(t),r.lifecycle=tm.MATCHED,r!==t&&(t.lifecycle=tm.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(r){this._handleError(\"update\",r,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||\"finalized \".concat(t),t.lifecycle=tm.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=tm.FINALIZED}catch(r){this._handleError(\"finalization\",r,t)}}};function po(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;ir.containsPixel(t)):this._viewports}getViews(){let t={};return this.views.forEach(r=>{t[r.id]=r}),t}getView(t){return this.views.find(r=>r.id===t)}getViewState(t){let r=typeof t==\"string\"?this.getView(t):t,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(t){return this._viewportMap[t]}unproject(t,r){let i=this.getViewports(),s={x:t[0],y:t[1]};for(let n=i.length-1;n>=0;--n){let o=i[n];if(o.containsPixel(s)){let c=t.slice();return c[0]-=o.x,c[1]-=o.y,o.unproject(c,r)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),(\"width\"in t||\"height\"in t)&&this._setSize(t.width,t.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(t,r){(t!==this.width||r!==this.height)&&(this.width=t,this.height=r,this.setNeedsUpdate(\"Size changed\"))}_setViews(t){t=ap(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate(\"views changed\"),this.views=t}_setViewState(t){t?(!po(t,this.viewState,3)&&this.setNeedsUpdate(\"viewState changed\"),this.viewState=t):nr.warn(\"missing `viewState` or `initialViewState`\")()}_onViewStateChange(t,r){this._eventCallbacks.onViewStateChange&&this._eventCallbacks.onViewStateChange({...r,viewId:t})}_createController(t,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._onViewStateChange.bind(this,r.id),onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:n=>{var o;return(o=this.getView(t.id))===null||o===void 0?void 0:o.makeViewport({viewState:n,width:this.width,height:this.height})}})}_updateController(t,r,i,s){let n=t.controller;if(n&&i){let o={...r,...n,id:t.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==n.type)&&(s=this._createController(t,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:t}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=t.length;s--;){let n=t[s],o=this.getViewState(n),c=n.makeViewport({viewState:o,width:this.width,height:this.height}),f=r[n.id],_=!!n.controller;_&&!f&&(i=!0),(i||!_)&&f&&(f.finalize(),f=null),this.controllers[n.id]=this._updateController(n,o,c,f),c&&this._viewports.unshift(c)}for(let s in r){let n=r[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,r){return t.length!==r.length?!0:t.some((i,s)=>!t[s].equals(r[s]))}};var dlt=/([0-9]+\\.?[0-9]*)(%|px)/;function lp(e){switch(typeof e){case\"number\":return{position:e,relative:!1};case\"string\":let t=dlt.exec(e);if(t&&t.length>=3){let r=t[2]===\"%\",i=parseFloat(t[1]);return{position:r?i/100:i,relative:r}}default:throw new Error(\"Could not parse position string \".concat(e))}}function cp(e,t){return e.relative?Math.round(e.position*t):e.position}function yr(e,t){if(!e)throw new Error(t||\"deck.gl: assertion failed.\")}var Qc=class{constructor(t){G(this,\"id\",void 0),G(this,\"viewportInstance\",void 0),G(this,\"_x\",void 0),G(this,\"_y\",void 0),G(this,\"_width\",void 0),G(this,\"_height\",void 0),G(this,\"_padding\",void 0),G(this,\"props\",void 0);let{id:r,x:i=0,y:s=0,width:n=\"100%\",height:o=\"100%\",padding:c=null,viewportInstance:f}=t||{};yr(!f||f instanceof sc),this.viewportInstance=f,this.id=r||this.constructor.displayName||\"view\",this.props={...t,id:this.id},this._x=lp(i),this._y=lp(s),this._width=lp(n),this._height=lp(o),this._padding=c&&{left:lp(c.left||0),right:lp(c.right||0),top:lp(c.top||0),bottom:lp(c.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.viewportInstance?t.viewportInstance?this.viewportInstance.equals(t.viewportInstance):!1:this.ViewportType===t.ViewportType&&po(this.props,t.props,2)}makeViewport({width:t,height:r,viewState:i}){if(this.viewportInstance)return this.viewportInstance;i=this.filterViewState(i);let s=this.getDimensions({width:t,height:r});return!s.height||!s.width?null:new this.ViewportType({...i,...this.props,...s})}getViewStateId(){let{viewState:t}=this.props;return typeof t==\"string\"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState==\"object\"){if(!this.props.viewState.id)return this.props.viewState;let r={...t};for(let i in this.props.viewState)i!==\"id\"&&(r[i]=this.props.viewState[i]);return r}return t}getDimensions({width:t,height:r}){let i={x:cp(this._x,t),y:cp(this._y,r),width:cp(this._width,t),height:cp(this._height,r)};return this._padding&&(i.padding={left:cp(this._padding.left,t),top:cp(this._padding.top,r),right:cp(this._padding.right,t),bottom:cp(this._padding.bottom,r)}),i}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t==\"function\"?{type:t}:{type:this.ControllerType,...t}:null}};var $c=class{constructor(t){G(this,\"_inProgress\",void 0),G(this,\"_handle\",void 0),G(this,\"_timeline\",void 0),G(this,\"time\",void 0),G(this,\"settings\",void 0),this._inProgress=!1,this._handle=null,this._timeline=t,this.time=0,this.settings={duration:0}}get inProgress(){return this._inProgress}start(t){var r,i;this.cancel(),this.settings=t,this._inProgress=!0,(r=(i=this.settings).onStart)===null||r===void 0||r.call(i,this)}end(){if(this._inProgress){var t,r;this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,(t=(r=this.settings).onEnd)===null||t===void 0||t.call(r,this)}}cancel(){if(this._inProgress){var t,r;(t=(r=this.settings).onInterrupt)===null||t===void 0||t.call(r,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1}}update(){var t,r;if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:i,settings:s}=this;this._handle=i.addChannel({delay:i.getTime(),duration:s.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),(t=(r=this.settings).onUpdate)===null||t===void 0||t.call(r,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var uG=()=>{},hD={BREAK:1,SNAP_TO_END:2,IGNORE:3},plt=e=>e,Alt=hD.BREAK,zb=class{constructor(t){G(this,\"getControllerState\",void 0),G(this,\"props\",void 0),G(this,\"propsInTransition\",void 0),G(this,\"transition\",void 0),G(this,\"onViewStateChange\",void 0),G(this,\"onStateChange\",void 0),G(this,\"_onTransitionUpdate\",r=>{let{time:i,settings:{interpolator:s,startProps:n,endProps:o,duration:c,easing:f}}=r,_=f(i/c),w=s.interpolateProps(n,o,_);this.propsInTransition=this.getControllerState({...this.props,...w}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})}),this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new $c(t.timeline),this.onViewStateChange=t.onViewStateChange||uG,this.onStateChange=t.onStateChange||uG}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let r=!1,i=this.props;if(this.props=t,!i||this._shouldIgnoreViewportChange(i,t))return!1;if(this._isTransitionEnabled(t)){let s=i;if(this.transition.inProgress){let{interruption:n,endProps:o}=this.transition.settings;s={...i,...n===hD.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(s,t),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:r,transitionInterpolator:i}=t;return(r>0||r===\"auto\")&&!!i}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,r){return this.transition.inProgress?this.transition.settings.interruption===hD.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(t,r):!0}_triggerTransition(t,r){let i=this.getControllerState(t),s=this.getControllerState(r).shortestPathFrom(i),n=r.transitionInterpolator,o=n.getDuration?n.getDuration(t,r):r.transitionDuration;if(o===0)return;let c=n.initializeProps(t,s);this.propsInTransition={};let f={duration:o,easing:r.transitionEasing||plt,interpolator:n,interruption:r.transitionInterruption||Alt,startProps:c.start,endProps:c.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(f),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(r)}}};var cg=class{constructor(t){G(this,\"_propsToCompare\",void 0),G(this,\"_propsToExtract\",void 0),G(this,\"_requiredProps\",void 0);let{compare:r,extract:i,required:s}=t;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(t,r){for(let i of this._propsToCompare)if(!(i in t)||!(i in r)||!ko(t[i],r[i]))return!1;return!0}initializeProps(t,r){let i={},s={};for(let n of this._propsToExtract)(n in t||n in r)&&(i[n]=t[n],s[n]=r[n]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(t,r){return r.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(r=>{let i=t[r];yr(Number.isFinite(i)||Array.isArray(i),\"\".concat(r,\" is required for transition\"))})}};var mlt=[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\"],glt=[\"longitude\",\"latitude\",\"zoom\"],ug=class extends cg{constructor(t={}){let r=Array.isArray(t)?t:t.transitionProps,i=Array.isArray(t)?{}:t;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:mlt,required:glt},super(i.transitionProps),G(this,\"opts\",void 0),this.opts=i}initializeProps(t,r){let i=super.initializeProps(t,r),{makeViewport:s,around:n}=this.opts;if(s&&n){let o=s(t),c=s(r),f=o.unproject(n);i.start.around=n,Object.assign(i.end,{around:c.project(f),aroundPosition:f,width:r.width,height:r.height})}return i}interpolateProps(t,r,i){let s={};for(let n of this._propsToExtract)s[n]=il(t[n]||0,r[n]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...r,...s});Object.assign(s,n.panByPosition(r.aroundPosition,il(t.around,r.around,i)))}return s}};var em={transitionDuration:0},_lt=300,YE=e=>1-(1-e)*(1-e),Gy={WHEEL:[\"wheel\"],PAN:[\"panstart\",\"panmove\",\"panend\"],PINCH:[\"pinchstart\",\"pinchmove\",\"pinchend\"],TRIPLE_PAN:[\"tripanstart\",\"tripanmove\",\"tripanend\"],DOUBLE_TAP:[\"doubletap\"],KEYBOARD:[\"keydown\"]},hg={},Nb=class{constructor(t){G(this,\"props\",void 0),G(this,\"state\",{}),G(this,\"transitionManager\",void 0),G(this,\"eventManager\",void 0),G(this,\"onViewStateChange\",void 0),G(this,\"onStateChange\",void 0),G(this,\"makeViewport\",void 0),G(this,\"_controllerState\",void 0),G(this,\"_events\",{}),G(this,\"_interactionState\",{isDragging:!1}),G(this,\"_customEvents\",[]),G(this,\"_eventStartBlocked\",null),G(this,\"_panMove\",!1),G(this,\"invertPan\",!1),G(this,\"dragMode\",\"rotate\"),G(this,\"inertia\",0),G(this,\"scrollZoom\",!0),G(this,\"dragPan\",!0),G(this,\"dragRotate\",!0),G(this,\"doubleClickZoom\",!0),G(this,\"touchZoom\",!0),G(this,\"touchRotate\",!1),G(this,\"keyboard\",!0),this.transitionManager=new zb({...t,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(let r in this._events)if(this._events[r]){var t;(t=this.eventManager)===null||t===void 0||t.off(r,this.handleEvent)}this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;let r=this._eventStartBlocked;switch(t.type){case\"panstart\":return r?!1:this._onPanStart(t);case\"panmove\":return this._onPan(t);case\"panend\":return this._onPanEnd(t);case\"pinchstart\":return r?!1:this._onPinchStart(t);case\"pinchmove\":return this._onPinch(t);case\"pinchend\":return this._onPinchEnd(t);case\"tripanstart\":return r?!1:this._onTriplePanStart(t);case\"tripanmove\":return this._onTriplePan(t);case\"tripanend\":return this._onTriplePanEnd(t);case\"doubletap\":return this._onDoubleTap(t);case\"wheel\":return this._onWheel(t);case\"keydown\":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){let{x:r,y:i}=this.props,{offsetCenter:s}=t;return[s.x-r,s.y-i]}isPointInBounds(t,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let n=t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=s;return n&&r&&r.stopPropagation(),n}isFunctionKeyPressed(t){let{srcEvent:r}=t;return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=r}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,\"transitionInterpolator\"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r}=t;this.inertia=Number.isFinite(r)?r:r===!0?_lt:0;let{scrollZoom:i=!0,dragPan:s=!0,dragRotate:n=!0,doubleClickZoom:o=!0,touchZoom:c=!0,touchRotate:f=!1,keyboard:_=!0}=t,w=!!this.onViewStateChange;this.toggleEvents(Gy.WHEEL,w&&i),this.toggleEvents(Gy.PAN,w),this.toggleEvents(Gy.PINCH,w&&(c||f)),this.toggleEvents(Gy.TRIPLE_PAN,w&&f),this.toggleEvents(Gy.DOUBLE_TAP,w&&o),this.toggleEvents(Gy.KEYBOARD,w&&_),this.scrollZoom=i,this.dragPan=s,this.dragRotate=n,this.doubleClickZoom=o,this.touchZoom=c,this.touchRotate=f,this.keyboard=_}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,r){this.eventManager&&t.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(t,r=null,i={}){let s={...t.getViewportProps(),...r},n=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(i),n){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode===\"pan\")&&(i=!i);let s=this.controllerState[i?\"panStart\":\"rotateStart\"]({pos:r});return this._panMove=i,this.updateViewport(s,em,{isDragging:!0}),!0}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;let r=this.getCenter(t),i=this.controllerState.pan({pos:r});return this.updateViewport(i,em,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:r}=this;if(this.dragPan&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],n=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:YE},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let r=this.getCenter(t),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,em,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:r}=this;if(this.dragRotate&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],n=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:YE},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;t.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=t,o=2/(1+Math.exp(-Math.abs(n*i)));n<0&&o!==0&&(o=1/o);let c=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(c,{...this._getTransitionProps({around:r}),transitionDuration:s?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,em,{isDragging:!0}),!0}_onTriplePan(t){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(t);r[0]-=t.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,em,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&t.velocityY){let i=this.getCenter(t),s=[i[0],i[1]+=t.velocityY*r/2],n=this.controllerState.rotate({pos:s});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:YE},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return hg._startPinchRotation=t.rotation,hg._lastPinchEvent=t,this.updateViewport(i,em,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=t,s=this.getCenter(t);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=t;r=r.rotate({deltaAngleX:hg._startPinchRotation-i})}return this.updateViewport(r,em,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),hg._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=hg;if(this.touchZoom&&r&&i&&t.scale!==i.scale){let s=this.getCenter(t),n=this.controllerState.rotateEnd(),o=Math.log2(t.scale),c=(o-Math.log2(i.scale))/(t.deltaTime-i.deltaTime),f=Math.pow(2,o+c*r/2);n=n.zoom({pos:s,scale:f}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:YE},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return hg._startPinchRotation=null,hg._lastPinchEvent=null,!0}_onDoubleTap(t){if(!this.doubleClickZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(t),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:c}=this,f,_={};switch(t.srcEvent.code){case\"Minus\":f=r?c.zoomOut(i).zoomOut(i):c.zoomOut(i),_.isZooming=!0;break;case\"Equal\":f=r?c.zoomIn(i).zoomIn(i):c.zoomIn(i),_.isZooming=!0;break;case\"ArrowLeft\":r?(f=c.rotateLeft(n),_.isRotating=!0):(f=c.moveLeft(s),_.isPanning=!0);break;case\"ArrowRight\":r?(f=c.rotateRight(n),_.isRotating=!0):(f=c.moveRight(s),_.isPanning=!0);break;case\"ArrowUp\":r?(f=c.rotateUp(o),_.isRotating=!0):(f=c.moveUp(s),_.isPanning=!0);break;case\"ArrowDown\":r?(f=c.rotateDown(o),_.isRotating=!0):(f=c.moveDown(s),_.isPanning=!0);break;default:return!1}return this.updateViewport(f,this._getTransitionProps(),_),!0}_getTransitionProps(t){let{transition:r}=this;return!r||!r.transitionInterpolator?em:t?{...r,transitionInterpolator:new ug({...t,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Ub=class{constructor(t,r){G(this,\"_viewportProps\",void 0),G(this,\"_state\",void 0),this._viewportProps=this.applyConstraints(t),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var hG=5,ylt=1.2,fD=class extends Ub{constructor(t){let{width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:c=0,pitch:f=0,altitude:_=1.5,position:w=[0,0,0],maxZoom:I=20,minZoom:R=0,maxPitch:N=60,minPitch:j=0,startPanLngLat:Q,startZoomLngLat:et,startRotatePos:Y,startBearing:K,startPitch:J,startZoom:ut,normalize:Pt=!0}=t;yr(Number.isFinite(n)),yr(Number.isFinite(s)),yr(Number.isFinite(o)),super({width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:c,pitch:f,altitude:_,maxZoom:I,minZoom:R,maxPitch:N,minPitch:j,normalize:Pt,position:w},{startPanLngLat:Q,startZoomLngLat:et,startRotatePos:Y,startBearing:K,startPitch:J,startZoom:ut}),G(this,\"makeViewport\",void 0),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:n,startPitch:o}=this.getState();if(!s||n===void 0||o===void 0)return this;let c;return t?c=this._getNewRotation(t,s,o,n):c={bearing:n+r,pitch:o+i},this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:n}=this.getState();if(n||(s=this.getViewportProps().zoom,n=this._unproject(r)||this._unproject(t)),!n)return this;let{maxZoom:o,minZoom:c}=this.getViewportProps(),f=s+Math.log2(i);f=Il(f,c,o);let _=this.makeViewport({...this.getViewportProps(),zoom:f});return this._getUpdatedState({zoom:f,..._.panByPosition(n,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){let r=t.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:n}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(t){let{maxZoom:r,minZoom:i,zoom:s}=t;t.zoom=Il(s,i,r);let{maxPitch:n,minPitch:o,pitch:c}=t;t.pitch=Il(c,o,n);let{normalize:f=!0}=t;return f&&Object.assign(t,WE(t)),t}_zoomFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:t})}_panFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+t[0],i/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){let r=this.makeViewport(this.getViewportProps());return t&&r.unproject(t)}_getNewRotation(t,r,i,s){let n=t[0]-r[0],o=t[1]-r[1],c=t[1],f=r[1],{width:_,height:w}=this.getViewportProps(),I=n/_,R=0;o>0?Math.abs(w-f)>hG&&(R=o/(f-w)*ylt):o<0&&f>hG&&(R=1-c/f),R=Il(R,-1,1);let{minPitch:N,maxPitch:j}=this.getViewportProps(),Q=s+180*I,et=i;return R>0?et=i+R*(j-i):R<0&&(et=i-R*(N-i)),{pitch:et,bearing:Q}}},Vb=class extends Nb{constructor(...t){super(...t),G(this,\"ControllerState\",fD),G(this,\"transition\",{transitionDuration:300,transitionInterpolator:new ug({transitionProps:{compare:[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\",\"position\"],required:[\"longitude\",\"latitude\",\"zoom\"]}})}),G(this,\"dragMode\",\"pan\")}setProps(t){t.position=t.position||[0,0,0];let r=this.props;super.setProps(t),(!r||r.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}};var Wy=class extends Qc{get ViewportType(){return oc}get ControllerType(){return Vb}};G(Wy,\"displayName\",\"MapView\");var vlt=new Ny;function xlt(e,t){var r,i;let s=(r=e.order)!==null&&r!==void 0?r:1/0,n=(i=t.order)!==null&&i!==void 0?i:1/0;return s-n}var jb=class{constructor(){G(this,\"effects\",void 0),G(this,\"_resolvedEffects\",[]),G(this,\"_defaultEffects\",[]),G(this,\"_needsRedraw\",void 0),this.effects=[],this._needsRedraw=\"Initial render\",this._setEffects([])}addDefaultEffect(t){let r=this._defaultEffects;if(!r.find(i=>i.id===t.id)){let i=r.findIndex(s=>xlt(s,t)>0);i<0?r.push(t):r.splice(i,0,t),this._setEffects(this.effects)}}setProps(t){\"effects\"in t&&(po(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(t){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of t){let n=r[s.id];n&&n!==s?n.setProps?(n.setProps(s.props),i.push(n)):(n.cleanup(),i.push(s)):i.push(s),delete r[s.id]}for(let s in r)r[s].cleanup();this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),t.some(s=>s instanceof Ny)||this._resolvedEffects.push(vlt),this._needsRedraw=\"effects changed\"}finalize(){for(let t of this._resolvedEffects)t.cleanup();this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Gb=class extends ic{shouldDrawLayer(t){let{operation:r}=t.props;return r.includes(\"draw\")||r.includes(\"terrain\")}};var blt=\"deckRenderer.renderLayers\",Wb=class{constructor(t){G(this,\"gl\",void 0),G(this,\"layerFilter\",void 0),G(this,\"drawPickingColors\",void 0),G(this,\"drawLayersPass\",void 0),G(this,\"pickLayersPass\",void 0),G(this,\"renderCount\",void 0),G(this,\"_needsRedraw\",void 0),G(this,\"renderBuffers\",void 0),G(this,\"lastPostProcessEffect\",void 0),this.gl=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Gb(t),this.pickLayersPass=new lg(t),this.renderCount=0,this._needsRedraw=\"Initial render\",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw=\"layerFilter changed\"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw=\"drawPickingColors changed\")}renderLayers(t){if(!t.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t,target:t.target||yi.getDefaultFramebuffer(this.gl)};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target,n=r.render({...i,target:s});i.effects&&this._postRender(i.effects,i),this.renderCount++,Ls(blt,this,n,t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:t}=this;for(let r of t)r.delete();t.length=0}_preRender(t,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of t)r.preRenderStats[i.id]=i.preRender(this.gl,r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:t}=this;t.length===0&&t.push(new yi(this.gl),new yi(this.gl));for(let r of t)r.resize()}_postRender(t,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1],target:null};for(let n of t)if(n.postRender){if(n.id===this.lastPostProcessEffect){s.target=r.target,n.postRender(this.gl,s);break}let o=n.postRender(this.gl,s);s.inputBuffer=o,s.swapBuffer=o===i[0]?i[1]:i[0]}}};var wlt={pickedColor:null,pickedObjectIndex:-1};function fG({pickedColors:e,decodePickingColor:t,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:n}){let{x:o,y:c,width:f,height:_}=n,w=s*s,I=-1,R=0;for(let N=0;N<_;N++){let j=N+c-i,Q=j*j;if(Q>w)R+=4*f;else for(let et=0;et=0){let K=et+o-r,J=K*K+Q;J<=w&&(w=J,I=R)}R+=4}}if(I>=0){let N=e.slice(I,I+4),j=t(N);if(j){let Q=Math.floor(I/4/f),et=I/4-Q*f;return{...j,pickedColor:N,pickedX:o+et,pickedY:c+Q}}nr.error(\"Picked non-existent layer. Is picking buffer corrupt?\")()}return wlt}function dG({pickedColors:e,decodePickingColor:t}){let r=new Map;if(e){for(let i=0;i=0){let n=e.slice(i,i+4),o=n.join(\",\");if(!r.has(o)){let c=t(n);c?r.set(o,{...c,color:n}):nr.error(\"Picked non-existent layer. Is picking buffer corrupt?\")()}}}return Array.from(r.values())}function dD({pickInfo:e,viewports:t,pixelRatio:r,x:i,y:s,z:n}){let o=t[0];t.length>1&&(o=Slt(e?.pickedViewports||t,{x:i,y:s}));let c;if(o){let f=[i-o.x,s-o.y];n!==void 0&&(f[2]=n),c=o.unproject(f)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:c,devicePixel:e&&\"pickedX\"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:r}}function pG(e){let{pickInfo:t,lastPickedInfo:r,mode:i,layers:s}=e,{pickedColor:n,pickedLayer:o,pickedObjectIndex:c}=t,f=o?[o]:[];if(i===\"hover\"){let I=r.index,R=r.layerId,N=o?o.props.id:null;if(N!==R||c!==I){if(N!==R){let j=s.find(Q=>Q.props.id===R);j&&f.unshift(j)}r.layerId=N,r.index=c,r.info=null}}let _=dD(e),w=new Map;return w.set(null,_),f.forEach(I=>{let R={..._};I===o&&(R.color=n,R.index=c,R.picked=!0),R=pD({layer:I,info:R,mode:i});let N=R.layer;I===o&&i===\"hover\"&&(r.info=R),w.set(N.id,R),i===\"hover\"&&N.updateAutoHighlight(R)}),w}function pD({layer:e,info:t,mode:r}){for(;e&&t;){let i=t.layer||null;t.sourceLayer=i,t.layer=e,t=e.getPickingInfo({info:t,mode:r,sourceLayer:i}),e=e.parent}return t}function Slt(e,t){for(let r=e.length-1;r>=0;r--){let i=e[r];if(i.containsPixel(t))return i}return e[0]}var Hb=class{constructor(t){G(this,\"gl\",void 0),G(this,\"pickingFBO\",void 0),G(this,\"depthFBO\",void 0),G(this,\"pickLayersPass\",void 0),G(this,\"layerFilter\",void 0),G(this,\"lastPickedInfo\",void 0),G(this,\"_pickable\",!0),this.gl=t,this.pickLayersPass=new lg(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){\"layerFilter\"in t&&(this.layerFilter=t.layerFilter),\"_pickable\"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.delete(),this.depthFBO&&(this.depthFBO.color.delete(),this.depthFBO.delete())}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:r,layers:i,viewports:s},n=this.lastPickedInfo.info){let o=n&&n.layer&&n.layer.id,c=n&&n.viewport&&n.viewport.id,f=o?i.find(R=>R.id===o):null,_=c&&s.find(R=>R.id===c)||s[0],w=_&&_.unproject([t-_.x,r-_.y]);return{...n,...{x:t,y:r,viewport:_,coordinate:w,layer:f}}}_resizeBuffer(){var t,r;let{gl:i}=this;if(!this.pickingFBO&&(this.pickingFBO=new yi(i),yi.isSupported(i,{colorBufferFloat:!0}))){let s=new yi(i);s.attach({36064:new pi(i,{format:hr(i)?34836:6408,type:5126})}),this.depthFBO=s}(t=this.pickingFBO)===null||t===void 0||t.resize({width:i.canvas.width,height:i.canvas.height}),(r=this.depthFBO)===null||r===void 0||r.resize({width:i.canvas.width,height:i.canvas.height})}_getPickable(t){if(this._pickable===!1)return null;let r=t.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}_pickClosestObject({layers:t,views:r,viewports:i,x:s,y:n,radius:o=0,depth:c=1,mode:f=\"query\",unproject3D:_,onViewportActive:w,effects:I}){let R=this._getPickable(t),N=El(this.gl);if(!R)return{result:[],emptyInfo:dD({viewports:i,x:s,y:n,pixelRatio:N})};this._resizeBuffer();let j=gy(this.gl,[s,n],!0),Q=[j.x+Math.floor(j.width/2),j.y+Math.floor(j.height/2)],et=Math.round(o*N),{width:Y,height:K}=this.pickingFBO,J=this._getPickingRect({deviceX:Q[0],deviceY:Q[1],deviceRadius:et,deviceWidth:Y,deviceHeight:K}),ut={x:s-o,y:n-o,width:o*2+1,height:o*2+1},Pt,kt=[],Kt=new Set;for(let Zt=0;Zt=_)break;let Ge=kt[ue],tr={color:Ge.pickedColor,layer:null,index:Ge.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:N};tr=pD({layer:Ge.pickedLayer,info:tr,mode:f});let er=(ce=tr.object)!==null&&ce!==void 0?ce:\"\".concat(tr.layer.id,\"[\").concat(tr.index,\"]\");Kt.has(er)||Kt.set(er,tr)}return Array.from(Kt.values())}_drawAndSample({layers:t,views:r,viewports:i,onViewportActive:s,deviceRect:n,cullRect:o,effects:c,pass:f},_=!1){let w=_?this.depthFBO:this.pickingFBO,I={layers:t,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:w,deviceRect:n,cullRect:o,effects:c,pass:f,pickZ:_,preRenderStats:{}};for(let K of c)K.useInPicking&&(I.preRenderStats[K.id]=K.preRender(this.gl,I));let{decodePickingColor:R}=this.pickLayersPass.render(I),{x:N,y:j,width:Q,height:et}=n,Y=new(_?Float32Array:Uint8Array)(Q*et*4);return Rh(w,{sourceX:N,sourceY:j,sourceWidth:Q,sourceHeight:et,target:Y}),{pickedColors:Y,decodePickingColor:R}}_getPickingRect({deviceX:t,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:n}){let o=Math.max(0,t-i),c=Math.max(0,r-i),f=Math.min(s,t+i+1)-o,_=Math.min(n,r+i+1)-c;return f<=0||_<=0?null:{x:o,y:c,width:f,height:_}}};var Tlt={zIndex:\"1\",position:\"absolute\",pointerEvents:\"none\",color:\"#a0a7b4\",backgroundColor:\"#29323c\",padding:\"10px\",top:\"0\",left:\"0\",display:\"none\"},qb=class{constructor(t){G(this,\"el\",null),G(this,\"isVisible\",!1);let r=t.parentElement;r&&(this.el=document.createElement(\"div\"),this.el.className=\"deck-tooltip\",Object.assign(this.el.style,Tlt),r.appendChild(this.el))}setTooltip(t,r,i){let s=this.el;if(s){if(typeof t==\"string\")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display=\"none\";return}this.isVisible=!0,s.style.display=\"block\",s.style.transform=\"translate(\".concat(r,\"px, \").concat(i,\"px)\"),t&&typeof t==\"object\"&&\"style\"in t&&Object.assign(s.style,t.style)}}remove(){this.el&&(this.el.remove(),this.el=null)}};var fg=Ri(AG());var Mlt={mousedown:1,mousemove:2,mouseup:4};function Elt(e,t){for(let r=0;r0&&i.type===\"pointerdown\"&&(Elt(s,n=>n.pointerId===i.pointerId)||s.push(i)),t.call(this,i)}}function gG(e){e.prototype.handler=function(r){let i=Mlt[r.type];i&1&&r.button>=0&&(this.pressed=!0),i&2&&r.which===0&&(i=4),this.pressed&&(i&4&&(this.pressed=!1),this.callback(this.manager,i,{pointers:[r],changedPointers:[r],pointerType:\"mouse\",srcEvent:r}))}}mG(fg.PointerEventInput);gG(fg.MouseInput);var _G=fg.Manager,Wh=fg;var Hh=class{constructor(t,r,i){this.element=t,this.callback=r,this.options={enable:!0,...i}}};var yG=Wh?[[Wh.Pan,{event:\"tripan\",pointers:3,threshold:0,enable:!1}],[Wh.Rotate,{enable:!1}],[Wh.Pinch,{enable:!1}],[Wh.Swipe,{enable:!1}],[Wh.Pan,{threshold:0,enable:!1}],[Wh.Press,{enable:!1}],[Wh.Tap,{event:\"doubletap\",taps:2,enable:!1}],[Wh.Tap,{event:\"anytap\",enable:!1}],[Wh.Tap,{enable:!1}]]:null,AD={tripan:[\"rotate\",\"pinch\",\"pan\"],rotate:[\"pinch\"],pinch:[\"pan\"],pan:[\"press\",\"doubletap\",\"anytap\",\"tap\"],doubletap:[\"anytap\"],anytap:[\"tap\"]},vG={doubletap:[\"tap\"]},xG={pointerdown:\"pointerdown\",pointermove:\"pointermove\",pointerup:\"pointerup\",touchstart:\"pointerdown\",touchmove:\"pointermove\",touchend:\"pointerup\",mousedown:\"pointerdown\",mousemove:\"pointermove\",mouseup:\"pointerup\"},Hy={KEY_EVENTS:[\"keydown\",\"keyup\"],MOUSE_EVENTS:[\"mousedown\",\"mousemove\",\"mouseup\",\"mouseover\",\"mouseout\",\"mouseleave\"],WHEEL_EVENTS:[\"wheel\",\"mousewheel\"]},bG={tap:\"tap\",anytap:\"anytap\",doubletap:\"doubletap\",press:\"press\",pinch:\"pinch\",pinchin:\"pinch\",pinchout:\"pinch\",pinchstart:\"pinch\",pinchmove:\"pinch\",pinchend:\"pinch\",pinchcancel:\"pinch\",rotate:\"rotate\",rotatestart:\"rotate\",rotatemove:\"rotate\",rotateend:\"rotate\",rotatecancel:\"rotate\",tripan:\"tripan\",tripanstart:\"tripan\",tripanmove:\"tripan\",tripanup:\"tripan\",tripandown:\"tripan\",tripanleft:\"tripan\",tripanright:\"tripan\",tripanend:\"tripan\",tripancancel:\"tripan\",pan:\"pan\",panstart:\"pan\",panmove:\"pan\",panup:\"pan\",pandown:\"pan\",panleft:\"pan\",panright:\"pan\",panend:\"pan\",pancancel:\"pan\",swipe:\"swipe\",swipeleft:\"swipe\",swiperight:\"swipe\",swipeup:\"swipe\",swipedown:\"swipe\"},mD={click:\"tap\",anyclick:\"anytap\",dblclick:\"doubletap\",mousedown:\"pointerdown\",mousemove:\"pointermove\",mouseup:\"pointerup\",mouseover:\"pointerover\",mouseout:\"pointerout\",mouseleave:\"pointerleave\"};var wG=typeof navigator<\"u\"&&navigator.userAgent?navigator.userAgent.toLowerCase():\"\",dg=typeof window<\"u\"?window:global;var $E=!1;try{let e={get passive(){return $E=!0,!0}};dg.addEventListener(\"test\",null,e),dg.removeEventListener(\"test\",null)}catch{$E=!1}var Plt=wG.indexOf(\"firefox\")!==-1,{WHEEL_EVENTS:Ilt}=Hy,SG=\"wheel\",TG=4.000244140625,Clt=40,Llt=.25,Zb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{if(!this.options.enable)return;let n=s.deltaY;dg.WheelEvent&&(Plt&&s.deltaMode===dg.WheelEvent.DOM_DELTA_PIXEL&&(n/=dg.devicePixelRatio),s.deltaMode===dg.WheelEvent.DOM_DELTA_LINE&&(n*=Clt)),n!==0&&n%TG===0&&(n=Math.floor(n/TG)),s.shiftKey&&n&&(n=n*Llt),this.callback({type:SG,center:{x:s.clientX,y:s.clientY},delta:-n,srcEvent:s,pointerType:\"mouse\",target:s.target})},this.events=(this.options.events||[]).concat(Ilt),this.events.forEach(s=>t.addEventListener(s,this.handleEvent,$E?{passive:!1}:!1))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===SG&&(this.options.enable=r)}};var{MOUSE_EVENTS:klt}=Hy,MG=\"pointermove\",EG=\"pointerover\",PG=\"pointerout\",IG=\"pointerenter\",CG=\"pointerleave\",Yb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;let{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,this.events=(this.options.events||[]).concat(klt),this.events.forEach(n=>t.addEventListener(n,this.handleEvent))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===MG&&(this.enableMoveEvent=r),t===EG&&(this.enableOverEvent=r),t===PG&&(this.enableOutEvent=r),t===IG&&(this.enableEnterEvent=r),t===CG&&(this.enableLeaveEvent=r)}handleOverEvent(t){this.enableOverEvent&&t.type===\"mouseover\"&&this._emit(EG,t)}handleOutEvent(t){this.enableOutEvent&&t.type===\"mouseout\"&&this._emit(PG,t)}handleEnterEvent(t){this.enableEnterEvent&&t.type===\"mouseenter\"&&this._emit(IG,t)}handleLeaveEvent(t){this.enableLeaveEvent&&t.type===\"mouseleave\"&&this._emit(CG,t)}handleMoveEvent(t){if(this.enableMoveEvent)switch(t.type){case\"mousedown\":t.button>=0&&(this.pressed=!0);break;case\"mousemove\":t.which===0&&(this.pressed=!1),this.pressed||this._emit(MG,t);break;case\"mouseup\":this.pressed=!1;break;default:}}_emit(t,r){this.callback({type:t,center:{x:r.clientX,y:r.clientY},srcEvent:r,pointerType:\"mouse\",target:r.target})}};var{KEY_EVENTS:Rlt}=Hy,LG=\"keydown\",kG=\"keyup\",Qb=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{let n=s.target||s.srcElement;n.tagName===\"INPUT\"&&n.type===\"text\"||n.tagName===\"TEXTAREA\"||(this.enableDownEvent&&s.type===\"keydown\"&&this.callback({type:LG,srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type===\"keyup\"&&this.callback({type:kG,srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(Rlt),t.tabIndex=this.options.tabIndex||0,t.style.outline=\"none\",this.events.forEach(s=>t.addEventListener(s,this.handleEvent))}destroy(){this.events.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t===LG&&(this.enableDownEvent=r),t===kG&&(this.enableUpEvent=r)}};var RG=\"contextmenu\",$b=class extends Hh{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:RG,center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:\"mouse\",target:s.target})},t.addEventListener(\"contextmenu\",this.handleEvent)}destroy(){this.element.removeEventListener(\"contextmenu\",this.handleEvent)}enableEventType(t,r){t===RG&&(this.options.enable=r)}};var Dlt={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},Olt=1,Blt=2,Flt=3,zlt=0,Nlt=1,Ult=2,Vlt=1,jlt=2,Glt=4;function DG(e){let t=Dlt[e.srcEvent.type];if(!t)return null;let{buttons:r,button:i,which:s}=e.srcEvent,n=!1,o=!1,c=!1;return t===4||t===2&&!Number.isFinite(r)?(n=s===Olt,o=s===Blt,c=s===Flt):t===2?(n=!!(r&Vlt),o=!!(r&Glt),c=!!(r&jlt)):t===1&&(n=i===zlt,o=i===Nlt,c=i===Ult),{leftButton:n,middleButton:o,rightButton:c}}function OG(e,t){let r=e.center;if(!r)return null;let i=t.getBoundingClientRect(),s=i.width/t.offsetWidth||1,n=i.height/t.offsetHeight||1,o={x:(r.x-i.left-t.clientLeft)/s,y:(r.y-i.top-t.clientTop)/n};return{center:r,offsetCenter:o}}var gD={srcElement:\"root\",priority:0},Xb=class{constructor(t){this.handleEvent=r=>{if(this.isEmpty())return;let i=this._normalizeEvent(r),s=r.srcEvent.target;for(;s&&s!==i.rootElement;){if(this._emit(i,s),i.handled)return;s=s.parentNode}this._emit(i,\"root\")},this.eventManager=t,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,r,i,s=!1,n=!1){let{handlers:o,handlersByElement:c}=this,f=gD;typeof i==\"string\"||i&&i.addEventListener?f={...gD,srcElement:i}:i&&(f={...gD,...i});let _=c.get(f.srcElement);_||(_=[],c.set(f.srcElement,_));let w={type:t,handler:r,srcElement:f.srcElement,priority:f.priority};s&&(w.once=!0),n&&(w.passive=!0),o.push(w),this._active=this._active||!w.passive;let I=_.length-1;for(;I>=0&&!(_[I].priority>=w.priority);)I--;_.splice(I+1,0,w)}remove(t,r){let{handlers:i,handlersByElement:s}=this;for(let n=i.length-1;n>=0;n--){let o=i[n];if(o.type===t&&o.handler===r){i.splice(n,1);let c=s.get(o.srcElement);c.splice(c.indexOf(o),1),c.length===0&&s.delete(o.srcElement)}}this._active=i.some(n=>!n.passive)}_emit(t,r){let i=this.handlersByElement.get(r);if(i){let s=!1,n=()=>{t.handled=!0},o=()=>{t.handled=!0,s=!0},c=[];for(let f=0;f{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};var Wlt={events:null,recognizers:null,recognizerOptions:{},Manager:_G,touchAction:\"none\",tabIndex:0},qy=class{constructor(t=null,r){this._onBasicInput=s=>{let{srcEvent:n}=s,o=xG[n.type];o&&this.manager.emit(o,s)},this._onOtherEvent=s=>{this.manager.emit(s.type,s)},this.options={...Wlt,...r},this.events=new Map,this.setElement(t);let{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}setElement(t){if(this.element&&this.destroy(),this.element=t,!t)return;let{options:r}=this,i=r.Manager;this.manager=new i(t,{touchAction:r.touchAction,recognizers:r.recognizers||yG}).on(\"hammer.input\",this._onBasicInput),r.recognizers||Object.keys(AD).forEach(s=>{let n=this.manager.get(s);n&&AD[s].forEach(o=>{n.recognizeWith(o)})});for(let s in r.recognizerOptions){let n=this.manager.get(s);if(n){let o=r.recognizerOptions[s];delete o.enable,n.set(o)}}this.wheelInput=new Zb(t,this._onOtherEvent,{enable:!1}),this.moveInput=new Yb(t,this._onOtherEvent,{enable:!1}),this.keyInput=new Qb(t,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new $b(t,this._onOtherEvent,{enable:!1});for(let[s,n]of this.events)n.isEmpty()||(this._toggleRecognizer(n.recognizerName,!0),this.manager.on(s,n.handleEvent))}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy(),this.wheelInput=null,this.moveInput=null,this.keyInput=null,this.contextmenuInput=null,this.manager=null,this.element=null)}on(t,r,i){this._addEventHandler(t,r,i,!1)}once(t,r,i){this._addEventHandler(t,r,i,!0)}watch(t,r,i){this._addEventHandler(t,r,i,!1,!0)}off(t,r){this._removeEventHandler(t,r)}_toggleRecognizer(t,r){let{manager:i}=this;if(!i)return;let s=i.get(t);if(s&&s.options.enable!==r){s.set({enable:r});let n=vG[t];n&&!this.options.recognizers&&n.forEach(o=>{let c=i.get(o);r?(c.requireFailure(t),s.dropRequireFailure(o)):c.dropRequireFailure(t)})}this.wheelInput.enableEventType(t,r),this.moveInput.enableEventType(t,r),this.keyInput.enableEventType(t,r),this.contextmenuInput.enableEventType(t,r)}_addEventHandler(t,r,i,s,n){if(typeof t!=\"string\"){i=r;for(let w in t)this._addEventHandler(w,t[w],i,s,n);return}let{manager:o,events:c}=this,f=mD[t]||t,_=c.get(f);_||(_=new Xb(this),c.set(f,_),_.recognizerName=bG[f]||f,o&&o.on(f,_.handleEvent)),_.add(t,r,i,s,n),_.isEmpty()||this._toggleRecognizer(_.recognizerName,!0)}_removeEventHandler(t,r){if(typeof t!=\"string\"){for(let o in t)this._removeEventHandler(o,t[o]);return}let{events:i}=this,s=mD[t]||t,n=i.get(s);if(n&&(n.remove(t,r),n.isEmpty())){let{recognizerName:o}=n,c=!1;for(let f of i.values())if(f.recognizerName===o&&!f.isEmpty()){c=!0;break}c||this._toggleRecognizer(o,!1)}}};function pg(){}var Hlt=({isDragging:e})=>e?\"grabbing\":\"grab\",BG={id:\"\",width:\"100%\",height:\"100%\",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,glOptions:{},parameters:{},parent:null,gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:\"none\",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,onWebGLInitialized:pg,onResize:pg,onViewStateChange:pg,onInteractionStateChange:pg,onBeforeRender:pg,onAfterRender:pg,onLoad:pg,onError:e=>nr.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:Hlt,getTooltip:null,debug:!1,drawPickingColors:!1},up=class{constructor(t){G(this,\"props\",void 0),G(this,\"width\",0),G(this,\"height\",0),G(this,\"userData\",{}),G(this,\"canvas\",null),G(this,\"viewManager\",null),G(this,\"layerManager\",null),G(this,\"effectManager\",null),G(this,\"deckRenderer\",null),G(this,\"deckPicker\",null),G(this,\"eventManager\",null),G(this,\"tooltip\",null),G(this,\"metrics\",void 0),G(this,\"animationLoop\",void 0),G(this,\"stats\",void 0),G(this,\"viewState\",void 0),G(this,\"cursorState\",void 0),G(this,\"_needsRedraw\",void 0),G(this,\"_pickRequest\",void 0),G(this,\"_lastPointerDownInfo\",null),G(this,\"_metricsCounter\",void 0),G(this,\"_onPointerMove\",r=>{let{_pickRequest:i}=this;if(r.type===\"pointerleave\")i.x=-1,i.y=-1,i.radius=0;else{if(r.leftButton||r.rightButton)return;{let s=r.offsetCenter;if(!s)return;i.x=s.x,i.y=s.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=r}),G(this,\"_onEvent\",r=>{let i=Z4[r.type],s=r.offsetCenter;if(!i||!s||!this.layerManager)return;let n=this.layerManager.getLayers(),o=this.deckPicker.getLastPickedObject({x:s.x,y:s.y,layers:n,viewports:this.getViewports(s)},this._lastPointerDownInfo),{layer:c}=o,f=c&&(c[i.handler]||c.props[i.handler]),_=this.props[i.handler],w=!1;f&&(w=f.call(c,o,r)),!w&&_&&_(o,r)}),G(this,\"_onPointerDown\",r=>{let i=r.offsetCenter,s=this._pick(\"pickObject\",\"pickObject Time\",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=s.result[0]||s.emptyInfo}),this.props={...BG,...t},t=this.props,this._needsRedraw=\"Initial render\",this._pickRequest={mode:\"hover\",x:-1,y:-1,radius:0,event:null},this.cursorState={isHovering:!1,isDragging:!1},t.viewState&&t.initialViewState&&nr.warn(\"View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.\")(),dy()===\"IE\"&&nr.warn(\"IE 11 is not supported\")(),this.viewState=t.initialViewState,t.gl||typeof document<\"u\"&&(this.canvas=this._createCanvas(t)),this.animationLoop=this._createAnimationLoop(t),this.stats=new jf({id:\"deck.gl\"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this.setProps(t),t._typedArrayManagerProps&&jh.setOptions(t._typedArrayManagerProps),this.animationLoop.start()}finalize(){var t,r,i,s,n,o,c,f;if((t=this.animationLoop)===null||t===void 0||t.stop(),this.animationLoop=null,this._lastPointerDownInfo=null,(r=this.layerManager)===null||r===void 0||r.finalize(),this.layerManager=null,(i=this.viewManager)===null||i===void 0||i.finalize(),this.viewManager=null,(s=this.effectManager)===null||s===void 0||s.finalize(),this.effectManager=null,(n=this.deckRenderer)===null||n===void 0||n.finalize(),this.deckRenderer=null,(o=this.deckPicker)===null||o===void 0||o.finalize(),this.deckPicker=null,(c=this.eventManager)===null||c===void 0||c.destroy(),this.eventManager=null,(f=this.tooltip)===null||f===void 0||f.remove(),this.tooltip=null,!this.props.canvas&&!this.props.gl&&this.canvas){var _;(_=this.canvas.parentElement)===null||_===void 0||_.removeChild(this.canvas),this.canvas=null}}setProps(t){this.stats.get(\"setProps Time\").timeStart(),\"onLayerHover\"in t&&nr.removed(\"onLayerHover\",\"onHover\")(),\"onLayerClick\"in t&&nr.removed(\"onLayerClick\",\"onClick\")(),t.initialViewState&&!po(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop.setProps(r),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r)),this.stats.get(\"setProps Time\").timeEnd()}needsRedraw(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return\"Deck._animate\";let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),n=this.effectManager.needsRedraw(t),o=this.deckRenderer.needsRedraw(t);return r=r||i||s||n||o,r}redraw(t){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=t||r,r&&(this.stats.get(\"Redraw Count\").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return yr(this.viewManager),this.viewManager.views}getViewports(t){return yr(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){let r=this._pick(\"pickObject\",\"pickObject Time\",t).result;return r.length?r[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick(\"pickObject\",\"pickMultipleObjects Time\",t).result}pickObjects(t){return this._pick(\"pickObjects\",\"pickObjects Time\",t)}_addResources(t,r=!1){for(let i in t)this.layerManager.resourceManager.add({resourceId:i,data:t[i],forceUpdate:r})}_removeResources(t){for(let r of t)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_pick(t,r,i){yr(this.deckPicker);let{stats:s}=this;s.get(\"Pick Count\").incrementCount(),s.get(r).timeStart();let n=this.deckPicker[t]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(r).timeEnd(),n}_createCanvas(t){let r=t.canvas;return typeof r==\"string\"&&(r=document.getElementById(r),yr(r)),r||(r=document.createElement(\"canvas\"),r.id=t.id||\"deckgl-overlay\",(t.parent||document.body).appendChild(r)),Object.assign(r.style,t.style),r}_setCanvasSize(t){if(!this.canvas)return;let{width:r,height:i}=t;if(r||r===0){let n=Number.isFinite(r)?\"\".concat(r,\"px\"):r;this.canvas.style.width=n}if(i||i===0){var s;let n=Number.isFinite(i)?\"\".concat(i,\"px\"):i;this.canvas.style.position=((s=t.style)===null||s===void 0?void 0:s.position)||\"absolute\",this.canvas.style.height=n}}_updateCanvasSize(){var t,r;let{canvas:i}=this;if(!i)return;let s=(t=i.clientWidth)!==null&&t!==void 0?t:i.width,n=(r=i.clientHeight)!==null&&r!==void 0?r:i.height;if(s!==this.width||n!==this.height){var o,c;this.width=s,this.height=n,(o=this.viewManager)===null||o===void 0||o.setProps({width:s,height:n}),(c=this.layerManager)===null||c===void 0||c.activateViewport(this.getViewports()[0]),this.props.onResize({width:s,height:n})}}_createAnimationLoop(t){let{width:r,height:i,gl:s,glOptions:n,debug:o,onError:c,onBeforeRender:f,onAfterRender:_,useDevicePixels:w}=t;return new tg({width:r,height:i,useDevicePixels:w,autoResizeDrawingBuffer:!s,autoResizeViewport:!1,gl:s,onCreateContext:I=>_y({...n,...I,canvas:this.canvas,debug:o,onContextLost:()=>this._onContextLost()}),onInitialize:I=>this._setGLContext(I.gl),onRender:this._onRenderFrame.bind(this),onBeforeRender:f,onAfterRender:_,onError:c})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let t=this.props.views||[new Wy({id:\"default-view\"})];return t=Array.isArray(t)?t:[t],t.length&&this.props.controller&&(t[0].props.controller=this.props.controller),t}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error(\"WebGL context is lost\"))}_pickAndCallback(){let{_pickRequest:t}=this;if(t.event){let{result:i,emptyInfo:s}=this._pick(\"pickObject\",\"pickObject Time\",t);this.cursorState.isHovering=i.length>0;let n=s,o=!1;for(let c of i){var r;n=c,o=((r=c.layer)===null||r===void 0?void 0:r.onHover(c,t.event))||o}if(!o&&this.props.onHover&&this.props.onHover(n,t.event),this.props.getTooltip&&this.tooltip){let c=this.props.getTooltip(n);this.tooltip.setTooltip(c,n.x,n.y)}t.event=null}}_updateCursor(){let t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setGLContext(t){if(this.layerManager)return;this.canvas||(this.canvas=t.canvas,W0(t,{enable:!0,copyState:!0})),this.tooltip=new qb(this.canvas),Ml(t,{blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onWebGLInitialized(t);let r=new KA;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new qy(this.props.parent||t.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in Z4)this.eventManager.on(s,this._onEvent);this.viewManager=new Fb({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new Bb(t,{deck:this,stats:this.stats,viewport:i,timeline:r}),this.effectManager=new jb,this.deckRenderer=new Wb(t),this.deckPicker=new Hb(t),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,r){let{gl:i}=this.layerManager.context;Ml(i,this.props.parameters),this.props.onBeforeRender({gl:i}),this.deckRenderer.renderLayers({target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:\"screen\",effects:this.effectManager.getEffects(),...r}),this.props.onAfterRender({gl:i})}_onRenderFrame(t){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),nr.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.tooltip.isVisible&&this.viewManager.needsRedraw()&&this.tooltip.setTooltip(null),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(t){let r=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get(\"frameRate\").timeEnd(),t.get(\"frameRate\").timeStart();let r=this.animationLoop.stats;t.get(\"GPU Time\").addTime(r.get(\"GPU Time\").lastTiming),t.get(\"CPU Time\").addTime(r.get(\"CPU Time\").lastTiming)}_getMetrics(){let{metrics:t,stats:r}=this;t.fps=r.get(\"frameRate\").getHz(),t.setPropsTime=r.get(\"setProps Time\").time,t.updateAttributesTime=r.get(\"Update Attributes\").time,t.framesRedrawn=r.get(\"Redraw Count\").count,t.pickTime=r.get(\"pickObject Time\").time+r.get(\"pickMultipleObjects Time\").time+r.get(\"pickObjects Time\").time,t.pickCount=r.get(\"Pick Count\").count,t.gpuTime=r.get(\"GPU Time\").time,t.cpuTime=r.get(\"CPU Time\").time,t.gpuTimePerFrame=r.get(\"GPU Time\").getAverageTime(),t.cpuTimePerFrame=r.get(\"CPU Time\").getAverageTime();let i=Lu.get(\"Memory Usage\");t.bufferMemory=i.get(\"Buffer Memory\").count,t.textureMemory=i.get(\"Texture Memory\").count,t.renderbufferMemory=i.get(\"Renderbuffer Memory\").count,t.gpuMemory=i.get(\"GPU Memory\").count}};G(up,\"defaultProps\",BG);G(up,\"VERSION\",fV);var Ag=class{constructor(t,r){G(this,\"opts\",void 0),G(this,\"source\",void 0),this.opts=r,this.source=t}get value(){return this.source.value}getValue(){let t=this.source.getBuffer(),r=this.getAccessor();if(t)return[t,r];let{value:i}=this.source,{size:s}=r,n=i;if(i&&i.length!==s){n=new Float32Array(s);let o=r.elementOffset||0;for(let c=0;c=n){let o=new Array(s).fill(1/0),c=new Array(s).fill(-1/0);for(let f=0;fc[_]&&(c[_]=w)}t=[o,c]}}return this.state.bounds=t,t}setData(t){let{state:r}=this,i;ArrayBuffer.isView(t)?i={value:t}:t instanceof Fr?i={buffer:t}:i=t;let s={...this.settings,...i};if(r.bufferAccessor=s,r.bounds=null,i.constant){let n=i.value;if(n=this._normalizeValue(n,[],0),this.settings.normalized&&(n=this.normalizeConstant(n)),!(!r.constant||!this._areValuesEqual(n,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=n}else if(i.buffer){let n=i.buffer;r.externalBuffer=n,r.constant=!1,this.value=i.value||null;let o=i.value instanceof Float64Array;s.type=i.type||n.accessor.type,s.bytesPerElement=n.accessor.BYTES_PER_ELEMENT*(o?2:1),s.stride=XE(s)}else if(i.value){this._checkExternalBuffer(i);let n=i.value;r.externalBuffer=null,r.constant=!1,this.value=n,s.bytesPerElement=n.BYTES_PER_ELEMENT,s.stride=XE(s);let{buffer:o,byteOffset:c}=this;this.doublePrecision&&n instanceof Float64Array&&(n=qE(n,s));let f=n.byteLength+c+s.stride*2;o.byteLength(r+128)/255*2-1);case 5122:return new Float32Array(t).map(r=>(r+32768)/65535*2-1);case 5121:return new Float32Array(t).map(r=>r/255);case 5123:return new Float32Array(t).map(r=>r/65535);default:return t}}_normalizeValue(t,r,i){let{defaultValue:s,size:n}=this.settings;if(Number.isFinite(t))return r[i]=t,r;if(!t){let o=n;for(;--o>=0;)r[i+o]=s[o];return r}switch(n){case 4:r[i+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:r[i+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:r[i+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:r[i+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let o=n;for(;--o>=0;)r[i+o]=Number.isFinite(t[o])?t[o]:s[o]}return r}_areValuesEqual(t,r){if(!t||!r)return!1;let{size:i}=this;for(let s=0;s0&&(UG.length=e.length,i=UG):i=NG,(t>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(t,r),s.index=t-1),{iterable:i,objectInfo:s}}function KE(e){return e&&e[Symbol.asyncIterator]}function JE(e,t){let{size:r,stride:i,offset:s,startIndices:n,nested:o}=t,c=e.BYTES_PER_ELEMENT,f=i?i/c:r,_=s?s/c:0,w=Math.floor((e.length-_)/f);return(I,{index:R,target:N})=>{if(!n){let Y=R*f+_;for(let K=0;K=t[1]))return e;let r=[],i=e.length,s=0;for(let n=0;nt[1]?r.push(o):t=[Math.min(o[0],t[0]),Math.max(o[1],t[1])]}return r.splice(s,0,t),r}function _D(e){let{source:t,target:r,start:i=0,size:s,getData:n}=e,o=e.end||r.length,c=t.length,f=o-i;if(c>f){r.set(t.subarray(0,f),i);return}if(r.set(t,i),!n)return;let _=c;for(;_i(w+c,I)),_=Math.min(s.length,n.length);for(let w=1;w<_;w++){let I=s[w]*r,R=n[w]*r;_D({source:e.subarray(o,I),target:t,start:c,end:R,size:r,getData:f}),o=I,c=R}return ce},spring:{stiffness:.05,damping:.5}};function tP(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:\"interpolation\",duration:e});let r=e.type||\"interpolation\";return{...Ylt[r],...t,...e,type:r}}function eP(e,t){let r=t.getBuffer();return r?[r,{divisor:0,size:t.size,normalized:t.settings.normalized}]:t.value}function rP(e){switch(e){case 1:return\"float\";case 2:return\"vec2\";case 3:return\"vec3\";case 4:return\"vec4\";default:throw new Error('No defined attribute type for size \"'.concat(e,'\"'))}}function iP(e){e.push(e.shift())}function tw(e,t){let{doublePrecision:r,settings:i,value:s,size:n}=e,o=r&&s instanceof Float64Array?2:1;return(i.noAlloc?s.length:t*n)*o}function nP({buffer:e,numInstances:t,attribute:r,fromLength:i,fromStartIndices:s,getData:n=o=>o}){let o=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*o,f=r.byteOffset,_=r.startIndices,w=s&&_,I=tw(r,t),R=r.isConstant;if(!w&&i>=I)return;let N=R?r.value:r.getBuffer().getData({srcByteOffset:f});if(r.settings.normalized&&!R){let Y=n;n=(K,J)=>r.normalizeConstant(Y(K,J))}let j=R?(Y,K)=>n(N,K):(Y,K)=>n(N.subarray(Y,Y+c),K),Q=e.getData({length:i}),et=new Float32Array(I);GG({source:Q,target:et,sourceStartIndices:s,targetStartIndices:_,size:c,getData:j}),e.byteLengtht[n])]:t[r];return tP(s,i)}setNeedsUpdate(t=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),r){let{startRow:i=0,endRow:s=1/0}=r;this.state.updateRanges=jG(this.state.updateRanges,[i,s])}else this.state.updateRanges=Jb}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=VG}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:r,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(t,r.updateRanges!==Jb),!0):!1}updateBuffer({numInstances:t,data:r,props:i,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:o,noAlloc:c}}=this,f=!0;if(o){for(let[_,w]of n)o.call(s,this,{data:r,startRow:_,endRow:w,props:i,numInstances:t});if(this.value)if(this.constant||this.buffer.byteLengthw?_.set(J,Q):(t._normalizeValue(J,Y.target,0),uD({target:_,source:Y.target,start:Q,count:ut}));Q+=ut*w}else t._normalizeValue(J,_,Q),Q+=w}}_validateAttributeUpdaters(){let{settings:t}=this;if(!(t.noAlloc||typeof t.update==\"function\"))throw new Error(\"Attribute \".concat(this.id,\" missing update or accessor\"))}_checkAttributeArray(){let{value:t}=this,r=Math.min(4,this.size);if(t&&t.length>=r){let i=!0;switch(r){case 4:i=i&&Number.isFinite(t[3]);case 3:i=i&&Number.isFinite(t[2]);case 2:i=i&&Number.isFinite(t[1]);case 1:i=i&&Number.isFinite(t[0]);break;default:i=!1}if(!i)throw new Error(\"Illegal attribute generated for \".concat(this.id))}}};var ew=class{constructor({gl:t,attribute:r,timeline:i}){G(this,\"gl\",void 0),G(this,\"type\",\"interpolation\"),G(this,\"attributeInTransition\",void 0),G(this,\"settings\",void 0),G(this,\"attribute\",void 0),G(this,\"transition\",void 0),G(this,\"currentStartIndices\",void 0),G(this,\"currentLength\",void 0),G(this,\"transform\",void 0),G(this,\"buffers\",void 0),this.gl=t,this.transition=new $c(i),this.attribute=r,this.attributeInTransition=new hp(t,r.settings),this.currentStartIndices=r.startIndices,this.currentLength=0,this.transform=$lt(t,r);let s={byteLength:0,usage:35050};this.buffers=[new Fr(t,s),new Fr(t,s)]}get inProgress(){return this.transition.inProgress}start(t,r){if(t.duration<=0){this.transition.cancel();return}this.settings=t;let{gl:i,buffers:s,attribute:n}=this;iP(s);let o={numInstances:r,attribute:n,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:t.enter};for(let c of s)nP({buffer:c,...o});this.currentStartIndices=n.startIndices,this.currentLength=tw(n,r),this.attributeInTransition.setData({buffer:s[1],value:n.value}),this.transition.start(t),this.transform.update({elementCount:Math.floor(this.currentLength/n.size),sourceBuffers:{aFrom:s[0],aTo:eP(i,n)},feedbackBuffers:{vCurrent:s[1]}})}update(){let t=this.transition.update();if(t){let{duration:r,easing:i}=this.settings,{time:s}=this.transition,n=s/r;i&&(n=i(n)),this.transform.run({uniforms:{time:n}})}return t}cancel(){this.transition.cancel(),this.transform.delete();for(let t of this.buffers)t.delete();this.buffers.length=0}},Qlt=`\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;function $lt(e,t){let r=rP(t.size);return new rc(e,{vs:Qlt,defines:{ATTRIBUTE_TYPE:r},varyings:[\"vCurrent\"]})}var rw=class{constructor({gl:t,attribute:r,timeline:i}){G(this,\"gl\",void 0),G(this,\"type\",\"spring\"),G(this,\"attributeInTransition\",void 0),G(this,\"settings\",void 0),G(this,\"attribute\",void 0),G(this,\"transition\",void 0),G(this,\"currentStartIndices\",void 0),G(this,\"currentLength\",void 0),G(this,\"texture\",void 0),G(this,\"framebuffer\",void 0),G(this,\"transform\",void 0),G(this,\"buffers\",void 0),this.gl=t,this.type=\"spring\",this.transition=new $c(i),this.attribute=r,this.attributeInTransition=new hp(t,{...r.settings,normalized:!1}),this.currentStartIndices=r.startIndices,this.currentLength=0,this.texture=Klt(t),this.framebuffer=Jlt(t,this.texture),this.transform=Xlt(t,r,this.framebuffer);let s={byteLength:0,usage:35050};this.buffers=[new Fr(t,s),new Fr(t,s),new Fr(t,s)]}get inProgress(){return this.transition.inProgress}start(t,r){let{gl:i,buffers:s,attribute:n}=this,o={numInstances:r,attribute:n,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:t.enter};for(let c of s)nP({buffer:c,...o});this.settings=t,this.currentStartIndices=n.startIndices,this.currentLength=tw(n,r),this.attributeInTransition.setData({buffer:s[1],value:n.value}),this.transition.start({...t,duration:1/0}),this.transform.update({elementCount:Math.floor(this.currentLength/n.size),sourceBuffers:{aTo:eP(i,n)}})}update(){let{buffers:t,transform:r,framebuffer:i,transition:s}=this;if(!s.update())return!1;let o=this.settings;return r.update({sourceBuffers:{aPrev:t[0],aCur:t[1]},feedbackBuffers:{vNext:t[2]}}),r.run({framebuffer:i,discard:!1,clearRenderTarget:!0,uniforms:{stiffness:o.stiffness,damping:o.damping},parameters:{depthTest:!1,blend:!0,viewport:[0,0,1,1],blendFunc:[1,1],blendEquation:[32776,32776]}}),iP(t),this.attributeInTransition.setData({buffer:t[1],value:this.attribute.value}),Rh(i)[0]>0||s.end(),!0}cancel(){this.transition.cancel(),this.transform.delete();for(let t of this.buffers)t.delete();this.buffers.length=0,this.texture.delete(),this.framebuffer.delete()}};function Xlt(e,t,r){let i=rP(t.size);return new rc(e,{framebuffer:r,vs:`\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,fs:`\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,defines:{ATTRIBUTE_TYPE:i},varyings:[\"vNext\"]})}function Klt(e){return new pi(e,{data:new Uint8Array(4),format:6408,type:5121,border:0,mipmaps:!1,dataFormat:6408,width:1,height:1})}function Jlt(e,t){return new yi(e,{id:\"spring-transition-is-transitioning-framebuffer\",width:1,height:1,attachments:{36064:t}})}var tct={interpolation:ew,spring:rw},iw=class{constructor(t,{id:r,timeline:i}){G(this,\"id\",void 0),G(this,\"isSupported\",void 0),G(this,\"gl\",void 0),G(this,\"timeline\",void 0),G(this,\"transitions\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"numInstances\",void 0),this.id=r,this.gl=t,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1,this.isSupported=rc.isSupported(t)}finalize(){for(let t in this.transitions)this._removeTransition(t)}update({attributes:t,transitions:r,numInstances:i}){this.numInstances=i||1;for(let s in t){let n=t[s],o=n.getTransitionSetting(r);o&&this._updateAttribute(s,n,o)}for(let s in this.transitions){let n=t[s];(!n||!n.getTransitionSetting(r))&&this._removeTransition(s)}}hasAttribute(t){let r=this.transitions[t];return r&&r.inProgress}getAttributes(){let t={};for(let r in this.transitions){let i=this.transitions[r];i.inProgress&&(t[r]=i.attributeInTransition)}return t}run(){if(!this.isSupported||this.numInstances===0)return!1;for(let r in this.transitions)this.transitions[r].update()&&(this.needsRedraw=!0);let t=this.needsRedraw;return this.needsRedraw=!1,t}_removeTransition(t){this.transitions[t].cancel(),delete this.transitions[t]}_updateAttribute(t,r,i){let s=this.transitions[t],n=!s||s.type!==i.type;if(n){if(!this.isSupported){nr.warn(\"WebGL2 not supported by this browser. Transition for \".concat(t,\" is disabled.\"))();return}s&&this._removeTransition(t);let o=tct[i.type];o?this.transitions[t]=new o({attribute:r,timeline:this.timeline,gl:this.gl}):(nr.error(\"unsupported transition type '\".concat(i.type,\"'\"))(),n=!1)}(n||r.needsRedraw())&&(this.needsRedraw=!0,this.transitions[t].start(i,this.numInstances))}};var WG=\"attributeManager.invalidate\",ect=\"attributeManager.updateStart\",rct=\"attributeManager.updateEnd\",ict=\"attribute.updateStart\",nct=\"attribute.allocate\",sct=\"attribute.updateEnd\",$f=class{constructor(t,{id:r=\"attribute-manager\",stats:i,timeline:s}={}){G(this,\"id\",void 0),G(this,\"gl\",void 0),G(this,\"attributes\",void 0),G(this,\"updateTriggers\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"userData\",void 0),G(this,\"stats\",void 0),G(this,\"attributeTransitionManager\",void 0),G(this,\"mergeBoundsMemoized\",Zf(iG)),this.id=r,this.gl=t,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new iw(t,{id:\"\".concat(r,\"-transitions\"),timeline:s}),Object.seal(this)}finalize(){for(let t in this.attributes)this.attributes[t].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(t={clearRedrawFlags:!1}){let r=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!t.clearRedrawFlags,r&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(t){this._add(t)}addInstanced(t){this._add(t,{instanced:1})}remove(t){for(let r of t)this.attributes[r]!==void 0&&(this.attributes[r].delete(),delete this.attributes[r])}invalidate(t,r){let i=this._invalidateTrigger(t,r);Ls(WG,this,t,i)}invalidateAll(t){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,t);Ls(WG,this,\"all\")}update({data:t,numInstances:r,startIndices:i=null,transitions:s,props:n={},buffers:o={},context:c={}}){let f=!1;Ls(ect,this),this.stats&&this.stats.get(\"Update Attributes\").timeStart();for(let _ in this.attributes){let w=this.attributes[_],I=w.settings.accessor;w.startIndices=i,w.numInstances=r,n[_]&&nr.removed(\"props.\".concat(_),\"data.attributes.\".concat(_))(),w.setExternalBuffer(o[_])||w.setBinaryValue(typeof I==\"string\"?o[I]:void 0,t.startIndices)||typeof I==\"string\"&&!o[I]&&w.setConstantValue(n[I])||w.needsUpdate()&&(f=!0,this._updateAttribute({attribute:w,numInstances:r,data:t,props:n,context:c})),this.needsRedraw=this.needsRedraw||w.needsRedraw()}f&&Ls(rct,this,r),this.stats&&this.stats.get(\"Update Attributes\").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:r,transitions:s})}updateTransition(){let{attributeTransitionManager:t}=this,r=t.run();return this.needsRedraw=this.needsRedraw||r,r}getAttributes(){return this.attributes}getBounds(t){let r=t.map(i=>{var s;return(s=this.attributes[i])===null||s===void 0?void 0:s.getBounds()});return this.mergeBoundsMemoized(r)}getChangedAttributes(t={clearChangedFlags:!1}){let{attributes:r,attributeTransitionManager:i}=this,s={...i.getAttributes()};for(let n in r){let o=r[n];o.needsRedraw(t)&&!i.hasAttribute(n)&&(s[n]=o)}return s}getShaderAttributes(t,r={}){t||(t=this.getAttributes());let i={};for(let s in t)r[s]||Object.assign(i,t[s].getShaderAttributes());return i}_add(t,r={}){for(let i in t){let s=t[i];this.attributes[i]=this._createAttribute(i,s,r)}this._mapUpdateTriggersToAttributes()}_createAttribute(t,r,i){let s={...r,id:t,size:r.isIndexed&&1||r.size||1,divisor:i.instanced?1:r.divisor||0};return new hp(this.gl,s)}_mapUpdateTriggersToAttributes(){let t={};for(let r in this.attributes)this.attributes[r].getUpdateTriggers().forEach(s=>{t[s]||(t[s]=[]),t[s].push(r)});this.updateTriggers=t}_invalidateTrigger(t,r){let{attributes:i,updateTriggers:s}=this,n=s[t];return n&&n.forEach(o=>{let c=i[o];c&&c.setNeedsUpdate(c.id,r)}),n}_updateAttribute(t){let{attribute:r,numInstances:i}=t;if(Ls(ict,r),r.constant){r.setConstantValue(r.value);return}r.allocate(i)&&Ls(nct,r,i),r.updateBuffer(t)&&(this.needsRedraw=!0,Ls(sct,r,i))}};var nw=class extends $c{get value(){return this._value}_onUpdate(){let{time:t,settings:{fromValue:r,toValue:i,duration:s,easing:n}}=this,o=n(t/s);this._value=il(r,i,o)}};var HG=1e-5;function qG(e,t,r,i,s){let n=t-e,c=(r-t)*s,f=-n*i;return c+f+n+t}function oct(e,t,r,i,s){if(Array.isArray(r)){let n=[];for(let o=0;o0}add(t,r,i,s){let{transitions:n}=this;if(n.has(t)){let f=n.get(t),{value:_=f.settings.fromValue}=f;r=_,this.remove(t)}if(s=tP(s),!s)return;let o=act[s.type];if(!o){nr.error(\"unsupported transition type '\".concat(s.type,\"'\"))();return}let c=new o(this.timeline);c.start({...s,fromValue:r,toValue:i}),n.set(t,c)}remove(t){let{transitions:r}=this;r.has(t)&&(r.get(t).cancel(),r.delete(t))}update(){let t={};for(let[r,i]of this.transitions)i.update(),t[r]=i.value,i.inProgress||this.remove(r);return t}clear(){for(let t of this.transitions.keys())this.remove(t)}};function QG(e){let t=e[Ou];for(let r in t){let i=t[r],{validate:s}=i;if(s&&!s(e[r],i))throw new Error(\"Invalid prop \".concat(r,\": \").concat(e[r]))}}function $G(e,t){let r=aw({newProps:e,oldProps:t,propTypes:e[Ou],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=cct(e,t),s=!1;return i||(s=uct(e,t)),{dataChanged:i,propsChanged:r,updateTriggersChanged:s,extensionsChanged:hct(e,t),transitionsChanged:lct(e,t)}}function lct(e,t){if(!e.transitions)return!1;let r={},i=e[Ou],s=!1;for(let n in e.transitions){let o=i[n],c=o&&o.type;(c===\"number\"||c===\"color\"||c===\"array\")&&yD(e[n],t[n],o)&&(r[n]=!0,s=!0)}return s?r:!1}function aw({newProps:e,oldProps:t,ignoreProps:r={},propTypes:i={},triggerName:s=\"props\"}){if(t===e)return!1;if(typeof e!=\"object\"||e===null||typeof t!=\"object\"||t===null)return\"\".concat(s,\" changed shallowly\");for(let n of Object.keys(e))if(!(n in r)){if(!(n in t))return\"\".concat(s,\".\").concat(n,\" added\");let o=yD(e[n],t[n],i[n]);if(o)return\"\".concat(s,\".\").concat(n,\" \").concat(o)}for(let n of Object.keys(t))if(!(n in r)){if(!(n in e))return\"\".concat(s,\".\").concat(n,\" dropped\");if(!Object.hasOwnProperty.call(e,n)){let o=yD(e[n],t[n],i[n]);if(o)return\"\".concat(s,\".\").concat(n,\" \").concat(o)}}return!1}function yD(e,t,r){let i=r&&r.equal;return i&&!i(e,t,r)||!i&&(i=e&&t&&e.equals,i&&!i.call(e,t))?\"changed deeply\":!i&&t!==e?\"changed shallowly\":null}function cct(e,t){if(t===null)return\"oldProps is null, initial diff\";let r=!1,{dataComparator:i,_dataDiff:s}=e;return i?i(e.data,t.data)||(r=\"Data comparator detected a change\"):e.data!==t.data&&(r=\"A new data container was supplied\"),r&&s&&(r=s(e.data,t.data)||r),r}function uct(e,t){if(t===null)return{all:!0};if(\"all\"in e.updateTriggers&&YG(e,t,\"all\"))return{all:!0};let r={},i=!1;for(let s in e.updateTriggers)s!==\"all\"&&YG(e,t,s)&&(r[s]=!0,i=!0);return i?r:!1}function hct(e,t){if(t===null)return!0;let r=t.extensions,{extensions:i}=e;if(i===r)return!1;if(!r||!i||i.length!==r.length)return!0;for(let s=0;si.name===\"project64\"))){let i=r.modules.findIndex(s=>s.name===\"project32\");i>=0&&r.modules.splice(i,1)}if(\"inject\"in t)if(!e.inject)r.inject=t.inject;else{let i={...e.inject};for(let s in t.inject)i[s]=(i[s]||\"\")+t.inject[s];r.inject=i}return r}var mct={10241:9987,10240:9729,10242:33071,10243:33071},vD={};function JG(e,t,r,i){if(r instanceof pi)return r;r.constructor&&r.constructor.name!==\"Object\"&&(r={data:r});let s=null;r.compressed&&(s={10241:r.data.length>1?9985:9729});let n=new pi(t,{...r,parameters:{...mct,...s,...i}});return vD[n.id]=e,n}function t9(e,t){!t||!(t instanceof pi)||vD[t.id]===e&&(t.delete(),delete vD[t.id])}var gct={boolean:{validate(e,t){return!0},equal(e,t,r){return!!e==!!t}},number:{validate(e,t){return Number.isFinite(e)&&(!(\"max\"in t)||e<=t.max)&&(!(\"min\"in t)||e>=t.min)}},color:{validate(e,t){return t.optional&&!e||xD(e)&&(e.length===3||e.length===4)},equal(e,t,r){return po(e,t,1)}},accessor:{validate(e,t){let r=sP(e);return r===\"function\"||r===sP(t.value)},equal(e,t,r){return typeof t==\"function\"?!0:po(e,t,1)}},array:{validate(e,t){return t.optional&&!e||xD(e)},equal(e,t,r){let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?po(e,t,s):e===t}},object:{equal(e,t,r){if(r.ignore)return!0;let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?po(e,t,s):e===t}},function:{validate(e,t){return t.optional&&!e||typeof e==\"function\"},equal(e,t,r){return!r.compare&&r.ignore!==!1||e===t}},data:{transform:(e,t,r)=>{let{dataTransform:i}=r.props;return i&&e?i(e):e}},image:{transform:(e,t,r)=>{let i=r.context;return!i||!i.gl?null:JG(r.id,i.gl,e,{...t.parameters,...r.props.textureParameters})},release:(e,t,r)=>{t9(r.id,e)}}};function e9(e){let t={},r={},i={};for(let[s,n]of Object.entries(e)){let o=n?.deprecatedFor;if(o)i[s]=Array.isArray(o)?o:[o];else{let c=_ct(s,n);t[s]=c,r[s]=c.value}}return{propTypes:t,defaultProps:r,deprecatedProps:i}}function _ct(e,t){switch(sP(t)){case\"object\":return lw(e,t);case\"array\":return lw(e,{type:\"array\",value:t,compare:!1});case\"boolean\":return lw(e,{type:\"boolean\",value:t});case\"number\":return lw(e,{type:\"number\",value:t});case\"function\":return lw(e,{type:\"function\",value:t,compare:!0});default:return{name:e,type:\"unknown\",value:t}}}function lw(e,t){return\"type\"in t?{name:e,...gct[t.type],...t}:\"value\"in t?{name:e,type:sP(t.value),...t}:{name:e,type:\"object\",value:t}}function xD(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function sP(e){return xD(e)?\"array\":e===null?\"null\":typeof e}function r9(e,t){let r;for(let n=t.length-1;n>=0;n--){let o=t[n];\"extensions\"in o&&(r=o.extensions)}let i=bD(e.constructor,r),s=Object.create(i);s[jy]=e,s[Qf]={},s[Gh]={};for(let n=0;n{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let t in this.asyncProps){let r=this.asyncProps[t];r&&r.type&&r.type.release&&r.type.release(r.resolvedValue,r.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||Ect}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(t){return t in this.asyncProps}getAsyncProp(t){let r=this.asyncProps[t];return r&&r.resolvedValue}isAsyncPropLoading(t){if(t){let r=this.asyncProps[t];return!!(r&&r.pendingLoadCount>0&&r.pendingLoadCount!==r.resolvedLoadCount)}for(let r in this.asyncProps)if(this.isAsyncPropLoading(r))return!0;return!1}reloadAsyncProp(t,r){this._watchPromise(t,Promise.resolve(r))}setAsyncProps(t){this.component=t[jy]||this.component;let r=t[Gh]||{},i=t[Qf]||t,s=t[op]||{};for(let n in r){let o=r[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o),r[n]=this.getAsyncProp(n)}for(let n in i){let o=i[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o)}}_fetch(t,r){return null}_onResolve(t,r){}_onError(t,r){}_updateAsyncProp(t,r){if(this._didAsyncInputValueChange(t,r)){if(typeof r==\"string\"&&(r=this._fetch(t,r)),r instanceof Promise){this._watchPromise(t,r);return}if(KE(r)){this._resolveAsyncIterable(t,r);return}this._setPropValue(t,r)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(let t in this.asyncProps)Object.defineProperty(this.oldAsyncProps,t,{enumerable:!0,value:this.oldProps[t]})}}_didAsyncInputValueChange(t,r){let i=this.asyncProps[t];return r===i.resolvedValue||r===i.lastValue?!1:(i.lastValue=r,!0)}_setPropValue(t,r){this._freezeAsyncOldProps();let i=this.asyncProps[t];i&&(r=this._postProcessValue(i,r),i.resolvedValue=r,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(t,r,i){let s=this.asyncProps[t];s&&i>=s.resolvedLoadCount&&r!==void 0&&(this._freezeAsyncOldProps(),s.resolvedValue=r,s.resolvedLoadCount=i,this.onAsyncPropUpdated(t,r))}_watchPromise(t,r){let i=this.asyncProps[t];if(i){i.pendingLoadCount++;let s=i.pendingLoadCount;r.then(n=>{this.component&&(n=this._postProcessValue(i,n),this._setAsyncPropValue(t,n,s),this._onResolve(t,n))}).catch(n=>{this._onError(t,n)})}}async _resolveAsyncIterable(t,r){if(t!==\"data\"){this._setPropValue(t,r);return}let i=this.asyncProps[t];if(!i)return;i.pendingLoadCount++;let s=i.pendingLoadCount,n=[],o=0;for await(let c of r){if(!this.component)return;let{dataTransform:f}=this.component.props;f?n=f(c,n):n=n.concat(c),Object.defineProperty(n,\"__diff\",{enumerable:!1,value:[{startRow:o,endRow:n.length}]}),o=n.length,this._setAsyncPropValue(t,n,s)}this._onResolve(t,n)}_postProcessValue(t,r){let i=t.type;return i&&this.component&&(i.release&&i.release(t.resolvedValue,i,this.component),i.transform)?i.transform(r,i,this.component):r}_createAsyncPropData(t,r){if(!this.asyncProps[t]){let s=this.component&&this.component.props[Ou];this.asyncProps[t]={type:s&&s[t],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var uw=class extends cw{constructor({attributeManager:t,layer:r}){super(r),G(this,\"attributeManager\",void 0),G(this,\"needsRedraw\",void 0),G(this,\"needsUpdate\",void 0),G(this,\"subLayers\",void 0),G(this,\"usesPickingColorCache\",void 0),G(this,\"hasPickingBuffer\",void 0),G(this,\"changeFlags\",void 0),G(this,\"viewport\",void 0),G(this,\"uniformTransitions\",void 0),G(this,\"propsInTransition\",void 0),this.attributeManager=t,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}_fetch(t,r){let i=this.layer,s=i?.props.fetch;return s?s(r,{propName:t,layer:i}):super._fetch(t,r)}_onResolve(t,r){let i=this.layer;if(i){let s=i.props.onDataLoad;t===\"data\"&&s&&s(r,{propName:t,layer:i})}}_onError(t,r){let i=this.layer;i&&i.raiseError(r,\"loading \".concat(t,\" of \").concat(this.layer))}};var Pct=\"layer.changeFlag\",Ict=\"layer.initialize\",Cct=\"layer.update\",Lct=\"layer.finalize\",kct=\"layer.matched\",n9=2**24-1,Rct=Object.freeze([]),Dct=Zf(({oldViewport:e,viewport:t})=>e.equals(t)),Xf=new Uint8ClampedArray(0),Oct={data:{type:\"data\",value:Rct,async:!0},dataComparator:{type:\"function\",value:null,optional:!0},_dataDiff:{type:\"function\",value:e=>e&&e.__diff,optional:!0},dataTransform:{type:\"function\",value:null,optional:!0},onDataLoad:{type:\"function\",value:null,optional:!0},onError:{type:\"function\",value:null,optional:!0},fetch:{type:\"function\",value:(e,{propName:t,layer:r,loaders:i,loadOptions:s,signal:n})=>{let{resourceManager:o}=r.context;if(s=s||r.getLoadOptions(),i=i||r.props.loaders,n){var c;s={...s,fetch:{...(c=s)===null||c===void 0?void 0:c.fetch,signal:n}}}let f=o.contains(e);return!f&&!s&&(o.add({resourceId:e,data:jA(e,i),persistent:!1}),f=!0),f?o.subscribe({resourceId:e,onChange:_=>{var w;return(w=r.internalState)===null||w===void 0?void 0:w.reloadAsyncProp(t,_)},consumerId:r.id,requestId:t}):jA(e,i,s)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:\"number\",min:0,max:1,value:1},operation:\"draw\",onHover:{type:\"function\",value:null,optional:!0},onClick:{type:\"function\",value:null,optional:!0},onDragStart:{type:\"function\",value:null,optional:!0},onDrag:{type:\"function\",value:null,optional:!0},onDragEnd:{type:\"function\",value:null,optional:!0},coordinateSystem:Yr.DEFAULT,coordinateOrigin:{type:\"array\",value:[0,0,0],compare:!0},modelMatrix:{type:\"array\",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:\"XYZ\",colorFormat:\"RGBA\",parameters:{type:\"object\",value:{},optional:!0,compare:2},loadOptions:{type:\"object\",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:\"array\",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:\"function\",value:({layerIndex:e})=>[0,-e*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:\"accessor\",value:[0,0,128,128]}},hn=class extends mg{constructor(...t){super(...t),G(this,\"internalState\",null),G(this,\"lifecycle\",tm.NO_STATE),G(this,\"context\",void 0),G(this,\"state\",void 0),G(this,\"parent\",null)}static get componentName(){return Object.prototype.hasOwnProperty.call(this,\"layerName\")?this.layerName:\"\"}get root(){let t=this;for(;t.parent;)t=t.parent;return t}toString(){let t=this.constructor.layerName||this.constructor.name;return\"\".concat(t,\"({id: '\").concat(this.props.id,\"'})\")}project(t){yr(this.internalState);let r=this.internalState.viewport||this.context.viewport,i=cD(t,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[s,n,o]=zy(i,r.pixelProjectionMatrix);return t.length===2?[s,n]:[s,n,o]}unproject(t){return yr(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(t)}projectPosition(t,r){yr(this.internalState);let i=this.internalState.viewport||this.context.viewport;return oG(t,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...r})}get isComposite(){return!1}setState(t){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,t),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){return this.state&&(this.state.models||this.state.model&&[this.state.model])||[]}setModuleParameters(t){for(let r of this.getModels())r.updateModuleSettings(t)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:t}=this.props;return t===Yr.DEFAULT||t===Yr.LNGLAT||t===Yr.CARTESIAN}onHover(t,r){return this.props.onHover&&this.props.onHover(t,r)||!1}onClick(t,r){return this.props.onClick&&this.props.onClick(t,r)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(t,r=[]){return r[0]=t+1&255,r[1]=t+1>>8&255,r[2]=t+1>>8>>8&255,r}decodePickingColor(t){yr(t instanceof Uint8Array);let[r,i,s]=t;return r+i*256+s*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:XG(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){var t;return(t=this.getAttributeManager())===null||t===void 0?void 0:t.getBounds([\"positions\",\"instancePositions\"])}getShaders(t){for(let r of this.props.extensions)t=KG(t,r.getShaders.call(this,r));return t}shouldUpdateState(t){return t.changeFlags.propsOrDataChanged}updateState(t){let r=this.getAttributeManager(),{dataChanged:i}=t.changeFlags;if(i&&r)if(Array.isArray(i))for(let s of i)r.invalidateAll(s);else r.invalidateAll();if(r){let{props:s}=t,n=this.internalState.hasPickingBuffer,o=Number.isInteger(s.highlightedObjectIndex)||s.pickable||s.extensions.some(c=>c.getNeedsPickingBuffer.call(this,c));if(n!==o){this.internalState.hasPickingBuffer=o;let{pickingColors:c,instancePickingColors:f}=r.attributes,_=c||f;_&&(o&&_.constant&&(_.constant=!1,r.invalidate(_.id)),!_.value&&!o&&(_.constant=!0,_.value=[0,0,0]))}}}finalizeState(t){for(let i of this.getModels())i.delete();let r=this.getAttributeManager();r&&r.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(t){for(let r of this.getModels())r.draw(t)}getPickingInfo({info:t,mode:r,sourceLayer:i}){let{index:s}=t;return s>=0&&Array.isArray(this.props.data)&&(t.object=this.props.data[s]),t}raiseError(t,r){var i,s;if(r&&(t=new Error(\"\".concat(r,\": \").concat(t.message),{cause:t})),!((i=(s=this.props).onError)!==null&&i!==void 0&&i.call(s,t))){var n,o;(n=this.context)===null||n===void 0||(o=n.onError)===null||o===void 0||o.call(n,t,this)}}getNeedsRedraw(t={clearRedrawFlags:!1}){return this._getNeedsRedraw(t)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){var t;return((t=this.internalState)===null||t===void 0?void 0:t.uniformTransitions.active)||!1}activateViewport(t){if(!this.internalState)return;let r=this.internalState.viewport;this.internalState.viewport=t,(!r||!Dct({oldViewport:r,viewport:t}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(t=\"all\"){let r=this.getAttributeManager();r&&(t===\"all\"?r.invalidateAll():r.invalidate(t))}updateAttributes(t){for(let r of this.getModels())this._setModelAttributes(r,t)}_updateAttributes(){let t=this.getAttributeManager();if(!t)return;let r=this.props,i=this.getNumInstances(),s=this.getStartIndices();t.update({data:r.data,numInstances:i,startIndices:s,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let n=t.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_updateAttributeTransition(){let t=this.getAttributeManager();t&&t.updateTransition()}_updateUniformTransition(){let{uniformTransitions:t}=this.internalState;if(t.active){let r=t.update(),i=Object.create(this.props);for(let s in r)Object.defineProperty(i,s,{value:r[s]});return i}return this.props}calculateInstancePickingColors(t,{numInstances:r}){if(t.constant)return;let i=Math.floor(Xf.length/3);if(this.internalState.usesPickingColorCache=!0,in9&&nr.warn(\"Layer has too many data objects. Picking might not be able to distinguish all objects.\")(),Xf=jh.allocate(Xf,r,{size:3,copy:!0,maxCount:Math.max(r,n9)});let s=Math.floor(Xf.length/3),n=[];for(let o=i;o(nr.deprecated(\"layer.state.attributeManager\",\"layer.getAttributeManager()\")(),t)}),this.internalState.uniformTransitions=new ow(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let r of this.props.extensions)r.initializeState.call(this,this.context,r);this.setChangeFlags({dataChanged:\"init\",propsChanged:\"init\",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(t){Ls(kct,this,this===t);let{state:r,internalState:i}=t;this!==t&&(this.internalState=i,this.state=r,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let t=this.needsUpdate();if(Ls(Cct,this,t),!t)return;let r=this.props,i=this.context,s=this.internalState,n=i.viewport,o=this._updateUniformTransition();s.propsInTransition=o,i.viewport=s.viewport||n,this.props=o;try{let c=this._getUpdateParams(),f=this.getModels();if(i.gl)this.updateState(c);else try{this.updateState(c)}catch{}for(let w of this.props.extensions)w.updateState.call(this,c,w);let _=this.getModels()[0]!==f[0];this._postUpdate(c,_)}finally{i.viewport=n,this.props=r,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){Ls(Lct,this),this.finalizeState(this.context);for(let t of this.props.extensions)t.finalizeState.call(this,this.context,t)}_drawLayer({moduleParameters:t=null,uniforms:r={},parameters:i={}}){this._updateAttributeTransition();let s=this.props,n=this.context;this.props=this.internalState.propsInTransition||s;let o=this.props.opacity;r.opacity=Math.pow(o,1/2.2);try{t&&this.setModuleParameters(t);let{getPolygonOffset:c}=this.props,f=c&&c(r)||[0,0];Ml(n.gl,{polygonOffset:f}),Sn(n.gl,i,()=>{let _={moduleParameters:t,uniforms:r,parameters:i,context:n};for(let w of this.props.extensions)w.draw.call(this,_,w);this.draw(_)})}finally{this.props=s}}getChangeFlags(){var t;return(t=this.internalState)===null||t===void 0?void 0:t.changeFlags}setChangeFlags(t){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let s in t)if(t[s]){let n=!1;switch(s){case\"dataChanged\":let o=t[s],c=r[s];o&&Array.isArray(c)&&(r.dataChanged=Array.isArray(o)?c.concat(o):o,n=!0);default:r[s]||(r[s]=t[s],n=!0)}n&&Ls(Pct,this,s,t)}let i=!!(r.dataChanged||r.updateTriggersChanged||r.propsChanged||r.extensionsChanged);r.propsOrDataChanged=i,r.somethingChanged=i||r.viewportChanged||r.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(t,r){let i=$G(t,r);if(i.updateTriggersChanged)for(let n in i.updateTriggersChanged)i.updateTriggersChanged[n]&&this.invalidateAttribute(n);if(i.transitionsChanged)for(let n in i.transitionsChanged){var s;this.internalState.uniformTransitions.add(n,r[n],t[n],(s=t.transitions)===null||s===void 0?void 0:s[n])}return this.setChangeFlags(i)}validateProps(){QG(this.props)}updateAutoHighlight(t){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(t)}_updateAutoHighlight(t){let r={pickingSelectedColor:t.picked?t.color:null},{highlightColor:i}=this.props;t.picked&&typeof i==\"function\"&&(r.pickingHighlightColor=i(t)),this.setModuleParameters(r),this.setNeedsRedraw()}_getAttributeManager(){let t=this.context;return new $f(t.gl,{id:this.props.id,stats:t.stats,timeline:t.timeline})}_postUpdate(t,r){let{props:i,oldProps:s}=t;this.setNeedsRedraw(),this._updateAttributes();let{model:n}=this.state;n?.setInstanceCount(this.getNumInstances());let{autoHighlight:o,highlightedObjectIndex:c,highlightColor:f}=i;if(r||s.autoHighlight!==o||s.highlightedObjectIndex!==c||s.highlightColor!==f){let _={};o||(_.pickingSelectedColor=null),Array.isArray(f)&&(_.pickingHighlightColor=f),(r||c!==s.highlightedObjectIndex)&&(_.pickingSelectedColor=Number.isFinite(c)&&c>=0?this.encodePickingColor(c):null),this.setModuleParameters(_)}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(t){if(!this.internalState)return!1;let r=!1;r=r||this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),s=i?i.getNeedsRedraw(t):!1;if(r=r||s,r)for(let n of this.props.extensions)n.onNeedsRedraw.call(this,n);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!t.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};G(hn,\"defaultProps\",Oct);G(hn,\"layerName\",\"Layer\");var Bct=\"compositeLayer.renderLayers\",qi=class extends hn{get isComposite(){return!0}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(t=>t.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(t){}setState(t){super.setState(t),this.setNeedsUpdate()}getPickingInfo({info:t}){let{object:r}=t;return r&&r.__source&&r.__source.parent&&r.__source.parent.id===this.id&&(t.object=r.__source.object,t.index=r.__source.index),t}filterSubLayer(t){return!0}shouldRenderSubLayer(t,r){return r&&r.length}getSubLayerClass(t,r){let{_subLayerProps:i}=this.props;return i&&i[t]&&i[t].type||r}getSubLayerRow(t,r,i){return t.__source={parent:this,object:r,index:i},t}getSubLayerAccessor(t){if(typeof t==\"function\"){let r={index:-1,data:this.props.data,target:[]};return(i,s)=>i&&i.__source?(r.index=i.__source.index,t(i.__source.object,r)):t(i,s)}return t}getSubLayerProps(t={}){var r;let{opacity:i,pickable:s,visible:n,parameters:o,getPolygonOffset:c,highlightedObjectIndex:f,autoHighlight:_,highlightColor:w,coordinateSystem:I,coordinateOrigin:R,wrapLongitude:N,positionFormat:j,modelMatrix:Q,extensions:et,fetch:Y,operation:K,_subLayerProps:J}=this.props,ut={id:\"\",updateTriggers:{},opacity:i,pickable:s,visible:n,parameters:o,getPolygonOffset:c,highlightedObjectIndex:f,autoHighlight:_,highlightColor:w,coordinateSystem:I,coordinateOrigin:R,wrapLongitude:N,positionFormat:j,modelMatrix:Q,extensions:et,fetch:Y,operation:K},Pt=J&&t.id&&J[t.id],kt=Pt&&Pt.updateTriggers,Kt=t.id||\"sublayer\";if(Pt){let Zt=this.props[Ou],ce=t.type?t.type._propTypes:{};for(let ue in Pt){let Ge=ce[ue]||Zt[ue];Ge&&Ge.type===\"accessor\"&&(Pt[ue]=this.getSubLayerAccessor(Pt[ue]))}}Object.assign(ut,t,Pt),ut.id=\"\".concat(this.props.id,\"-\").concat(Kt),ut.updateTriggers={all:(r=this.props.updateTriggers)===null||r===void 0?void 0:r.all,...t.updateTriggers,...kt};for(let Zt of et){let ce=Zt.getSubLayerProps.call(this,Zt);ce&&Object.assign(ut,ce,{updateTriggers:Object.assign(ut.updateTriggers,ce.updateTriggers)})}return ut}_updateAutoHighlight(t){for(let r of this.getSubLayers())r.updateAutoHighlight(t)}_getAttributeManager(){return null}_postUpdate(t,r){let i=this.internalState.subLayers,s=!i||this.needsUpdate();if(s){let n=this.renderLayers();i=ap(n,Boolean),this.internalState.subLayers=i}Ls(Bct,this,s,i);for(let n of i)n.parent=this}};G(qi,\"layerName\",\"CompositeLayer\");var oP=Math.PI/180,s9=180/Math.PI,aP=6370972,Zy=256;function Fct(){let e=Zy/aP,t=Math.PI/180*Zy;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[1/e,1/e,1/e],unitsPerDegree:[t,t,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,1/e]}}var Yy=class extends sc{constructor(t={}){let{latitude:r=0,longitude:i=0,zoom:s=0,nearZMultiplier:n=.1,farZMultiplier:o=2,resolution:c=10}=t,{height:f,altitude:_=1.5}=t;f=f||1,_=Math.max(.75,_);let w=new Tn().lookAt({eye:[0,-_,0],up:[0,0,1]}),I=Math.pow(2,s);w.rotateX(r*oP),w.rotateZ(-i*oP),w.scale(I/f);let R=Math.atan(.5/_),N=Zy*2*I/f;super({...t,height:f,viewMatrix:w,longitude:i,latitude:r,zoom:s,distanceScales:Fct(),fovyRadians:R*2,focalDistance:_,near:n,far:Math.min(2,1/N+1)*_*o}),G(this,\"longitude\",void 0),G(this,\"latitude\",void 0),G(this,\"resolution\",void 0),this.latitude=r,this.longitude=i,this.resolution=c}get projectionMode(){return Ja.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){let r={targetZ:t.z||0},i=this.unproject([0,this.height/2],r),s=this.unproject([this.width/2,0],r),n=this.unproject([this.width,this.height/2],r),o=this.unproject([this.width/2,this.height],r);return n[0]this.longitude&&(i[0]-=360),[Math.min(i[0],n[0],s[0],o[0]),Math.min(i[1],n[1],s[1],o[1]),Math.max(i[0],n[0],s[0],o[0]),Math.max(i[1],n[1],s[1],o[1])]}unproject(t,{topLeft:r=!0,targetZ:i}={}){let[s,n,o]=t,c=r?n:this.height-n,{pixelUnprojectionMatrix:f}=this,_;if(Number.isFinite(o))_=SD(f,[s,c,o,1]);else{let N=SD(f,[s,c,-1,1]),j=SD(f,[s,c,1,1]),Q=((i||0)/aP+1)*Zy,et=PE(ME([],N,j)),Y=PE(N),K=PE(j),ut=4*((4*Y*K-(et-Y-K)**2)/16)/et,Pt=Math.sqrt(Y-ut),kt=Math.sqrt(Math.max(0,Q*Q-ut)),Kt=(Pt-kt)/Math.sqrt(et);_=Bj([],N,j,Kt)}let[w,I,R]=this.unprojectPosition(_);return Number.isFinite(o)?[w,I,R]:Number.isFinite(i)?[w,I,i]:[w,I]}projectPosition(t){let[r,i,s=0]=t,n=r*oP,o=i*oP,c=Math.cos(o),f=(s/aP+1)*Zy;return[Math.sin(n)*c*f,-Math.cos(n)*c*f,Math.sin(o)*f]}unprojectPosition(t){let[r,i,s]=t,n=EE(t),o=Math.asin(s/n),f=Math.atan2(r,-i)*s9,_=o*s9,w=(n/Zy-1)*aP;return[f,_,w]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition(t,r){let i=this.unproject(r);return{longitude:t[0]-i[0]+this.longitude,latitude:t[1]-i[1]+this.latitude}}};function SD(e,t){let r=zh([],t,e);return Cy(r,r,1/r[3]),r}var zct=new Tn().lookAt({eye:[0,0,1]});function Nct({width:e,height:t,near:r,far:i,padding:s}){let n=-e/2,o=e/2,c=-t/2,f=t/2;if(s){let{left:_=0,right:w=0,top:I=0,bottom:R=0}=s,N=Il((_+e-w)/2,0,e)-e/2,j=Il((I+t-R)/2,0,t)-t/2;n-=N,o-=N,c+=j,f+=j}return new Tn().ortho({left:n,right:o,bottom:c,top:f,near:r,far:i})}var Qy=class extends sc{constructor(t){let{width:r,height:i,near:s=.1,far:n=1e3,zoom:o=0,target:c=[0,0,0],padding:f=null,flipY:_=!0}=t,w=Array.isArray(o)?o[0]:o,I=Array.isArray(o)?o[1]:o,R=Math.min(w,I),N=Math.pow(2,R),j;if(w!==I){let Q=Math.pow(2,w),et=Math.pow(2,I);j={unitsPerMeter:[Q/N,et/N,1],metersPerUnit:[N/Q,N/et,1]}}super({...t,longitude:void 0,position:c,viewMatrix:zct.clone().scale([N,N*(_?-1:1),N]),projectionMatrix:Nct({width:r||1,height:i||1,padding:f,near:s,far:n}),zoom:R,distanceScales:j})}projectFlat([t,r]){let{unitsPerMeter:i}=this.distanceScales;return[t*i[0],r*i[1]]}unprojectFlat([t,r]){let{metersPerUnit:i}=this.distanceScales;return[t*i[0],r*i[1]]}panByPosition(t,r){let i=Yf(r,this.pixelUnprojectionMatrix),s=this.projectFlat(t),n=$A([],s,vE([],i)),o=$A([],this.center,n);return{target:this.unprojectFlat(o)}}};var Bu=class{static get componentName(){return Object.prototype.hasOwnProperty.call(this,\"extensionName\")?this.extensionName:\"\"}constructor(t){G(this,\"opts\",void 0),t&&(this.opts=t)}equals(t){return this===t?!0:this.constructor===t.constructor&&po(this.opts,t.opts,1)}getShaders(t){return null}getSubLayerProps(t){let{defaultProps:r}=t.constructor,i={updateTriggers:{}};for(let s in r)if(s in this.props){let n=r[s],o=this.props[s];i[s]=o,n&&n.type===\"accessor\"&&(i.updateTriggers[s]=this.props.updateTriggers[s],typeof o==\"function\"&&(i[s]=this.getSubLayerAccessor(o)))}return i}initializeState(t,r){}updateState(t,r){}onNeedsRedraw(t){}getNeedsPickingBuffer(t){return!1}draw(t,r){}finalizeState(t,r){}};G(Bu,\"defaultProps\",{});G(Bu,\"extensionName\",\"LayerExtension\");var TD={bearing:0,pitch:0,position:[0,0,0]},Uct={speed:1.2,curve:1.414},$y=class extends cg{constructor(t={}){super({compare:[\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\",\"position\"],extract:[\"width\",\"height\",\"longitude\",\"latitude\",\"zoom\",\"bearing\",\"pitch\",\"position\"],required:[\"width\",\"height\",\"latitude\",\"longitude\",\"zoom\"]}),G(this,\"opts\",void 0),this.opts={...Uct,...t}}interpolateProps(t,r,i){let s=HE(t,r,i,this.opts);for(let n in TD)s[n]=il(t[n]||TD[n],r[n]||TD[n],i);return s}getDuration(t,r){let{transitionDuration:i}=r;return i===\"auto\"&&(i=oD(t,r,this.opts)),i}};var rm=class{constructor(t){G(this,\"opts\",void 0),G(this,\"typedArrayManager\",void 0),G(this,\"indexStarts\",[0]),G(this,\"vertexStarts\",[0]),G(this,\"vertexCount\",0),G(this,\"instanceCount\",0),G(this,\"attributes\",void 0),G(this,\"_attributeDefs\",void 0),G(this,\"data\",void 0),G(this,\"getGeometry\",void 0),G(this,\"geometryBuffer\",void 0),G(this,\"buffers\",void 0),G(this,\"positionSize\",void 0),G(this,\"normalize\",void 0);let{attributes:r={}}=t;this.typedArrayManager=jh,this.attributes={},this._attributeDefs=r,this.opts=t,this.updateGeometry(t)}updateGeometry(t){Object.assign(this.opts,t);let{data:r,buffers:i={},getGeometry:s,geometryBuffer:n,positionFormat:o,dataChanged:c,normalize:f=!0}=this.opts;if(this.data=r,this.getGeometry=s,this.positionSize=n&&n.size||(o===\"XY\"?2:3),this.buffers=i,this.normalize=f,n&&(yr(r.startIndices),this.getGeometry=this.getGeometryFromBuffer(n),f||(i.positions=n)),this.geometryBuffer=i.positions,Array.isArray(c))for(let _ of c)this._rebuildGeometry(_);else this._rebuildGeometry()}updatePartialGeometry({startRow:t,endRow:r}){this._rebuildGeometry({startRow:t,endRow:r})}getGeometryFromBuffer(t){let r=t.value||t;return ArrayBuffer.isView(r)?JE(r,{size:this.positionSize,offset:t.offset,stride:t.stride,startIndices:this.data.startIndices}):null}_allocate(t,r){let{attributes:i,buffers:s,_attributeDefs:n,typedArrayManager:o}=this;for(let c in n)if(c in s)o.release(i[c]),i[c]=null;else{let f=n[c];f.copy=r,i[c]=o.allocate(i[c],t,f)}}_forEachGeometry(t,r,i){let{data:s,getGeometry:n}=this,{iterable:o,objectInfo:c}=Xc(s,r,i);for(let f of o){c.index++;let _=n?n(f,c):null;t(_,c.index)}}_rebuildGeometry(t){if(!this.data)return;let{indexStarts:r,vertexStarts:i,instanceCount:s}=this,{data:n,geometryBuffer:o}=this,{startRow:c=0,endRow:f=1/0}=t||{},_={};if(t||(r=[0],i=[0]),this.normalize||!o)this._forEachGeometry((I,R)=>{let N=I&&this.normalizeGeometry(I);_[R]=N,i[R+1]=i[R]+(N?this.getGeometrySize(N):0)},c,f),s=i[i.length-1];else if(i=n.startIndices,s=i[n.length]||0,ArrayBuffer.isView(o))s=s||o.length/this.positionSize;else if(o instanceof Fr){let I=o.accessor.stride||this.positionSize*4;s=s||o.byteLength/I}else if(o.buffer){let I=o.stride||this.positionSize*4;s=s||o.buffer.byteLength/I}else if(o.value){let I=o.value,R=o.stride/I.BYTES_PER_ELEMENT||this.positionSize;s=s||I.length/R}this._allocate(s,!!t),this.indexStarts=r,this.vertexStarts=i,this.instanceCount=s;let w={};this._forEachGeometry((I,R)=>{let N=_[R]||I;w.vertexStart=i[R],w.indexStart=r[R];let j=RcP(r,t));if(Ky(e)){if(Gct(e))return t.style=jct,(0,MD.cloneElement)(e,t);if(Wct(e))return(0,MD.cloneElement)(e,t)}return e}function Ky(e){return e&&typeof e==\"object\"&&\"type\"in e||!1}function Gct(e){var t;return(t=e.props)===null||t===void 0?void 0:t.mapStyle}function Wct(e){let t=e.type;return t&&t.deckGLViewProps}function ED(e){if(typeof e==\"function\")return(0,a9.createElement)(Qc,{},e);if(Array.isArray(e))return e.map(ED);if(Ky(e)){if(e.type===uP.Fragment)return ED(e.props.children);if(Xy(e.type,Qc))return e}return e}function PD({children:e,layers:t=[],views:r=null}){let i=[],s=[],n={};return uP.Children.forEach(ED(e),o=>{if(Ky(o)){let c=o.type;if(Xy(c,hn)){let f=Hct(c,o.props);s.push(f)}else i.push(o);if(Xy(c,Qc)&&c!==Qc&&o.props.id){let f=new c(o.props);n[f.id]=f}}else o&&i.push(o)}),Object.keys(n).length>0&&(Array.isArray(r)?r.forEach(o=>{n[o.id]=o}):r&&(n[r.id]=r),r=Object.values(n)),t=s.length>0?[...s,...t]:t,{layers:t,children:i,views:r}}function Hct(e,t){let r={},i=e.defaultProps||{};for(let s in t)i[s]!==t[s]&&(r[s]=t[s]);return new e(r)}var ID=Ri(en());function CD({children:e,deck:t,ContextProvider:r}){let{viewManager:i}=t||{};if(!i||!i.views.length)return[];let s={},n=i.views[0].id;for(let o of e){let c=n,f=o;Ky(o)&&Xy(o.type,Qc)&&(c=o.props.id||n,f=o.props.children);let _=i.getViewport(c),w=i.getViewState(c);if(_){w.padding=_.padding;let{x:I,y:R,width:N,height:j}=_;f=cP(f,{x:I,y:R,width:N,height:j,viewport:_,viewState:w}),s[c]||(s[c]={viewport:_,children:[]}),s[c].children.push(f)}}return Object.keys(s).map(o=>{let{viewport:c,children:f}=s[o],{x:_,y:w,width:I,height:R}=c,N={position:\"absolute\",left:_,top:w,width:I,height:R},j=\"view-\".concat(o),Q=(0,ID.createElement)(\"div\",{key:j,id:j,style:N},...f);if(r){let et={viewport:c,container:t.canvas.offsetParent,eventManager:t.eventManager,onViewStateChange:Y=>{Y.viewId=o,t._onViewStateChange(Y)}};return(0,ID.createElement)(r,{key:j,value:et},Q)}return Q})}var qct={mixBlendMode:null};function LD({width:e,height:t,style:r}){let i={position:\"absolute\",zIndex:0,left:0,top:0,width:e,height:t},s={left:0,top:0};if(r)for(let n in r)n in qct?s[n]=r[n]:i[n]=r[n];return{containerStyle:i,canvasStyle:s}}function Zct(e){return{get deck(){return e.deck},pickObject:t=>e.deck.pickObject(t),pickMultipleObjects:t=>e.deck.pickMultipleObjects(t),pickObjects:t=>e.deck.pickObjects(t)}}function l9(e){e.redrawReason&&(e.deck._drawLayers(e.redrawReason),e.redrawReason=null)}function Yct(e,t,r){let i=new t({...r,_customRender:s=>{e.redrawReason=s;let n=i.getViewports();e.lastRenderedViewports!==n?e.forceUpdate():l9(e)}});return i}var c9=(0,Ro.forwardRef)((e,t)=>{let[r,i]=(0,Ro.useState)(0),n=(0,Ro.useRef)({control:null,version:r,forceUpdate:()=>i(Pt=>Pt+1)}).current,o=(0,Ro.useRef)(null),c=(0,Ro.useRef)(null),f=(0,Ro.useMemo)(()=>PD(e),[e.layers,e.views,e.children]),_=!0,w=Pt=>{var kt;return _&&e.viewState?(n.viewStateUpdateRequested=Pt,null):(n.viewStateUpdateRequested=null,(kt=e.onViewStateChange)===null||kt===void 0?void 0:kt.call(e,Pt))},I=Pt=>{if(_)n.interactionStateUpdateRequested=Pt;else{var kt;n.interactionStateUpdateRequested=null,(kt=e.onInteractionStateChange)===null||kt===void 0||kt.call(e,Pt)}},R=(0,Ro.useMemo)(()=>{let Pt={...e,style:null,width:\"100%\",height:\"100%\",parent:o.current,canvas:c.current,layers:f.layers,views:f.views,onViewStateChange:w,onInteractionStateChange:I};return delete Pt._customRender,n.deck&&n.deck.setProps(Pt),Pt},[e]);(0,Ro.useEffect)(()=>{let Pt=e.Deck||up;return n.deck=Yct(n,Pt,{...R,parent:o.current,canvas:c.current}),()=>{var kt;return(kt=n.deck)===null||kt===void 0?void 0:kt.finalize()}},[]),o9(()=>{l9(n);let{viewStateUpdateRequested:Pt,interactionStateUpdateRequested:kt}=n;Pt&&w(Pt),kt&&I(kt)}),(0,Ro.useImperativeHandle)(t,()=>Zct(n),[]);let N=n.deck&&n.deck.isInitialized?n.deck.getViewports():void 0,{ContextProvider:j,width:Q,height:et,id:Y,style:K}=e,{containerStyle:J,canvasStyle:ut}=(0,Ro.useMemo)(()=>LD({width:Q,height:et,style:K}),[Q,et,K]);if(!n.viewStateUpdateRequested&&n.lastRenderedViewports===N||n.version!==r){n.lastRenderedViewports=N,n.version=r;let Pt=CD({children:f.children,deck:n.deck,ContextProvider:j}),kt=(0,Ro.createElement)(\"canvas\",{key:\"canvas\",id:Y||\"deckgl-overlay\",ref:c,style:ut});n.control=(0,Ro.createElement)(\"div\",{id:\"\".concat(Y||\"deckgl\",\"-wrapper\"),ref:o,style:J},[kt,Pt])}return _=!1,n.control});c9.defaultProps=up.defaultProps;var kD=c9;var Xt,h9=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-8\",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(\"TextDecoder not available\")}};typeof TextDecoder<\"u\"&&h9.decode();var hw=null;function Jy(){return(hw===null||hw.byteLength===0)&&(hw=new Uint8Array(Xt.memory.buffer)),hw}function Fu(e,t){return e=e>>>0,h9.decode(Jy().subarray(e,e+t))}var fp=new Array(128).fill(void 0);fp.push(void 0,null,!0,!1);var mw=fp.length;function gr(e){mw===fp.length&&fp.push(fp.length+1);let t=mw;return mw=fp[t],fp[t]=e,t}function Qe(e){return fp[e]}function Qct(e){e<132||(fp[e]=mw,mw=e)}function Qn(e){let t=Qe(e);return Qct(e),t}var qh=0,hP=typeof TextEncoder<\"u\"?new TextEncoder(\"utf-8\"):{encode:()=>{throw Error(\"TextEncoder not available\")}},$ct=typeof hP.encodeInto==\"function\"?function(e,t){return hP.encodeInto(e,t)}:function(e,t){let r=hP.encode(e);return t.set(r),{read:e.length,written:r.length}};function fw(e,t,r){if(r===void 0){let c=hP.encode(e),f=t(c.length,1)>>>0;return Jy().subarray(f,f+c.length).set(c),qh=c.length,f}let i=e.length,s=t(i,1)>>>0,n=Jy(),o=0;for(;o127)break;n[s+o]=c}if(o!==i){o!==0&&(e=e.slice(o)),s=r(s,i,i=o+e.length*3,1)>>>0;let c=Jy().subarray(s+o,s+i),f=$ct(e,c);o+=f.written}return qh=o,s}function RD(e){return e==null}var dw=null;function or(){return(dw===null||dw.byteLength===0)&&(dw=new Int32Array(Xt.memory.buffer)),dw}function DD(e){let t=typeof e;if(t==\"number\"||t==\"boolean\"||e==null)return`${e}`;if(t==\"string\")return`\"${e}\"`;if(t==\"symbol\"){let s=e.description;return s==null?\"Symbol\":`Symbol(${s})`}if(t==\"function\"){let s=e.name;return typeof s==\"string\"&&s.length>0?`Function(${s})`:\"Function\"}if(Array.isArray(e)){let s=e.length,n=\"[\";s>0&&(n+=DD(e[0]));for(let o=1;o1)i=r[1];else return toString.call(e);if(i==\"Object\")try{return\"Object(\"+JSON.stringify(e)+\")\"}catch{return\"Object\"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:i}function Xct(e,t,r,i){let s={a:e,b:t,cnt:1,dtor:r},n=(...o)=>{s.cnt++;let c=s.a;s.a=0;try{return i(c,s.b,...o)}finally{--s.cnt===0?Xt.__wbindgen_export_2.get(s.dtor)(c,s.b):s.a=c}};return n.original=s,n}function Kct(e,t,r){Xt._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h896648893be04d51(e,t,gr(r))}function OD(e,t){let r=t(e.length*1,1)>>>0;return Jy().set(e,r/1),qh=e.length,r}function f9(e){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16),n=OD(e,Xt.__wbindgen_malloc),o=qh;Xt.readParquet(s,n,o);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return WD.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}function d9(e,t){return e=e>>>0,Jy().subarray(e/1,e/1+t)}var pw=null;function u9(){return(pw===null||pw.byteLength===0)&&(pw=new BigInt64Array(Xt.memory.buffer)),pw}var Aw=null;function Jct(){return(Aw===null||Aw.byteLength===0)&&(Aw=new BigUint64Array(Xt.memory.buffer)),Aw}function tut(e,t){return e=e>>>0,Jct().subarray(e/8,e/8+t)}function Do(e,t){try{return e.apply(this,t)}catch(r){Xt.__wbindgen_exn_store(gr(r))}}function eut(e,t,r,i){Xt.wasm_bindgen__convert__closures__invoke2_mut__h02232cd008ae4dfe(e,t,gr(r),gr(i))}var QNt=Object.freeze({UNCOMPRESSED:0,0:\"UNCOMPRESSED\",SNAPPY:1,1:\"SNAPPY\",GZIP:2,2:\"GZIP\",BROTLI:3,3:\"BROTLI\",LZ4:4,4:\"LZ4\",ZSTD:5,5:\"ZSTD\",LZ4_RAW:6,6:\"LZ4_RAW\"}),$Nt=Object.freeze({PLAIN:0,0:\"PLAIN\",PLAIN_DICTIONARY:1,1:\"PLAIN_DICTIONARY\",RLE:2,2:\"RLE\",BIT_PACKED:3,3:\"BIT_PACKED\",DELTA_BINARY_PACKED:4,4:\"DELTA_BINARY_PACKED\",DELTA_LENGTH_BYTE_ARRAY:5,5:\"DELTA_LENGTH_BYTE_ARRAY\",DELTA_BYTE_ARRAY:6,6:\"DELTA_BYTE_ARRAY\",RLE_DICTIONARY:7,7:\"RLE_DICTIONARY\",BYTE_STREAM_SPLIT:8,8:\"BYTE_STREAM_SPLIT\"}),XNt=Object.freeze({V1:0,0:\"V1\",V2:1,1:\"V2\"}),BD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_arrowschema_free(t)}copy(){let t=Xt.arrowschema_copy(this.__wbg_ptr);return e.__wrap(t)}},FD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_columnchunkmetadata_free(t)}filePath(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_filePath(i,this.__wbg_ptr);var t=or()[i/4+0],r=or()[i/4+1];let s;return t!==0&&(s=Fu(t,r).slice(),Xt.__wbindgen_free(t,r*1)),s}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}fileOffset(){return Xt.columnchunkmetadata_fileOffset(this.__wbg_ptr)}pathInSchema(){let t,r;try{let n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_pathInSchema(n,this.__wbg_ptr);var i=or()[n/4+0],s=or()[n/4+1];return t=i,r=s,Fu(i,s)}finally{Xt.__wbindgen_add_to_stack_pointer(16),Xt.__wbindgen_free(t,r,1)}}statistics_exist(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_statistics_exist(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return t!==0}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsMinValue(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsMinValue(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return Qn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsMaxValue(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsMaxValue(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return Qn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}getStatisticsNullCount(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_getStatisticsNullCount(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return Qn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numValues(){return Xt.columnchunkmetadata_numValues(this.__wbg_ptr)}compressedSize(){return Xt.columnchunkmetadata_compressedSize(this.__wbg_ptr)}uncompressedSize(){return Xt.columnchunkmetadata_uncompressedSize(this.__wbg_ptr)}dataPageOffset(){return Xt.columnchunkmetadata_dataPageOffset(this.__wbg_ptr)}hasIndexPage(){return Xt.columnchunkmetadata_hasIndexPage(this.__wbg_ptr)!==0}indexPageOffset(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_indexPageOffset(i,this.__wbg_ptr);var t=or()[i/4+0],r=u9()[i/8+1];return t===0?void 0:r}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}dictionaryPageOffset(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_dictionaryPageOffset(i,this.__wbg_ptr);var t=or()[i/4+0],r=u9()[i/8+1];return t===0?void 0:r}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numColumnEncodings(){return Xt.columnchunkmetadata_numColumnEncodings(this.__wbg_ptr)>>>0}byteRange(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.columnchunkmetadata_byteRange(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=tut(t,r).slice();return Xt.__wbindgen_free(t,r*8),i}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},zD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_datatype_free(t)}},fP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_ffirecordbatch_free(t)}arrayAddr(){return Xt.ffirecordbatch_arrayAddr(this.__wbg_ptr)}schemaAddr(){return Xt.ffirecordbatch_schemaAddr(this.__wbg_ptr)}},dP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_ffitable_free(t)}numBatches(){return Xt.ffitable_numBatches(this.__wbg_ptr)>>>0}schemaAddr(){return Xt.ffitable_schemaAddr(this.__wbg_ptr)}arrayAddr(t){return Xt.ffitable_arrayAddr(this.__wbg_ptr,t)}drop(){let t=this.__destroy_into_raw();Xt.ffitable_drop(t)}};var ND=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_filemetadata_free(t)}copy(){let t=Xt.filemetadata_copy(this.__wbg_ptr);return e.__wrap(t)}version(){return Xt.filemetadata_version(this.__wbg_ptr)}numRows(){return Xt.filemetadata_numRows(this.__wbg_ptr)>>>0}createdBy(){try{let i=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_createdBy(i,this.__wbg_ptr);var t=or()[i/4+0],r=or()[i/4+1];let s;return t!==0&&(s=Fu(t,r).slice(),Xt.__wbindgen_free(t,r*1)),s}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}numRowGroups(){return Xt.filemetadata_numRowGroups(this.__wbg_ptr)>>>0}rowGroup(t){let r=Xt.filemetadata_rowGroup(this.__wbg_ptr,t);return jD.__wrap(r)}schema(){let t=Xt.filemetadata_schema(this.__wbg_ptr);return GD.__wrap(t)}keyValueMetadata(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_keyValueMetadata(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return Qn(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}arrowSchema(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.filemetadata_arrowSchema(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return BD.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}};var UD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_intounderlyingsource_free(t)}pull(t){let r=Xt.intounderlyingsource_pull(this.__wbg_ptr,gr(t));return Qn(r)}cancel(){let t=this.__destroy_into_raw();Xt.intounderlyingsource_cancel(t)}};var VD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_queuingstrategy_free(t)}get highWaterMark(){return Xt.queuingstrategy_highWaterMark(this.__wbg_ptr)}};var pP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_recordbatch_free(t)}get numRows(){return Xt.recordbatch_numRows(this.__wbg_ptr)>>>0}get numColumns(){return Xt.recordbatch_numColumns(this.__wbg_ptr)>>>0}get schema(){let t=Xt.recordbatch_schema(this.__wbg_ptr);return AP.__wrap(t)}column(t){let r=Xt.recordbatch_column(this.__wbg_ptr,t);return r===0?void 0:mP.__wrap(r)}column_by_name(t){let r=fw(t,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),i=qh,s=Xt.recordbatch_column_by_name(this.__wbg_ptr,r,i);return s===0?void 0:mP.__wrap(s)}toFFI(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_toFFI(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return fP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoFFI(){try{let s=this.__destroy_into_raw(),n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_intoFFI(n,s);var t=or()[n/4+0],r=or()[n/4+1],i=or()[n/4+2];if(i)throw Qn(r);return fP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoIPCStream(){try{let o=this.__destroy_into_raw(),c=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.recordbatch_intoIPCStream(c,o);var t=or()[c/4+0],r=or()[c/4+1],i=or()[c/4+2],s=or()[c/4+3];if(s)throw Qn(i);var n=d9(t,r).slice();return Xt.__wbindgen_free(t,r*1),n}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},jD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_rowgroupmetadata_free(t)}numRows(){return Xt.rowgroupmetadata_numRows(this.__wbg_ptr)>>>0}numColumns(){return Xt.rowgroupmetadata_numColumns(this.__wbg_ptr)>>>0}column(t){let r=Xt.rowgroupmetadata_column(this.__wbg_ptr,t);return FD.__wrap(r)}totalByteSize(){return Xt.rowgroupmetadata_totalByteSize(this.__wbg_ptr)>>>0}compressedSize(){return Xt.rowgroupmetadata_compressedSize(this.__wbg_ptr)>>>0}},AP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_schema_free(t)}},GD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_schemadescriptor_free(t)}name(){let t,r;try{let n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.schemadescriptor_name(n,this.__wbg_ptr);var i=or()[n/4+0],s=or()[n/4+1];return t=i,r=s,Fu(i,s)}finally{Xt.__wbindgen_add_to_stack_pointer(16),Xt.__wbindgen_free(t,r,1)}}numColumns(){return Xt.schemadescriptor_numColumns(this.__wbg_ptr)>>>0}numFields(){return Xt.schemadescriptor_numFields(this.__wbg_ptr)>>>0}},WD=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_table_free(t)}get schema(){let t=Xt.table_schema(this.__wbg_ptr);return AP.__wrap(t)}recordBatch(t){let r=Xt.table_recordBatch(this.__wbg_ptr,t);return r===0?void 0:pP.__wrap(r)}get numBatches(){return Xt.table_numBatches(this.__wbg_ptr)>>>0}toFFI(){try{let s=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_toFFI(s,this.__wbg_ptr);var t=or()[s/4+0],r=or()[s/4+1],i=or()[s/4+2];if(i)throw Qn(r);return dP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoFFI(){try{let s=this.__destroy_into_raw(),n=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_intoFFI(n,s);var t=or()[n/4+0],r=or()[n/4+1],i=or()[n/4+2];if(i)throw Qn(r);return dP.__wrap(t)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}intoIPCStream(){try{let o=this.__destroy_into_raw(),c=Xt.__wbindgen_add_to_stack_pointer(-16);Xt.table_intoIPCStream(c,o);var t=or()[c/4+0],r=or()[c/4+1],i=or()[c/4+2],s=or()[c/4+3];if(s)throw Qn(i);var n=d9(t,r).slice();return Xt.__wbindgen_free(t,r*1),n}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}static fromIPCFile(t){try{let n=Xt.__wbindgen_add_to_stack_pointer(-16),o=OD(t,Xt.__wbindgen_malloc),c=qh;Xt.table_fromIPCFile(n,o,c);var r=or()[n/4+0],i=or()[n/4+1],s=or()[n/4+2];if(s)throw Qn(i);return e.__wrap(r)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}static fromIPCStream(t){try{let n=Xt.__wbindgen_add_to_stack_pointer(-16),o=OD(t,Xt.__wbindgen_malloc),c=qh;Xt.table_fromIPCStream(n,o,c);var r=or()[n/4+0],i=or()[n/4+1],s=or()[n/4+2];if(s)throw Qn(i);return e.__wrap(r)}finally{Xt.__wbindgen_add_to_stack_pointer(16)}}},mP=class e{static __wrap(t){t=t>>>0;let r=Object.create(e.prototype);return r.__wbg_ptr=t,r}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,t}free(){let t=this.__destroy_into_raw();Xt.__wbg_vector_free(t)}data_type(){let t=Xt.vector_data_type(this.__wbg_ptr);return zD.__wrap(t)}};async function rut(e,t){if(typeof Response==\"function\"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==\"function\")try{return await WebAssembly.instantiateStreaming(e,t)}catch(i){if(e.headers.get(\"Content-Type\")!=\"application/wasm\")console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",i);else throw i}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{let r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function iut(){let e={};return e.wbg={},e.wbg.__wbg_filemetadata_new=function(t){let r=ND.__wrap(t);return gr(r)},e.wbg.__wbindgen_error_new=function(t,r){let i=new Error(Fu(t,r));return gr(i)},e.wbg.__wbindgen_object_drop_ref=function(t){Qn(t)},e.wbg.__wbindgen_string_new=function(t,r){let i=Fu(t,r);return gr(i)},e.wbg.__wbindgen_bigint_from_i64=function(t){return gr(t)},e.wbg.__wbindgen_number_new=function(t){return gr(t)},e.wbg.__wbindgen_object_clone_ref=function(t){let r=Qe(t);return gr(r)},e.wbg.__wbg_fetch_b5d6bebed1e6c2d2=function(t){let r=fetch(Qe(t));return gr(r)},e.wbg.__wbg_newwithsource_620c192b0682807b=function(t,r){let i=new ReadableStream(UD.__wrap(t),VD.__wrap(r));return gr(i)},e.wbg.__wbg_close_e9110ca16e2567db=function(t){Qe(t).close()},e.wbg.__wbg_enqueue_d71a1a518e21f5c3=function(t,r){Qe(t).enqueue(Qe(r))},e.wbg.__wbg_byobRequest_08c18cee35def1f4=function(t){let r=Qe(t).byobRequest;return RD(r)?0:gr(r)},e.wbg.__wbg_close_da7e6fb9d9851e5a=function(t){Qe(t).close()},e.wbg.__wbg_view_231340b0dd8a2484=function(t){let r=Qe(t).view;return RD(r)?0:gr(r)},e.wbg.__wbg_respond_8fadc5f5c9d95422=function(t,r){Qe(t).respond(r>>>0)},e.wbg.__wbg_buffer_4e79326814bdd393=function(t){let r=Qe(t).buffer;return gr(r)},e.wbg.__wbg_byteOffset_b69b0a07afccce19=function(t){return Qe(t).byteOffset},e.wbg.__wbg_byteLength_5299848ed3264181=function(t){return Qe(t).byteLength},e.wbg.__wbindgen_string_get=function(t,r){let i=Qe(r),s=typeof i==\"string\"?i:void 0;var n=RD(s)?0:fw(s,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),o=qh;or()[t/4+1]=o,or()[t/4+0]=n},e.wbg.__wbg_set_bd72c078edfa51ad=function(t,r,i){Qe(t)[Qn(r)]=Qn(i)},e.wbg.__wbg_String_4370c5505c674d30=function(t,r){let i=String(Qe(r)),s=fw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbindgen_cb_drop=function(t){let r=Qn(t).original;return r.cnt--==1?(r.a=0,!0):!1},e.wbg.__wbg_recordbatch_new=function(t){let r=pP.__wrap(t);return gr(r)},e.wbg.__wbg_randomFillSync_dc1e9a60c158336d=function(){return Do(function(t,r){Qe(t).randomFillSync(Qn(r))},arguments)},e.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab=function(){return Do(function(t,r){Qe(t).getRandomValues(Qe(r))},arguments)},e.wbg.__wbg_crypto_c48a774b022d20ac=function(t){let r=Qe(t).crypto;return gr(r)},e.wbg.__wbindgen_is_object=function(t){let r=Qe(t);return typeof r==\"object\"&&r!==null},e.wbg.__wbg_process_298734cf255a885d=function(t){let r=Qe(t).process;return gr(r)},e.wbg.__wbg_versions_e2e78e134e3e5d01=function(t){let r=Qe(t).versions;return gr(r)},e.wbg.__wbg_node_1cd7a5d853dbea79=function(t){let r=Qe(t).node;return gr(r)},e.wbg.__wbindgen_is_string=function(t){return typeof Qe(t)==\"string\"},e.wbg.__wbg_require_8f08ceecec0f4fee=function(){return Do(function(){let t=module.require;return gr(t)},arguments)},e.wbg.__wbg_msCrypto_bcb970640f50a1e8=function(t){let r=Qe(t).msCrypto;return gr(r)},e.wbg.__wbg_signal_4bd18fb489af2d4c=function(t){let r=Qe(t).signal;return gr(r)},e.wbg.__wbg_new_55c9955722952374=function(){return Do(function(){let t=new AbortController;return gr(t)},arguments)},e.wbg.__wbg_abort_654b796176d117aa=function(t){Qe(t).abort()},e.wbg.__wbg_new_1eead62f64ca15ce=function(){return Do(function(){let t=new Headers;return gr(t)},arguments)},e.wbg.__wbg_append_fda9e3432e3e88da=function(){return Do(function(t,r,i,s,n){Qe(t).append(Fu(r,i),Fu(s,n))},arguments)},e.wbg.__wbg_fetch_8eaf01857a5bb21f=function(t,r){let i=Qe(t).fetch(Qe(r));return gr(i)},e.wbg.__wbg_instanceof_Response_fc4327dbfcdf5ced=function(t){let r;try{r=Qe(t)instanceof Response}catch{r=!1}return r},e.wbg.__wbg_url_8503de97f69da463=function(t,r){let i=Qe(r).url,s=fw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbg_status_ac85a3142a84caa2=function(t){return Qe(t).status},e.wbg.__wbg_headers_b70de86b8e989bc0=function(t){let r=Qe(t).headers;return gr(r)},e.wbg.__wbg_arrayBuffer_288fb3538806e85c=function(){return Do(function(t){let r=Qe(t).arrayBuffer();return gr(r)},arguments)},e.wbg.__wbg_newwithstrandinit_cad5cd6038c7ff5d=function(){return Do(function(t,r,i){let s=new Request(Fu(t,r),Qe(i));return gr(s)},arguments)},e.wbg.__wbindgen_is_function=function(t){return typeof Qe(t)==\"function\"},e.wbg.__wbg_newnoargs_581967eacc0e2604=function(t,r){let i=new Function(Fu(t,r));return gr(i)},e.wbg.__wbg_new_56693dbed0c32988=function(){return gr(new Map)},e.wbg.__wbg_next_526fc47e980da008=function(t){let r=Qe(t).next;return gr(r)},e.wbg.__wbg_next_ddb3312ca1c4e32a=function(){return Do(function(t){let r=Qe(t).next();return gr(r)},arguments)},e.wbg.__wbg_done_5c1f01fb660d73b5=function(t){return Qe(t).done},e.wbg.__wbg_value_1695675138684bd5=function(t){let r=Qe(t).value;return gr(r)},e.wbg.__wbg_iterator_97f0c81209c6c35a=function(){return gr(Symbol.iterator)},e.wbg.__wbg_get_97b561fb56f034b5=function(){return Do(function(t,r){let i=Reflect.get(Qe(t),Qe(r));return gr(i)},arguments)},e.wbg.__wbg_call_cb65541d95d71282=function(){return Do(function(t,r){let i=Qe(t).call(Qe(r));return gr(i)},arguments)},e.wbg.__wbg_new_b51585de1b234aff=function(){let t=new Object;return gr(t)},e.wbg.__wbg_self_1ff1d729e9aae938=function(){return Do(function(){let t=self.self;return gr(t)},arguments)},e.wbg.__wbg_window_5f4faef6c12b79ec=function(){return Do(function(){let t=window.window;return gr(t)},arguments)},e.wbg.__wbg_globalThis_1d39714405582d3c=function(){return Do(function(){let t=globalThis.globalThis;return gr(t)},arguments)},e.wbg.__wbg_global_651f05c6a0944d1c=function(){return Do(function(){let t=global.global;return gr(t)},arguments)},e.wbg.__wbindgen_is_undefined=function(t){return Qe(t)===void 0},e.wbg.__wbg_new_d258248ed531ff54=function(t,r){let i=new Error(Fu(t,r));return gr(i)},e.wbg.__wbg_call_01734de55d61e11d=function(){return Do(function(t,r,i){let s=Qe(t).call(Qe(r),Qe(i));return gr(s)},arguments)},e.wbg.__wbg_set_bedc3d02d0f05eb0=function(t,r,i){let s=Qe(t).set(Qe(r),Qe(i));return gr(s)},e.wbg.__wbg_new_43f1b47c28813cbd=function(t,r){try{var i={a:t,b:r},s=(o,c)=>{let f=i.a;i.a=0;try{return eut(f,i.b,o,c)}finally{i.a=f}};let n=new Promise(s);return gr(n)}finally{i.a=i.b=0}},e.wbg.__wbg_resolve_53698b95aaf7fcf8=function(t){let r=Promise.resolve(Qe(t));return gr(r)},e.wbg.__wbg_then_f7e06ee3c11698eb=function(t,r){let i=Qe(t).then(Qe(r));return gr(i)},e.wbg.__wbg_then_b2267541e2a73865=function(t,r,i){let s=Qe(t).then(Qe(r),Qe(i));return gr(s)},e.wbg.__wbg_buffer_085ec1f694018c4f=function(t){let r=Qe(t).buffer;return gr(r)},e.wbg.__wbg_newwithbyteoffsetandlength_6da8e527659b86aa=function(t,r,i){let s=new Uint8Array(Qe(t),r>>>0,i>>>0);return gr(s)},e.wbg.__wbg_new_8125e318e6245eed=function(t){let r=new Uint8Array(Qe(t));return gr(r)},e.wbg.__wbg_set_5cf90238115182c3=function(t,r,i){Qe(t).set(Qe(r),i>>>0)},e.wbg.__wbg_length_72e2208bbc0efc61=function(t){return Qe(t).length},e.wbg.__wbg_newwithlength_e5d69174d6984cd7=function(t){let r=new Uint8Array(t>>>0);return gr(r)},e.wbg.__wbg_subarray_13db269f57aa838d=function(t,r,i){let s=Qe(t).subarray(r>>>0,i>>>0);return gr(s)},e.wbg.__wbg_stringify_e25465938f3f611f=function(){return Do(function(t){let r=JSON.stringify(Qe(t));return gr(r)},arguments)},e.wbg.__wbg_has_c5fcd020291e56b8=function(){return Do(function(t,r){return Reflect.has(Qe(t),Qe(r))},arguments)},e.wbg.__wbg_set_092e06b0f9d71865=function(){return Do(function(t,r,i){return Reflect.set(Qe(t),Qe(r),Qe(i))},arguments)},e.wbg.__wbindgen_debug_string=function(t,r){let i=DD(Qe(r)),s=fw(i,Xt.__wbindgen_malloc,Xt.__wbindgen_realloc),n=qh;or()[t/4+1]=n,or()[t/4+0]=s},e.wbg.__wbindgen_throw=function(t,r){throw new Error(Fu(t,r))},e.wbg.__wbindgen_memory=function(){let t=Xt.memory;return gr(t)},e.wbg.__wbindgen_function_table=function(){let t=Xt.__wbindgen_export_2;return gr(t)},e.wbg.__wbindgen_closure_wrapper1527=function(t,r,i){let s=Xct(t,r,304,Kct);return gr(s)},e}function nut(e,t){return Xt=e.exports,p9.__wbindgen_wasm_module=t,pw=null,Aw=null,dw=null,hw=null,Xt}async function p9(e){if(Xt!==void 0)return Xt;typeof e>\"u\"&&(e=new URL(\"arrow2_bg.wasm\",import.meta.url));let t=iut();(typeof e==\"string\"||typeof Request==\"function\"&&e instanceof Request||typeof URL==\"function\"&&e instanceof URL)&&(e=fetch(e));let{instance:r,module:i}=await rut(await e,t);return nut(r,i)}var A9=p9;function g9(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var s=0,i=Object.getOwnPropertySymbols(e);s=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function ii(e){return this instanceof ii?(this.v=e,this):new ii(e)}function Kc(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var i=r.apply(e,t||[]),s,n=[];return s={},o(\"next\"),o(\"throw\"),o(\"return\"),s[Symbol.asyncIterator]=function(){return this},s;function o(R){i[R]&&(s[R]=function(N){return new Promise(function(j,Q){n.push([R,N,j,Q])>1||c(R,N)})})}function c(R,N){try{f(i[R](N))}catch(j){I(n[0][3],j)}}function f(R){R.value instanceof ii?Promise.resolve(R.value.v).then(_,w):I(n[0][2],R)}function _(R){c(\"next\",R)}function w(R){c(\"throw\",R)}function I(R,N){R(N),n.shift(),n.length&&c(n[0][0],n[0][1])}}function tv(e){var t,r;return t={},i(\"next\"),i(\"throw\",function(s){throw s}),i(\"return\"),t[Symbol.iterator]=function(){return this},t;function i(s,n){t[s]=e[s]?function(o){return(r=!r)?{value:ii(e[s](o)),done:!1}:n?n(o):o}:n}}function Zh(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof m9==\"function\"?m9(e):e[Symbol.iterator](),r={},i(\"next\"),i(\"throw\"),i(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=e[n]&&function(o){return new Promise(function(c,f){o=e[n](o),s(c,f,o.done,o.value)})}}function s(n,o,c,f){Promise.resolve(f).then(function(_){n({value:_,done:c})},o)}}var $D={};mA($D,{compareArrayLike:()=>QD,joinUint8Arrays:()=>tu,memcpy:()=>yw,rebaseValueOffsets:()=>SP,toArrayBufferView:()=>Ai,toArrayBufferViewAsyncIterator:()=>Qh,toArrayBufferViewIterator:()=>Jf,toBigInt64Array:()=>wP,toBigUint64Array:()=>dut,toFloat32Array:()=>put,toFloat32ArrayAsyncIterator:()=>Cut,toFloat32ArrayIterator:()=>but,toFloat64Array:()=>Aut,toFloat64ArrayAsyncIterator:()=>Lut,toFloat64ArrayIterator:()=>wut,toInt16Array:()=>uut,toInt16ArrayAsyncIterator:()=>Mut,toInt16ArrayIterator:()=>_ut,toInt32Array:()=>gg,toInt32ArrayAsyncIterator:()=>Eut,toInt32ArrayIterator:()=>yut,toInt8Array:()=>cut,toInt8ArrayAsyncIterator:()=>Tut,toInt8ArrayIterator:()=>gut,toUint16Array:()=>hut,toUint16ArrayAsyncIterator:()=>Put,toUint16ArrayIterator:()=>vut,toUint32Array:()=>fut,toUint32ArrayAsyncIterator:()=>Iut,toUint32ArrayIterator:()=>xut,toUint8Array:()=>Rr,toUint8ArrayAsyncIterator:()=>YD,toUint8ArrayIterator:()=>ZD,toUint8ClampedArray:()=>mut,toUint8ClampedArrayAsyncIterator:()=>kut,toUint8ClampedArrayIterator:()=>Sut});var sut=new TextDecoder(\"utf-8\"),gw=e=>sut.decode(e),out=new TextEncoder,Kf=e=>out.encode(e);var aut=e=>typeof e==\"number\",_9=e=>typeof e==\"boolean\",Oo=e=>typeof e==\"function\",Cl=e=>e!=null&&Object(e)===e,Jc=e=>Cl(e)&&Oo(e.then);var Yh=e=>Cl(e)&&Oo(e[Symbol.iterator]),zu=e=>Cl(e)&&Oo(e[Symbol.asyncIterator]),gP=e=>Cl(e)&&Cl(e.schema);var _P=e=>Cl(e)&&\"done\"in e&&\"value\"in e;var yP=e=>Cl(e)&&Oo(e.stat)&&aut(e.fd);var vP=e=>Cl(e)&&_w(e.body),xP=e=>\"_getDOMStream\"in e&&\"_getNodeStream\"in e,y9=e=>Cl(e)&&Oo(e.abort)&&Oo(e.getWriter)&&!xP(e),_w=e=>Cl(e)&&Oo(e.cancel)&&Oo(e.getReader)&&!xP(e),v9=e=>Cl(e)&&Oo(e.end)&&Oo(e.write)&&_9(e.writable)&&!xP(e),bP=e=>Cl(e)&&Oo(e.read)&&Oo(e.pipe)&&_9(e.readable)&&!xP(e),x9=e=>Cl(e)&&Oo(e.clear)&&Oo(e.bytes)&&Oo(e.position)&&Oo(e.setPosition)&&Oo(e.capacity)&&Oo(e.getBufferIdentifier)&&Oo(e.createLong);var qD=typeof SharedArrayBuffer<\"u\"?SharedArrayBuffer:ArrayBuffer;function lut(e){let t=e[0]?[e[0]]:[],r,i,s,n;for(let o,c,f=0,_=0,w=e.length;++fw+I.byteLength,0),s,n,o,c=0,f=-1,_=Math.min(t||Number.POSITIVE_INFINITY,i);for(let w=r.length;++fAi(Int8Array,e),uut=e=>Ai(Int16Array,e),gg=e=>Ai(Int32Array,e),wP=e=>Ai(BigInt64Array,e),Rr=e=>Ai(Uint8Array,e),hut=e=>Ai(Uint16Array,e),fut=e=>Ai(Uint32Array,e),dut=e=>Ai(BigUint64Array,e),put=e=>Ai(Float32Array,e),Aut=e=>Ai(Float64Array,e),mut=e=>Ai(Uint8ClampedArray,e),HD=e=>(e.next(),e);function*Jf(e,t){let r=function*(s){yield s},i=typeof t==\"string\"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof qD?r(t):Yh(t)?t:r(t);return yield*HD(function*(s){let n=null;do n=s.next(yield Ai(e,n));while(!n.done)}(i[Symbol.iterator]())),new e}var gut=e=>Jf(Int8Array,e),_ut=e=>Jf(Int16Array,e),yut=e=>Jf(Int32Array,e),ZD=e=>Jf(Uint8Array,e),vut=e=>Jf(Uint16Array,e),xut=e=>Jf(Uint32Array,e),but=e=>Jf(Float32Array,e),wut=e=>Jf(Float64Array,e),Sut=e=>Jf(Uint8ClampedArray,e);function Qh(e,t){return Kc(this,arguments,function*(){if(Jc(t))return yield ii(yield ii(yield*tv(Zh(Qh(e,yield ii(t))))));let i=function(o){return Kc(this,arguments,function*(){yield yield ii(yield ii(o))})},s=function(o){return Kc(this,arguments,function*(){yield ii(yield*tv(Zh(HD(function*(c){let f=null;do f=c.next(yield f?.value);while(!f.done)}(o[Symbol.iterator]())))))})},n=typeof t==\"string\"||ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof qD?i(t):Yh(t)?s(t):zu(t)?t:i(t);return yield ii(yield*tv(Zh(HD(function(o){return Kc(this,arguments,function*(){let c=null;do c=yield ii(o.next(yield yield ii(Ai(e,c))));while(!c.done)})}(n[Symbol.asyncIterator]()))))),yield ii(new e)})}var Tut=e=>Qh(Int8Array,e),Mut=e=>Qh(Int16Array,e),Eut=e=>Qh(Int32Array,e),YD=e=>Qh(Uint8Array,e),Put=e=>Qh(Uint16Array,e),Iut=e=>Qh(Uint32Array,e),Cut=e=>Qh(Float32Array,e),Lut=e=>Qh(Float64Array,e),kut=e=>Qh(Uint8ClampedArray,e);function SP(e,t,r){if(e!==0){r=r.slice(0,t);for(let i=-1,s=r.length;++i0)do if(e[r]!==t[r])return!1;while(++r(e.next(),e);function*Rut(e){let t,r=!1,i=[],s,n,o,c=0;function f(){return n===\"peek\"?tu(i,o)[0]:([s,i,c]=tu(i,o),s)}({cmd:n,size:o}=(yield null)||{cmd:\"read\",size:0});let _=ZD(e)[Symbol.iterator]();try{do if({done:t,value:s}=Number.isNaN(o-c)?_.next():_.next(o-c),!t&&s.byteLength>0&&(i.push(s),c+=s.byteLength),t||o<=c)do({cmd:n,size:o}=yield f());while(o0&&(s.push(n),f+=n.byteLength),r||c<=f)do({cmd:o,size:c}=yield yield ii(_()));while(c0&&(s.push(Rr(n)),f+=n.byteLength),r||c<=f)do({cmd:o,size:c}=yield yield ii(_()));while(c{})}get closed(){return this.reader?this.reader.closed.catch(()=>{}):Promise.resolve()}releaseLock(){this.reader&&this.reader.releaseLock(),this.reader=null}cancel(t){return sr(this,void 0,void 0,function*(){let{reader:r,source:i}=this;r&&(yield r.cancel(t).catch(()=>{})),i&&i.locked&&this.releaseLock()})}read(t){return sr(this,void 0,void 0,function*(){if(t===0)return{done:this.reader==null,value:new Uint8Array(0)};let r=yield this.reader.read();return!r.done&&(r.value=Rr(r)),r})}},XD=(e,t)=>{let r=s=>i([t,s]),i;return[t,r,new Promise(s=>(i=s)&&e.once(t,r))]};function But(e){return Kc(this,arguments,function*(){let r=[],i=\"error\",s=!1,n=null,o,c,f=0,_=[],w;function I(){return o===\"peek\"?tu(_,c)[0]:([w,_,f]=tu(_,c),w)}if({cmd:o,size:c}=(yield yield ii(null))||{cmd:\"read\",size:0},e.isTTY)return yield yield ii(new Uint8Array(0)),yield ii(null);try{r[0]=XD(e,\"end\"),r[1]=XD(e,\"error\");do{if(r[2]=XD(e,\"readable\"),[i,n]=yield ii(Promise.race(r.map(N=>N[2]))),i===\"error\")break;if((s=i===\"end\")||(Number.isFinite(c-f)?(w=Rr(e.read(c-f)),w.byteLength0&&(_.push(w),f+=w.byteLength)),s||c<=f)do({cmd:o,size:c}=yield yield ii(I()));while(c{for(let[Y,K]of N)e.off(Y,K);try{let Y=e.destroy;Y&&Y.call(e,j),j=void 0}catch(Y){j=Y||j}finally{j!=null?et(j):Q()}})}})}var rn;(function(e){e[e.V1=0]=\"V1\",e[e.V2=1]=\"V2\",e[e.V3=2]=\"V3\",e[e.V4=3]=\"V4\",e[e.V5=4]=\"V5\"})(rn||(rn={}));var Mn;(function(e){e[e.Sparse=0]=\"Sparse\",e[e.Dense=1]=\"Dense\"})(Mn||(Mn={}));var Yi;(function(e){e[e.HALF=0]=\"HALF\",e[e.SINGLE=1]=\"SINGLE\",e[e.DOUBLE=2]=\"DOUBLE\"})(Yi||(Yi={}));var Js;(function(e){e[e.DAY=0]=\"DAY\",e[e.MILLISECOND=1]=\"MILLISECOND\"})(Js||(Js={}));var pr;(function(e){e[e.SECOND=0]=\"SECOND\",e[e.MILLISECOND=1]=\"MILLISECOND\",e[e.MICROSECOND=2]=\"MICROSECOND\",e[e.NANOSECOND=3]=\"NANOSECOND\"})(pr||(pr={}));var Bo;(function(e){e[e.YEAR_MONTH=0]=\"YEAR_MONTH\",e[e.DAY_TIME=1]=\"DAY_TIME\",e[e.MONTH_DAY_NANO=2]=\"MONTH_DAY_NANO\"})(Bo||(Bo={}));var td=new Int32Array(2),MP=new Float32Array(td.buffer),EP=new Float64Array(td.buffer),ev=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var vw;(function(e){e[e.UTF8_BYTES=1]=\"UTF8_BYTES\",e[e.UTF16_STRING=2]=\"UTF16_STRING\"})(vw||(vw={}));var eu=class e{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new e(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8}writeInt32(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8,this.bytes_[t+2]=r>>16,this.bytes_[t+3]=r>>24}writeUint32(t,r){this.bytes_[t]=r,this.bytes_[t+1]=r>>8,this.bytes_[t+2]=r>>16,this.bytes_[t+3]=r>>24}writeInt64(t,r){this.writeInt32(t,Number(BigInt.asIntN(32,r))),this.writeInt32(t+4,Number(BigInt.asIntN(32,r>>BigInt(32))))}writeUint64(t,r){this.writeUint32(t,Number(BigInt.asUintN(32,r))),this.writeUint32(t+4,Number(BigInt.asUintN(32,r>>BigInt(32))))}writeFloat32(t,r){MP[0]=r,this.writeInt32(t,td[0])}writeFloat64(t,r){EP[0]=r,this.writeInt32(t,td[ev?0:1]),this.writeInt32(t+4,td[ev?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let i=~(this.bb.capacity()-this.space+r)+1&t-1;for(;this.space=0&&this.vtable[r]==0;r--);let i=r+1;for(;r>=0;r--)this.addInt16(this.vtable[r]!=0?t-this.vtable[r]:0);let s=2;this.addInt16(t-this.object_start);let n=(i+s)*2;this.addInt16(n);let o=0,c=this.space;t:for(r=0;r=0;o--)this.writeInt8(n.charCodeAt(o))}this.prep(this.minalign,4+s),this.addOffset(t),s&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,r){this.finish(t,r,!0)}requiredField(t,r){let i=this.bb.capacity()-t,s=i-this.bb.readInt32(i);if(!(r=0;i--)t.addInt32(r[i]);return t.endVector()}static startTypeIdsVector(t,r){t.startVector(4,r,4)}static endUnion(t){return t.endObject()}static createUnion(t,r,i){return e.startUnion(t),e.addMode(t,r),e.addTypeIds(t,i),e.endUnion(t)}};var Lw=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsUtf8(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsUtf8(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static startUtf8(t){t.startObject(0)}static endUtf8(t){return t.endObject()}static createUtf8(t){return e.startUtf8(t),e.endUtf8(t)}};var En;(function(e){e[e.NONE=0]=\"NONE\",e[e.Null=1]=\"Null\",e[e.Int=2]=\"Int\",e[e.FloatingPoint=3]=\"FloatingPoint\",e[e.Binary=4]=\"Binary\",e[e.Utf8=5]=\"Utf8\",e[e.Bool=6]=\"Bool\",e[e.Decimal=7]=\"Decimal\",e[e.Date=8]=\"Date\",e[e.Time=9]=\"Time\",e[e.Timestamp=10]=\"Timestamp\",e[e.Interval=11]=\"Interval\",e[e.List=12]=\"List\",e[e.Struct_=13]=\"Struct_\",e[e.Union=14]=\"Union\",e[e.FixedSizeBinary=15]=\"FixedSizeBinary\",e[e.FixedSizeList=16]=\"FixedSizeList\",e[e.Map=17]=\"Map\",e[e.Duration=18]=\"Duration\",e[e.LargeBinary=19]=\"LargeBinary\",e[e.LargeUtf8=20]=\"LargeUtf8\",e[e.LargeList=21]=\"LargeList\",e[e.RunEndEncoded=22]=\"RunEndEncoded\"})(En||(En={}));var nl=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsField(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsField(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}name(t){let r=this.bb.__offset(this.bb_pos,4);return r?this.bb.__string(this.bb_pos+r,t):null}nullable(){let t=this.bb.__offset(this.bb_pos,6);return t?!!this.bb.readInt8(this.bb_pos+t):!1}typeType(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint8(this.bb_pos+t):En.NONE}type(t){let r=this.bb.__offset(this.bb_pos,10);return r?this.bb.__union(t,this.bb_pos+r):null}dictionary(t){let r=this.bb.__offset(this.bb_pos,12);return r?(t||new ed).__init(this.bb.__indirect(this.bb_pos+r),this.bb):null}children(t,r){let i=this.bb.__offset(this.bb_pos,14);return i?(r||new e).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}childrenLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,16);return i?(r||new Fo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.__vector_len(this.bb_pos+t):0}static startField(t){t.startObject(7)}static addName(t,r){t.addFieldOffset(0,r,0)}static addNullable(t,r){t.addFieldInt8(1,+r,0)}static addTypeType(t,r){t.addFieldInt8(2,r,En.NONE)}static addType(t,r){t.addFieldOffset(3,r,0)}static addDictionary(t,r){t.addFieldOffset(4,r,0)}static addChildren(t,r){t.addFieldOffset(5,r,0)}static createChildrenVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startChildrenVector(t,r){t.startVector(4,r,4)}static addCustomMetadata(t,r){t.addFieldOffset(6,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endField(t){return t.endObject()}};var ac=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsSchema(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSchema(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}endianness(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):im.Little}fields(t,r){let i=this.bb.__offset(this.bb_pos,6);return i?(r||new nl).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}fieldsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,8);return i?(r||new Fo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}features(t){let r=this.bb.__offset(this.bb_pos,10);return r?this.bb.readInt64(this.bb.__vector(this.bb_pos+r)+t*8):BigInt(0)}featuresLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}static startSchema(t){t.startObject(4)}static addEndianness(t,r){t.addFieldInt16(0,r,im.Little)}static addFields(t,r){t.addFieldOffset(1,r,0)}static createFieldsVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startFieldsVector(t,r){t.startVector(4,r,4)}static addCustomMetadata(t,r){t.addFieldOffset(2,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static addFeatures(t,r){t.addFieldOffset(3,r,0)}static createFeaturesVector(t,r){t.startVector(8,r.length,8);for(let i=r.length-1;i>=0;i--)t.addInt64(r[i]);return t.endVector()}static startFeaturesVector(t,r){t.startVector(8,r,8)}static endSchema(t){return t.endObject()}static finishSchemaBuffer(t,r){t.finish(r)}static finishSizePrefixedSchemaBuffer(t,r){t.finish(r,void 0,!0)}static createSchema(t,r,i,s,n){return e.startSchema(t),e.addEndianness(t,r),e.addFields(t,i),e.addCustomMetadata(t,s),e.addFeatures(t,n),e.endSchema(t)}};var bi;(function(e){e[e.NONE=0]=\"NONE\",e[e.Schema=1]=\"Schema\",e[e.DictionaryBatch=2]=\"DictionaryBatch\",e[e.RecordBatch=3]=\"RecordBatch\",e[e.Tensor=4]=\"Tensor\",e[e.SparseTensor=5]=\"SparseTensor\"})(bi||(bi={}));var Dt;(function(e){e[e.NONE=0]=\"NONE\",e[e.Null=1]=\"Null\",e[e.Int=2]=\"Int\",e[e.Float=3]=\"Float\",e[e.Binary=4]=\"Binary\",e[e.Utf8=5]=\"Utf8\",e[e.Bool=6]=\"Bool\",e[e.Decimal=7]=\"Decimal\",e[e.Date=8]=\"Date\",e[e.Time=9]=\"Time\",e[e.Timestamp=10]=\"Timestamp\",e[e.Interval=11]=\"Interval\",e[e.List=12]=\"List\",e[e.Struct=13]=\"Struct\",e[e.Union=14]=\"Union\",e[e.FixedSizeBinary=15]=\"FixedSizeBinary\",e[e.FixedSizeList=16]=\"FixedSizeList\",e[e.Map=17]=\"Map\",e[e.Duration=18]=\"Duration\",e[e.LargeBinary=19]=\"LargeBinary\",e[e.LargeUtf8=20]=\"LargeUtf8\",e[e.Dictionary=-1]=\"Dictionary\",e[e.Int8=-2]=\"Int8\",e[e.Int16=-3]=\"Int16\",e[e.Int32=-4]=\"Int32\",e[e.Int64=-5]=\"Int64\",e[e.Uint8=-6]=\"Uint8\",e[e.Uint16=-7]=\"Uint16\",e[e.Uint32=-8]=\"Uint32\",e[e.Uint64=-9]=\"Uint64\",e[e.Float16=-10]=\"Float16\",e[e.Float32=-11]=\"Float32\",e[e.Float64=-12]=\"Float64\",e[e.DateDay=-13]=\"DateDay\",e[e.DateMillisecond=-14]=\"DateMillisecond\",e[e.TimestampSecond=-15]=\"TimestampSecond\",e[e.TimestampMillisecond=-16]=\"TimestampMillisecond\",e[e.TimestampMicrosecond=-17]=\"TimestampMicrosecond\",e[e.TimestampNanosecond=-18]=\"TimestampNanosecond\",e[e.TimeSecond=-19]=\"TimeSecond\",e[e.TimeMillisecond=-20]=\"TimeMillisecond\",e[e.TimeMicrosecond=-21]=\"TimeMicrosecond\",e[e.TimeNanosecond=-22]=\"TimeNanosecond\",e[e.DenseUnion=-23]=\"DenseUnion\",e[e.SparseUnion=-24]=\"SparseUnion\",e[e.IntervalDayTime=-25]=\"IntervalDayTime\",e[e.IntervalYearMonth=-26]=\"IntervalYearMonth\",e[e.DurationSecond=-27]=\"DurationSecond\",e[e.DurationMillisecond=-28]=\"DurationMillisecond\",e[e.DurationMicrosecond=-29]=\"DurationMicrosecond\",e[e.DurationNanosecond=-30]=\"DurationNanosecond\"})(Dt||(Dt={}));var Li;(function(e){e[e.OFFSET=0]=\"OFFSET\",e[e.DATA=1]=\"DATA\",e[e.VALIDITY=2]=\"VALIDITY\",e[e.TYPE=3]=\"TYPE\"})(Li||(Li={}));var gO={};mA(gO,{clampIndex:()=>wht,clampRange:()=>Ww,createElementComparator:()=>dm});var JD={};mA(JD,{valueToString:()=>Jh});function Jh(e){if(e===null)return\"null\";if(e===void 0)return\"undefined\";switch(typeof e){case\"number\":return`${e}`;case\"bigint\":return`${e}`;case\"string\":return`\"${e}\"`}return typeof e[Symbol.toPrimitive]==\"function\"?e[Symbol.toPrimitive](\"string\"):ArrayBuffer.isView(e)?e instanceof BigInt64Array||e instanceof BigUint64Array?`[${[...e].map(t=>Jh(t))}]`:`[${e}]`:ArrayBuffer.isView(e)?`[${e}]`:JSON.stringify(e,(t,r)=>typeof r==\"bigint\"?`${r}`:r)}var eO={};mA(eO,{BN:()=>Rw,bigNumToBigInt:()=>S9,bigNumToString:()=>ov,isArrowBigNumSymbol:()=>b9});var b9=Symbol.for(\"isArrowBigNum\");function tf(e,...t){return t.length===0?Object.setPrototypeOf(Ai(this.TypedArray,e),this.constructor.prototype):Object.setPrototypeOf(new this.TypedArray(e,...t),this.constructor.prototype)}tf.prototype[b9]=!0;tf.prototype.toJSON=function(){return`\"${ov(this)}\"`};tf.prototype.valueOf=function(){return w9(this)};tf.prototype.toString=function(){return ov(this)};tf.prototype[Symbol.toPrimitive]=function(e=\"default\"){switch(e){case\"number\":return w9(this);case\"string\":return ov(this);case\"default\":return S9(this)}return ov(this)};function nv(...e){return tf.apply(this,e)}function sv(...e){return tf.apply(this,e)}function kw(...e){return tf.apply(this,e)}Object.setPrototypeOf(nv.prototype,Object.create(Int32Array.prototype));Object.setPrototypeOf(sv.prototype,Object.create(Uint32Array.prototype));Object.setPrototypeOf(kw.prototype,Object.create(Uint32Array.prototype));Object.assign(nv.prototype,tf.prototype,{constructor:nv,signed:!0,TypedArray:Int32Array,BigIntArray:BigInt64Array});Object.assign(sv.prototype,tf.prototype,{constructor:sv,signed:!1,TypedArray:Uint32Array,BigIntArray:BigUint64Array});Object.assign(kw.prototype,tf.prototype,{constructor:kw,signed:!0,TypedArray:Uint32Array,BigIntArray:BigUint64Array});function w9(e){let{buffer:t,byteOffset:r,length:i,signed:s}=e,n=new BigUint64Array(t,r,i),o=s&&n.at(-1)&BigInt(1)<{if(e.byteLength===8)return`${new e.BigIntArray(e.buffer,e.byteOffset,1)[0]}`;if(!e.signed)return tO(e);let t=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);if(new Int16Array([t.at(-1)])[0]>=0)return tO(e);t=t.slice();let i=1;for(let n=0;ne.byteLength===8?new e.BigIntArray(e.buffer,e.byteOffset,1)[0]:ov(e);function tO(e){let t=\"\",r=new Uint32Array(2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),s=new Uint32Array((i=new Uint16Array(i).reverse()).buffer),n=-1,o=i.length-1;do{for(r[0]=i[n=0];nNumber.MAX_SAFE_INTEGER))throw new TypeError(`${e} is not safe to convert to a number.`);return Number(e)}var T9,M9,E9,P9,I9,C9,L9,k9,R9,D9,O9,B9,F9,z9,N9,U9,V9,j9,G9,W9,H9,q9,Ne=class e{static isNull(t){return t?.typeId===Dt.Null}static isInt(t){return t?.typeId===Dt.Int}static isFloat(t){return t?.typeId===Dt.Float}static isBinary(t){return t?.typeId===Dt.Binary}static isLargeBinary(t){return t?.typeId===Dt.LargeBinary}static isUtf8(t){return t?.typeId===Dt.Utf8}static isLargeUtf8(t){return t?.typeId===Dt.LargeUtf8}static isBool(t){return t?.typeId===Dt.Bool}static isDecimal(t){return t?.typeId===Dt.Decimal}static isDate(t){return t?.typeId===Dt.Date}static isTime(t){return t?.typeId===Dt.Time}static isTimestamp(t){return t?.typeId===Dt.Timestamp}static isInterval(t){return t?.typeId===Dt.Interval}static isDuration(t){return t?.typeId===Dt.Duration}static isList(t){return t?.typeId===Dt.List}static isStruct(t){return t?.typeId===Dt.Struct}static isUnion(t){return t?.typeId===Dt.Union}static isFixedSizeBinary(t){return t?.typeId===Dt.FixedSizeBinary}static isFixedSizeList(t){return t?.typeId===Dt.FixedSizeList}static isMap(t){return t?.typeId===Dt.Map}static isDictionary(t){return t?.typeId===Dt.Dictionary}static isDenseUnion(t){return e.isUnion(t)&&t.mode===Mn.Dense}static isSparseUnion(t){return e.isUnion(t)&&t.mode===Mn.Sparse}constructor(t){this.typeId=t}};T9=Symbol.toStringTag;Ne[T9]=(e=>(e.children=null,e.ArrayType=Array,e.OffsetArrayType=Int32Array,e[Symbol.toStringTag]=\"DataType\"))(Ne.prototype);var ra=class extends Ne{constructor(){super(Dt.Null)}toString(){return\"Null\"}};M9=Symbol.toStringTag;ra[M9]=(e=>e[Symbol.toStringTag]=\"Null\")(ra.prototype);var ns=class extends Ne{constructor(t,r){super(Dt.Int),this.isSigned=t,this.bitWidth=r}get ArrayType(){switch(this.bitWidth){case 8:return this.isSigned?Int8Array:Uint8Array;case 16:return this.isSigned?Int16Array:Uint16Array;case 32:return this.isSigned?Int32Array:Uint32Array;case 64:return this.isSigned?BigInt64Array:BigUint64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`${this.isSigned?\"I\":\"Ui\"}nt${this.bitWidth}`}};E9=Symbol.toStringTag;ns[E9]=(e=>(e.isSigned=null,e.bitWidth=null,e[Symbol.toStringTag]=\"Int\"))(ns.prototype);var Dw=class extends ns{constructor(){super(!0,8)}get ArrayType(){return Int8Array}},Ow=class extends ns{constructor(){super(!0,16)}get ArrayType(){return Int16Array}},ef=class extends ns{constructor(){super(!0,32)}get ArrayType(){return Int32Array}},Bw=class extends ns{constructor(){super(!0,64)}get ArrayType(){return BigInt64Array}},Fw=class extends ns{constructor(){super(!1,8)}get ArrayType(){return Uint8Array}},zw=class extends ns{constructor(){super(!1,16)}get ArrayType(){return Uint16Array}},Nw=class extends ns{constructor(){super(!1,32)}get ArrayType(){return Uint32Array}},Uw=class extends ns{constructor(){super(!1,64)}get ArrayType(){return BigUint64Array}};Object.defineProperty(Dw.prototype,\"ArrayType\",{value:Int8Array});Object.defineProperty(Ow.prototype,\"ArrayType\",{value:Int16Array});Object.defineProperty(ef.prototype,\"ArrayType\",{value:Int32Array});Object.defineProperty(Bw.prototype,\"ArrayType\",{value:BigInt64Array});Object.defineProperty(Fw.prototype,\"ArrayType\",{value:Uint8Array});Object.defineProperty(zw.prototype,\"ArrayType\",{value:Uint16Array});Object.defineProperty(Nw.prototype,\"ArrayType\",{value:Uint32Array});Object.defineProperty(Uw.prototype,\"ArrayType\",{value:BigUint64Array});var Ao=class extends Ne{constructor(t){super(Dt.Float),this.precision=t}get ArrayType(){switch(this.precision){case Yi.HALF:return Uint16Array;case Yi.SINGLE:return Float32Array;case Yi.DOUBLE:return Float64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`Float${this.precision<<5||16}`}};P9=Symbol.toStringTag;Ao[P9]=(e=>(e.precision=null,e[Symbol.toStringTag]=\"Float\"))(Ao.prototype);var Vw=class extends Ao{constructor(){super(Yi.HALF)}},jw=class extends Ao{constructor(){super(Yi.SINGLE)}},av=class extends Ao{constructor(){super(Yi.DOUBLE)}};Object.defineProperty(Vw.prototype,\"ArrayType\",{value:Uint16Array});Object.defineProperty(jw.prototype,\"ArrayType\",{value:Float32Array});Object.defineProperty(av.prototype,\"ArrayType\",{value:Float64Array});var Uu=class extends Ne{constructor(){super(Dt.Binary)}toString(){return\"Binary\"}};I9=Symbol.toStringTag;Uu[I9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Binary\"))(Uu.prototype);var id=class extends Ne{constructor(){super(Dt.LargeBinary)}toString(){return\"LargeBinary\"}};C9=Symbol.toStringTag;id[C9]=(e=>(e.ArrayType=Uint8Array,e.OffsetArrayType=BigInt64Array,e[Symbol.toStringTag]=\"LargeBinary\"))(id.prototype);var Vu=class extends Ne{constructor(){super(Dt.Utf8)}toString(){return\"Utf8\"}};L9=Symbol.toStringTag;Vu[L9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Utf8\"))(Vu.prototype);var nd=class extends Ne{constructor(){super(Dt.LargeUtf8)}toString(){return\"LargeUtf8\"}};k9=Symbol.toStringTag;nd[k9]=(e=>(e.ArrayType=Uint8Array,e.OffsetArrayType=BigInt64Array,e[Symbol.toStringTag]=\"LargeUtf8\"))(nd.prototype);var lc=class extends Ne{constructor(){super(Dt.Bool)}toString(){return\"Bool\"}};R9=Symbol.toStringTag;lc[R9]=(e=>(e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"Bool\"))(lc.prototype);var ju=class extends Ne{constructor(t,r,i=128){super(Dt.Decimal),this.scale=t,this.precision=r,this.bitWidth=i}toString(){return`Decimal[${this.precision}e${this.scale>0?\"+\":\"\"}${this.scale}]`}};D9=Symbol.toStringTag;ju[D9]=(e=>(e.scale=null,e.precision=null,e.ArrayType=Uint32Array,e[Symbol.toStringTag]=\"Decimal\"))(ju.prototype);var Gu=class extends Ne{constructor(t){super(Dt.Date),this.unit=t}toString(){return`Date${(this.unit+1)*32}<${Js[this.unit]}>`}};O9=Symbol.toStringTag;Gu[O9]=(e=>(e.unit=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Date\"))(Gu.prototype);var cc=class extends Ne{constructor(t,r){super(Dt.Time),this.unit=t,this.bitWidth=r}toString(){return`Time${this.bitWidth}<${pr[this.unit]}>`}get ArrayType(){switch(this.bitWidth){case 32:return Int32Array;case 64:return BigInt64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}};B9=Symbol.toStringTag;cc[B9]=(e=>(e.unit=null,e.bitWidth=null,e[Symbol.toStringTag]=\"Time\"))(cc.prototype);var Wu=class extends Ne{constructor(t,r){super(Dt.Timestamp),this.unit=t,this.timezone=r}toString(){return`Timestamp<${pr[this.unit]}${this.timezone?`, ${this.timezone}`:\"\"}>`}};F9=Symbol.toStringTag;Wu[F9]=(e=>(e.unit=null,e.timezone=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Timestamp\"))(Wu.prototype);var Hu=class extends Ne{constructor(t){super(Dt.Interval),this.unit=t}toString(){return`Interval<${Bo[this.unit]}>`}};z9=Symbol.toStringTag;Hu[z9]=(e=>(e.unit=null,e.ArrayType=Int32Array,e[Symbol.toStringTag]=\"Interval\"))(Hu.prototype);var qu=class extends Ne{constructor(t){super(Dt.Duration),this.unit=t}toString(){return`Duration<${pr[this.unit]}>`}};N9=Symbol.toStringTag;qu[N9]=(e=>(e.unit=null,e.ArrayType=BigInt64Array,e[Symbol.toStringTag]=\"Duration\"))(qu.prototype);var uc=class extends Ne{constructor(t){super(Dt.List),this.children=[t]}toString(){return`List<${this.valueType}>`}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}};U9=Symbol.toStringTag;uc[U9]=(e=>(e.children=null,e[Symbol.toStringTag]=\"List\"))(uc.prototype);var fn=class extends Ne{constructor(t){super(Dt.Struct),this.children=t}toString(){return`Struct<{${this.children.map(t=>`${t.name}:${t.type}`).join(\", \")}}>`}};V9=Symbol.toStringTag;fn[V9]=(e=>(e.children=null,e[Symbol.toStringTag]=\"Struct\"))(fn.prototype);var hc=class extends Ne{constructor(t,r,i){super(Dt.Union),this.mode=t,this.children=i,this.typeIds=r=Int32Array.from(r),this.typeIdToChildIndex=r.reduce((s,n,o)=>(s[n]=o)&&s||s,Object.create(null))}toString(){return`${this[Symbol.toStringTag]}<${this.children.map(t=>`${t.type}`).join(\" | \")}>`}};j9=Symbol.toStringTag;hc[j9]=(e=>(e.mode=null,e.typeIds=null,e.children=null,e.typeIdToChildIndex=null,e.ArrayType=Int8Array,e[Symbol.toStringTag]=\"Union\"))(hc.prototype);var Zu=class extends Ne{constructor(t){super(Dt.FixedSizeBinary),this.byteWidth=t}toString(){return`FixedSizeBinary[${this.byteWidth}]`}};G9=Symbol.toStringTag;Zu[G9]=(e=>(e.byteWidth=null,e.ArrayType=Uint8Array,e[Symbol.toStringTag]=\"FixedSizeBinary\"))(Zu.prototype);var Ll=class extends Ne{constructor(t,r){super(Dt.FixedSizeList),this.listSize=t,this.children=[r]}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}toString(){return`FixedSizeList[${this.listSize}]<${this.valueType}>`}};W9=Symbol.toStringTag;Ll[W9]=(e=>(e.children=null,e.listSize=null,e[Symbol.toStringTag]=\"FixedSizeList\"))(Ll.prototype);var fc=class extends Ne{constructor(t,r=!1){var i,s,n;if(super(Dt.Map),this.children=[t],this.keysSorted=r,t&&(t.name=\"entries\",!((i=t?.type)===null||i===void 0)&&i.children)){let o=(s=t?.type)===null||s===void 0?void 0:s.children[0];o&&(o.name=\"key\");let c=(n=t?.type)===null||n===void 0?void 0:n.children[1];c&&(c.name=\"value\")}}get keyType(){return this.children[0].type.children[0].type}get valueType(){return this.children[0].type.children[1].type}get childType(){return this.children[0].type}toString(){return`Map<{${this.children[0].type.children.map(t=>`${t.name}:${t.type}`).join(\", \")}}>`}};H9=Symbol.toStringTag;fc[H9]=(e=>(e.children=null,e.keysSorted=null,e[Symbol.toStringTag]=\"Map_\"))(fc.prototype);var Fut=(e=>()=>++e)(-1),dc=class extends Ne{constructor(t,r,i,s){super(Dt.Dictionary),this.indices=r,this.dictionary=t,this.isOrdered=s||!1,this.id=i==null?Fut():ms(i)}get children(){return this.dictionary.children}get valueType(){return this.dictionary}get ArrayType(){return this.dictionary.ArrayType}toString(){return`Dictionary<${this.indices}, ${this.dictionary}>`}};q9=Symbol.toStringTag;dc[q9]=(e=>(e.id=null,e.indices=null,e.isOrdered=null,e.dictionary=null,e[Symbol.toStringTag]=\"Dictionary\"))(dc.prototype);function iu(e){let t=e;switch(e.typeId){case Dt.Decimal:return e.bitWidth/32;case Dt.Timestamp:return 2;case Dt.Date:return 1+t.unit;case Dt.Interval:return 1+t.unit;case Dt.FixedSizeList:return t.listSize;case Dt.FixedSizeBinary:return t.byteWidth;default:return 1}}var Mr=class{visitMany(t,...r){return t.map((i,s)=>this.visit(i,...r.map(n=>n[s])))}visit(...t){return this.getVisitFn(t[0],!1).apply(this,t)}getVisitFn(t,r=!0){return zut(this,t,r)}getVisitFnByTypeId(t,r=!0){return lv(this,t,r)}visitNull(t,...r){return null}visitBool(t,...r){return null}visitInt(t,...r){return null}visitFloat(t,...r){return null}visitUtf8(t,...r){return null}visitLargeUtf8(t,...r){return null}visitBinary(t,...r){return null}visitLargeBinary(t,...r){return null}visitFixedSizeBinary(t,...r){return null}visitDate(t,...r){return null}visitTimestamp(t,...r){return null}visitTime(t,...r){return null}visitDecimal(t,...r){return null}visitList(t,...r){return null}visitStruct(t,...r){return null}visitUnion(t,...r){return null}visitDictionary(t,...r){return null}visitInterval(t,...r){return null}visitDuration(t,...r){return null}visitFixedSizeList(t,...r){return null}visitMap(t,...r){return null}};function zut(e,t,r=!0){return typeof t==\"number\"?lv(e,t,r):typeof t==\"string\"&&t in Dt?lv(e,Dt[t],r):t&&t instanceof Ne?lv(e,Z9(t),r):t?.type&&t.type instanceof Ne?lv(e,Z9(t.type),r):lv(e,Dt.NONE,r)}function lv(e,t,r=!0){let i=null;switch(t){case Dt.Null:i=e.visitNull;break;case Dt.Bool:i=e.visitBool;break;case Dt.Int:i=e.visitInt;break;case Dt.Int8:i=e.visitInt8||e.visitInt;break;case Dt.Int16:i=e.visitInt16||e.visitInt;break;case Dt.Int32:i=e.visitInt32||e.visitInt;break;case Dt.Int64:i=e.visitInt64||e.visitInt;break;case Dt.Uint8:i=e.visitUint8||e.visitInt;break;case Dt.Uint16:i=e.visitUint16||e.visitInt;break;case Dt.Uint32:i=e.visitUint32||e.visitInt;break;case Dt.Uint64:i=e.visitUint64||e.visitInt;break;case Dt.Float:i=e.visitFloat;break;case Dt.Float16:i=e.visitFloat16||e.visitFloat;break;case Dt.Float32:i=e.visitFloat32||e.visitFloat;break;case Dt.Float64:i=e.visitFloat64||e.visitFloat;break;case Dt.Utf8:i=e.visitUtf8;break;case Dt.LargeUtf8:i=e.visitLargeUtf8;break;case Dt.Binary:i=e.visitBinary;break;case Dt.LargeBinary:i=e.visitLargeBinary;break;case Dt.FixedSizeBinary:i=e.visitFixedSizeBinary;break;case Dt.Date:i=e.visitDate;break;case Dt.DateDay:i=e.visitDateDay||e.visitDate;break;case Dt.DateMillisecond:i=e.visitDateMillisecond||e.visitDate;break;case Dt.Timestamp:i=e.visitTimestamp;break;case Dt.TimestampSecond:i=e.visitTimestampSecond||e.visitTimestamp;break;case Dt.TimestampMillisecond:i=e.visitTimestampMillisecond||e.visitTimestamp;break;case Dt.TimestampMicrosecond:i=e.visitTimestampMicrosecond||e.visitTimestamp;break;case Dt.TimestampNanosecond:i=e.visitTimestampNanosecond||e.visitTimestamp;break;case Dt.Time:i=e.visitTime;break;case Dt.TimeSecond:i=e.visitTimeSecond||e.visitTime;break;case Dt.TimeMillisecond:i=e.visitTimeMillisecond||e.visitTime;break;case Dt.TimeMicrosecond:i=e.visitTimeMicrosecond||e.visitTime;break;case Dt.TimeNanosecond:i=e.visitTimeNanosecond||e.visitTime;break;case Dt.Decimal:i=e.visitDecimal;break;case Dt.List:i=e.visitList;break;case Dt.Struct:i=e.visitStruct;break;case Dt.Union:i=e.visitUnion;break;case Dt.DenseUnion:i=e.visitDenseUnion||e.visitUnion;break;case Dt.SparseUnion:i=e.visitSparseUnion||e.visitUnion;break;case Dt.Dictionary:i=e.visitDictionary;break;case Dt.Interval:i=e.visitInterval;break;case Dt.IntervalDayTime:i=e.visitIntervalDayTime||e.visitInterval;break;case Dt.IntervalYearMonth:i=e.visitIntervalYearMonth||e.visitInterval;break;case Dt.Duration:i=e.visitDuration;break;case Dt.DurationSecond:i=e.visitDurationSecond||e.visitDuration;break;case Dt.DurationMillisecond:i=e.visitDurationMillisecond||e.visitDuration;break;case Dt.DurationMicrosecond:i=e.visitDurationMicrosecond||e.visitDuration;break;case Dt.DurationNanosecond:i=e.visitDurationNanosecond||e.visitDuration;break;case Dt.FixedSizeList:i=e.visitFixedSizeList;break;case Dt.Map:i=e.visitMap;break}if(typeof i==\"function\")return i;if(!r)return()=>null;throw new Error(`Unrecognized type '${Dt[t]}'`)}function Z9(e){switch(e.typeId){case Dt.Null:return Dt.Null;case Dt.Int:{let{bitWidth:t,isSigned:r}=e;switch(t){case 8:return r?Dt.Int8:Dt.Uint8;case 16:return r?Dt.Int16:Dt.Uint16;case 32:return r?Dt.Int32:Dt.Uint32;case 64:return r?Dt.Int64:Dt.Uint64}return Dt.Int}case Dt.Float:switch(e.precision){case Yi.HALF:return Dt.Float16;case Yi.SINGLE:return Dt.Float32;case Yi.DOUBLE:return Dt.Float64}return Dt.Float;case Dt.Binary:return Dt.Binary;case Dt.LargeBinary:return Dt.LargeBinary;case Dt.Utf8:return Dt.Utf8;case Dt.LargeUtf8:return Dt.LargeUtf8;case Dt.Bool:return Dt.Bool;case Dt.Decimal:return Dt.Decimal;case Dt.Time:switch(e.unit){case pr.SECOND:return Dt.TimeSecond;case pr.MILLISECOND:return Dt.TimeMillisecond;case pr.MICROSECOND:return Dt.TimeMicrosecond;case pr.NANOSECOND:return Dt.TimeNanosecond}return Dt.Time;case Dt.Timestamp:switch(e.unit){case pr.SECOND:return Dt.TimestampSecond;case pr.MILLISECOND:return Dt.TimestampMillisecond;case pr.MICROSECOND:return Dt.TimestampMicrosecond;case pr.NANOSECOND:return Dt.TimestampNanosecond}return Dt.Timestamp;case Dt.Date:switch(e.unit){case Js.DAY:return Dt.DateDay;case Js.MILLISECOND:return Dt.DateMillisecond}return Dt.Date;case Dt.Interval:switch(e.unit){case Bo.DAY_TIME:return Dt.IntervalDayTime;case Bo.YEAR_MONTH:return Dt.IntervalYearMonth}return Dt.Interval;case Dt.Duration:switch(e.unit){case pr.SECOND:return Dt.DurationSecond;case pr.MILLISECOND:return Dt.DurationMillisecond;case pr.MICROSECOND:return Dt.DurationMicrosecond;case pr.NANOSECOND:return Dt.DurationNanosecond}return Dt.Duration;case Dt.Map:return Dt.Map;case Dt.List:return Dt.List;case Dt.Struct:return Dt.Struct;case Dt.Union:switch(e.mode){case Mn.Dense:return Dt.DenseUnion;case Mn.Sparse:return Dt.SparseUnion}return Dt.Union;case Dt.FixedSizeBinary:return Dt.FixedSizeBinary;case Dt.FixedSizeList:return Dt.FixedSizeList;case Dt.Dictionary:return Dt.Dictionary}throw new Error(`Unrecognized type '${Dt[e.typeId]}'`)}Mr.prototype.visitInt8=null;Mr.prototype.visitInt16=null;Mr.prototype.visitInt32=null;Mr.prototype.visitInt64=null;Mr.prototype.visitUint8=null;Mr.prototype.visitUint16=null;Mr.prototype.visitUint32=null;Mr.prototype.visitUint64=null;Mr.prototype.visitFloat16=null;Mr.prototype.visitFloat32=null;Mr.prototype.visitFloat64=null;Mr.prototype.visitDateDay=null;Mr.prototype.visitDateMillisecond=null;Mr.prototype.visitTimestampSecond=null;Mr.prototype.visitTimestampMillisecond=null;Mr.prototype.visitTimestampMicrosecond=null;Mr.prototype.visitTimestampNanosecond=null;Mr.prototype.visitTimeSecond=null;Mr.prototype.visitTimeMillisecond=null;Mr.prototype.visitTimeMicrosecond=null;Mr.prototype.visitTimeNanosecond=null;Mr.prototype.visitDenseUnion=null;Mr.prototype.visitSparseUnion=null;Mr.prototype.visitIntervalDayTime=null;Mr.prototype.visitIntervalYearMonth=null;Mr.prototype.visitDuration=null;Mr.prototype.visitDurationSecond=null;Mr.prototype.visitDurationMillisecond=null;Mr.prototype.visitDurationMicrosecond=null;Mr.prototype.visitDurationNanosecond=null;var rO={};mA(rO,{float64ToUint16:()=>Gw,uint16ToFloat64:()=>CP});var Y9=new Float64Array(1),cv=new Uint32Array(Y9.buffer);function CP(e){let t=(e&31744)>>10,r=(e&1023)/1024,i=Math.pow(-1,(e&32768)>>15);switch(t){case 31:return i*(r?Number.NaN:1/0);case 0:return i*(r?6103515625e-14*r:0)}return i*Math.pow(2,t-15)*(1+r)}function Gw(e){if(e!==e)return 32256;Y9[0]=e;let t=(cv[1]&2147483648)>>16&65535,r=cv[1]&2146435072,i=0;return r>=1089470464?cv[0]>0?r=31744:(r=(r&2080374784)>>16,i=(cv[1]&1048575)>>10):r<=1056964608?(i=1048576+(cv[1]&1048575),i=1048576+(i<<(r>>20)-998)>>21,r=0):(r=r-1056964608>>10,i=(cv[1]&1048575)+512>>10),t|r|i&65535}var kr=class extends Mr{};function Wr(e){return(t,r,i)=>{if(t.setValid(r,i!=null))return e(t,r,i)}}var Nut=(e,t,r)=>{e[t]=Math.trunc(r/864e5)},iO=(e,t,r)=>{e[t]=Math.trunc(r%4294967296),e[t+1]=Math.trunc(r/4294967296)},Uut=(e,t,r)=>{e[t]=Math.trunc(r*1e3%4294967296),e[t+1]=Math.trunc(r*1e3/4294967296)},Vut=(e,t,r)=>{e[t]=Math.trunc(r*1e6%4294967296),e[t+1]=Math.trunc(r*1e6/4294967296)},Q9=(e,t,r,i)=>{if(r+1{let s=e+r;i?t[s>>3]|=1<>3]&=~(1<{e[t]=r},nO=({values:e},t,r)=>{e[t]=r},$9=({values:e},t,r)=>{e[t]=Gw(r)},Gut=(e,t,r)=>{switch(e.type.precision){case Yi.HALF:return $9(e,t,r);case Yi.SINGLE:case Yi.DOUBLE:return nO(e,t,r)}},LP=({values:e},t,r)=>{Nut(e,t,r.valueOf())},kP=({values:e},t,r)=>{iO(e,t*2,r.valueOf())},sO=({stride:e,values:t},r,i)=>{t.set(i.subarray(0,e),e*r)},X9=({values:e,valueOffsets:t},r,i)=>Q9(e,t,r,i),K9=({values:e,valueOffsets:t},r,i)=>Q9(e,t,r,Kf(i)),oO=(e,t,r)=>{e.type.unit===Js.DAY?LP(e,t,r):kP(e,t,r)},RP=({values:e},t,r)=>iO(e,t*2,r/1e3),DP=({values:e},t,r)=>iO(e,t*2,r),OP=({values:e},t,r)=>Uut(e,t*2,r),BP=({values:e},t,r)=>Vut(e,t*2,r),aO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return RP(e,t,r);case pr.MILLISECOND:return DP(e,t,r);case pr.MICROSECOND:return OP(e,t,r);case pr.NANOSECOND:return BP(e,t,r)}},FP=({values:e},t,r)=>{e[t]=r},zP=({values:e},t,r)=>{e[t]=r},NP=({values:e},t,r)=>{e[t]=r},UP=({values:e},t,r)=>{e[t]=r},lO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return FP(e,t,r);case pr.MILLISECOND:return zP(e,t,r);case pr.MICROSECOND:return NP(e,t,r);case pr.NANOSECOND:return UP(e,t,r)}},cO=({values:e,stride:t},r,i)=>{e.set(i.subarray(0,t),t*r)},Wut=(e,t,r)=>{let i=e.children[0],s=e.valueOffsets,n=ba.getVisitFn(i);if(Array.isArray(r))for(let o=-1,c=s[t],f=s[t+1];c{let i=e.children[0],{valueOffsets:s}=e,n=ba.getVisitFn(i),{[t]:o,[t+1]:c}=s,f=r instanceof Map?r.entries():Object.entries(r);for(let _ of f)if(n(i,o,_),++o>=c)break},qut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t[n]),Zut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t.get(n)),Yut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t.get(s.name)),Qut=(e,t)=>(r,i,s,n)=>i&&r(i,e,t[s.name]),$ut=(e,t,r)=>{let i=e.type.children.map(n=>ba.getVisitFn(n.type)),s=r instanceof Map?Yut(t,r):r instanceof wr?Zut(t,r):Array.isArray(r)?qut(t,r):Qut(t,r);e.type.children.forEach((n,o)=>s(i[o],e.children[o],n,o))},Xut=(e,t,r)=>{e.type.mode===Mn.Dense?J9(e,t,r):tW(e,t,r)},J9=(e,t,r)=>{let i=e.type.typeIdToChildIndex[e.typeIds[t]],s=e.children[i];ba.visit(s,e.valueOffsets[t],r)},tW=(e,t,r)=>{let i=e.type.typeIdToChildIndex[e.typeIds[t]],s=e.children[i];ba.visit(s,t,r)},Kut=(e,t,r)=>{var i;(i=e.dictionary)===null||i===void 0||i.set(e.values[t],r)},uO=(e,t,r)=>{e.type.unit===Bo.DAY_TIME?VP(e,t,r):jP(e,t,r)},VP=({values:e},t,r)=>{e.set(r.subarray(0,2),2*t)},jP=({values:e},t,r)=>{e[t]=r[0]*12+r[1]%12},GP=({values:e},t,r)=>{e[t]=r},WP=({values:e},t,r)=>{e[t]=r},HP=({values:e},t,r)=>{e[t]=r},qP=({values:e},t,r)=>{e[t]=r},hO=(e,t,r)=>{switch(e.type.unit){case pr.SECOND:return GP(e,t,r);case pr.MILLISECOND:return WP(e,t,r);case pr.MICROSECOND:return HP(e,t,r);case pr.NANOSECOND:return qP(e,t,r)}},Jut=(e,t,r)=>{let{stride:i}=e,s=e.children[0],n=ba.getVisitFn(s);if(Array.isArray(r))for(let o=-1,c=t*i;++o`${Jh(t)}: ${Jh(r)}`).join(\", \")}}`}[Symbol.for(\"nodejs.util.inspect.custom\")](){return this.toString()}[Symbol.iterator](){return new fO(this[rf],this[uv])}},fO=class{constructor(t,r){this.childIndex=0,this.children=t.children,this.rowIndex=r,this.childFields=t.type.children,this.numChildren=this.childFields.length}[Symbol.iterator](){return this}next(){let t=this.childIndex;return tr.name)}has(t,r){return t[rf].type.children.findIndex(i=>i.name===r)!==-1}getOwnPropertyDescriptor(t,r){if(t[rf].type.children.findIndex(i=>i.name===r)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(t,r){if(Reflect.has(t,r))return t[r];let i=t[rf].type.children.findIndex(s=>s.name===r);if(i!==-1){let s=mo.visit(t[rf].children[i],t[uv]);return Reflect.set(t,r,s),s}}set(t,r,i){let s=t[rf].type.children.findIndex(n=>n.name===r);return s!==-1?(ba.visit(t[rf].children[s],t[uv],i),Reflect.set(t,r,i)):Reflect.has(t,r)||typeof r==\"symbol\"?Reflect.set(t,r,i):!1}};var Er=class extends Mr{};function zr(e){return(t,r)=>t.getValid(r)?e(t,r):null}var tht=(e,t)=>864e5*e[t],pO=(e,t)=>4294967296*e[t+1]+(e[t]>>>0),eht=(e,t)=>4294967296*(e[t+1]/1e3)+(e[t]>>>0)/1e3,rht=(e,t)=>4294967296*(e[t+1]/1e6)+(e[t]>>>0)/1e6,eW=e=>new Date(e),iht=(e,t)=>eW(tht(e,t)),nht=(e,t)=>eW(pO(e,t)),sht=(e,t)=>null,rW=(e,t,r)=>{if(r+1>=t.length)return null;let i=ms(t[r]),s=ms(t[r+1]);return e.subarray(i,s)},oht=({offset:e,values:t},r)=>{let i=e+r;return(t[i>>3]&1<iht(e,t),nW=({values:e},t)=>nht(e,t*2),fm=({stride:e,values:t},r)=>t[e*r],aht=({stride:e,values:t},r)=>CP(t[e*r]),sW=({values:e},t)=>e[t],lht=({stride:e,values:t},r)=>t.subarray(e*r,e*(r+1)),oW=({values:e,valueOffsets:t},r)=>rW(e,t,r),aW=({values:e,valueOffsets:t},r)=>{let i=rW(e,t,r);return i!==null?gw(i):null},cht=({values:e},t)=>e[t],uht=({type:e,values:t},r)=>e.precision!==Yi.HALF?t[r]:CP(t[r]),hht=(e,t)=>e.type.unit===Js.DAY?iW(e,t):nW(e,t),lW=({values:e},t)=>1e3*pO(e,t*2),cW=({values:e},t)=>pO(e,t*2),uW=({values:e},t)=>eht(e,t*2),hW=({values:e},t)=>rht(e,t*2),fht=(e,t)=>{switch(e.type.unit){case pr.SECOND:return lW(e,t);case pr.MILLISECOND:return cW(e,t);case pr.MICROSECOND:return uW(e,t);case pr.NANOSECOND:return hW(e,t)}},fW=({values:e},t)=>e[t],dW=({values:e},t)=>e[t],pW=({values:e},t)=>e[t],AW=({values:e},t)=>e[t],dht=(e,t)=>{switch(e.type.unit){case pr.SECOND:return fW(e,t);case pr.MILLISECOND:return dW(e,t);case pr.MICROSECOND:return pW(e,t);case pr.NANOSECOND:return AW(e,t)}},pht=({values:e,stride:t},r)=>Rw.decimal(e.subarray(t*r,t*(r+1))),Aht=(e,t)=>{let{valueOffsets:r,stride:i,children:s}=e,{[t*i]:n,[t*i+1]:o}=r,f=s[0].slice(n,o-n);return new wr([f])},mht=(e,t)=>{let{valueOffsets:r,children:i}=e,{[t]:s,[t+1]:n}=r,o=i[0];return new sd(o.slice(s,n-s))},ght=(e,t)=>new hm(e,t),_ht=(e,t)=>e.type.mode===Mn.Dense?mW(e,t):gW(e,t),mW=(e,t)=>{let r=e.type.typeIdToChildIndex[e.typeIds[t]],i=e.children[r];return mo.visit(i,e.valueOffsets[t])},gW=(e,t)=>{let r=e.type.typeIdToChildIndex[e.typeIds[t]],i=e.children[r];return mo.visit(i,t)},yht=(e,t)=>{var r;return(r=e.dictionary)===null||r===void 0?void 0:r.get(e.values[t])},vht=(e,t)=>e.type.unit===Bo.DAY_TIME?_W(e,t):yW(e,t),_W=({values:e},t)=>e.subarray(2*t,2*(t+1)),yW=({values:e},t)=>{let r=e[t],i=new Int32Array(2);return i[0]=Math.trunc(r/12),i[1]=Math.trunc(r%12),i},vW=({values:e},t)=>e[t],xW=({values:e},t)=>e[t],bW=({values:e},t)=>e[t],wW=({values:e},t)=>e[t],xht=(e,t)=>{switch(e.type.unit){case pr.SECOND:return vW(e,t);case pr.MILLISECOND:return xW(e,t);case pr.MICROSECOND:return bW(e,t);case pr.NANOSECOND:return wW(e,t)}},bht=(e,t)=>{let{stride:r,children:i}=e,n=i[0].slice(t*r,r);return new wr([n])};Er.prototype.visitNull=zr(sht);Er.prototype.visitBool=zr(oht);Er.prototype.visitInt=zr(cht);Er.prototype.visitInt8=zr(fm);Er.prototype.visitInt16=zr(fm);Er.prototype.visitInt32=zr(fm);Er.prototype.visitInt64=zr(sW);Er.prototype.visitUint8=zr(fm);Er.prototype.visitUint16=zr(fm);Er.prototype.visitUint32=zr(fm);Er.prototype.visitUint64=zr(sW);Er.prototype.visitFloat=zr(uht);Er.prototype.visitFloat16=zr(aht);Er.prototype.visitFloat32=zr(fm);Er.prototype.visitFloat64=zr(fm);Er.prototype.visitUtf8=zr(aW);Er.prototype.visitLargeUtf8=zr(aW);Er.prototype.visitBinary=zr(oW);Er.prototype.visitLargeBinary=zr(oW);Er.prototype.visitFixedSizeBinary=zr(lht);Er.prototype.visitDate=zr(hht);Er.prototype.visitDateDay=zr(iW);Er.prototype.visitDateMillisecond=zr(nW);Er.prototype.visitTimestamp=zr(fht);Er.prototype.visitTimestampSecond=zr(lW);Er.prototype.visitTimestampMillisecond=zr(cW);Er.prototype.visitTimestampMicrosecond=zr(uW);Er.prototype.visitTimestampNanosecond=zr(hW);Er.prototype.visitTime=zr(dht);Er.prototype.visitTimeSecond=zr(fW);Er.prototype.visitTimeMillisecond=zr(dW);Er.prototype.visitTimeMicrosecond=zr(pW);Er.prototype.visitTimeNanosecond=zr(AW);Er.prototype.visitDecimal=zr(pht);Er.prototype.visitList=zr(Aht);Er.prototype.visitStruct=zr(ght);Er.prototype.visitUnion=zr(_ht);Er.prototype.visitDenseUnion=zr(mW);Er.prototype.visitSparseUnion=zr(gW);Er.prototype.visitDictionary=zr(yht);Er.prototype.visitInterval=zr(vht);Er.prototype.visitIntervalDayTime=zr(_W);Er.prototype.visitIntervalYearMonth=zr(yW);Er.prototype.visitDuration=zr(xht);Er.prototype.visitDurationSecond=zr(vW);Er.prototype.visitDurationMillisecond=zr(xW);Er.prototype.visitDurationMicrosecond=zr(bW);Er.prototype.visitDurationNanosecond=zr(wW);Er.prototype.visitFixedSizeList=zr(bht);Er.prototype.visitMap=zr(mht);var mo=new Er;var Yu=Symbol.for(\"keys\"),hv=Symbol.for(\"vals\"),sd=class{constructor(t){return this[Yu]=new wr([t.children[0]]).memoize(),this[hv]=t.children[1],new Proxy(this,new mO)}[Symbol.iterator](){return new AO(this[Yu],this[hv])}get size(){return this[Yu].length}toArray(){return Object.values(this.toJSON())}toJSON(){let t=this[Yu],r=this[hv],i={};for(let s=-1,n=t.length;++s`${Jh(t)}: ${Jh(r)}`).join(\", \")}}`}[Symbol.for(\"nodejs.util.inspect.custom\")](){return this.toString()}},AO=class{constructor(t,r){this.keys=t,this.vals=r,this.keyIndex=0,this.numKeys=t.length}[Symbol.iterator](){return this}next(){let t=this.keyIndex;return t===this.numKeys?{done:!0,value:null}:(this.keyIndex++,{done:!1,value:[this.keys.get(t),mo.visit(this.vals,t)]})}},mO=class{isExtensible(){return!1}deleteProperty(){return!1}preventExtensions(){return!0}ownKeys(t){return t[Yu].toArray().map(String)}has(t,r){return t[Yu].includes(r)}getOwnPropertyDescriptor(t,r){if(t[Yu].indexOf(r)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(t,r){if(Reflect.has(t,r))return t[r];let i=t[Yu].indexOf(r);if(i!==-1){let s=mo.visit(Reflect.get(t,hv),i);return Reflect.set(t,r,s),s}}set(t,r,i){let s=t[Yu].indexOf(r);return s!==-1?(ba.visit(Reflect.get(t,hv),s,i),Reflect.set(t,r,i)):Reflect.has(t,r)?Reflect.set(t,r,i):!1}};Object.defineProperties(sd.prototype,{[Symbol.toStringTag]:{enumerable:!1,configurable:!1,value:\"Row\"},[Yu]:{writable:!0,enumerable:!1,configurable:!1,value:null},[hv]:{writable:!0,enumerable:!1,configurable:!1,value:null}});function wht(e,t,r){let i=e.length,s=t>-1?t:i+t%i;return r?r(e,s):s}var SW;function Ww(e,t,r,i){let{length:s=0}=e,n=typeof t!=\"number\"?0:t,o=typeof r!=\"number\"?s:r;return n<0&&(n=(n%s+s)%s),o<0&&(o=(o%s+s)%s),os&&(o=s),i?i(e,n,o):[n,o]}var TW=e=>e!==e;function dm(e){if(typeof e!==\"object\"||e===null)return TW(e)?TW:r=>r===e;if(e instanceof Date){let r=e.valueOf();return i=>i instanceof Date?i.valueOf()===r:!1}return ArrayBuffer.isView(e)?r=>r?QD(e,r):!1:e instanceof Map?Tht(e):Array.isArray(e)?Sht(e):e instanceof wr?Mht(e):Eht(e,!0)}function Sht(e){let t=[];for(let r=-1,i=e.length;++r!1;let i=[];for(let s=-1,n=r.length;++s{if(!r||typeof r!=\"object\")return!1;switch(r.constructor){case Array:return Pht(e,r);case Map:return MW(e,r,r.keys());case sd:case hm:case Object:case void 0:return MW(e,r,t||Object.keys(r))}return r instanceof wr?Iht(e,r):!1}}function Pht(e,t){let r=e.length;if(t.length!==r)return!1;for(let i=-1;++iyg,getBit:()=>EW,getBool:()=>QP,packBools:()=>xg,popcnt_array:()=>PW,popcnt_bit_range:()=>Hw,popcnt_uint32:()=>YP,setBool:()=>Cht,truncateBitmap:()=>vg});function QP(e,t,r,i){return(r&1<>i}function Cht(e,t,r){return r?!!(e[t>>3]|=1<>3]&=~(1<0||r.byteLength>3):xg(new yg(r,e,t,null,QP)).subarray(0,i)),s}return r}function xg(e){let t=[],r=0,i=0,s=0;for(let o of e)o&&(s|=1<0)&&(t[r++]=s);let n=new Uint8Array(t.length+7&-8);return n.set(t),n}var yg=class{constructor(t,r,i,s,n){this.bytes=t,this.length=i,this.context=s,this.get=n,this.bit=r%8,this.byteIndex=r>>3,this.byte=t[this.byteIndex++],this.index=0}next(){return this.index>3<<3,s=t+(t%8===0?0:8-t%8);return Hw(e,t,s)+Hw(e,i,r)+PW(e,s>>3,i-s>>3)}function PW(e,t,r){let i=0,s=Math.trunc(t),n=new DataView(e.buffer,e.byteOffset,e.byteLength),o=r===void 0?e.byteLength:s+r;for(;o-s>=4;)i+=YP(n.getUint32(s)),s+=4;for(;o-s>=2;)i+=YP(n.getUint16(s)),s+=2;for(;o-s>=1;)i+=YP(n.getUint8(s)),s+=1;return i}function YP(e){let t=Math.trunc(e);return t=t-(t>>>1&1431655765),t=(t&858993459)+(t>>>2&858993459),(t+(t>>>4)&252645135)*16843009>>>24}var Lht=-1,Oi=class e{get typeId(){return this.type.typeId}get ArrayType(){return this.type.ArrayType}get buffers(){return[this.valueOffsets,this.values,this.nullBitmap,this.typeIds]}get nullable(){if(this._nullCount!==0){let{type:t}=this;return Ne.isSparseUnion(t)?this.children.some(r=>r.nullable):Ne.isDenseUnion(t)?this.children.some(r=>r.nullable):this.nullBitmap&&this.nullBitmap.byteLength>0}return!0}get byteLength(){let t=0,{valueOffsets:r,values:i,nullBitmap:s,typeIds:n}=this;return r&&(t+=r.byteLength),i&&(t+=i.byteLength),s&&(t+=s.byteLength),n&&(t+=n.byteLength),this.children.reduce((o,c)=>o+c.byteLength,t)}get nullCount(){if(Ne.isUnion(this.type))return this.children.reduce((i,s)=>i+s.nullCount,0);let t=this._nullCount,r;return t<=Lht&&(r=this.nullBitmap)&&(this._nullCount=t=this.length-Hw(r,this.offset,this.offset+this.length)),t}constructor(t,r,i,s,n,o=[],c){this.type=t,this.children=o,this.dictionary=c,this.offset=Math.floor(Math.max(r||0,0)),this.length=Math.floor(Math.max(i||0,0)),this._nullCount=Math.floor(Math.max(s||0,-1));let f;n instanceof e?(this.stride=n.stride,this.values=n.values,this.typeIds=n.typeIds,this.nullBitmap=n.nullBitmap,this.valueOffsets=n.valueOffsets):(this.stride=iu(t),n&&((f=n[0])&&(this.valueOffsets=f),(f=n[1])&&(this.values=f),(f=n[2])&&(this.nullBitmap=f),(f=n[3])&&(this.typeIds=f)))}getValid(t){let{type:r}=this;if(Ne.isUnion(r)){let i=r,s=this.children[i.typeIdToChildIndex[this.typeIds[t]]],n=i.mode===Mn.Dense?this.valueOffsets[t]:t;return s.getValid(n)}if(this.nullable&&this.nullCount>0){let i=this.offset+t;return(this.nullBitmap[i>>3]&1<>3;(!n||n.byteLength<=w)&&(n=new Uint8Array((o+c+63&-64)>>3).fill(255),this.nullCount>0&&n.set(vg(o,c,this.nullBitmap),0),Object.assign(this,{nullBitmap:n,_nullCount:-1}));let I=n[w];i=(I&_)!==0,r?n[w]=I|_:n[w]=I&~_}return i!==!!r&&(this._nullCount=this.nullCount+(r?-1:1)),r}clone(t=this.type,r=this.offset,i=this.length,s=this._nullCount,n=this,o=this.children){return new e(t,r,i,s,n,o,this.dictionary)}slice(t,r){let{stride:i,typeId:s,children:n}=this,o=+(this._nullCount===0)-1,c=s===16?i:1,f=this._sliceBuffers(t,r,i,s);return this.clone(this.type,this.offset+t,r,o,f,n.length===0||this.valueOffsets?n:this._sliceChildren(n,c*t,c*r))}_changeLengthAndBackfillNullBitmap(t){if(this.typeId===Dt.Null)return this.clone(this.type,0,t,0);let{length:r,nullCount:i}=this,s=new Uint8Array((t+63&-64)>>3).fill(255,0,r>>3);s[r>>3]=(1<0&&s.set(vg(this.offset,r,this.nullBitmap),0);let n=this.buffers;return n[Li.VALIDITY]=s,this.clone(this.type,0,t,i+(t-r),n)}_sliceBuffers(t,r,i,s){let n,{buffers:o}=this;return(n=o[Li.TYPE])&&(o[Li.TYPE]=n.subarray(t,t+r)),(n=o[Li.OFFSET])&&(o[Li.OFFSET]=n.subarray(t,t+r+1))||(n=o[Li.DATA])&&(o[Li.DATA]=s===6?n:n.subarray(i*t,i*(t+r))),o}_sliceChildren(t,r,i){return t.map(s=>s.slice(r,i))}};Oi.prototype.children=Object.freeze([]);var yO=class e extends Mr{visit(t){return this.getVisitFn(t.type).call(this,t)}visitNull(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"length\"]:s=0}=t;return new Oi(r,i,s,s)}visitBool(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length>>3,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitInt(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitFloat(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitUtf8(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=gg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[o,s,n])}visitLargeUtf8(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=wP(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[o,s,n])}visitBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=gg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[o,s,n])}visitLargeBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.data),n=Rr(t.nullBitmap),o=wP(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[o,s,n])}visitFixedSizeBinary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitDate(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitTimestamp(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitTime(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitDecimal(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitList(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s}=t,n=Rr(t.nullBitmap),o=gg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[o,void 0,n],[s])}visitStruct(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"children\"]:s=[]}=t,n=Rr(t.nullBitmap),{length:o=s.reduce((f,{length:_})=>Math.max(f,_),0),nullCount:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,void 0,n],s)}visitUnion(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"children\"]:s=[]}=t,n=Ai(r.ArrayType,t.typeIds),{[\"length\"]:o=n.length,[\"nullCount\"]:c=-1}=t;if(Ne.isSparseUnion(r))return new Oi(r,i,o,c,[void 0,void 0,void 0,n],s);let f=gg(t.valueOffsets);return new Oi(r,i,o,c,[f,void 0,void 0,n],s)}visitDictionary(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.indices.ArrayType,t.data),{[\"dictionary\"]:o=new wr([new e().visit({type:r.dictionary})])}=t,{[\"length\"]:c=n.length,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[void 0,n,s],[],o)}visitInterval(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitDuration(t){let{[\"type\"]:r,[\"offset\"]:i=0}=t,s=Rr(t.nullBitmap),n=Ai(r.ArrayType,t.data),{[\"length\"]:o=n.length,[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,n,s])}visitFixedSizeList(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s=new e().visit({type:r.valueType})}=t,n=Rr(t.nullBitmap),{[\"length\"]:o=s.length/iu(r),[\"nullCount\"]:c=t.nullBitmap?-1:0}=t;return new Oi(r,i,o,c,[void 0,void 0,n],[s])}visitMap(t){let{[\"type\"]:r,[\"offset\"]:i=0,[\"child\"]:s=new e().visit({type:r.childType})}=t,n=Rr(t.nullBitmap),o=gg(t.valueOffsets),{[\"length\"]:c=o.length-1,[\"nullCount\"]:f=t.nullBitmap?-1:0}=t;return new Oi(r,i,c,f,[o,void 0,n],[s])}},kht=new yO;function vr(e){return kht.visit(e)}var qw=class{constructor(t=0,r){this.numChunks=t,this.getChunkIterator=r,this.chunkIndex=0,this.chunkIterator=this.getChunkIterator(0)}next(){for(;this.chunkIndext.nullable)}function $P(e){return e.reduce((t,r)=>t+r.nullCount,0)}function XP(e){return e.reduce((t,r,i)=>(t[i+1]=t[i]+r.length,t),new Uint32Array(e.length+1))}function KP(e,t,r,i){let s=[];for(let n=-1,o=e.length;++n=i)break;if(r>=f+_)continue;if(f>=r&&f+_<=i){s.push(c);continue}let w=Math.max(0,r-f),I=Math.min(i-f,_);s.push(c.slice(w,I-w))}return s.length===0&&s.push(e[0].slice(0,0)),s}function vO(e,t,r,i){let s=0,n=0,o=t.length-1;do{if(s>=o-1)return r0?0:-1}function Dht(e,t){let{nullBitmap:r}=e;if(!r||e.nullCount<=0)return-1;let i=0;for(let s of new yg(r,e.offset+(t||0),e.length,r,QP)){if(!s)return i;++i}return-1}function Qr(e,t,r){if(t===void 0)return-1;if(t===null)switch(e.typeId){case Dt.Union:break;case Dt.Dictionary:break;default:return Dht(e,r)}let i=mo.getVisitFn(e),s=dm(t);for(let n=(r||0)-1,o=e.length;++n{let s=e.data[i];return s.values.subarray(0,s.length)[Symbol.iterator]()});let r=0;return new qw(e.data.length,i=>{let n=e.data[i].length,o=e.slice(r,r+n);return r+=n,new xO(o)})}var xO=class{constructor(t){this.vector=t,this.index=0}next(){return this.indexc.data):t;if(n.length===0||n.some(c=>!(c instanceof Oi)))throw new TypeError(\"Vector constructor expects an Array of Data instances.\");let o=(r=n[0])===null||r===void 0?void 0:r.type;switch(n.length){case 0:this._offsets=[0];break;case 1:{let{get:c,set:f,indexOf:_}=kW[o.typeId],w=n[0];this.isValid=I=>Zw(w,I),this.get=I=>c(w,I),this.set=(I,R)=>f(w,I,R),this.indexOf=I=>_(w,I),this._offsets=[0,w.length];break}default:Object.setPrototypeOf(this,RW[o.typeId]),this._offsets=XP(n);break}this.data=n,this.type=o,this.stride=iu(o),this.numChildren=(s=(i=o.children)===null||i===void 0?void 0:i.length)!==null&&s!==void 0?s:0,this.length=this._offsets.at(-1)}get byteLength(){return this.data.reduce((t,r)=>t+r.byteLength,0)}get nullable(){return IW(this.data)}get nullCount(){return $P(this.data)}get ArrayType(){return this.type.ArrayType}get[Symbol.toStringTag](){return`${this.VectorName}<${this.type[Symbol.toStringTag]}>`}get VectorName(){return`${Dt[this.type.typeId]}Vector`}isValid(t){return!1}get(t){return null}set(t,r){}indexOf(t,r){return-1}includes(t,r){return this.indexOf(t,r)>-1}[Symbol.iterator](){return dv.visit(this)}concat(...t){return new e(this.data.concat(t.flatMap(r=>r.data).flat(Number.POSITIVE_INFINITY)))}slice(t,r){return new e(Ww(this,t,r,({data:i,_offsets:s},n,o)=>KP(i,s,n,o)))}toJSON(){return[...this]}toArray(){let{type:t,data:r,length:i,stride:s,ArrayType:n}=this;switch(t.typeId){case Dt.Int:case Dt.Float:case Dt.Decimal:case Dt.Time:case Dt.Timestamp:switch(r.length){case 0:return new n;case 1:return r[0].values.subarray(0,i*s);default:return r.reduce((o,{values:c,length:f})=>(o.array.set(c.subarray(0,f*s),o.offset),o.offset+=f*s,o),{array:new n(i*s),offset:0}).array}}return[...this]}toString(){return`[${[...this].join(\",\")}]`}getChild(t){var r;return this.getChildAt((r=this.type.children)===null||r===void 0?void 0:r.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&tr[t])):null}get isMemoized(){return Ne.isDictionary(this.type)?this.data[0].dictionary.isMemoized:!1}memoize(){if(Ne.isDictionary(this.type)){let t=new e3(this.data[0].dictionary),r=this.data.map(i=>{let s=i.clone();return s.dictionary=t,s});return new e(r)}return new e3(this)}unmemoize(){if(Ne.isDictionary(this.type)&&this.isMemoized){let t=this.data[0].dictionary.unmemoize(),r=this.data.map(i=>{let s=i.clone();return s.dictionary=t,s});return new e(r)}return this}};LW=Symbol.toStringTag;wr[LW]=(e=>{e.type=Ne.prototype,e.data=[],e.length=0,e.stride=1,e.numChildren=0,e._offsets=new Uint32Array([0]),e[Symbol.isConcatSpreadable]=!0;let t=Object.keys(Dt).map(r=>Dt[r]).filter(r=>typeof r==\"number\"&&r!==Dt.NONE);for(let r of t){let i=mo.getVisitFnByTypeId(r),s=ba.getVisitFnByTypeId(r),n=bg.getVisitFnByTypeId(r);kW[r]={get:i,set:s,indexOf:n},RW[r]=Object.create(e,{isValid:{value:fv(Zw)},get:{value:fv(mo.getVisitFnByTypeId(r))},set:{value:JP(ba.getVisitFnByTypeId(r))},indexOf:{value:t3(bg.getVisitFnByTypeId(r))}})}return\"Vector\"})(wr.prototype);var e3=class e extends wr{constructor(t){super(t.data);let r=this.get,i=this.set,s=this.slice,n=new Array(this.length);Object.defineProperty(this,\"get\",{value(o){let c=n[o];if(c!==void 0)return c;let f=r.call(this,o);return n[o]=f,f}}),Object.defineProperty(this,\"set\",{value(o,c){i.call(this,o,c),n[o]=c}}),Object.defineProperty(this,\"slice\",{value:(o,c)=>new e(s.call(this,o,c))}),Object.defineProperty(this,\"isMemoized\",{value:!0}),Object.defineProperty(this,\"unmemoize\",{value:()=>new wr(this.data)}),Object.defineProperty(this,\"memoize\",{value:()=>this})}};function DW(e){if(!e||e.length<=0)return function(s){return!0};let t=\"\",r=e.filter(i=>i===i);return r.length>0&&(t=`\n switch (x) {${r.map(i=>`\n case ${Oht(i)}:`).join(\"\")}\n return false;\n }`),e.length!==r.length&&(t=`if (x !== x) return false;\n${t}`),new Function(\"x\",`${t}\nreturn true;`)}function Oht(e){return typeof e!=\"bigint\"?Jh(e):`${Jh(e)}n`}function bO(e,t){let r=Math.ceil(e)*t-1;return(r-r%64+64||64)/t}function OW(e,t=0){return e.length>=t?e.subarray(0,t):yw(new e.constructor(t),e,0)}var nf=class{constructor(t,r=0,i=1){this.length=Math.ceil(r/i),this.buffer=new t(this.length),this.stride=i,this.BYTES_PER_ELEMENT=t.BYTES_PER_ELEMENT,this.ArrayType=t}get byteLength(){return Math.ceil(this.length*this.stride)*this.BYTES_PER_ELEMENT}get reservedLength(){return this.buffer.length/this.stride}get reservedByteLength(){return this.buffer.byteLength}set(t,r){return this}append(t){return this.set(this.length,t)}reserve(t){if(t>0){this.length+=t;let r=this.stride,i=this.length*r,s=this.buffer.length;i>=s&&this._resize(s===0?bO(i*1,this.BYTES_PER_ELEMENT):bO(i*2,this.BYTES_PER_ELEMENT))}return this}flush(t=this.length){t=bO(t*this.stride,this.BYTES_PER_ELEMENT);let r=OW(this.buffer,t);return this.clear(),r}clear(){return this.length=0,this.buffer=new this.ArrayType,this}_resize(t){return this.buffer=OW(this.buffer,t)}},gp=class extends nf{last(){return this.get(this.length-1)}get(t){return this.buffer[t]}set(t,r){return this.reserve(t-this.length+1),this.buffer[t*this.stride]=r,this}},pv=class extends gp{constructor(){super(Uint8Array,0,1/8),this.numValid=0}get numInvalid(){return this.length-this.numValid}get(t){return this.buffer[t>>3]>>t%8&1}set(t,r){let{buffer:i}=this.reserve(t-this.length+1),s=t>>3,n=t%8,o=i[s]>>n&1;return r?o===0&&(i[s]|=1<=0&&s.fill(s[i],i,t),s[t]=s[t-1]+r,this}flush(t=this.length-1){return t>this.length&&this.set(t-1,this.BYTES_PER_ELEMENT>4?BigInt(0):0),super.flush(t+1)}};var $n=class{static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t){throw new Error('\"throughDOM\" not available in this environment')}constructor({type:t,nullValues:r}){this.length=0,this.finished=!1,this.type=t,this.children=[],this.nullValues=r,this.stride=iu(t),this._nulls=new pv,r&&r.length>0&&(this._isValid=DW(r))}toVector(){return new wr([this.flush()])}get ArrayType(){return this.type.ArrayType}get nullCount(){return this._nulls.numInvalid}get numChildren(){return this.children.length}get byteLength(){let t=0,{_offsets:r,_values:i,_nulls:s,_typeIds:n,children:o}=this;return r&&(t+=r.byteLength),i&&(t+=i.byteLength),s&&(t+=s.byteLength),n&&(t+=n.byteLength),o.reduce((c,f)=>c+f.byteLength,t)}get reservedLength(){return this._nulls.reservedLength}get reservedByteLength(){let t=0;return this._offsets&&(t+=this._offsets.reservedByteLength),this._values&&(t+=this._values.reservedByteLength),this._nulls&&(t+=this._nulls.reservedByteLength),this._typeIds&&(t+=this._typeIds.reservedByteLength),this.children.reduce((r,i)=>r+i.reservedByteLength,t)}get valueOffsets(){return this._offsets?this._offsets.buffer:null}get values(){return this._values?this._values.buffer:null}get nullBitmap(){return this._nulls?this._nulls.buffer:null}get typeIds(){return this._typeIds?this._typeIds.buffer:null}append(t){return this.set(this.length,t)}isValid(t){return this._isValid(t)}set(t,r){return this.setValid(t,this.isValid(r))&&this.setValue(t,r),this}setValue(t,r){this._setValue(this,t,r)}setValid(t,r){return this.length=this._nulls.set(t,+r).length,r}addChild(t,r=`${this.numChildren}`){throw new Error(`Cannot append children to non-nested type \"${this.type}\"`)}getChildAt(t){return this.children[t]||null}flush(){let t,r,i,s,{type:n,length:o,nullCount:c,_typeIds:f,_offsets:_,_values:w,_nulls:I}=this;(r=f?.flush(o))?s=_?.flush(o):(s=_?.flush(o))?t=w?.flush(_.last()):t=w?.flush(o),c>0&&(i=I?.flush(o));let R=this.children.map(N=>N.flush());return this.clear(),vr({type:n,length:o,nullCount:c,children:R,child:R[0],data:t,typeIds:r,nullBitmap:i,valueOffsets:s})}finish(){this.finished=!0;for(let t of this.children)t.finish();return this}clear(){var t,r,i,s;this.length=0,(t=this._nulls)===null||t===void 0||t.clear(),(r=this._values)===null||r===void 0||r.clear(),(i=this._offsets)===null||i===void 0||i.clear(),(s=this._typeIds)===null||s===void 0||s.clear();for(let n of this.children)n.clear();return this}};$n.prototype.length=1;$n.prototype.stride=1;$n.prototype.children=null;$n.prototype.finished=!1;$n.prototype.nullValues=null;$n.prototype._isValid=()=>!0;var go=class extends $n{constructor(t){super(t),this._values=new gp(this.ArrayType,0,this.stride)}setValue(t,r){let i=this._values;return i.reserve(t-i.length+1),super.setValue(t,r)}},pc=class extends $n{constructor(t){super(t),this._pendingLength=0,this._offsets=new Av(t.type)}setValue(t,r){let i=this._pending||(this._pending=new Map),s=i.get(t);s&&(this._pendingLength-=s.length),this._pendingLength+=r instanceof sd?r[Yu].length:r.length,i.set(t,r)}setValid(t,r){return super.setValid(t,r)?!0:((this._pending||(this._pending=new Map)).set(t,void 0),!1)}clear(){return this._pendingLength=0,this._pending=void 0,super.clear()}flush(){return this._flush(),super.flush()}finish(){return this._flush(),super.finish()}_flush(){let t=this._pending,r=this._pendingLength;return this._pendingLength=0,this._pending=void 0,t&&t.size>0&&this._flushPending(t,r),this}};var wg=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}offset(){return this.bb.readInt64(this.bb_pos)}metaDataLength(){return this.bb.readInt32(this.bb_pos+8)}bodyLength(){return this.bb.readInt64(this.bb_pos+16)}static sizeOf(){return 24}static createBlock(t,r,i,s){return t.prep(8,24),t.writeInt64(BigInt(s??0)),t.pad(4),t.writeInt32(i),t.writeInt64(BigInt(r??0)),t.offset()}};var nu=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsFooter(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsFooter(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):rn.V1}schema(t){let r=this.bb.__offset(this.bb_pos,6);return r?(t||new ac).__init(this.bb.__indirect(this.bb_pos+r),this.bb):null}dictionaries(t,r){let i=this.bb.__offset(this.bb_pos,8);return i?(r||new wg).__init(this.bb.__vector(this.bb_pos+i)+t*24,this.bb):null}dictionariesLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}recordBatches(t,r){let i=this.bb.__offset(this.bb_pos,10);return i?(r||new wg).__init(this.bb.__vector(this.bb_pos+i)+t*24,this.bb):null}recordBatchesLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,12);return i?(r||new Fo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startFooter(t){t.startObject(5)}static addVersion(t,r){t.addFieldInt16(0,r,rn.V1)}static addSchema(t,r){t.addFieldOffset(1,r,0)}static addDictionaries(t,r){t.addFieldOffset(2,r,0)}static startDictionariesVector(t,r){t.startVector(24,r,8)}static addRecordBatches(t,r){t.addFieldOffset(3,r,0)}static startRecordBatchesVector(t,r){t.startVector(24,r,8)}static addCustomMetadata(t,r){t.addFieldOffset(4,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endFooter(t){return t.endObject()}static finishFooterBuffer(t,r){t.finish(r)}static finishSizePrefixedFooterBuffer(t,r){t.finish(r,void 0,!0)}};var sn=class e{constructor(t=[],r,i,s=rn.V5){this.fields=t||[],this.metadata=r||new Map,i||(i=wO(t)),this.dictionaries=i,this.metadataVersion=s}get[Symbol.toStringTag](){return\"Schema\"}get names(){return this.fields.map(t=>t.name)}toString(){return`Schema<{ ${this.fields.map((t,r)=>`${r}: ${t}`).join(\", \")} }>`}select(t){let r=new Set(t),i=this.fields.filter(s=>r.has(s.name));return new e(i,this.metadata)}selectAt(t){let r=t.map(i=>this.fields[i]).filter(Boolean);return new e(r,this.metadata)}assign(...t){let r=t[0]instanceof e?t[0]:Array.isArray(t[0])?new e(t[0]):new e(t),i=[...this.fields],s=r3(r3(new Map,this.metadata),r.metadata),n=r.fields.filter(c=>{let f=i.findIndex(_=>_.name===c.name);return~f?(i[f]=c.clone({metadata:r3(r3(new Map,i[f].metadata),c.metadata)}))&&!1:!0}),o=wO(n,new Map);return new e([...i,...n],s,new Map([...this.dictionaries,...o]))}};sn.prototype.fields=null;sn.prototype.metadata=null;sn.prototype.dictionaries=null;var si=class e{static new(...t){let[r,i,s,n]=t;return t[0]&&typeof t[0]==\"object\"&&({name:r}=t[0],i===void 0&&(i=t[0].type),s===void 0&&(s=t[0].nullable),n===void 0&&(n=t[0].metadata)),new e(`${r}`,i,s,n)}constructor(t,r,i=!1,s){this.name=t,this.type=r,this.nullable=i,this.metadata=s||new Map}get typeId(){return this.type.typeId}get[Symbol.toStringTag](){return\"Field\"}toString(){return`${this.name}: ${this.type}`}clone(...t){let[r,i,s,n]=t;return!t[0]||typeof t[0]!=\"object\"?[r=this.name,i=this.type,s=this.nullable,n=this.metadata]=t:{name:r=this.name,type:i=this.type,nullable:s=this.nullable,metadata:n=this.metadata}=t[0],e.new(r,i,s,n)}};si.prototype.type=null;si.prototype.name=null;si.prototype.nullable=null;si.prototype.metadata=null;function r3(e,t){return new Map([...e||new Map,...t||new Map])}function wO(e,t=new Map){for(let r=-1,i=e.length;++r0&&wO(n.children,t)}return t}var Bht=_g,Fht=eu,_p=class{static decode(t){t=new Fht(Rr(t));let r=nu.getRootAsFooter(t),i=sn.decode(r.schema(),new Map,r.version());return new SO(i,r)}static encode(t){let r=new Bht,i=sn.encode(r,t.schema);nu.startRecordBatchesVector(r,t.numRecordBatches);for(let o of[...t.recordBatches()].slice().reverse())yp.encode(r,o);let s=r.endVector();nu.startDictionariesVector(r,t.numDictionaries);for(let o of[...t.dictionaryBatches()].slice().reverse())yp.encode(r,o);let n=r.endVector();return nu.startFooter(r),nu.addSchema(r,i),nu.addVersion(r,rn.V5),nu.addRecordBatches(r,s),nu.addDictionaries(r,n),nu.finishFooterBuffer(r,nu.endFooter(r)),r.asUint8Array()}get numRecordBatches(){return this._recordBatches.length}get numDictionaries(){return this._dictionaryBatches.length}constructor(t,r=rn.V5,i,s){this.schema=t,this.version=r,i&&(this._recordBatches=i),s&&(this._dictionaryBatches=s)}*recordBatches(){for(let t,r=-1,i=this.numRecordBatches;++r=0&&t=0&&t=0&&t=0&&tthis._closedPromiseResolve=t)}get closed(){return this._closedPromise}cancel(t){return sr(this,void 0,void 0,function*(){yield this.return(t)})}write(t){this._ensureOpen()&&(this.resolvers.length<=0?this._values.push(t):this.resolvers.shift().resolve({done:!1,value:t}))}abort(t){this._closedPromiseResolve&&(this.resolvers.length<=0?this._error={error:t}:this.resolvers.shift().reject({done:!0,value:t}))}close(){if(this._closedPromiseResolve){let{resolvers:t}=this;for(;t.length>0;)t.shift().resolve(Nn);this._closedPromiseResolve(),this._closedPromiseResolve=void 0}}[Symbol.asyncIterator](){return this}toDOMStream(t){return xa.toDOMStream(this._closedPromiseResolve||this._error?this:this._values,t)}toNodeStream(t){return xa.toNodeStream(this._closedPromiseResolve||this._error?this:this._values,t)}throw(t){return sr(this,void 0,void 0,function*(){return yield this.abort(t),Nn})}return(t){return sr(this,void 0,void 0,function*(){return yield this.close(),Nn})}read(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"read\")).value})}peek(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"peek\")).value})}next(...t){return this._values.length>0?Promise.resolve({done:!1,value:this._values.shift()}):this._error?Promise.reject({done:!0,value:this._error.error}):this._closedPromiseResolve?new Promise((r,i)=>{this.resolvers.push({resolve:r,reject:i})}):Promise.resolve(Nn)}_ensureOpen(){if(this._closedPromiseResolve)return!0;throw new Error(\"AsyncQueue is closed\")}};var od=class extends i3{write(t){if((t=Rr(t)).byteLength>0)return super.write(t)}toString(t=!1){return t?gw(this.toUint8Array(!0)):this.toUint8Array(!1).then(gw)}toUint8Array(t=!1){return t?tu(this._values)[0]:sr(this,void 0,void 0,function*(){var r,i,s,n;let o=[],c=0;try{for(var f=!0,_=Zh(this),w;w=yield _.next(),r=w.done,!r;f=!0){n=w.value,f=!1;let I=n;o.push(I),c+=I.byteLength}}catch(I){i={error:I}}finally{try{!f&&!r&&(s=_.return)&&(yield s.call(_))}finally{if(i)throw i.error}}return tu(o,c)[0]})}},ad=class{constructor(t){t&&(this.source=new TO(xa.fromIterable(t)))}[Symbol.iterator](){return this}next(t){return this.source.next(t)}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}peek(t){return this.source.peek(t)}read(t){return this.source.read(t)}},Qu=class e{constructor(t){t instanceof e?this.source=t.source:t instanceof od?this.source=new vp(xa.fromAsyncIterable(t)):bP(t)?this.source=new vp(xa.fromNodeStream(t)):_w(t)?this.source=new vp(xa.fromDOMStream(t)):vP(t)?this.source=new vp(xa.fromDOMStream(t.body)):Yh(t)?this.source=new vp(xa.fromIterable(t)):Jc(t)?this.source=new vp(xa.fromAsyncIterable(t)):zu(t)&&(this.source=new vp(xa.fromAsyncIterable(t)))}[Symbol.asyncIterator](){return this}next(t){return this.source.next(t)}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}get closed(){return this.source.closed}cancel(t){return this.source.cancel(t)}peek(t){return this.source.peek(t)}read(t){return this.source.read(t)}},TO=class{constructor(t){this.source=t}cancel(t){this.return(t)}peek(t){return this.next(t,\"peek\").value}read(t){return this.next(t,\"read\").value}next(t,r=\"read\"){return this.source.next({cmd:r,size:t})}throw(t){return Object.create(this.source.throw&&this.source.throw(t)||Nn)}return(t){return Object.create(this.source.return&&this.source.return(t)||Nn)}},vp=class{constructor(t){this.source=t,this._closedPromise=new Promise(r=>this._closedPromiseResolve=r)}cancel(t){return sr(this,void 0,void 0,function*(){yield this.return(t)})}get closed(){return this._closedPromise}read(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"read\")).value})}peek(t){return sr(this,void 0,void 0,function*(){return(yield this.next(t,\"peek\")).value})}next(t,r=\"read\"){return sr(this,void 0,void 0,function*(){return yield this.source.next({cmd:r,size:t})})}throw(t){return sr(this,void 0,void 0,function*(){let r=this.source.throw&&(yield this.source.throw(t))||Nn;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(r)})}return(t){return sr(this,void 0,void 0,function*(){let r=this.source.return&&(yield this.source.return(t))||Nn;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(r)})}};var Qw=class extends ad{constructor(t,r){super(),this.position=0,this.buffer=Rr(t),this.size=r===void 0?this.buffer.byteLength:r}readInt32(t){let{buffer:r,byteOffset:i}=this.readAt(t,4);return new DataView(r,i).getInt32(0,!0)}seek(t){return this.position=Math.min(t,this.size),t$w,Int128:()=>Xw,Int64:()=>xp,Uint64:()=>gs});function mv(e){return e<0&&(e=4294967295+e+1),`0x${e.toString(16)}`}var gv=8,MO=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8],$w=class{constructor(t){this.buffer=t}high(){return this.buffer[1]}low(){return this.buffer[0]}_times(t){let r=new Uint32Array([this.buffer[1]>>>16,this.buffer[1]&65535,this.buffer[0]>>>16,this.buffer[0]&65535]),i=new Uint32Array([t.buffer[1]>>>16,t.buffer[1]&65535,t.buffer[0]>>>16,t.buffer[0]&65535]),s=r[3]*i[3];this.buffer[0]=s&65535;let n=s>>>16;return s=r[2]*i[3],n+=s,s=r[3]*i[2]>>>0,n+=s,this.buffer[0]+=n<<16,this.buffer[1]=n>>>0>>16,this.buffer[1]+=r[1]*i[3]+r[2]*i[2]+r[3]*i[1],this.buffer[1]+=r[0]*i[3]+r[1]*i[2]+r[2]*i[1]+r[3]*i[0]<<16,this}_plus(t){let r=this.buffer[0]+t.buffer[0]>>>0;this.buffer[1]+=t.buffer[1],r>>0&&++this.buffer[1],this.buffer[0]=r}lessThan(t){return this.buffer[1]>>0,r[2]=this.buffer[2]+t.buffer[2]>>>0,r[1]=this.buffer[1]+t.buffer[1]>>>0,r[0]=this.buffer[0]+t.buffer[0]>>>0,r[0]>>0&&++r[1],r[1]>>0&&++r[2],r[2]>>0&&++r[3],this.buffer[3]=r[3],this.buffer[2]=r[2],this.buffer[1]=r[1],this.buffer[0]=r[0],this}hex(){return`${mv(this.buffer[3])} ${mv(this.buffer[2])} ${mv(this.buffer[1])} ${mv(this.buffer[0])}`}static multiply(t,r){return new e(new Uint32Array(t.buffer)).times(r)}static add(t,r){return new e(new Uint32Array(t.buffer)).plus(r)}static from(t,r=new Uint32Array(4)){return e.fromString(typeof t==\"string\"?t:t.toString(),r)}static fromNumber(t,r=new Uint32Array(4)){return e.fromString(t.toString(),r)}static fromString(t,r=new Uint32Array(4)){let i=t.startsWith(\"-\"),s=t.length,n=new e(r);for(let o=i?1:0;o0&&this.readData(t,i)||new Uint8Array(0)}readOffsets(t,r){return this.readData(t,r)}readTypeIds(t,r){return this.readData(t,r)}readData(t,{length:r,offset:i}=this.nextBufferRange()){return this.bytes.subarray(i,i+r)}readDictionary(t){return this.dictionaries.get(t.id)}},n3=class extends Kw{constructor(t,r,i,s,n){super(new Uint8Array(0),r,i,s,n),this.sources=t}readNullBitmap(t,r,{offset:i}=this.nextBufferRange()){return r<=0?new Uint8Array(0):xg(this.sources[i])}readOffsets(t,{offset:r}=this.nextBufferRange()){return Ai(Uint8Array,Ai(t.OffsetArrayType,this.sources[r]))}readTypeIds(t,{offset:r}=this.nextBufferRange()){return Ai(Uint8Array,Ai(t.ArrayType,this.sources[r]))}readData(t,{offset:r}=this.nextBufferRange()){let{sources:i}=this;return Ne.isTimestamp(t)?Ai(Uint8Array,xp.convertArray(i[r])):(Ne.isInt(t)||Ne.isTime(t))&&t.bitWidth===64||Ne.isDuration(t)?Ai(Uint8Array,xp.convertArray(i[r])):Ne.isDate(t)&&t.unit===Js.MILLISECOND?Ai(Uint8Array,xp.convertArray(i[r])):Ne.isDecimal(t)?Ai(Uint8Array,Xw.convertArray(i[r])):Ne.isBinary(t)||Ne.isLargeBinary(t)||Ne.isFixedSizeBinary(t)?zht(i[r]):Ne.isBool(t)?xg(i[r]):Ne.isUtf8(t)||Ne.isLargeUtf8(t)?Kf(i[r].join(\"\")):Ai(Uint8Array,Ai(t.ArrayType,i[r].map(s=>+s)))}};function zht(e){let t=e.join(\"\"),r=new Uint8Array(t.length/2);for(let i=0;i>1]=Number.parseInt(t.slice(i,i+2),16);return r}var Tg=class extends pc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Rr(r))}_flushPending(t,r){let i=this._offsets,s=this._values.reserve(r).buffer,n=0;for(let[o,c]of t)if(c===void 0)i.set(o,0);else{let f=c.length;s.set(c,n),i.set(o,f),n+=f}}};var Mg=class extends pc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Rr(r))}_flushPending(t,r){let i=this._offsets,s=this._values.reserve(r).buffer,n=0;for(let[o,c]of t)if(c===void 0)i.set(o,BigInt(0));else{let f=c.length;s.set(c,n),i.set(o,BigInt(f)),n+=f}}};var Am=class extends $n{constructor(t){super(t),this._values=new pv}setValue(t,r){this._values.set(t,+r)}};var mm=class extends go{};mm.prototype._setValue=oO;var _v=class extends mm{};_v.prototype._setValue=LP;var yv=class extends mm{};yv.prototype._setValue=kP;var vv=class extends go{};vv.prototype._setValue=cO;var Jw=class extends $n{constructor({type:t,nullValues:r,dictionaryHashFunction:i}){super({type:new dc(t.dictionary,t.indices,t.id,t.isOrdered)}),this._nulls=null,this._dictionaryOffset=0,this._keysToIndices=Object.create(null),this.indices=Eg({type:this.type.indices,nullValues:r}),this.dictionary=Eg({type:this.type.dictionary,nullValues:null}),typeof i==\"function\"&&(this.valueToKey=i)}get values(){return this.indices.values}get nullCount(){return this.indices.nullCount}get nullBitmap(){return this.indices.nullBitmap}get byteLength(){return this.indices.byteLength+this.dictionary.byteLength}get reservedLength(){return this.indices.reservedLength+this.dictionary.reservedLength}get reservedByteLength(){return this.indices.reservedByteLength+this.dictionary.reservedByteLength}isValid(t){return this.indices.isValid(t)}setValid(t,r){let i=this.indices;return r=i.setValid(t,r),this.length=i.length,r}setValue(t,r){let i=this._keysToIndices,s=this.valueToKey(r),n=i[s];return n===void 0&&(i[s]=n=this._dictionaryOffset+this.dictionary.append(r).length-1),this.indices.setValue(t,n)}flush(){let t=this.type,r=this._dictionary,i=this.dictionary.toVector(),s=this.indices.flush().clone(t);return s.dictionary=r?r.concat(i):i,this.finished||(this._dictionaryOffset+=i.length),this._dictionary=s.dictionary,this.clear(),s}finish(){return this.indices.finish(),this.dictionary.finish(),this._dictionaryOffset=0,this._keysToIndices=Object.create(null),super.finish()}clear(){return this.indices.clear(),this.dictionary.clear(),super.clear()}valueToKey(t){return typeof t==\"string\"?t:`${t}`}};var xv=class extends go{};xv.prototype._setValue=sO;var t2=class extends $n{setValue(t,r){let[i]=this.children,s=t*this.stride;for(let n=-1,o=r.length;++n0)throw new Error(\"FixedSizeListBuilder can only have one child.\");let i=this.children.push(t);return this.type=new Ll(this.type.listSize,new si(r,t.type,!0)),i}};var gm=class extends go{setValue(t,r){this._values.set(t,r)}},e2=class extends gm{setValue(t,r){super.setValue(t,Gw(r))}},r2=class extends gm{},i2=class extends gm{};var _m=class extends go{};_m.prototype._setValue=uO;var bv=class extends _m{};bv.prototype._setValue=VP;var wv=class extends _m{};wv.prototype._setValue=jP;var ld=class extends go{};ld.prototype._setValue=hO;var Sv=class extends ld{};Sv.prototype._setValue=GP;var Tv=class extends ld{};Tv.prototype._setValue=WP;var Mv=class extends ld{};Mv.prototype._setValue=HP;var Ev=class extends ld{};Ev.prototype._setValue=qP;var su=class extends go{setValue(t,r){this._values.set(t,r)}},n2=class extends su{},s2=class extends su{},o2=class extends su{},a2=class extends su{},l2=class extends su{},c2=class extends su{},u2=class extends su{},h2=class extends su{};var f2=class extends pc{constructor(t){super(t),this._offsets=new Av(t.type)}addChild(t,r=\"0\"){if(this.numChildren>0)throw new Error(\"ListBuilder can only have one child.\");return this.children[this.numChildren]=t,this.type=new uc(new si(r,t.type,!0)),this.numChildren-1}_flushPending(t){let r=this._offsets,[i]=this.children;for(let[s,n]of t)if(typeof n>\"u\")r.set(s,0);else{let o=n,c=o.length,f=r.set(s,c).buffer[s];for(let _=-1;++_0)throw new Error(\"ListBuilder can only have one child.\");return this.children[this.numChildren]=t,this.type=new fc(new si(r,t.type,!0),this.type.keysSorted),this.numChildren-1}_flushPending(t){let r=this._offsets,[i]=this.children;for(let[s,n]of t)if(n===void 0)r.set(s,0);else{let{[s]:o,[s+1]:c}=r.set(s,n.size).buffer;for(let f of n.entries())if(i.set(o,f),++o>=c)break}}};var p2=class extends $n{setValue(t,r){}setValid(t,r){return this.length=Math.max(t+1,this.length),r}};var A2=class extends $n{setValue(t,r){let{children:i,type:s}=this;switch(Array.isArray(r)||r.constructor){case!0:return s.children.forEach((n,o)=>i[o].set(t,r[o]));case Map:return s.children.forEach((n,o)=>i[o].set(t,r.get(n.name)));default:return s.children.forEach((n,o)=>i[o].set(t,r[n.name]))}}setValid(t,r){return super.setValid(t,r)||this.children.forEach(i=>i.setValid(t,r)),r}addChild(t,r=`${this.numChildren}`){let i=this.children.push(t);return this.type=new fn([...this.type.children,new si(r,t.type,!0)]),i}};var cd=class extends go{};cd.prototype._setValue=aO;var Pv=class extends cd{};Pv.prototype._setValue=RP;var Iv=class extends cd{};Iv.prototype._setValue=DP;var Cv=class extends cd{};Cv.prototype._setValue=OP;var Lv=class extends cd{};Lv.prototype._setValue=BP;var ud=class extends go{};ud.prototype._setValue=lO;var kv=class extends ud{};kv.prototype._setValue=FP;var Rv=class extends ud{};Rv.prototype._setValue=zP;var Dv=class extends ud{};Dv.prototype._setValue=NP;var Ov=class extends ud{};Ov.prototype._setValue=UP;var Pg=class extends $n{constructor(t){super(t),this._typeIds=new gp(Int8Array,0,1),typeof t.valueToChildTypeId==\"function\"&&(this._valueToChildTypeId=t.valueToChildTypeId)}get typeIdToChildIndex(){return this.type.typeIdToChildIndex}append(t,r){return this.set(this.length,t,r)}set(t,r,i){return i===void 0&&(i=this._valueToChildTypeId(this,r,t)),this.setValue(t,r,i),this}setValue(t,r,i){this._typeIds.set(t,i);let s=this.type.typeIdToChildIndex[i],n=this.children[s];n?.set(t,r)}addChild(t,r=`${this.children.length}`){let i=this.children.push(t),{type:{children:s,mode:n,typeIds:o}}=this,c=[...s,new si(r,t.type)];return this.type=new hc(n,[...o,i],c),i}_valueToChildTypeId(t,r,i){throw new Error(\"Cannot map UnionBuilder value to child typeId. Pass the `childTypeId` as the second argument to unionBuilder.append(), or supply a `valueToChildTypeId` function as part of the UnionBuilder constructor options.\")}},m2=class extends Pg{},g2=class extends Pg{constructor(t){super(t),this._offsets=new gp(Int32Array)}setValue(t,r,i){let s=this._typeIds.set(t,i).buffer[t],n=this.getChildAt(this.type.typeIdToChildIndex[s]),o=this._offsets.set(t,n.length).buffer[t];n?.set(o,r)}};var Bv=class extends pc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Kf(r))}_flushPending(t,r){}};Bv.prototype._flushPending=Tg.prototype._flushPending;var Fv=class extends pc{constructor(t){super(t),this._values=new nf(Uint8Array)}get byteLength(){let t=this._pendingLength+this.length*4;return this._offsets&&(t+=this._offsets.byteLength),this._values&&(t+=this._values.byteLength),this._nulls&&(t+=this._nulls.byteLength),t}setValue(t,r){return super.setValue(t,Kf(r))}_flushPending(t,r){}};Fv.prototype._flushPending=Mg.prototype._flushPending;var PO=class extends Mr{visitNull(){return p2}visitBool(){return Am}visitInt(){return su}visitInt8(){return n2}visitInt16(){return s2}visitInt32(){return o2}visitInt64(){return a2}visitUint8(){return l2}visitUint16(){return c2}visitUint32(){return u2}visitUint64(){return h2}visitFloat(){return gm}visitFloat16(){return e2}visitFloat32(){return r2}visitFloat64(){return i2}visitUtf8(){return Bv}visitLargeUtf8(){return Fv}visitBinary(){return Tg}visitLargeBinary(){return Mg}visitFixedSizeBinary(){return xv}visitDate(){return mm}visitDateDay(){return _v}visitDateMillisecond(){return yv}visitTimestamp(){return cd}visitTimestampSecond(){return Pv}visitTimestampMillisecond(){return Iv}visitTimestampMicrosecond(){return Cv}visitTimestampNanosecond(){return Lv}visitTime(){return ud}visitTimeSecond(){return kv}visitTimeMillisecond(){return Rv}visitTimeMicrosecond(){return Dv}visitTimeNanosecond(){return Ov}visitDecimal(){return vv}visitList(){return f2}visitStruct(){return A2}visitUnion(){return Pg}visitDenseUnion(){return g2}visitSparseUnion(){return m2}visitDictionary(){return Jw}visitInterval(){return _m}visitIntervalDayTime(){return bv}visitIntervalYearMonth(){return wv}visitDuration(){return ld}visitDurationSecond(){return Sv}visitDurationMillisecond(){return Tv}visitDurationMicrosecond(){return Mv}visitDurationNanosecond(){return Ev}visitFixedSizeList(){return t2}visitMap(){return d2}},BW=new PO;var Cr=class extends Mr{compareSchemas(t,r){return t===r||r instanceof t.constructor&&this.compareManyFields(t.fields,r.fields)}compareManyFields(t,r){return t===r||Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((i,s)=>this.compareFields(i,r[s]))}compareFields(t,r){return t===r||r instanceof t.constructor&&t.name===r.name&&t.nullable===r.nullable&&this.visit(t.type,r.type)}};function kl(e,t){return t instanceof e.constructor}function Ig(e,t){return e===t||kl(e,t)}function bp(e,t){return e===t||kl(e,t)&&e.bitWidth===t.bitWidth&&e.isSigned===t.isSigned}function s3(e,t){return e===t||kl(e,t)&&e.precision===t.precision}function Nht(e,t){return e===t||kl(e,t)&&e.byteWidth===t.byteWidth}function IO(e,t){return e===t||kl(e,t)&&e.unit===t.unit}function _2(e,t){return e===t||kl(e,t)&&e.unit===t.unit&&e.timezone===t.timezone}function y2(e,t){return e===t||kl(e,t)&&e.unit===t.unit&&e.bitWidth===t.bitWidth}function Uht(e,t){return e===t||kl(e,t)&&e.children.length===t.children.length&&hd.compareManyFields(e.children,t.children)}function Vht(e,t){return e===t||kl(e,t)&&e.children.length===t.children.length&&hd.compareManyFields(e.children,t.children)}function CO(e,t){return e===t||kl(e,t)&&e.mode===t.mode&&e.typeIds.every((r,i)=>r===t.typeIds[i])&&hd.compareManyFields(e.children,t.children)}function jht(e,t){return e===t||kl(e,t)&&e.id===t.id&&e.isOrdered===t.isOrdered&&hd.visit(e.indices,t.indices)&&hd.visit(e.dictionary,t.dictionary)}function LO(e,t){return e===t||kl(e,t)&&e.unit===t.unit}function v2(e,t){return e===t||kl(e,t)&&e.unit===t.unit}function Ght(e,t){return e===t||kl(e,t)&&e.listSize===t.listSize&&e.children.length===t.children.length&&hd.compareManyFields(e.children,t.children)}function Wht(e,t){return e===t||kl(e,t)&&e.keysSorted===t.keysSorted&&e.children.length===t.children.length&&hd.compareManyFields(e.children,t.children)}Cr.prototype.visitNull=Ig;Cr.prototype.visitBool=Ig;Cr.prototype.visitInt=bp;Cr.prototype.visitInt8=bp;Cr.prototype.visitInt16=bp;Cr.prototype.visitInt32=bp;Cr.prototype.visitInt64=bp;Cr.prototype.visitUint8=bp;Cr.prototype.visitUint16=bp;Cr.prototype.visitUint32=bp;Cr.prototype.visitUint64=bp;Cr.prototype.visitFloat=s3;Cr.prototype.visitFloat16=s3;Cr.prototype.visitFloat32=s3;Cr.prototype.visitFloat64=s3;Cr.prototype.visitUtf8=Ig;Cr.prototype.visitLargeUtf8=Ig;Cr.prototype.visitBinary=Ig;Cr.prototype.visitLargeBinary=Ig;Cr.prototype.visitFixedSizeBinary=Nht;Cr.prototype.visitDate=IO;Cr.prototype.visitDateDay=IO;Cr.prototype.visitDateMillisecond=IO;Cr.prototype.visitTimestamp=_2;Cr.prototype.visitTimestampSecond=_2;Cr.prototype.visitTimestampMillisecond=_2;Cr.prototype.visitTimestampMicrosecond=_2;Cr.prototype.visitTimestampNanosecond=_2;Cr.prototype.visitTime=y2;Cr.prototype.visitTimeSecond=y2;Cr.prototype.visitTimeMillisecond=y2;Cr.prototype.visitTimeMicrosecond=y2;Cr.prototype.visitTimeNanosecond=y2;Cr.prototype.visitDecimal=Ig;Cr.prototype.visitList=Uht;Cr.prototype.visitStruct=Vht;Cr.prototype.visitUnion=CO;Cr.prototype.visitDenseUnion=CO;Cr.prototype.visitSparseUnion=CO;Cr.prototype.visitDictionary=jht;Cr.prototype.visitInterval=LO;Cr.prototype.visitIntervalDayTime=LO;Cr.prototype.visitIntervalYearMonth=LO;Cr.prototype.visitDuration=v2;Cr.prototype.visitDurationSecond=v2;Cr.prototype.visitDurationMillisecond=v2;Cr.prototype.visitDurationMicrosecond=v2;Cr.prototype.visitDurationNanosecond=v2;Cr.prototype.visitFixedSizeList=Ght;Cr.prototype.visitMap=Wht;var hd=new Cr;function Cg(e,t){return hd.compareSchemas(e,t)}function FW(e,t){return hd.compareFields(e,t)}function zW(e,t){return hd.visit(e,t)}function Eg(e){let t=e.type,r=new(BW.getVisitFn(t)())(e);if(t.children&&t.children.length>0){let i=e.children||[],s={nullValues:e.nullValues},n=Array.isArray(i)?(o,c)=>i[c]||s:({name:o})=>i[o]||s;for(let[o,c]of t.children.entries()){let{type:f}=c,_=n(c,o);r.children.push(Eg(Object.assign(Object.assign({},_),{type:f})))}}return r}function o3(e,t){return Hht(e,t.map(r=>r.data.concat()))}function Hht(e,t){let r=[...e.fields],i=[],s={numBatches:t.reduce((I,R)=>Math.max(I,R.length),0)},n=0,o=0,c=-1,f=t.length,_,w=[];for(;s.numBatches-- >0;){for(o=Number.POSITIVE_INFINITY,c=-1;++c0&&(i[n++]=vr({type:new fn(r),length:o,nullCount:0,children:w.slice()})))}return[e=e.assign(r),i.map(I=>new Ds(e,I))]}function qht(e,t,r,i,s){var n;let o=(t+63&-64)>>3;for(let c=-1,f=i.length;++c=t)w===t?r[c]=_:(r[c]=_.slice(0,t),s.numBatches=Math.max(s.numBatches,i[c].unshift(_.slice(t,w-t))));else{let I=e[c];e[c]=I.clone({nullable:!0}),r[c]=(n=_?._changeLengthAndBackfillNullBitmap(t))!==null&&n!==void 0?n:vr({type:I.type,length:t,nullCount:t,nullBitmap:new Uint8Array(o)})}}return r}var UW,wa=class e{constructor(...t){var r,i;if(t.length===0)return this.batches=[],this.schema=new sn([]),this._offsets=[0],this;let s,n;t[0]instanceof sn&&(s=t.shift()),t.at(-1)instanceof Uint32Array&&(n=t.pop());let o=f=>{if(f){if(f instanceof Ds)return[f];if(f instanceof e)return f.batches;if(f instanceof Oi){if(f.type instanceof fn)return[new Ds(new sn(f.type.children),f)]}else{if(Array.isArray(f))return f.flatMap(_=>o(_));if(typeof f[Symbol.iterator]==\"function\")return[...f].flatMap(_=>o(_));if(typeof f==\"object\"){let _=Object.keys(f),w=_.map(N=>new wr([f[N]])),I=s??new sn(_.map((N,j)=>new si(String(N),w[j].type,w[j].nullable))),[,R]=o3(I,w);return R.length===0?[new Ds(f)]:R}}}return[]},c=t.flatMap(f=>o(f));if(s=(i=s??((r=c[0])===null||r===void 0?void 0:r.schema))!==null&&i!==void 0?i:new sn([]),!(s instanceof sn))throw new TypeError(\"Table constructor expects a [Schema, RecordBatch[]] pair.\");for(let f of c){if(!(f instanceof Ds))throw new TypeError(\"Table constructor expects a [Schema, RecordBatch[]] pair.\");if(!Cg(s,f.schema))throw new TypeError(\"Table and inner RecordBatch schemas must be equivalent.\")}this.schema=s,this.batches=c,this._offsets=n??XP(this.data)}get data(){return this.batches.map(({data:t})=>t)}get numCols(){return this.schema.fields.length}get numRows(){return this.data.reduce((t,r)=>t+r.length,0)}get nullCount(){return this._nullCount===-1&&(this._nullCount=$P(this.data)),this._nullCount}isValid(t){return!1}get(t){return null}set(t,r){}indexOf(t,r){return-1}[Symbol.iterator](){return this.batches.length>0?dv.visit(new wr(this.data)):new Array(0)[Symbol.iterator]()}toArray(){return[...this]}toString(){return`[\n ${this.toArray().join(`,\n `)}\n]`}concat(...t){let r=this.schema,i=this.data.concat(t.flatMap(({data:s})=>s));return new e(r,i.map(s=>new Ds(r,s)))}slice(t,r){let i=this.schema;[t,r]=Ww({length:this.numRows},t,r);let s=KP(this.data,this._offsets,t,r);return new e(i,s.map(n=>new Ds(i,n)))}getChild(t){return this.getChildAt(this.schema.fields.findIndex(r=>r.name===t))}getChildAt(t){if(t>-1&&ti.children[t]);if(r.length===0){let{type:i}=this.schema.fields[t],s=vr({type:i,length:0,nullCount:0});r.push(s._changeLengthAndBackfillNullBitmap(this.numRows))}return new wr(r)}return null}setChild(t,r){var i;return this.setChildAt((i=this.schema.fields)===null||i===void 0?void 0:i.findIndex(s=>s.name===t),r)}setChildAt(t,r){let i=this.schema,s=[...this.batches];if(t>-1&&tthis.getChildAt(_));[n[t],c[t]]=[o,r],[i,s]=o3(i,c)}return new e(i,s)}select(t){let r=this.schema.fields.reduce((i,s,n)=>i.set(s.name,n),new Map);return this.selectAt(t.map(i=>r.get(i)).filter(i=>i>-1))}selectAt(t){let r=this.schema.selectAt(t),i=this.batches.map(s=>s.selectAt(t));return new e(r,i)}assign(t){let r=this.schema.fields,[i,s]=t.schema.fields.reduce((c,f,_)=>{let[w,I]=c,R=r.findIndex(N=>N.name===f.name);return~R?I[R]=_:w.push(_),c},[[],[]]),n=this.schema.assign(t.schema),o=[...r.map((c,f)=>[f,s[f]]).map(([c,f])=>f===void 0?this.getChildAt(c):t.getChildAt(f)),...i.map(c=>t.getChildAt(c))].filter(Boolean);return new e(...o3(n,o))}};UW=Symbol.toStringTag;wa[UW]=(e=>(e.schema=null,e.batches=[],e._offsets=new Uint32Array([0]),e._nullCount=-1,e[Symbol.isConcatSpreadable]=!0,e.isValid=fv(Zw),e.get=fv(mo.getVisitFn(Dt.Struct)),e.set=JP(ba.getVisitFn(Dt.Struct)),e.indexOf=t3(bg.getVisitFn(Dt.Struct)),\"Table\"))(wa.prototype);var jW,Ds=class e{constructor(...t){switch(t.length){case 2:{if([this.schema]=t,!(this.schema instanceof sn))throw new TypeError(\"RecordBatch constructor expects a [Schema, Data] pair.\");if([,this.data=vr({nullCount:0,type:new fn(this.schema.fields),children:this.schema.fields.map(r=>vr({type:r.type,nullCount:0}))})]=t,!(this.data instanceof Oi))throw new TypeError(\"RecordBatch constructor expects a [Schema, Data] pair.\");[this.schema,this.data]=VW(this.schema,this.data.children);break}case 1:{let[r]=t,{fields:i,children:s,length:n}=Object.keys(r).reduce((f,_,w)=>(f.children[w]=r[_],f.length=Math.max(f.length,r[_].length),f.fields[w]=si.new({name:_,type:r[_].type,nullable:!0}),f),{length:0,fields:new Array,children:new Array}),o=new sn(i),c=vr({type:new fn(i),length:n,children:s,nullCount:0});[this.schema,this.data]=VW(o,c.children,n);break}default:throw new TypeError(\"RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.\")}}get dictionaries(){return this._dictionaries||(this._dictionaries=GW(this.schema.fields,this.data.children))}get numCols(){return this.schema.fields.length}get numRows(){return this.data.length}get nullCount(){return this.data.nullCount}isValid(t){return this.data.getValid(t)}get(t){return mo.visit(this.data,t)}set(t,r){return ba.visit(this.data,t,r)}indexOf(t,r){return bg.visit(this.data,t,r)}[Symbol.iterator](){return dv.visit(new wr([this.data]))}toArray(){return[...this]}concat(...t){return new wa(this.schema,[this,...t])}slice(t,r){let[i]=new wr([this.data]).slice(t,r).data;return new e(this.schema,i)}getChild(t){var r;return this.getChildAt((r=this.schema.fields)===null||r===void 0?void 0:r.findIndex(i=>i.name===t))}getChildAt(t){return t>-1&&ts.name===t),r)}setChildAt(t,r){let i=this.schema,s=this.data;if(t>-1&&tc.name===n);~o&&(s[o]=this.data.children[o])}return new e(r,vr({type:i,length:this.numRows,children:s}))}selectAt(t){let r=this.schema.selectAt(t),i=t.map(n=>this.data.children[n]).filter(Boolean),s=vr({type:new fn(r.fields),length:this.numRows,children:i});return new e(r,s)}};jW=Symbol.toStringTag;Ds[jW]=(e=>(e._nullCount=-1,e[Symbol.isConcatSpreadable]=!0,\"RecordBatch\"))(Ds.prototype);function VW(e,t,r=t.reduce((i,s)=>Math.max(i,s.length),0)){var i;let s=[...e.fields],n=[...t],o=(r+63&-64)>>3;for(let[c,f]of e.fields.entries()){let _=t[c];(!_||_.length!==r)&&(s[c]=f.clone({nullable:!0}),n[c]=(i=_?._changeLengthAndBackfillNullBitmap(r))!==null&&i!==void 0?i:vr({type:f.type,length:r,nullCount:r,nullBitmap:new Uint8Array(o)}))}return[e.assign(s),vr({type:new fn(s),length:r,children:n})]}function GW(e,t,r=new Map){var i,s;if(((i=e?.length)!==null&&i!==void 0?i:0)>0&&e?.length===t?.length)for(let n=-1,o=e.length;++nvr({type:s.type})),i=vr({type:new fn(t.fields),nullCount:0,children:r});super(t,i)}};var sf=class e{constructor(){this.bb=null,this.bb_pos=0}__init(t,r){return this.bb_pos=t,this.bb=r,this}static getRootAsMessage(t,r){return(r||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsMessage(t,r){return t.setPosition(t.position()+4),(r||new e).__init(t.readInt32(t.position())+t.position(),t)}version(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt16(this.bb_pos+t):rn.V1}headerType(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint8(this.bb_pos+t):bi.NONE}header(t){let r=this.bb.__offset(this.bb_pos,8);return r?this.bb.__union(t,this.bb_pos+r):null}bodyLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt64(this.bb_pos+t):BigInt(\"0\")}customMetadata(t,r){let i=this.bb.__offset(this.bb_pos,12);return i?(r||new Fo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}customMetadataLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startMessage(t){t.startObject(5)}static addVersion(t,r){t.addFieldInt16(0,r,rn.V1)}static addHeaderType(t,r){t.addFieldInt8(1,r,bi.NONE)}static addHeader(t,r){t.addFieldOffset(2,r,0)}static addBodyLength(t,r){t.addFieldInt64(3,r,BigInt(\"0\"))}static addCustomMetadata(t,r){t.addFieldOffset(4,r,0)}static createCustomMetadataVector(t,r){t.startVector(4,r.length,4);for(let i=r.length-1;i>=0;i--)t.addOffset(r[i]);return t.endVector()}static startCustomMetadataVector(t,r){t.startVector(4,r,4)}static endMessage(t){return t.endObject()}static finishMessageBuffer(t,r){t.finish(r)}static finishSizePrefixedMessageBuffer(t,r){t.finish(r,void 0,!0)}static createMessage(t,r,i,s,n,o){return e.startMessage(t),e.addVersion(t,r),e.addHeaderType(t,i),e.addHeader(t,s),e.addBodyLength(t,n),e.addCustomMetadata(t,o),e.endMessage(t)}};var kO=class extends Mr{visit(t,r){return t==null||r==null?void 0:super.visit(t,r)}visitNull(t,r){return Iw.startNull(r),Iw.endNull(r)}visitInt(t,r){return Xh.startInt(r),Xh.addBitWidth(r,t.bitWidth),Xh.addIsSigned(r,t.isSigned),Xh.endInt(r)}visitFloat(t,r){return lm.startFloatingPoint(r),lm.addPrecision(r,t.precision),lm.endFloatingPoint(r)}visitBinary(t,r){return Sw.startBinary(r),Sw.endBinary(r)}visitLargeBinary(t,r){return Mw.startLargeBinary(r),Mw.endLargeBinary(r)}visitBool(t,r){return Tw.startBool(r),Tw.endBool(r)}visitUtf8(t,r){return Lw.startUtf8(r),Lw.endUtf8(r)}visitLargeUtf8(t,r){return Ew.startLargeUtf8(r),Ew.endLargeUtf8(r)}visitDecimal(t,r){return rd.startDecimal(r),rd.addScale(r,t.scale),rd.addPrecision(r,t.precision),rd.addBitWidth(r,t.bitWidth),rd.endDecimal(r)}visitDate(t,r){return nm.startDate(r),nm.addUnit(r,t.unit),nm.endDate(r)}visitTime(t,r){return pp.startTime(r),pp.addUnit(r,t.unit),pp.addBitWidth(r,t.bitWidth),pp.endTime(r)}visitTimestamp(t,r){let i=t.timezone&&r.createString(t.timezone)||void 0;return Ap.startTimestamp(r),Ap.addUnit(r,t.unit),i!==void 0&&Ap.addTimezone(r,i),Ap.endTimestamp(r)}visitInterval(t,r){return cm.startInterval(r),cm.addUnit(r,t.unit),cm.endInterval(r)}visitDuration(t,r){return sm.startDuration(r),sm.addUnit(r,t.unit),sm.endDuration(r)}visitList(t,r){return Pw.startList(r),Pw.endList(r)}visitStruct(t,r){return Cw.startStruct_(r),Cw.endStruct_(r)}visitUnion(t,r){Kh.startTypeIdsVector(r,t.typeIds.length);let i=Kh.createTypeIdsVector(r,t.typeIds);return Kh.startUnion(r),Kh.addMode(r,t.mode),Kh.addTypeIds(r,i),Kh.endUnion(r)}visitDictionary(t,r){let i=this.visit(t.indices,r);return ed.startDictionaryEncoding(r),ed.addId(r,BigInt(t.id)),ed.addIsOrdered(r,t.isOrdered),i!==void 0&&ed.addIndexType(r,i),ed.endDictionaryEncoding(r)}visitFixedSizeBinary(t,r){return om.startFixedSizeBinary(r),om.addByteWidth(r,t.byteWidth),om.endFixedSizeBinary(r)}visitFixedSizeList(t,r){return am.startFixedSizeList(r),am.addListSize(r,t.listSize),am.endFixedSizeList(r)}visitMap(t,r){return um.startMap(r),um.addKeysSorted(r,t.keysSorted),um.endMap(r)}},a3=new kO;function ZW(e,t=new Map){return new sn(Zht(e,t),l3(e.metadata),t)}function RO(e){return new Sa(e.count,QW(e.columns),$W(e.columns))}function YW(e){return new mc(RO(e.data),e.id,e.isDelta)}function Zht(e,t){return(e.fields||[]).filter(Boolean).map(r=>si.fromJSON(r,t))}function WW(e,t){return(e.children||[]).filter(Boolean).map(r=>si.fromJSON(r,t))}function QW(e){return(e||[]).reduce((t,r)=>[...t,new $u(r.count,Yht(r.VALIDITY)),...QW(r.children)],[])}function $W(e,t=[]){for(let r=-1,i=(e||[]).length;++rt+ +(r===0),0)}function XW(e,t){let r,i,s,n,o,c;return!t||!(n=e.dictionary)?(o=qW(e,WW(e,t)),s=new si(e.name,o,e.nullable,l3(e.metadata))):t.has(r=n.id)?(i=(i=n.indexType)?HW(i):new ef,c=new dc(t.get(r),i,r,n.isOrdered),s=new si(e.name,c,e.nullable,l3(e.metadata))):(i=(i=n.indexType)?HW(i):new ef,t.set(r,o=qW(e,WW(e,t))),c=new dc(o,i,r,n.isOrdered),s=new si(e.name,c,e.nullable,l3(e.metadata))),s||null}function l3(e=[]){return new Map(e.map(({key:t,value:r})=>[t,r]))}function HW(e){return new ns(e.isSigned,e.bitWidth)}function qW(e,t){let r=e.type.name;switch(r){case\"NONE\":return new ra;case\"null\":return new ra;case\"binary\":return new Uu;case\"largebinary\":return new id;case\"utf8\":return new Vu;case\"largeutf8\":return new nd;case\"bool\":return new lc;case\"list\":return new uc((t||[])[0]);case\"struct\":return new fn(t||[]);case\"struct_\":return new fn(t||[])}switch(r){case\"int\":{let i=e.type;return new ns(i.isSigned,i.bitWidth)}case\"floatingpoint\":{let i=e.type;return new Ao(Yi[i.precision])}case\"decimal\":{let i=e.type;return new ju(i.scale,i.precision,i.bitWidth)}case\"date\":{let i=e.type;return new Gu(Js[i.unit])}case\"time\":{let i=e.type;return new cc(pr[i.unit],i.bitWidth)}case\"timestamp\":{let i=e.type;return new Wu(pr[i.unit],i.timezone)}case\"interval\":{let i=e.type;return new Hu(Bo[i.unit])}case\"duration\":{let i=e.type;return new qu(pr[i.unit])}case\"union\":{let i=e.type,[s,...n]=(i.mode+\"\").toLowerCase(),o=s.toUpperCase()+n.join(\"\");return new hc(Mn[o],i.typeIds||[],t||[])}case\"fixedsizebinary\":{let i=e.type;return new Zu(i.byteWidth)}case\"fixedsizelist\":{let i=e.type;return new Ll(i.listSize,(t||[])[0])}case\"map\":{let i=e.type;return new fc((t||[])[0],i.keysSorted)}}throw new Error(`Unrecognized type: \"${r}\"`)}var Qht=_g,$ht=eu,gc=class e{static fromJSON(t,r){let i=new e(0,rn.V5,r);return i._createHeader=Xht(t,r),i}static decode(t){t=new $ht(Rr(t));let r=sf.getRootAsMessage(t),i=r.bodyLength(),s=r.version(),n=r.headerType(),o=new e(i,s,n);return o._createHeader=Kht(r,n),o}static encode(t){let r=new Qht,i=-1;return t.isSchema()?i=sn.encode(r,t.header()):t.isRecordBatch()?i=Sa.encode(r,t.header()):t.isDictionaryBatch()&&(i=mc.encode(r,t.header())),sf.startMessage(r),sf.addVersion(r,rn.V5),sf.addHeader(r,i),sf.addHeaderType(r,t.headerType),sf.addBodyLength(r,BigInt(t.bodyLength)),sf.finishMessageBuffer(r,sf.endMessage(r)),r.asUint8Array()}static from(t,r=0){if(t instanceof sn)return new e(0,rn.V5,bi.Schema,t);if(t instanceof Sa)return new e(r,rn.V5,bi.RecordBatch,t);if(t instanceof mc)return new e(r,rn.V5,bi.DictionaryBatch,t);throw new Error(`Unrecognized Message header: ${t}`)}get type(){return this.headerType}get version(){return this._version}get headerType(){return this._headerType}get bodyLength(){return this._bodyLength}header(){return this._createHeader()}isSchema(){return this.headerType===bi.Schema}isRecordBatch(){return this.headerType===bi.RecordBatch}isDictionaryBatch(){return this.headerType===bi.DictionaryBatch}constructor(t,r,i,s){this._version=r,this._headerType=i,this.body=new Uint8Array(0),s&&(this._createHeader=()=>s),this._bodyLength=ms(t)}},Sa=class{get nodes(){return this._nodes}get length(){return this._length}get buffers(){return this._buffers}constructor(t,r,i){this._nodes=r,this._buffers=i,this._length=ms(t)}},mc=class{get id(){return this._id}get data(){return this._data}get isDelta(){return this._isDelta}get length(){return this.data.length}get nodes(){return this.data.nodes}get buffers(){return this.data.buffers}constructor(t,r,i=!1){this._data=t,this._isDelta=i,this._id=ms(r)}},Ac=class{constructor(t,r){this.offset=ms(t),this.length=ms(r)}},$u=class{constructor(t,r){this.length=ms(t),this.nullCount=ms(r)}};function Xht(e,t){return()=>{switch(t){case bi.Schema:return sn.fromJSON(e);case bi.RecordBatch:return Sa.fromJSON(e);case bi.DictionaryBatch:return mc.fromJSON(e)}throw new Error(`Unrecognized Message type: { name: ${bi[t]}, type: ${t} }`)}}function Kht(e,t){return()=>{switch(t){case bi.Schema:return sn.decode(e.header(new ac),new Map,e.version());case bi.RecordBatch:return Sa.decode(e.header(new ru),e.version());case bi.DictionaryBatch:return mc.decode(e.header(new dp),e.version())}throw new Error(`Unrecognized Message type: { name: ${bi[t]}, type: ${t} }`)}}si.encode=cft;si.decode=aft;si.fromJSON=XW;sn.encode=lft;sn.decode=Jht;sn.fromJSON=ZW;Sa.encode=uft;Sa.decode=tft;Sa.fromJSON=RO;mc.encode=hft;mc.decode=eft;mc.fromJSON=YW;$u.encode=fft;$u.decode=ift;Ac.encode=dft;Ac.decode=rft;function Jht(e,t=new Map,r=rn.V5){let i=oft(e,t);return new sn(i,c3(e),t,r)}function tft(e,t=rn.V5){if(e.compression()!==null)throw new Error(\"Record batch compression not implemented\");return new Sa(e.length(),nft(e),sft(e,t))}function eft(e,t=rn.V5){return new mc(Sa.decode(e.data(),t),e.id(),e.isDelta())}function rft(e){return new Ac(e.offset(),e.length())}function ift(e){return new $u(e.length(),e.nullCount())}function nft(e){let t=[];for(let r,i=-1,s=-1,n=e.nodesLength();++isi.encode(e,n));ac.startFieldsVector(e,r.length);let i=ac.createFieldsVector(e,r),s=t.metadata&&t.metadata.size>0?ac.createCustomMetadataVector(e,[...t.metadata].map(([n,o])=>{let c=e.createString(`${n}`),f=e.createString(`${o}`);return Fo.startKeyValue(e),Fo.addKey(e,c),Fo.addValue(e,f),Fo.endKeyValue(e)})):-1;return ac.startSchema(e),ac.addFields(e,i),ac.addEndianness(e,pft?im.Little:im.Big),s!==-1&&ac.addCustomMetadata(e,s),ac.endSchema(e)}function cft(e,t){let r=-1,i=-1,s=-1,n=t.type,o=t.typeId;Ne.isDictionary(n)?(o=n.dictionary.typeId,s=a3.visit(n,e),i=a3.visit(n.dictionary,e)):i=a3.visit(n,e);let c=(n.children||[]).map(w=>si.encode(e,w)),f=nl.createChildrenVector(e,c),_=t.metadata&&t.metadata.size>0?nl.createCustomMetadataVector(e,[...t.metadata].map(([w,I])=>{let R=e.createString(`${w}`),N=e.createString(`${I}`);return Fo.startKeyValue(e),Fo.addKey(e,R),Fo.addValue(e,N),Fo.endKeyValue(e)})):-1;return t.name&&(r=e.createString(t.name)),nl.startField(e),nl.addType(e,i),nl.addTypeType(e,o),nl.addChildren(e,f),nl.addNullable(e,!!t.nullable),r!==-1&&nl.addName(e,r),s!==-1&&nl.addDictionary(e,s),_!==-1&&nl.addCustomMetadata(e,_),nl.endField(e)}function uft(e,t){let r=t.nodes||[],i=t.buffers||[];ru.startNodesVector(e,r.length);for(let o of r.slice().reverse())$u.encode(e,o);let s=e.endVector();ru.startBuffersVector(e,i.length);for(let o of i.slice().reverse())Ac.encode(e,o);let n=e.endVector();return ru.startRecordBatch(e),ru.addLength(e,BigInt(t.length)),ru.addNodes(e,s),ru.addBuffers(e,n),ru.endRecordBatch(e)}function hft(e,t){let r=Sa.encode(e,t.data);return dp.startDictionaryBatch(e),dp.addId(e,BigInt(t.id)),dp.addIsDelta(e,t.isDelta),dp.addData(e,r),dp.endDictionaryBatch(e)}function fft(e,t){return iv.createFieldNode(e,BigInt(t.length),BigInt(t.nullCount))}function dft(e,t){return rv.createBuffer(e,BigInt(t.offset),BigInt(t.length))}var pft=(()=>{let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]===256})();var OO=e=>`Expected ${bi[e]} Message in stream, but was null or length 0.`,BO=e=>`Header pointer of flatbuffer-encoded ${bi[e]} Message is null or length 0.`,eH=(e,t)=>`Expected to read ${e} metadata bytes, but only read ${t}.`,rH=(e,t)=>`Expected to read ${e} bytes for message body, but only read ${t}.`,zv=class{constructor(t){this.source=t instanceof ad?t:new ad(t)}[Symbol.iterator](){return this}next(){let t;return(t=this.readMetadataLength()).done?Nn:t.value===-1&&(t=this.readMetadataLength()).done?Nn:(t=this.readMetadata(t.value)).done?Nn:t}throw(t){return this.source.throw(t)}return(t){return this.source.return(t)}readMessage(t){let r;if((r=this.next()).done)return null;if(t!=null&&r.value.headerType!==t)throw new Error(OO(t));return r.value}readMessageBody(t){if(t<=0)return new Uint8Array(0);let r=Rr(this.source.read(t));if(r.byteLength[...s,...n.VALIDITY&&[n.VALIDITY]||[],...n.TYPE_ID&&[n.TYPE_ID]||[],...n.OFFSET&&[n.OFFSET]||[],...n.DATA&&[n.DATA]||[],...r(n.children)],[])}}readMessage(t){let r;if((r=this.next()).done)return null;if(t!=null&&r.value.headerType!==t)throw new Error(OO(t));return r.value}readSchema(){let t=bi.Schema,r=this.readMessage(t),i=r?.header();if(!r||!i)throw new Error(BO(t));return i}},u3=4,DO=\"ARROW1\",Nv=new Uint8Array(DO.length);for(let e=0;ethis):this}readRecordBatch(t){return this._impl.isFile()?this._impl.readRecordBatch(t):null}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}toDOMStream(){return xa.toDOMStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this})}toNodeStream(){return xa.toNodeStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this},{objectMode:!0})}static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t,r){throw new Error('\"throughDOM\" not available in this environment')}static from(t){return t instanceof e?t:gP(t)?mft(t):yP(t)?yft(t):Jc(t)?sr(this,void 0,void 0,function*(){return yield e.from(yield t)}):vP(t)||_w(t)||bP(t)||zu(t)?_ft(new Qu(t)):gft(new ad(t))}static readAll(t){return t instanceof e?t.isSync()?nH(t):sH(t):gP(t)||ArrayBuffer.isView(t)||Yh(t)||_P(t)?nH(t):sH(t)}},wp=class extends ou{constructor(t){super(t),this._impl=t}readAll(){return[...this]}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return Kc(this,arguments,function*(){yield ii(yield*tv(Zh(this[Symbol.iterator]())))})}},kg=class extends ou{constructor(t){super(t),this._impl=t}readAll(){var t,r,i,s;return sr(this,void 0,void 0,function*(){let n=new Array;try{for(var o=!0,c=Zh(this),f;f=yield c.next(),t=f.done,!t;o=!0){s=f.value,o=!1;let _=s;n.push(_)}}catch(_){r={error:_}}finally{try{!o&&!t&&(i=c.return)&&(yield i.call(c))}finally{if(r)throw r.error}}return n})}[Symbol.iterator](){throw new Error(\"AsyncRecordBatchStreamReader is not Iterable\")}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}},Rg=class extends wp{constructor(t){super(t),this._impl=t}},f3=class extends kg{constructor(t){super(t),this._impl=t}},d3=class{get numDictionaries(){return this._dictionaryIndex}get numRecordBatches(){return this._recordBatchIndex}constructor(t=new Map){this.closed=!1,this.autoDestroy=!0,this._dictionaryIndex=0,this._recordBatchIndex=0,this.dictionaries=t}isSync(){return!1}isAsync(){return!1}isFile(){return!1}isStream(){return!1}reset(t){return this._dictionaryIndex=0,this._recordBatchIndex=0,this.schema=t,this.dictionaries=new Map,this}_loadRecordBatch(t,r){let i=this._loadVectors(t,r,this.schema.fields),s=vr({type:new fn(this.schema.fields),length:t.length,children:i});return new Ds(this.schema,s)}_loadDictionaryBatch(t,r){let{id:i,isDelta:s}=t,{dictionaries:n,schema:o}=this,c=n.get(i);if(s||!c){let f=o.dictionaries.get(i),_=this._loadVectors(t.data,r,[f]);return(c&&s?c.concat(new wr(_)):new wr(_)).memoize()}return c.memoize()}_loadVectors(t,r,i){return new Kw(r,t.nodes,t.buffers,this.dictionaries,this.schema.metadataVersion).visitMany(i)}},Vv=class extends d3{constructor(t,r){super(r),this._reader=gP(t)?new b2(this._handle=t):new zv(this._handle=t)}isSync(){return!0}isStream(){return!0}[Symbol.iterator](){return this}cancel(){!this.closed&&(this.closed=!0)&&(this.reset()._reader.return(),this._reader=null,this.dictionaries=null)}open(t){return this.closed||(this.autoDestroy=oH(this,t),this.schema||(this.schema=this._reader.readSchema())||this.cancel()),this}throw(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.throw(t):Nn}return(t){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.return(t):Nn}next(){if(this.closed)return Nn;let t,{_reader:r}=this;for(;t=this._readNextMessageAndValidate();)if(t.isSchema())this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),s=r.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,s)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),s=r.readMessageBody(t.bodyLength),n=this._loadDictionaryBatch(i,s);this.dictionaries.set(i.id,n)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Lg(this.schema)}):this.return()}_readNextMessageAndValidate(t){return this._reader.readMessage(t)}},jv=class extends d3{constructor(t,r){super(r),this._reader=new x2(this._handle=t)}isAsync(){return!0}isStream(){return!0}[Symbol.asyncIterator](){return this}cancel(){return sr(this,void 0,void 0,function*(){!this.closed&&(this.closed=!0)&&(yield this.reset()._reader.return(),this._reader=null,this.dictionaries=null)})}open(t){return sr(this,void 0,void 0,function*(){return this.closed||(this.autoDestroy=oH(this,t),this.schema||(this.schema=yield this._reader.readSchema())||(yield this.cancel())),this})}throw(t){return sr(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.throw(t):Nn})}return(t){return sr(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.return(t):Nn})}next(){return sr(this,void 0,void 0,function*(){if(this.closed)return Nn;let t,{_reader:r}=this;for(;t=yield this._readNextMessageAndValidate();)if(t.isSchema())yield this.reset(t.header());else if(t.isRecordBatch()){this._recordBatchIndex++;let i=t.header(),s=yield r.readMessageBody(t.bodyLength);return{done:!1,value:this._loadRecordBatch(i,s)}}else if(t.isDictionaryBatch()){this._dictionaryIndex++;let i=t.header(),s=yield r.readMessageBody(t.bodyLength),n=this._loadDictionaryBatch(i,s);this.dictionaries.set(i.id,n)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new Lg(this.schema)}):yield this.return()})}_readNextMessageAndValidate(t){return sr(this,void 0,void 0,function*(){return yield this._reader.readMessage(t)})}},p3=class extends Vv{get footer(){return this._footer}get numDictionaries(){return this._footer?this._footer.numDictionaries:0}get numRecordBatches(){return this._footer?this._footer.numRecordBatches:0}constructor(t,r){super(t instanceof Qw?t:new Qw(t),r)}isSync(){return!0}isFile(){return!0}open(t){if(!this.closed&&!this._footer){this.schema=(this._footer=this._readFooter()).schema;for(let r of this._footer.dictionaryBatches())r&&this._readDictionaryBatch(this._dictionaryIndex++)}return super.open(t)}readRecordBatch(t){var r;if(this.closed)return null;this._footer||this.open();let i=(r=this._footer)===null||r===void 0?void 0:r.getRecordBatch(t);if(i&&this._handle.seek(i.offset)){let s=this._reader.readMessage(bi.RecordBatch);if(s?.isRecordBatch()){let n=s.header(),o=this._reader.readMessageBody(s.bodyLength);return this._loadRecordBatch(n,o)}}return null}_readDictionaryBatch(t){var r;let i=(r=this._footer)===null||r===void 0?void 0:r.getDictionaryBatch(t);if(i&&this._handle.seek(i.offset)){let s=this._reader.readMessage(bi.DictionaryBatch);if(s?.isDictionaryBatch()){let n=s.header(),o=this._reader.readMessageBody(s.bodyLength),c=this._loadDictionaryBatch(n,o);this.dictionaries.set(n.id,c)}}}_readFooter(){let{_handle:t}=this,r=t.size-FO,i=t.readInt32(r),s=t.readAt(r-i,i);return _p.decode(s)}_readNextMessageAndValidate(t){var r;if(this._footer||this.open(),this._footer&&this._recordBatchIndexsuper.open}});return sr(this,void 0,void 0,function*(){if(!this.closed&&!this._footer){this.schema=(this._footer=yield this._readFooter()).schema;for(let i of this._footer.dictionaryBatches())i&&(yield this._readDictionaryBatch(this._dictionaryIndex++))}return yield r.open.call(this,t)})}readRecordBatch(t){var r;return sr(this,void 0,void 0,function*(){if(this.closed)return null;this._footer||(yield this.open());let i=(r=this._footer)===null||r===void 0?void 0:r.getRecordBatch(t);if(i&&(yield this._handle.seek(i.offset))){let s=yield this._reader.readMessage(bi.RecordBatch);if(s?.isRecordBatch()){let n=s.header(),o=yield this._reader.readMessageBody(s.bodyLength);return this._loadRecordBatch(n,o)}}return null})}_readDictionaryBatch(t){var r;return sr(this,void 0,void 0,function*(){let i=(r=this._footer)===null||r===void 0?void 0:r.getDictionaryBatch(t);if(i&&(yield this._handle.seek(i.offset))){let s=yield this._reader.readMessage(bi.DictionaryBatch);if(s?.isDictionaryBatch()){let n=s.header(),o=yield this._reader.readMessageBody(s.bodyLength),c=this._loadDictionaryBatch(n,o);this.dictionaries.set(n.id,c)}}})}_readFooter(){return sr(this,void 0,void 0,function*(){let{_handle:t}=this;t._pending&&(yield t._pending);let r=t.size-FO,i=yield t.readInt32(r),s=yield t.readAt(r-i,i);return _p.decode(s)})}_readNextMessageAndValidate(t){return sr(this,void 0,void 0,function*(){if(this._footer||(yield this.open()),this._footer&&this._recordBatchIndex=4?h3(t)?new Rg(new p3(e.read())):new wp(new Vv(e)):new wp(new Vv(function*(){}()))}function _ft(e){return sr(this,void 0,void 0,function*(){let t=yield e.peek(Uv+7&-8);return t&&t.byteLength>=4?h3(t)?new Rg(new p3(yield e.read())):new kg(new jv(e)):new kg(new jv(function(){return Kc(this,arguments,function*(){})}()))})}function yft(e){return sr(this,void 0,void 0,function*(){let{size:t}=yield e.stat(),r=new pm(e,t);return t>=iH&&h3(yield r.readAt(0,Uv+7&-8))?new f3(new zO(r)):new kg(new jv(r))})}var ss=class e extends Mr{static assemble(...t){let r=s=>s.flatMap(n=>Array.isArray(n)?r(n):n instanceof Ds?n.data.children:n.data),i=new e;return i.visitMany(r(t)),i}constructor(){super(),this._byteLength=0,this._nodes=[],this._buffers=[],this._bufferRegions=[]}visit(t){if(t instanceof wr)return this.visitMany(t.data),this;let{type:r}=t;if(!Ne.isDictionary(r)){let{length:i}=t;if(i>2147483647)throw new RangeError(\"Cannot write arrays larger than 2^31 - 1 in length\");if(Ne.isUnion(r))this.nodes.push(new $u(i,0));else{let{nullCount:s}=t;Ne.isNull(r)||of.call(this,s<=0?new Uint8Array(0):vg(t.offset,i,t.nullBitmap)),this.nodes.push(new $u(i,s))}}return super.visit(t)}visitNull(t){return this}visitDictionary(t){return this.visit(t.clone(t.type.indices))}get nodes(){return this._nodes}get buffers(){return this._buffers}get byteLength(){return this._byteLength}get bufferRegions(){return this._bufferRegions}};function of(e){let t=e.byteLength+7&-8;return this.buffers.push(e),this.bufferRegions.push(new Ac(this._byteLength,t)),this._byteLength+=t,this}function vft(e){var t;let{type:r,length:i,typeIds:s,valueOffsets:n}=e;if(of.call(this,s),r.mode===Mn.Sparse)return UO.call(this,e);if(r.mode===Mn.Dense){if(e.offset<=0)return of.call(this,n),UO.call(this,e);{let o=new Int32Array(i),c=Object.create(null),f=Object.create(null);for(let _,w,I=-1;++I{let I=r.typeIds[w],R=c[I],N=f[I];return _.slice(R,Math.min(i,N))}))}}return this}function xft(e){let t;return e.nullCount>=e.length?of.call(this,new Uint8Array(0)):(t=e.values)instanceof Uint8Array?of.call(this,vg(e.offset,e.length,t)):of.call(this,xg(e.values))}function Sp(e){return of.call(this,e.values.subarray(0,e.length*e.stride))}function A3(e){let{length:t,values:r,valueOffsets:i}=e,s=ms(i[0]),n=ms(i[t]),o=Math.min(n-s,r.byteLength-s);return of.call(this,SP(-s,t+1,i)),of.call(this,r.subarray(s,s+o)),this}function VO(e){let{length:t,valueOffsets:r}=e;if(r){let{[0]:i,[t]:s}=r;return of.call(this,SP(-i,t+1,r)),this.visit(e.children[0].slice(i,s-i))}return this.visit(e.children[0])}function UO(e){return this.visitMany(e.type.children.map((t,r)=>e.children[r]).filter(Boolean))[0]}ss.prototype.visitBool=xft;ss.prototype.visitInt=Sp;ss.prototype.visitFloat=Sp;ss.prototype.visitUtf8=A3;ss.prototype.visitLargeUtf8=A3;ss.prototype.visitBinary=A3;ss.prototype.visitLargeBinary=A3;ss.prototype.visitFixedSizeBinary=Sp;ss.prototype.visitDate=Sp;ss.prototype.visitTimestamp=Sp;ss.prototype.visitTime=Sp;ss.prototype.visitDecimal=Sp;ss.prototype.visitList=VO;ss.prototype.visitStruct=UO;ss.prototype.visitUnion=vft;ss.prototype.visitInterval=Sp;ss.prototype.visitDuration=Sp;ss.prototype.visitFixedSizeList=VO;ss.prototype.visitMap=VO;var Dg=class extends Sg{static throughNode(t){throw new Error('\"throughNode\" not available in this environment')}static throughDOM(t,r){throw new Error('\"throughDOM\" not available in this environment')}constructor(t){super(),this._position=0,this._started=!1,this._sink=new od,this._schema=null,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,Cl(t)||(t={autoDestroy:!0,writeLegacyIpcFormat:!1}),this._autoDestroy=typeof t.autoDestroy==\"boolean\"?t.autoDestroy:!0,this._writeLegacyIpcFormat=typeof t.writeLegacyIpcFormat==\"boolean\"?t.writeLegacyIpcFormat:!1}toString(t=!1){return this._sink.toString(t)}toUint8Array(t=!1){return this._sink.toUint8Array(t)}writeAll(t){return Jc(t)?t.then(r=>this.writeAll(r)):zu(t)?GO(this,t):jO(this,t)}get closed(){return this._sink.closed}[Symbol.asyncIterator](){return this._sink[Symbol.asyncIterator]()}toDOMStream(t){return this._sink.toDOMStream(t)}toNodeStream(t){return this._sink.toNodeStream(t)}close(){return this.reset()._sink.close()}abort(t){return this.reset()._sink.abort(t)}finish(){return this._autoDestroy?this.close():this.reset(this._sink,this._schema),this}reset(t=this._sink,r=null){return t===this._sink||t instanceof od?this._sink=t:(this._sink=new od,t&&y9(t)?this.toDOMStream({type:\"bytes\"}).pipeTo(t):t&&v9(t)&&this.toNodeStream({objectMode:!1}).pipe(t)),this._started&&this._schema&&this._writeFooter(this._schema),this._started=!1,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,(!r||!Cg(r,this._schema))&&(r==null?(this._position=0,this._schema=null):(this._started=!0,this._schema=r,this._writeSchema(r))),this}write(t){let r=null;if(this._sink){if(t==null)return this.finish()&&void 0;if(t instanceof wa&&!(r=t.schema))return this.finish()&&void 0;if(t instanceof Ds&&!(r=t.schema))return this.finish()&&void 0}else throw new Error(\"RecordBatchWriter is closed\");if(r&&!Cg(r,this._schema)){if(this._started&&this._autoDestroy)return this.close();this.reset(this._sink,r)}t instanceof Ds?t instanceof Lg||this._writeRecordBatch(t):t instanceof wa?this.writeAll(t.batches):Yh(t)&&this.writeAll(t)}_writeMessage(t,r=8){let i=r-1,s=gc.encode(t),n=s.byteLength,o=this._writeLegacyIpcFormat?4:8,c=n+o+i&~i,f=c-n-o;return t.headerType===bi.RecordBatch?this._recordBatchBlocks.push(new yp(c,t.bodyLength,this._position)):t.headerType===bi.DictionaryBatch&&this._dictionaryBlocks.push(new yp(c,t.bodyLength,this._position)),this._writeLegacyIpcFormat||this._write(Int32Array.of(-1)),this._write(Int32Array.of(c-o)),n>0&&this._write(s),this._writePadding(f)}_write(t){if(this._started){let r=Rr(t);r&&r.byteLength>0&&(this._sink.write(r),this._position+=r.byteLength)}return this}_writeSchema(t){return this._writeMessage(gc.from(t))}_writeFooter(t){return this._writeLegacyIpcFormat?this._write(Int32Array.of(0)):this._write(Int32Array.of(-1,0))}_writeMagic(){return this._write(Nv)}_writePadding(t){return t>0?this._write(new Uint8Array(t)):this}_writeRecordBatch(t){let{byteLength:r,nodes:i,bufferRegions:s,buffers:n}=ss.assemble(t),o=new Sa(t.numRows,i,s),c=gc.from(o,r);return this._writeDictionaries(t)._writeMessage(c)._writeBodyBuffers(n)}_writeDictionaryBatch(t,r,i=!1){this._dictionaryDeltaOffsets.set(r,t.length+(this._dictionaryDeltaOffsets.get(r)||0));let{byteLength:s,nodes:n,bufferRegions:o,buffers:c}=ss.assemble(new wr([t])),f=new Sa(t.length,n,o),_=new mc(f,r,i),w=gc.from(_,s);return this._writeMessage(w)._writeBodyBuffers(c)}_writeBodyBuffers(t){let r,i,s;for(let n=-1,o=t.length;++n0&&(this._write(r),(s=(i+7&-8)-i)>0&&this._writePadding(s));return this}_writeDictionaries(t){for(let[r,i]of t.dictionaries){let s=this._dictionaryDeltaOffsets.get(r)||0;if(s===0||(i=i?.slice(s)).length>0)for(let n of i.data)this._writeDictionaryBatch(n,r,s>0),s+=n.length}return this}},w2=class e extends Dg{static writeAll(t,r){let i=new e(r);return Jc(t)?t.then(s=>i.writeAll(s)):zu(t)?GO(i,t):jO(i,t)}},S2=class e extends Dg{static writeAll(t){let r=new e;return Jc(t)?t.then(i=>r.writeAll(i)):zu(t)?GO(r,t):jO(r,t)}constructor(){super(),this._autoDestroy=!0}_writeSchema(t){return this._writeMagic()._writePadding(2)}_writeFooter(t){let r=_p.encode(new _p(t,rn.V5,this._recordBatchBlocks,this._dictionaryBlocks));return super._writeFooter(t)._write(r)._write(Int32Array.of(r.byteLength))._writeMagic()}};function jO(e,t){let r=t;t instanceof wa&&(r=t.batches,e.reset(void 0,t.schema));for(let i of r)e.write(i);return e.finish()}function GO(e,t){var r,i,s,n,o,c,f;return sr(this,void 0,void 0,function*(){try{for(r=!0,i=Zh(t);s=yield i.next(),n=s.done,!n;r=!0){f=s.value,r=!1;let _=f;e.write(_)}}catch(_){o={error:_}}finally{try{!r&&!n&&(c=i.return)&&(yield c.call(i))}finally{if(o)throw o.error}}return e.finish()})}function aH(e,t){if(zu(e))return wft(e,t);if(Yh(e))return bft(e,t);throw new Error(\"toDOMStream() must be called with an Iterable or AsyncIterable\")}function bft(e,t){let r=null,i=t?.type===\"bytes\"||!1,s=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){n(o,r||(r=e[Symbol.iterator]()))},pull(o){r?n(o,r):o.close()},cancel(){(r?.return&&r.return()||!0)&&(r=null)}}),Object.assign({highWaterMark:i?s:void 0},t));function n(o,c){let f,_=null,w=o.desiredSize||null;for(;!(_=c.next(i?w:null)).done;)if(ArrayBuffer.isView(_.value)&&(f=Rr(_.value))&&(w!=null&&i&&(w=w-f.byteLength+1),_.value=f),o.enqueue(_.value),w!=null&&--w<=0)return;o.close()}}function wft(e,t){let r=null,i=t?.type===\"bytes\"||!1,s=t?.highWaterMark||Math.pow(2,24);return new ReadableStream(Object.assign(Object.assign({},t),{start(o){return sr(this,void 0,void 0,function*(){yield n(o,r||(r=e[Symbol.asyncIterator]()))})},pull(o){return sr(this,void 0,void 0,function*(){r?yield n(o,r):o.close()})},cancel(){return sr(this,void 0,void 0,function*(){(r?.return&&(yield r.return())||!0)&&(r=null)})}}),Object.assign({highWaterMark:i?s:void 0},t));function n(o,c){return sr(this,void 0,void 0,function*(){let f,_=null,w=o.desiredSize||null;for(;!(_=yield c.next(i?w:null)).done;)if(ArrayBuffer.isView(_.value)&&(f=Rr(_.value))&&(w!=null&&i&&(w=w-f.byteLength+1),_.value=f),o.enqueue(_.value),w!=null&&--w<=0)return;o.close()})}}function uH(e){return new WO(e)}var WO=class{constructor(t){this._numChunks=0,this._finished=!1,this._bufferedSize=0;let{[\"readableStrategy\"]:r,[\"writableStrategy\"]:i,[\"queueingStrategy\"]:s=\"count\"}=t,n=g9(t,[\"readableStrategy\",\"writableStrategy\",\"queueingStrategy\"]);this._controller=null,this._builder=Eg(n),this._getSize=s!==\"bytes\"?lH:cH;let{[\"highWaterMark\"]:o=s===\"bytes\"?Math.pow(2,14):1e3}=Object.assign({},r),{[\"highWaterMark\"]:c=s===\"bytes\"?Math.pow(2,14):1e3}=Object.assign({},i);this.readable=new ReadableStream({cancel:()=>{this._builder.clear()},pull:f=>{this._maybeFlush(this._builder,this._controller=f)},start:f=>{this._maybeFlush(this._builder,this._controller=f)}},{highWaterMark:o,size:s!==\"bytes\"?lH:cH}),this.writable=new WritableStream({abort:()=>{this._builder.clear()},write:()=>{this._maybeFlush(this._builder,this._controller)},close:()=>{this._maybeFlush(this._builder.finish(),this._controller)}},{highWaterMark:c,size:f=>this._writeValueAndReturnChunkSize(f)})}_writeValueAndReturnChunkSize(t){let r=this._bufferedSize;return this._bufferedSize=this._getSize(this._builder.append(t)),this._bufferedSize-r}_maybeFlush(t,r){r!=null&&(this._bufferedSize>=r.desiredSize&&++this._numChunks&&this._enqueue(r,t.toVector()),t.finished&&((t.length>0||this._numChunks===0)&&++this._numChunks&&this._enqueue(r,t.toVector()),!this._finished&&(this._finished=!0)&&this._enqueue(r,null)))}_enqueue(t,r){this._bufferedSize=0,this._controller=null,r==null?t.close():t.enqueue(r)}},lH=e=>{var t;return(t=e?.length)!==null&&t!==void 0?t:0},cH=e=>{var t;return(t=e?.byteLength)!==null&&t!==void 0?t:0};function m3(e,t){let r=new od,i=null,s=new ReadableStream({cancel(){return sr(this,void 0,void 0,function*(){yield r.close()})},start(c){return sr(this,void 0,void 0,function*(){yield o(c,i||(i=yield n()))})},pull(c){return sr(this,void 0,void 0,function*(){i?yield o(c,i):c.close()})}});return{writable:new WritableStream(r,Object.assign({highWaterMark:Math.pow(2,14)},e)),readable:s};function n(){return sr(this,void 0,void 0,function*(){return yield(yield ou.from(r)).open(t)})}function o(c,f){return sr(this,void 0,void 0,function*(){let _=c.desiredSize,w=null;for(;!(w=yield f.next()).done;)if(c.enqueue(w.value),_!=null&&--_<=0)return;c.close()})}}function g3(e,t){let r=new this(e),i=new Qu(r),s=new ReadableStream({cancel(){return sr(this,void 0,void 0,function*(){yield i.cancel()})},pull(o){return sr(this,void 0,void 0,function*(){yield n(o)})},start(o){return sr(this,void 0,void 0,function*(){yield n(o)})}},Object.assign({highWaterMark:Math.pow(2,14)},t));return{writable:new WritableStream(r,e),readable:s};function n(o){return sr(this,void 0,void 0,function*(){let c=null,f=o.desiredSize;for(;c=yield i.read(f||null);)if(o.enqueue(c),f!=null&&(f-=c.byteLength)<=0)return;o.close()})}}function T2(e){let t=ou.from(e);return Jc(t)?t.then(r=>T2(r)):t.isAsync()?t.readAll().then(r=>new wa(r)):new wa(t.readAll())}var Hft=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},eO),EO),_O),rO),$D),gO),JD),{compareSchemas:Cg,compareFields:FW,compareTypes:zW});xa.toDOMStream=aH;$n.throughDOM=uH;ou.throughDOM=m3;Rg.throughDOM=m3;wp.throughDOM=m3;Dg.throughDOM=g3;S2.throughDOM=g3;w2.throughDOM=g3;var qft=\"0.5.0\",Zft=`https://cdn.jsdelivr.net/npm/parquet-wasm@${qft}/esm/arrow2_bg.wasm`,HO=!1;async function hH(){HO||(await A9(Zft),HO=!0)}function Yft(e){if(!HO)throw new Error(\"wasm not ready\");console.time(\"readParquet\");let t=f9(new Uint8Array(e.buffer)).intoIPCStream(),r=T2(t);return console.timeEnd(\"readParquet\"),r}function M2(e){let t=[];for(let r of e){let i=Yft(r);i.batches.length!==1&&console.warn(\"Expected one batch\"),t.push(...i.batches)}return new wa(t)}var fH=Ri(en(),1);function qO(e){return e instanceof Array&&e?.[0]instanceof DataView?e?.[0].byteLength>0?M2(e).getChildAt(0):null:e}var Og=class{model;callbacks;updateStateCallback;constructor(t,r){this.model=t,this.model.on(\"change\",r),this.updateStateCallback=r,this.callbacks=new Map,this.callbacks.set(\"change\",r)}async loadSubModels(){}initRegularAttribute(t,r){this[r]=this.model.get(t),this.model.off(`change:${t}`);let i=()=>{this[r]=this.model.get(t)};this.model.on(`change:${t}`,i),this.callbacks.set(`change:${t}`,i)}initVectorizedAccessor(t,r){this[r]=qO(this.model.get(t)),this.model.off(`change:${t}`);let i=()=>{this[r]=qO(this.model.get(t))};this.model.on(`change:${t}`,i),this.callbacks.set(`change:${t}`,i)}finalize(){for(let[t,r]of Object.entries(this.callbacks))this.model.off(t,r)}};async function y3(e,t){let r=[];for(let i of t)r.push(e.get_model(i.slice(10)));return await Promise.all(r)}function ne(e){return e!=null}var Qft=`\n uniform bool brushing_enabled;\n uniform int brushing_target;\n uniform vec2 brushing_mousePos;\n uniform float brushing_radius;\n\n #ifdef NON_INSTANCED_MODEL\n attribute vec2 brushingTargets;\n #else\n attribute vec2 instanceBrushingTargets;\n #endif\n\n varying float brushing_isVisible;\n\n bool brushing_isPointInRange(vec2 position) {\n if (!brushing_enabled) {\n return true;\n }\n vec2 source_commonspace = project_position(position);\n vec2 target_commonspace = project_position(brushing_mousePos);\n float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);\n\n return distance <= brushing_radius;\n }\n\n bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {\n return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);\n }\n\n void brushing_setVisible(bool visible) {\n brushing_isVisible = float(visible);\n }\n`,$ft=`\n uniform bool brushing_enabled;\n varying float brushing_isVisible;\n`,Xft={source:0,target:1,custom:2,source_target:3},Kft={\"vs:DECKGL_FILTER_GL_POSITION\":`\n vec2 brushingTarget;\n vec2 brushingSource;\n if (brushing_target == 3) {\n brushingTarget = geometry.worldPositionAlt.xy;\n brushingSource = geometry.worldPosition.xy;\n } else if (brushing_target == 0) {\n brushingTarget = geometry.worldPosition.xy;\n } else if (brushing_target == 1) {\n brushingTarget = geometry.worldPositionAlt.xy;\n } else {\n #ifdef NON_INSTANCED_MODEL\n brushingTarget = brushingTargets;\n #else\n brushingTarget = instanceBrushingTargets;\n #endif\n }\n bool visible;\n if (brushing_target == 3) {\n visible = brushing_arePointsInRange(brushingSource, brushingTarget);\n } else {\n visible = brushing_isPointInRange(brushingTarget);\n }\n brushing_setVisible(visible);\n `,\"fs:DECKGL_FILTER_COLOR\":`\n if (brushing_enabled && brushing_isVisible < 0.5) {\n discard;\n }\n `},dH={name:\"brushing\",dependencies:[Uh],vs:Qft,fs:$ft,inject:Kft,getUniforms:e=>{if(!e||!(\"viewport\"in e))return{};let{brushingEnabled:t=!0,brushingRadius:r=1e4,brushingTarget:i=\"source\",mousePosition:s,viewport:n}=e;return{brushing_enabled:!!(t&&s&&n.containsPixel(s)),brushing_radius:r,brushing_target:Xft[i]||0,brushing_mousePos:s?n.unproject([s.x-n.x,s.y-n.y]):[0,0]}}};var Jft={getBrushingTarget:{type:\"accessor\",value:[0,0]},brushingTarget:\"source\",brushingEnabled:!0,brushingRadius:1e4},ym=class extends Bu{getShaders(){return{modules:[dH]}}initializeState(t,r){let i=this.getAttributeManager();i&&i.add({brushingTargets:{size:2,accessor:\"getBrushingTarget\",shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}}),this.state.onMouseMove=()=>{var s;(s=this.getCurrentLayer())===null||s===void 0||s.setNeedsRedraw()},t.deck&&t.deck.eventManager.on({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}finalizeState(t,r){t.deck&&t.deck.eventManager.off({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}};G(ym,\"defaultProps\",Jft);G(ym,\"extensionName\",\"BrushingExtension\");var pH=`\nuniform DATAFILTER_TYPE filter_min;\nuniform DATAFILTER_TYPE filter_softMin;\nuniform DATAFILTER_TYPE filter_softMax;\nuniform DATAFILTER_TYPE filter_max;\nuniform bool filter_useSoftMargin;\nuniform bool filter_enabled;\nuniform bool filter_transformSize;\n\n#ifdef NON_INSTANCED_MODEL\n #define DATAFILTER_ATTRIB filterValues\n #define DATAFILTER_ATTRIB_64LOW filterValues64Low\n#else\n #define DATAFILTER_ATTRIB instanceFilterValues\n #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low\n#endif\n\nattribute DATAFILTER_TYPE DATAFILTER_ATTRIB;\n#ifdef DATAFILTER_DOUBLE\n attribute DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;\n\n uniform DATAFILTER_TYPE filter_min64High;\n uniform DATAFILTER_TYPE filter_max64High;\n#endif\n\nvarying float dataFilter_value;\n\nfloat dataFilter_reduceValue(float value) {\n return value;\n}\nfloat dataFilter_reduceValue(vec2 value) {\n return min(value.x, value.y);\n}\nfloat dataFilter_reduceValue(vec3 value) {\n return min(min(value.x, value.y), value.z);\n}\nfloat dataFilter_reduceValue(vec4 value) {\n return min(min(value.x, value.y), min(value.z, value.w));\n}\nvoid dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax) {\n if (filter_enabled) {\n if (filter_useSoftMargin) {\n dataFilter_value = dataFilter_reduceValue(\n smoothstep(filter_min, filter_softMin, valueFromMin) *\n (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))\n );\n } else {\n dataFilter_value = dataFilter_reduceValue(\n step(filter_min, valueFromMin) * step(valueFromMax, filter_max)\n );\n }\n } else {\n dataFilter_value = 1.0;\n }\n}\n`,AH=`\nuniform bool filter_transformColor;\nvarying float dataFilter_value;\n`;function mH(e){if(!e||!(\"extensions\"in e))return{};let{filterRange:t=[-1,1],filterEnabled:r=!0,filterTransformSize:i=!0,filterTransformColor:s=!0}=e,n=e.filterSoftRange||t;return{...Number.isFinite(t[0])?{filter_min:t[0],filter_softMin:n[0],filter_softMax:n[1],filter_max:t[1]}:{filter_min:t.map(o=>o[0]),filter_softMin:n.map(o=>o[0]),filter_softMax:n.map(o=>o[1]),filter_max:t.map(o=>o[1])},filter_enabled:r,filter_useSoftMargin:!!e.filterSoftRange,filter_transformSize:r&&i,filter_transformColor:r&&s}}function tdt(e){if(!e||!(\"extensions\"in e))return{};let t=mH(e);if(Number.isFinite(t.filter_min)){let r=Math.fround(t.filter_min);t.filter_min-=r,t.filter_softMin-=r,t.filter_min64High=r;let i=Math.fround(t.filter_max);t.filter_max-=i,t.filter_softMax-=i,t.filter_max64High=i}else{let r=t.filter_min.map(Math.fround);t.filter_min=t.filter_min.map((s,n)=>s-r[n]),t.filter_softMin=t.filter_softMin.map((s,n)=>s-r[n]),t.filter_min64High=r;let i=t.filter_max.map(Math.fround);t.filter_max=t.filter_max.map((s,n)=>s-i[n]),t.filter_softMax=t.filter_softMax.map((s,n)=>s-i[n]),t.filter_max64High=i}return t}var gH={\"vs:#main-start\":`\n #ifdef DATAFILTER_DOUBLE\n dataFilter_setValue(\n DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,\n DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW\n );\n #else\n dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB);\n #endif\n `,\"vs:#main-end\":`\n if (dataFilter_value == 0.0) {\n gl_Position = vec4(0.);\n }\n `,\"vs:DECKGL_FILTER_SIZE\":`\n if (filter_transformSize) {\n size = size * dataFilter_value;\n }\n `,\"fs:DECKGL_FILTER_COLOR\":`\n if (dataFilter_value == 0.0) discard;\n if (filter_transformColor) {\n color.a *= dataFilter_value;\n }\n `},_H={name:\"data-filter\",vs:pH,fs:AH,inject:gH,getUniforms:mH},yH={name:\"data-filter-fp64\",vs:pH,fs:AH,inject:gH,getUniforms:tdt};var edt=`#define SHADER_NAME data-filter-vertex-shader\n\n#ifdef FLOAT_TARGET\n attribute float filterIndices;\n attribute float filterPrevIndices;\n#else\n attribute vec2 filterIndices;\n attribute vec2 filterPrevIndices;\n#endif\n\nvarying vec4 vColor;\nconst float component = 1.0 / 255.0;\n\nvoid main() {\n #ifdef FLOAT_TARGET\n dataFilter_value *= float(filterIndices != filterPrevIndices);\n gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n vColor = vec4(0.0, 0.0, 0.0, 1.0);\n #else\n // Float texture is not supported: pack result into 4 channels x 256 px x 64px\n dataFilter_value *= float(filterIndices.x != filterPrevIndices.x);\n float col = filterIndices.x;\n float row = filterIndices.y * 4.0;\n float channel = floor(row);\n row = fract(row);\n vColor = component * vec4(bvec4(channel == 0.0, channel == 1.0, channel == 2.0, channel == 3.0));\n gl_Position = vec4(col * 2.0 - 1.0, row * 2.0 - 1.0, 0.0, 1.0);\n #endif\n gl_PointSize = 1.0;\n}\n`,rdt=`#define SHADER_NAME data-filter-fragment-shader\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main() {\n if (dataFilter_value < 0.5) {\n discard;\n }\n gl_FragColor = vColor;\n}\n`;function vH(e){return!!(e.getExtension(\"EXT_float_blend\")&&(e.getExtension(\"EXT_color_buffer_float\")||e.getExtension(\"WEBGL_color_buffer_float\")))}function xH(e,t){return t?new yi(e,{width:1,height:1,attachments:{36064:new pi(e,{format:hr(e)?34836:6408,type:5126,mipmaps:!1})}}):new yi(e,{width:256,height:64,depth:!1})}function bH(e,t,r){return t.defines.NON_INSTANCED_MODEL=1,r&&(t.defines.FLOAT_TARGET=1),new un(e,{id:\"data-filter-aggregation-model\",vertexCount:1,isInstanced:!1,drawMode:0,vs:edt,fs:rdt,...t})}var wH={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};var ndt={getFilterValue:{type:\"accessor\",value:0},onFilteredItemsChange:{type:\"function\",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0},SH={1:\"float\",2:\"vec2\",3:\"vec3\",4:\"vec4\"},vm=class extends Bu{constructor({filterSize:t=1,fp64:r=!1,countItems:i=!1}={}){if(!SH[t])throw new Error(\"filterSize out of range\");super({filterSize:t,fp64:r,countItems:i})}getShaders(t){let{filterSize:r,fp64:i}=t.opts;return{modules:[i?yH:_H],defines:{DATAFILTER_TYPE:SH[r],DATAFILTER_DOUBLE:!!i}}}initializeState(t,r){let i=this.getAttributeManager();i&&i.add({filterValues:{size:r.opts.filterSize,type:r.opts.fp64?5130:5126,accessor:\"getFilterValue\",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}}});let{gl:s}=this.context;if(i&&r.opts.countItems){let n=vH(s);i.add({filterIndices:{size:n?1:2,vertexOffset:1,type:5121,normalized:!0,accessor:(f,{index:_})=>{let w=f&&f.__source?f.__source.index:_;return n?(w+1)%255:[(w+1)%255,Math.floor(w/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});let o=xH(s,n),c=bH(s,r.getShaders.call(this,r),n);this.setState({filterFBO:o,filterModel:c})}}updateState({props:t,oldProps:r}){if(this.state.filterModel){let s=this.getAttributeManager().attributes.filterValues.needsUpdate()||t.filterEnabled!==r.filterEnabled||t.filterRange!==r.filterRange||t.filterSoftRange!==r.filterSoftRange;s&&this.setState({filterNeedsUpdate:s})}}draw(t,r){let{filterFBO:i,filterModel:s,filterNeedsUpdate:n}=this.state,{onFilteredItemsChange:o}=this.props;if(n&&o&&s){let{attributes:{filterValues:c,filterIndices:f}}=this.getAttributeManager();s.setVertexCount(this.getNumInstances());let{gl:_}=this.context;Wf(_,{framebuffer:i,color:[0,0,0,0]}),s.updateModuleSettings(t.moduleParameters).setAttributes({...c.getShaderAttributes(),...f&&f.getShaderAttributes()}).draw({framebuffer:i,parameters:{...wH,viewport:[0,0,i.width,i.height]}});let w=Rh(i),I=0;for(let R=0;R 1000\n }\n\n if (collision_enabled) {\n vec4 collision_common_position = project_position(vec4(geometry.worldPosition, 1.0));\n vec2 collision_texCoords = collision_getCoords(collision_common_position);\n collision_fade = collision_isVisible(collision_texCoords, geometry.pickingColor / 255.0);\n if (collision_fade < 0.0001) {\n // Position outside clip space bounds to discard\n position = vec4(0.0, 0.0, 2.0, 1.0);\n }\n }\n `,\"vs:DECKGL_FILTER_COLOR\":`\n color.a *= collision_fade;\n `},adt=(e,t)=>{if(!e||!(\"dummyCollisionMap\"in e))return{};let{collisionFBO:r,drawToCollisionMap:i,dummyCollisionMap:s}=e;return{collision_sort:!!i,collision_texture:!i&&r?r:s}},TH={name:\"collision\",dependencies:[Uh],vs:sdt,inject:odt,getUniforms:adt};var E2=class extends ic{renderCollisionMap(t,r){let i=this.gl,s=1;return Sn(i,{scissorTest:!0,scissor:[s,s,t.width-2*s,t.height-2*s],clearColor:[0,0,0,0],blend:!1,depthTest:!0,depthRange:[0,1]},()=>this.render({...r,target:t,pass:\"collision\"}))}getModuleParameters(){return{drawToCollisionMap:!0,pickingActive:1,pickingAttribute:!1,lightSources:{}}}};var P2=class extends ic{constructor(t,r){super(t,r),G(this,\"maskMap\",void 0),G(this,\"fbo\",void 0);let{mapSize:i=2048}=r;this.maskMap=new pi(t,{width:i,height:i,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.fbo=new yi(t,{id:\"maskmap\",width:i,height:i,attachments:{36064:this.maskMap}})}render(t){let r=this.gl,i=[!1,!1,!1,!1];return i[t.channel]=!0,Sn(r,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:i,depthTest:!1},()=>super.render({...t,target:this.fbo,pass:\"mask\"}))}shouldDrawLayer(t){return t.props.operation.includes(\"mask\")}delete(){this.fbo.delete(),this.maskMap.delete()}};function MH(e,t){let r=[1/0,1/0,-1/0,-1/0];for(let i of e){let s=i.getBounds();if(s){let n=i.projectPosition(s[0],{viewport:t,autoOffset:!1}),o=i.projectPosition(s[1],{viewport:t,autoOffset:!1});r[0]=Math.min(r[0],n[0]),r[1]=Math.min(r[1],n[1]),r[2]=Math.max(r[2],o[0]),r[3]=Math.max(r[3],o[1])}}return Number.isFinite(r[0])?r:null}var ldt=2048;function EH(e){let{bounds:t,viewport:r,border:i=0}=e,{isGeospatial:s}=r;if(t[2]<=t[0]||t[3]<=t[1])return null;let n=r.unprojectPosition([(t[0]+t[2])/2,(t[1]+t[3])/2,0]),{width:o,height:c,zoom:f}=e;if(f===void 0){o=o-i*2,c=c-i*2;let _=Math.min(o/(t[2]-t[0]),c/(t[3]-t[1]));f=Math.min(Math.log2(_),20)}else if(!o||!c){let _=2**f;o=Math.round(Math.abs(t[2]-t[0])*_),c=Math.round(Math.abs(t[3]-t[1])*_);let w=ldt-i*2;if(o>w||c>w){let I=w/Math.max(o,c);o=Math.round(o*I),c=Math.round(c*I),f+=Math.log2(I)}}return s?new oc({id:r.id,x:i,y:i,width:o,height:c,longitude:n[0],latitude:n[1],zoom:f,orthographic:!0}):new Qy({id:r.id,x:i,y:i,width:o,height:c,target:n,zoom:f,flipY:!1})}function cdt(e,t){let r;if(t&&t.length===2){let[n,o]=t,c=e.getBounds({z:n}),f=e.getBounds({z:o});r=[Math.min(c[0],f[0]),Math.min(c[1],f[1]),Math.max(c[2],f[2]),Math.max(c[3],f[3])]}else r=e.getBounds();let i=e.projectPosition(r.slice(0,2)),s=e.projectPosition(r.slice(2,4));return[i[0],i[1],s[0],s[1]]}function PH(e,t,r){if(!e)return[0,0,1,1];let i=cdt(t,r),s=udt(i);return e[2]-e[0]<=s[2]-s[0]&&e[3]-e[1]<=s[3]-s[1]?e:[Math.max(e[0],s[0]),Math.max(e[1],s[1]),Math.min(e[2],s[2]),Math.min(e[3],s[3])]}function udt(e){let t=e[2]-e[0],r=e[3]-e[1],i=(e[0]+e[2])/2,s=(e[1]+e[3])/2;return[i-t,s-r,i+t,s+r]}var I2=class{constructor(){G(this,\"id\",\"mask-effect\"),G(this,\"props\",null),G(this,\"useInPicking\",!0),G(this,\"order\",0),G(this,\"dummyMaskMap\",void 0),G(this,\"channels\",[]),G(this,\"masks\",null),G(this,\"maskPass\",void 0),G(this,\"maskMap\",void 0),G(this,\"lastViewport\",void 0)}preRender(t,{layers:r,layerFilter:i,viewports:s,onViewportActive:n,views:o,isPicking:c}){let f=!1;if(this.dummyMaskMap||(this.dummyMaskMap=new pi(t,{width:1,height:1})),c)return{didRender:f};let _=r.filter(N=>N.props.visible&&N.props.operation.includes(\"mask\"));if(_.length===0)return this.masks=null,this.channels.length=0,{didRender:f};this.masks={},this.maskPass||(this.maskPass=new P2(t,{id:\"default-mask\"}),this.maskMap=this.maskPass.maskMap);let w=this._sortMaskChannels(_),I=s[0],R=!this.lastViewport||!this.lastViewport.equals(I);if(I.resolution!==void 0)return nr.warn(\"MaskExtension is not supported in GlobeView\")(),{didRender:f};for(let N in w){let j=this._renderChannel(w[N],{layerFilter:i,onViewportActive:n,views:o,viewport:I,viewportChanged:R});f||(f=j)}return{didRender:f}}_renderChannel(t,{layerFilter:r,onViewportActive:i,views:s,viewport:n,viewportChanged:o}){let c=!1,f=this.channels[t.index];if(!f)return c;let _=t===f||t.layers.length!==f.layers.length||t.layers.some((w,I)=>w!==f.layers[I]||w.props.transitions)||t.layerBounds.some((w,I)=>w!==f.layerBounds[I]);if(t.bounds=f.bounds,t.maskBounds=f.maskBounds,this.channels[t.index]=t,_||o){this.lastViewport=n;let w=MH(t.layers,n);if(t.bounds=w&&PH(w,n),_||!ko(t.bounds,f.bounds)){let{maskPass:I,maskMap:R}=this,N=w&&EH({bounds:t.bounds,viewport:n,width:R.width,height:R.height,border:1});t.maskBounds=N?N.getBounds():[0,0,1,1],I.render({pass:\"mask\",channel:t.index,layers:t.layers,layerFilter:r,viewports:N?[N]:[],onViewportActive:i,views:s,moduleParameters:{devicePixelRatio:1}}),c=!0}}return this.masks[t.id]={index:t.index,bounds:t.maskBounds,coordinateOrigin:t.coordinateOrigin,coordinateSystem:t.coordinateSystem},c}_sortMaskChannels(t){let r={},i=0;for(let s of t){let{id:n}=s.root,o=r[n];if(!o){if(++i>4){nr.warn(\"Too many mask layers. The max supported is 4\")();continue}o={id:n,index:this.channels.findIndex(c=>c?.id===n),layers:[],layerBounds:[],coordinateOrigin:s.root.props.coordinateOrigin,coordinateSystem:s.root.props.coordinateSystem},r[n]=o}o.layers.push(s),o.layerBounds.push(s.getBounds())}for(let s=0;s<4;s++){let n=this.channels[s];(!n||!(n.id in r))&&(this.channels[s]=null)}for(let s in r){let n=r[s];n.index<0&&(n.index=this.channels.findIndex(o=>!o),this.channels[n.index]=n)}return r}getModuleParameters(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}cleanup(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}};var ZO=2,C2=class{constructor(){G(this,\"id\",\"collision-filter-effect\"),G(this,\"props\",null),G(this,\"useInPicking\",!0),G(this,\"order\",1),G(this,\"channels\",{}),G(this,\"collisionFilterPass\",void 0),G(this,\"collisionFBOs\",{}),G(this,\"dummyCollisionMap\",void 0),G(this,\"lastViewport\",void 0)}preRender(t,{effects:r,layers:i,layerFilter:s,viewports:n,onViewportActive:o,views:c,isPicking:f,preRenderStats:_={}}){var w;if(this.dummyCollisionMap||(this.dummyCollisionMap=new pi(t,{width:1,height:1})),f)return;let I=i.filter(({props:{visible:Y,collisionEnabled:K}})=>Y&&K);if(I.length===0){this.channels={};return}this.collisionFilterPass||(this.collisionFilterPass=new E2(t,{id:\"default-collision-filter\"}));let R=r?.filter(Y=>Y.constructor===I2),N=(w=_[\"mask-effect\"])===null||w===void 0?void 0:w.didRender,j=this._groupByCollisionGroup(t,I),Q=n[0],et=!this.lastViewport||!this.lastViewport.equals(Q)||N;for(let Y in j){let K=this.collisionFBOs[Y],J=j[Y];K.resize({width:t.canvas.width/ZO,height:t.canvas.height/ZO}),this._render(J,{effects:R,layerFilter:s,onViewportActive:o,views:c,viewport:Q,viewportChanged:et})}}_render(t,{effects:r,layerFilter:i,onViewportActive:s,views:n,viewport:o,viewportChanged:c}){let{collisionGroup:f}=t,_=this.channels[f];if(!_)return;let w=c||t===_||!po(_.layers,t.layers,1)||t.layerBounds.some((I,R)=>!ko(I,_.layerBounds[R]))||t.allLayersLoaded!==_.allLayersLoaded||t.layers.some(I=>I.props.transitions);if(this.channels[f]=t,w){this.lastViewport=o;let I=this.collisionFBOs[f];this.collisionFilterPass.renderCollisionMap(I,{pass:\"collision-filter\",isPicking:!0,layers:t.layers,effects:r,layerFilter:i,viewports:o?[o]:[],onViewportActive:s,views:n,moduleParameters:{dummyCollisionMap:this.dummyCollisionMap,devicePixelRatio:El(I.gl)/ZO}})}}_groupByCollisionGroup(t,r){let i={};for(let s of r){let{collisionGroup:n}=s.props,o=i[n];o||(o={collisionGroup:n,layers:[],layerBounds:[],allLayersLoaded:!0},i[n]=o),o.layers.push(s),o.layerBounds.push(s.getBounds()),s.isLoaded||(o.allLayersLoaded=!1)}for(let s of Object.keys(i))this.collisionFBOs[s]||this.createFBO(t,s),this.channels[s]||(this.channels[s]=i[s]);for(let s of Object.keys(this.collisionFBOs))i[s]||this.destroyFBO(s);return i}getModuleParameters(t){let{collisionGroup:r}=t.props,{collisionFBOs:i,dummyCollisionMap:s}=this;return{collisionFBO:i[r],dummyCollisionMap:s}}cleanup(){this.dummyCollisionMap&&(this.dummyCollisionMap.delete(),this.dummyCollisionMap=void 0),this.channels={};for(let t of Object.keys(this.collisionFBOs))this.destroyFBO(t);this.collisionFBOs={},this.lastViewport=void 0}createFBO(t,r){let{width:i,height:s}=t.canvas,n=new pi(t,{width:i,height:s,parameters:{10241:9728,10240:9728,10242:33071,10243:33071}}),o=new el(t,{format:33189,width:i,height:s});this.collisionFBOs[r]=new yi(t,{id:\"Collision-\".concat(r),width:i,height:s,attachments:{36064:n,36096:o}})}destroyFBO(t){let r=this.collisionFBOs[t];for(let i of Object.values(r.attachments))i.delete();r.delete(),delete this.collisionFBOs[t]}};var hdt={getCollisionPriority:{type:\"accessor\",value:0},collisionEnabled:!0,collisionGroup:{type:\"string\",value:\"default\"},collisionTestProps:{}},xm=class extends Bu{getShaders(){return{modules:[TH]}}draw({uniforms:t,context:r,moduleParameters:i}){let{collisionEnabled:s}=this.props,{collisionFBO:n,drawToCollisionMap:o}=i,c=s&&!!n;t.collision_enabled=c,o&&(this.props=this.clone(this.props.collisionTestProps).props)}initializeState(t,r){var i;if(this.getAttributeManager()===null)return;(i=this.context.deck)===null||i===void 0||i._addDefaultEffect(new C2),this.getAttributeManager().add({collisionPriorities:{size:1,accessor:\"getCollisionPriority\",shaderAttributes:{collisionPriorities:{divisor:0},instanceCollisionPriorities:{divisor:1}}}})}getNeedsPickingBuffer(){return this.props.collisionEnabled}};G(xm,\"defaultProps\",hdt);G(xm,\"extensionName\",\"CollisionFilterExtension\");var Gv=class extends Og{static extensionType;constructor(t,r){super(t,r)}},L2=class extends Gv{static extensionType=\"brushing\";extensionInstance;constructor(t,r,i){super(t,i),this.extensionInstance=new ym,r.initRegularAttribute(\"brushing_enabled\",\"brushingEnabled\"),r.initRegularAttribute(\"brushing_target\",\"brushingTarget\"),r.initRegularAttribute(\"brushing_radius\",\"brushingRadius\"),r.initVectorizedAccessor(\"get_brushing_target\",\"getBrushingTarget\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"brushingEnabled\",\"brushingTarget\",\"brushingRadius\",\"getBrushingTarget\"]}},k2=class extends Gv{static extensionType=\"collision-filter\";extensionInstance;constructor(t,r,i){super(t,i),this.extensionInstance=new xm,r.initRegularAttribute(\"collision_enabled\",\"collisionEnabled\"),r.initRegularAttribute(\"collision_group\",\"collisionGroup\"),r.initRegularAttribute(\"collision_test_props\",\"collisionTestProps\"),r.initVectorizedAccessor(\"get_collision_priority\",\"getCollisionPriority\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"collisionEnabled\",\"collisionGroup\",\"collisionTestProps\",\"getCollisionPriority\"]}},v3=class extends Gv{static extensionType=\"data-filter\";extensionInstance;constructor(t,r,i){super(t,i);let s=this.model.get(\"filter_size\");this.extensionInstance=new vm({filterSize:s}),r.initRegularAttribute(\"filter_enabled\",\"filterEnabled\"),r.initRegularAttribute(\"filter_range\",\"filterRange\"),r.initRegularAttribute(\"filter_soft_range\",\"filterSoftRange\"),r.initRegularAttribute(\"filter_transform_size\",\"filterTransformSize\"),r.initRegularAttribute(\"filter_transform_color\",\"filterTransformColor\"),r.initVectorizedAccessor(\"get_filter_value\",\"getFilterValue\"),r.extensionLayerPropertyNames=[...r.extensionLayerPropertyNames,\"filterEnabled\",\"filterRange\",\"filterSoftRange\",\"filterTransformSize\",\"filterTransformColor\",\"getFilterValue\"]}};async function YO(e,t,r){let i=e.get(\"_extension_type\"),s;switch(i){case L2.extensionType:s=new L2(e,t,r);break;case k2.extensionType:s=new k2(e,t,r);break;case v3.extensionType:s=new v3(e,t,r);break;default:throw new Error(`no known model for extension type ${i}`)}return await s.loadSubModels(),s}var Bg=class extends Og{pickable;visible;opacity;autoHighlight;extensions;extensionLayerPropertyNames=[];constructor(t,r){super(t,r),this.initRegularAttribute(\"pickable\",\"pickable\"),this.initRegularAttribute(\"visible\",\"visible\"),this.initRegularAttribute(\"opacity\",\"opacity\"),this.initRegularAttribute(\"auto_highlight\",\"autoHighlight\"),this.extensions=[]}async loadSubModels(){await this.initLayerExtensions()}extensionInstances(){return this.extensions.map(t=>t.extensionInstance)}extensionProps(){let t={};for(let r of this.extensionLayerPropertyNames)ne(this[r])&&(t[r]=this[r]);return t}onClick(t){t.index&&(this.model.set(\"selected_index\",t.index),this.model.save_changes())}baseLayerProps(){return{extensions:this.extensionInstances(),...this.extensionProps(),id:this.model.model_id,pickable:this.pickable,visible:this.visible,opacity:this.opacity,autoHighlight:this.autoHighlight,onClick:this.onClick.bind(this)}}async initLayerExtensions(){let t=async()=>{let r=this.model.get(\"extensions\");if(!r){this.extensions=[];return}let i=await y3(this.model.widget_manager,r),s=[];for(let n of i){let o=await YO(n,this,this.updateStateCallback);s.push(o)}this.extensions=s};await t(),this.model.off(\"change:extensions\"),this.model.on(\"change:extensions\",t),this.callbacks.set(\"change:extensions\",t)}};var IH=`#define SHADER_NAME arc-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec4 instanceSourceColors;\nattribute vec4 instanceTargetColors;\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec3 instancePickingColors;\nattribute float instanceWidths;\nattribute float instanceHeights;\nattribute float instanceTilts;\n\nuniform bool greatCircle;\nuniform bool useShortestPath;\nuniform float numSegments;\nuniform float opacity;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform int widthUnits;\n\nvarying vec4 vColor;\nvarying vec2 uv;\nvarying float isValid;\n\nfloat paraboloid(float distance, float sourceZ, float targetZ, float ratio) {\n\n float deltaZ = targetZ - sourceZ;\n float dh = distance * instanceHeights;\n if (dh == 0.0) {\n return sourceZ + deltaZ * ratio;\n }\n float unitZ = deltaZ / dh;\n float p2 = unitZ * unitZ + 1.0;\n float dir = step(deltaZ, 0.0);\n float z0 = mix(sourceZ, targetZ, dir);\n float r = mix(ratio, 1.0 - ratio, dir);\n return sqrt(r * (p2 - r)) * dh + z0;\n}\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nfloat getSegmentRatio(float index) {\n return smoothstep(0.0, 1.0, index / (numSegments - 1.0));\n}\n\nvec3 interpolateFlat(vec3 source, vec3 target, float segmentRatio) {\n float distance = length(source.xy - target.xy);\n float z = paraboloid(distance, source.z, target.z, segmentRatio);\n\n float tiltAngle = radians(instanceTilts);\n vec2 tiltDirection = normalize(target.xy - source.xy);\n vec2 tilt = vec2(-tiltDirection.y, tiltDirection.x) * z * sin(tiltAngle);\n\n return vec3(\n mix(source.xy, target.xy, segmentRatio) + tilt,\n z * cos(tiltAngle)\n );\n}\nfloat getAngularDist (vec2 source, vec2 target) {\n vec2 sourceRadians = radians(source);\n vec2 targetRadians = radians(target);\n vec2 sin_half_delta = sin((sourceRadians - targetRadians) / 2.0);\n vec2 shd_sq = sin_half_delta * sin_half_delta;\n\n float a = shd_sq.y + cos(sourceRadians.y) * cos(targetRadians.y) * shd_sq.x;\n return 2.0 * asin(sqrt(a));\n}\n\nvec3 interpolateGreatCircle(vec3 source, vec3 target, vec3 source3D, vec3 target3D, float angularDist, float t) {\n vec2 lngLat;\n if(abs(angularDist - PI) < 0.001) {\n lngLat = (1.0 - t) * source.xy + t * target.xy;\n } else {\n float a = sin((1.0 - t) * angularDist);\n float b = sin(t * angularDist);\n vec3 p = source3D.yxz * a + target3D.yxz * b;\n lngLat = degrees(vec2(atan(p.y, -p.x), atan(p.z, length(p.xy))));\n }\n\n float z = paraboloid(angularDist * EARTH_RADIUS, source.z, target.z, t);\n\n return vec3(lngLat, z);\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n float segmentIndex = positions.x;\n float segmentRatio = getSegmentRatio(segmentIndex);\n float prevSegmentRatio = getSegmentRatio(max(0.0, segmentIndex - 1.0));\n float nextSegmentRatio = getSegmentRatio(min(numSegments - 1.0, segmentIndex + 1.0));\n float indexDir = mix(-1.0, 1.0, step(segmentIndex, 0.0));\n isValid = 1.0;\n\n uv = vec2(segmentRatio, positions.y);\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n vec4 curr;\n vec4 next;\n vec3 source;\n vec3 target;\n\n if ((greatCircle || project_uProjectionMode == PROJECTION_MODE_GLOBE) && project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n source = project_globe_(vec3(instanceSourcePositions.xy, 0.0));\n target = project_globe_(vec3(instanceTargetPositions.xy, 0.0));\n float angularDist = getAngularDist(instanceSourcePositions.xy, instanceTargetPositions.xy);\n\n vec3 prevPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, prevSegmentRatio);\n vec3 currPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, segmentRatio);\n vec3 nextPos = interpolateGreatCircle(instanceSourcePositions, instanceTargetPositions, source, target, angularDist, nextSegmentRatio);\n\n if (abs(currPos.x - prevPos.x) > 180.0) {\n indexDir = -1.0;\n isValid = 0.0;\n } else if (abs(currPos.x - nextPos.x) > 180.0) {\n indexDir = 1.0;\n isValid = 0.0;\n }\n nextPos = indexDir < 0.0 ? prevPos : nextPos;\n nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\n\n if (isValid == 0.0) {\n nextPos.x += nextPos.x > 0.0 ? -360.0 : 360.0;\n float t = ((currPos.x > 0.0 ? 180.0 : -180.0) - currPos.x) / (nextPos.x - currPos.x);\n currPos = mix(currPos, nextPos, t);\n segmentRatio = mix(segmentRatio, nextSegmentRatio, t);\n }\n\n vec3 currPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, segmentRatio);\n vec3 nextPos64Low = mix(instanceSourcePositions64Low, instanceTargetPositions64Low, nextSegmentRatio);\n \n curr = project_position_to_clipspace(currPos, currPos64Low, vec3(0.0), geometry.position);\n next = project_position_to_clipspace(nextPos, nextPos64Low, vec3(0.0));\n \n } else {\n vec3 source_world = instanceSourcePositions;\n vec3 target_world = instanceTargetPositions;\n if (useShortestPath) {\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\n\n float deltaLng = target_world.x - source_world.x;\n if (deltaLng > 180.) target_world.x -= 360.;\n if (deltaLng < -180.) source_world.x -= 360.;\n }\n source = project_position(source_world, instanceSourcePositions64Low);\n target = project_position(target_world, instanceTargetPositions64Low);\n float antiMeridianX = 0.0;\n\n if (useShortestPath) {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n antiMeridianX = -(project_uCoordinateOrigin.x + 180.) / 360. * TILE_SIZE;\n }\n float thresholdRatio = (antiMeridianX - source.x) / (target.x - source.x);\n\n if (prevSegmentRatio <= thresholdRatio && nextSegmentRatio > thresholdRatio) {\n isValid = 0.0;\n indexDir = sign(segmentRatio - thresholdRatio);\n segmentRatio = thresholdRatio;\n }\n }\n\n nextSegmentRatio = indexDir < 0.0 ? prevSegmentRatio : nextSegmentRatio;\n vec3 currPos = interpolateFlat(source, target, segmentRatio);\n vec3 nextPos = interpolateFlat(source, target, nextSegmentRatio);\n\n if (useShortestPath) {\n if (nextPos.x < antiMeridianX) {\n currPos.x += TILE_SIZE;\n nextPos.x += TILE_SIZE;\n }\n }\n\n curr = project_common_position_to_clipspace(vec4(currPos, 1.0));\n next = project_common_position_to_clipspace(vec4(nextPos, 1.0));\n geometry.position = vec4(currPos, 1.0);\n }\n float widthPixels = clamp(\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels\n );\n vec3 offset = vec3(\n getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n DECKGL_FILTER_GL_POSITION(curr, geometry);\n gl_Position = curr + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n\n vec4 color = mix(instanceSourceColors, instanceTargetColors, segmentRatio);\n vColor = vec4(color.rgb, color.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var CH=`#define SHADER_NAME arc-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\nvarying float isValid;\n\nvoid main(void) {\n if (isValid == 0.0) {\n discard;\n }\n\n gl_FragColor = vColor;\n geometry.uv = uv;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var x3=[0,0,0,255],fdt={getSourcePosition:{type:\"accessor\",value:e=>e.sourcePosition},getTargetPosition:{type:\"accessor\",value:e=>e.targetPosition},getSourceColor:{type:\"accessor\",value:x3},getTargetColor:{type:\"accessor\",value:x3},getWidth:{type:\"accessor\",value:1},getHeight:{type:\"accessor\",value:1},getTilt:{type:\"accessor\",value:0},greatCircle:!1,numSegments:{type:\"number\",value:50,min:1},widthUnits:\"pixels\",widthScale:{type:\"number\",value:1,min:0},widthMinPixels:{type:\"number\",value:0,min:0},widthMaxPixels:{type:\"number\",value:Number.MAX_SAFE_INTEGER,min:0}},Tp=class extends hn{constructor(...t){super(...t),G(this,\"state\",void 0)}getBounds(){var t;return(t=this.getAttributeManager())===null||t===void 0?void 0:t.getBounds([\"instanceSourcePositions\",\"instanceTargetPositions\"])}getShaders(){return super.getShaders({vs:IH,fs:CH,modules:[Rs,fo]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getSourcePosition\"},instanceTargetPositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getTargetPosition\"},instanceSourceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getSourceColor\",defaultValue:x3},instanceTargetColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getTargetColor\",defaultValue:x3},instanceWidths:{size:1,transition:!0,accessor:\"getWidth\",defaultValue:1},instanceHeights:{size:1,transition:!0,accessor:\"getHeight\",defaultValue:1},instanceTilts:{size:1,transition:!0,accessor:\"getTilt\",defaultValue:0}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t;if(s.extensionsChanged||s.propsChanged&&r.numSegments!==i.numSegments){var n;let{gl:o}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(o),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{widthUnits:r,widthScale:i,widthMinPixels:s,widthMaxPixels:n,greatCircle:o,wrapLongitude:c}=this.props;this.state.model.setUniforms(t).setUniforms({greatCircle:o,widthUnits:ho[r],widthScale:i,widthMinPixels:s,widthMaxPixels:n,useShortestPath:c}).draw()}_getModel(t){let{id:r,numSegments:i}=this.props,s=[];for(let o=0;o0&&j>0&&(c[I++]=w-n,c[I++]=w-n-1,c[I++]=w-1,c[I++]=w-n,c[I++]=w-1,c[I++]=w),w++}}return{vertexCount:o,positions:_,indices:c,texCoords:f}}function Adt(e){let t=new Float64Array(12);for(let r=0;r 0.5) {\n vTexPos = geometry.worldPosition.xy;\n }\n\n vec4 color = vec4(0.0);\n DECKGL_FILTER_COLOR(color, geometry);\n}\n`;var gdt=`\nvec3 packUVsIntoRGB(vec2 uv) {\n // Extract the top 8 bits. We want values to be truncated down so we can add a fraction\n vec2 uv8bit = floor(uv * 256.);\n\n // Calculate the normalized remainders of u and v parts that do not fit into 8 bits\n // Scale and clamp to 0-1 range\n vec2 uvFraction = fract(uv * 256.);\n vec2 uvFraction4bit = floor(uvFraction * 16.);\n\n // Remainder can be encoded in blue channel, encode as 4 bits for pixel coordinates\n float fractions = uvFraction4bit.x + uvFraction4bit.y * 16.;\n\n return vec3(uv8bit, fractions) / 255.;\n}\n`,kH=`\n#define SHADER_NAME bitmap-layer-fragment-shader\n\n#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform sampler2D bitmapTexture;\n\nvarying vec2 vTexCoord;\nvarying vec2 vTexPos;\n\nuniform float desaturate;\nuniform vec4 transparentColor;\nuniform vec3 tintColor;\nuniform float opacity;\n\nuniform float coordinateConversion;\nuniform vec4 bounds;\n\n/* projection utils */\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / PI / 2.0;\n\n// from degrees to Web Mercator\nvec2 lnglat_to_mercator(vec2 lnglat) {\n float x = lnglat.x;\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\n// from Web Mercator to degrees\nvec2 mercator_to_lnglat(vec2 xy) {\n xy /= WORLD_SCALE;\n return degrees(vec2(\n xy.x - PI,\n atan(exp(xy.y - PI)) * 2.0 - PI * 0.5\n ));\n}\n/* End projection utils */\n\n// apply desaturation\nvec3 color_desaturate(vec3 color) {\n float luminance = (color.r + color.g + color.b) * 0.333333333;\n return mix(color, vec3(luminance), desaturate);\n}\n\n// apply tint\nvec3 color_tint(vec3 color) {\n return color * tintColor;\n}\n\n// blend with background color\nvec4 apply_opacity(vec3 color, float alpha) {\n if (transparentColor.a == 0.0) {\n return vec4(color, alpha);\n }\n float blendedAlpha = alpha + transparentColor.a * (1.0 - alpha);\n float highLightRatio = alpha / blendedAlpha;\n vec3 blendedRGB = mix(transparentColor.rgb, color, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n}\n\nvec2 getUV(vec2 pos) {\n return vec2(\n (pos.x - bounds[0]) / (bounds[2] - bounds[0]),\n (pos.y - bounds[3]) / (bounds[1] - bounds[3])\n );\n}\n\n`.concat(gdt,`\n\nvoid main(void) {\n vec2 uv = vTexCoord;\n if (coordinateConversion < -0.5) {\n vec2 lnglat = mercator_to_lnglat(vTexPos);\n uv = getUV(lnglat);\n } else if (coordinateConversion > 0.5) {\n vec2 commonPos = lnglat_to_mercator(vTexPos);\n uv = getUV(commonPos);\n }\n vec4 bitmapColor = texture2D(bitmapTexture, uv);\n\n gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity);\n\n geometry.uv = uv;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n\n if (picking_uActive && !picking_uAttribute) {\n // Since instance information is not used, we can use picking color for pixel index\n gl_FragColor.rgb = packUVsIntoRGB(uv);\n }\n}\n`);var _dt={image:{type:\"image\",value:null,async:!0},bounds:{type:\"array\",value:[1,0,0,1],compare:!0},_imageCoordinateSystem:Yr.DEFAULT,desaturate:{type:\"number\",min:0,max:1,value:0},transparentColor:{type:\"color\",value:[0,0,0,0]},tintColor:{type:\"color\",value:[255,255,255]},textureParameters:{type:\"object\",ignore:!0}},Mp=class extends hn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:LH,fs:kH,modules:[Rs,fo]})}initializeState(){let t=this.getAttributeManager();t.remove([\"instancePickingColors\"]);let r=!0;t.add({indices:{size:1,isIndexed:!0,update:i=>i.value=this.state.mesh.indices,noAlloc:r},positions:{size:3,type:5130,fp64:this.use64bitPositions(),update:i=>i.value=this.state.mesh.positions,noAlloc:r},texCoords:{size:2,update:i=>i.value=this.state.mesh.texCoords,noAlloc:r}})}updateState({props:t,oldProps:r,changeFlags:i}){let s=this.getAttributeManager();if(i.extensionsChanged){var n;let{gl:o}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(o),s.invalidateAll()}if(t.bounds!==r.bounds){let o=this.state.mesh,c=this._createMesh();this.state.model.setVertexCount(c.vertexCount);for(let f in c)o&&o[f]!==c[f]&&s.invalidate(f);this.setState({mesh:c,...this._getCoordinateUniforms()})}else t._imageCoordinateSystem!==r._imageCoordinateSystem&&this.setState(this._getCoordinateUniforms())}getPickingInfo(t){let{image:r}=this.props,i=t.info;if(!i.color||!r)return i.bitmap=null,i;let{width:s,height:n}=r;i.index=0;let o=ydt(i.color),c=[Math.floor(o[0]*s),Math.floor(o[1]*n)];return i.bitmap={size:{width:s,height:n},uv:o,pixel:c},i}disablePickingIndex(){this.setState({disablePicking:!0})}restorePickingColors(){this.setState({disablePicking:!1})}_updateAutoHighlight(t){super._updateAutoHighlight({...t,color:this.encodePickingColor(0)})}_createMesh(){let{bounds:t}=this.props,r=t;return RH(t)&&(r=[[t[0],t[1]],[t[0],t[3]],[t[2],t[3]],[t[2],t[1]]]),QO(r,this.context.viewport.resolution)}_getModel(t){return t?new un(t,{...this.getShaders(),id:this.props.id,geometry:new Yn({drawMode:4,vertexCount:6}),isInstanced:!1}):null}draw(t){let{uniforms:r,moduleParameters:i}=t,{model:s,coordinateConversion:n,bounds:o,disablePicking:c}=this.state,{image:f,desaturate:_,transparentColor:w,tintColor:I}=this.props;i.pickingActive&&c||f&&s&&s.setUniforms(r).setUniforms({bitmapTexture:f,desaturate:_,transparentColor:w.map(R=>R/255),tintColor:I.slice(0,3).map(R=>R/255),coordinateConversion:n,bounds:o}).draw()}_getCoordinateUniforms(){let{LNGLAT:t,CARTESIAN:r,DEFAULT:i}=Yr,{_imageCoordinateSystem:s}=this.props;if(s!==i){let{bounds:n}=this.props;if(!RH(n))throw new Error(\"_imageCoordinateSystem only supports rectangular bounds\");let o=this.context.viewport.resolution?t:r;if(s=s===t?t:r,s===t&&o===r)return{coordinateConversion:-1,bounds:n};if(s===r&&o===t){let c=va([n[0],n[1]]),f=va([n[2],n[3]]);return{coordinateConversion:1,bounds:[c[0],c[1],f[0],f[1]]}}}return{coordinateConversion:0,bounds:[0,0,0,0]}}};G(Mp,\"layerName\",\"BitmapLayer\");G(Mp,\"defaultProps\",_dt);function ydt(e){let[t,r,i]=e,s=(i&240)/256,n=(i&15)/16;return[(t+n)/256,(r+s)/256]}function RH(e){return Number.isFinite(e[0])}var DH=`#define SHADER_NAME icon-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute vec4 instanceIconFrames;\nattribute float instanceColorModes;\nattribute vec2 instanceOffsets;\nattribute vec2 instancePixelOffset;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;var OH=`#define SHADER_NAME icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float alphaCutoff;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\n float a = texColor.a * opacity * vColor.a;\n\n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color, a);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var vdt=1024,xdt=4,BH=()=>{},FH={10241:9987,10240:9729,10242:33071,10243:33071};function bdt(e){return Math.pow(2,Math.ceil(Math.log2(e)))}function wdt(e,t,r,i){let s=Math.min(r/t.width,i/t.height),n=Math.floor(t.width*s),o=Math.floor(t.height*s);return s===1?{data:t,width:n,height:o}:(e.canvas.height=o,e.canvas.width=n,e.clearRect(0,0,n,o),e.drawImage(t,0,0,t.width,t.height,0,0,n,o),{data:e.canvas,width:n,height:o})}function R2(e){return e&&(e.id||e.url)}function Sdt(e,t,r,i){let s=e.width,n=e.height,o=new pi(e.gl,{width:t,height:r,parameters:i});return oE(e,o,{targetY:0,width:s,height:n}),e.delete(),o}function zH(e,t,r){for(let i=0;io&&(zH(r,c,s),i=0,s=n+s+t,n=0,c=[]),c.push({icon:_,xOffset:i}),i=i+R+t,n=Math.max(n,I)}}return c.length>0&&zH(r,c,s),{mapping:r,rowHeight:n,xOffset:i,yOffset:s,canvasWidth:o,canvasHeight:bdt(n+s+t)}}function Mdt(e,t,r){if(!e||!t)return null;r=r||{};let i={},{iterable:s,objectInfo:n}=Xc(e);for(let o of s){n.index++;let c=t(o,n),f=R2(c);if(!c)throw new Error(\"Icon is missing.\");if(!c.url)throw new Error(\"Icon url is missing.\");!i[f]&&(!r[f]||c.url!==r[f].url)&&(i[f]={...c,source:o,sourceIndex:n.index})}return i}var D2=class{constructor(t,{onUpdate:r=BH,onError:i=BH}){G(this,\"gl\",void 0),G(this,\"onUpdate\",void 0),G(this,\"onError\",void 0),G(this,\"_loadOptions\",null),G(this,\"_texture\",null),G(this,\"_externalTexture\",null),G(this,\"_mapping\",{}),G(this,\"_textureParameters\",null),G(this,\"_pendingCount\",0),G(this,\"_autoPacking\",!1),G(this,\"_xOffset\",0),G(this,\"_yOffset\",0),G(this,\"_rowHeight\",0),G(this,\"_buffer\",xdt),G(this,\"_canvasWidth\",vdt),G(this,\"_canvasHeight\",0),G(this,\"_canvas\",null),this.gl=t,this.onUpdate=r,this.onError=i}finalize(){var t;(t=this._texture)===null||t===void 0||t.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(t){let r=this._autoPacking?R2(t):t;return this._mapping[r]||{}}setProps({loadOptions:t,autoPacking:r,iconAtlas:i,iconMapping:s,textureParameters:n}){if(t&&(this._loadOptions=t),r!==void 0&&(this._autoPacking=r),s&&(this._mapping=s),i){var o;(o=this._texture)===null||o===void 0||o.delete(),this._texture=null,this._externalTexture=i}n&&(this._textureParameters=n)}get isLoaded(){return this._pendingCount===0}packIcons(t,r){if(!this._autoPacking||typeof document>\"u\")return;let i=Object.values(Mdt(t,r,this._mapping)||{});if(i.length>0){let{mapping:s,xOffset:n,yOffset:o,rowHeight:c,canvasHeight:f}=Tdt({icons:i,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=c,this._mapping=s,this._xOffset=n,this._yOffset=o,this._canvasHeight=f,this._texture||(this._texture=new pi(this.gl,{width:this._canvasWidth,height:this._canvasHeight,parameters:this._textureParameters||FH})),this._texture.height!==this._canvasHeight&&(this._texture=Sdt(this._texture,this._canvasWidth,this._canvasHeight,this._textureParameters||FH)),this.onUpdate(),this._canvas=this._canvas||document.createElement(\"canvas\"),this._loadIcons(i)}}_loadIcons(t){let r=this._canvas.getContext(\"2d\",{willReadFrequently:!0});for(let i of t)this._pendingCount++,jA(i.url,this._loadOptions).then(s=>{let n=R2(i),o=this._mapping[n],{x:c,y:f,width:_,height:w}=o,{data:I,width:R,height:N}=wdt(r,s,_,w);this._texture.setSubImageData({data:I,x:c+(_-R)/2,y:f+(w-N)/2,width:R,height:N}),o.width=R,o.height=N,this._texture.generateMipmap(),this.onUpdate()}).catch(s=>{this.onError({url:i.url,source:i.source,sourceIndex:i.sourceIndex,loadOptions:this._loadOptions,error:s})}).finally(()=>{this._pendingCount--})}};var NH=[0,0,0,255],Edt={iconAtlas:{type:\"image\",value:null,async:!0},iconMapping:{type:\"object\",value:{},async:!0},sizeScale:{type:\"number\",value:1,min:0},billboard:!0,sizeUnits:\"pixels\",sizeMinPixels:{type:\"number\",min:0,value:0},sizeMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},alphaCutoff:{type:\"number\",value:.05,min:0,max:1},getPosition:{type:\"accessor\",value:e=>e.position},getIcon:{type:\"accessor\",value:e=>e.icon},getColor:{type:\"accessor\",value:NH},getSize:{type:\"accessor\",value:1},getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]},onIconError:{type:\"function\",value:null,optional:!0},textureParameters:{type:\"object\",ignore:!0}},Ep=class extends hn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:DH,fs:OH,modules:[Rs,fo]})}initializeState(){this.state={iconManager:new D2(this.context.gl,{onUpdate:this._onUpdate.bind(this),onError:this._onError.bind(this)})},this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceSizes:{size:1,transition:!0,accessor:\"getSize\",defaultValue:1},instanceOffsets:{size:2,accessor:\"getIcon\",transform:this.getInstanceOffset},instanceIconFrames:{size:4,accessor:\"getIcon\",transform:this.getInstanceIconFrame},instanceColorModes:{size:1,type:5121,accessor:\"getIcon\",transform:this.getInstanceColorMode},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getColor\",defaultValue:NH},instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instancePixelOffset:{size:2,transition:!0,accessor:\"getPixelOffset\"}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t,n=this.getAttributeManager(),{iconAtlas:o,iconMapping:c,data:f,getIcon:_,textureParameters:w}=r,{iconManager:I}=this.state,R=o||this.internalState.isAsyncPropLoading(\"iconAtlas\");if(I.setProps({loadOptions:r.loadOptions,autoPacking:!R,iconAtlas:o,iconMapping:R?c:null,textureParameters:w}),R?i.iconMapping!==r.iconMapping&&n.invalidate(\"getIcon\"):(s.dataChanged||s.updateTriggersChanged&&(s.updateTriggersChanged.all||s.updateTriggersChanged.getIcon))&&I.packIcons(f,_),s.extensionsChanged){var N;let{gl:j}=this.context;(N=this.state.model)===null||N===void 0||N.delete(),this.state.model=this._getModel(j),n.invalidateAll()}}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(t){super.finalizeState(t),this.state.iconManager.finalize()}draw({uniforms:t}){let{sizeScale:r,sizeMinPixels:i,sizeMaxPixels:s,sizeUnits:n,billboard:o,alphaCutoff:c}=this.props,{iconManager:f}=this.state,_=f.getTexture();_&&this.state.model.setUniforms(t).setUniforms({iconsTexture:_,iconsTextureDim:[_.width,_.height],sizeUnits:ho[n],sizeScale:r,sizeMinPixels:i,sizeMaxPixels:s,billboard:o,alphaCutoff:c}).draw()}_getModel(t){let r=[-1,-1,-1,1,1,1,1,-1];return new un(t,{...this.getShaders(),id:this.props.id,geometry:new Yn({drawMode:6,attributes:{positions:{size:2,value:new Float32Array(r)}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(t){var r;let i=(r=this.getCurrentLayer())===null||r===void 0?void 0:r.props.onIconError;i?i(t):nr.error(t.error.message)()}getInstanceOffset(t){let{width:r,height:i,anchorX:s=r/2,anchorY:n=i/2}=this.state.iconManager.getIconMapping(t);return[r/2-s,i/2-n]}getInstanceColorMode(t){return this.state.iconManager.getIconMapping(t).mask?1:0}getInstanceIconFrame(t){let{x:r,y:i,width:s,height:n}=this.state.iconManager.getIconMapping(t);return[r,i,s,n]}};G(Ep,\"defaultProps\",Edt);G(Ep,\"layerName\",\"IconLayer\");var UH=`#define SHADER_NAME point-cloud-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 instanceNormals;\nattribute vec4 instanceColors;\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusPixels;\nuniform int sizeUnits;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.normal = project_normal(instanceNormals);\n unitPosition = positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n vec3 offset = vec3(positions.xy * project_size_to_pixel(radiusPixels, sizeUnits), 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n vec3 lightColor = lighting_getLightColor(instanceColors.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, instanceColors.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var VH=`#define SHADER_NAME point-cloud-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition);\n\n if (distToCenter > 1.0) {\n discard;\n }\n\n gl_FragColor = vColor;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var jH=[0,0,0,255],GH=[0,0,1],Pdt={sizeUnits:\"pixels\",pointSize:{type:\"number\",min:0,value:10},getPosition:{type:\"accessor\",value:e=>e.position},getNormal:{type:\"accessor\",value:GH},getColor:{type:\"accessor\",value:jH},material:!0,radiusPixels:{deprecatedFor:\"pointSize\"}};function Idt(e){let{header:t,attributes:r}=e;!t||!r||(e.length=t.vertexCount,r.POSITION&&(r.instancePositions=r.POSITION),r.NORMAL&&(r.instanceNormals=r.NORMAL),r.COLOR_0&&(r.instanceColors=r.COLOR_0))}var Pp=class extends hn{getShaders(){return super.getShaders({vs:UH,fs:VH,modules:[Rs,qf,fo]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceNormals:{size:3,transition:!0,accessor:\"getNormal\",defaultValue:GH},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getColor\",defaultValue:jH}})}updateState(t){let{changeFlags:r,props:i}=t;if(super.updateState(t),r.extensionsChanged){var s;let{gl:n}=this.context;(s=this.state.model)===null||s===void 0||s.delete(),this.state.model=this._getModel(n),this.getAttributeManager().invalidateAll()}r.dataChanged&&Idt(i.data)}draw({uniforms:t}){let{pointSize:r,sizeUnits:i}=this.props;this.state.model.setUniforms(t).setUniforms({sizeUnits:ho[i],radiusPixels:r}).draw()}_getModel(t){let r=[];for(let i=0;i<3;i++){let s=i/3*Math.PI*2;r.push(Math.cos(s)*2,Math.sin(s)*2,0)}return new un(t,{...this.getShaders(),id:this.props.id,geometry:new Yn({drawMode:4,attributes:{positions:new Float32Array(r)}}),isInstanced:!0})}};G(Pp,\"layerName\",\"PointCloudLayer\");G(Pp,\"defaultProps\",Pdt);var WH=`#define SHADER_NAME scatterplot-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceRadius;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusScale;\nuniform float radiusMinPixels;\nuniform float radiusMaxPixels;\nuniform float lineWidthScale;\nuniform float lineWidthMinPixels;\nuniform float lineWidthMaxPixels;\nuniform float stroked;\nuniform bool filled;\nuniform bool antialiasing;\nuniform bool billboard;\nuniform int radiusUnits;\nuniform int lineWidthUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n outerRadiusPixels = clamp(\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\n radiusMinPixels, radiusMaxPixels\n );\n float lineWidthPixels = clamp(\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\n lineWidthMinPixels, lineWidthMaxPixels\n );\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\n unitPosition = edgePadding * positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\n \n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = edgePadding * positions * outerRadiusPixels;\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;var HH=`#define SHADER_NAME scatterplot-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool filled;\nuniform float stroked;\nuniform bool antialiasing;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition) * outerRadiusPixels;\n float inCircle = antialiasing ? \n smoothedge(distToCenter, outerRadiusPixels) : \n step(distToCenter, outerRadiusPixels);\n\n if (inCircle == 0.0) {\n discard;\n }\n\n if (stroked > 0.5) {\n float isLine = antialiasing ? \n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\n\n if (filled) {\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\n } else {\n if (isLine == 0.0) {\n discard;\n }\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\n }\n } else if (!filled) {\n discard;\n } else {\n gl_FragColor = vFillColor;\n }\n\n gl_FragColor.a *= inCircle;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var qH=[0,0,0,255],Cdt={radiusUnits:\"meters\",radiusScale:{type:\"number\",min:0,value:1},radiusMinPixels:{type:\"number\",min:0,value:0},radiusMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},lineWidthUnits:\"meters\",lineWidthScale:{type:\"number\",min:0,value:1},lineWidthMinPixels:{type:\"number\",min:0,value:0},lineWidthMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},stroked:!1,filled:!0,billboard:!1,antialiasing:!0,getPosition:{type:\"accessor\",value:e=>e.position},getRadius:{type:\"accessor\",value:1},getFillColor:{type:\"accessor\",value:qH},getLineColor:{type:\"accessor\",value:qH},getLineWidth:{type:\"accessor\",value:1},strokeWidth:{deprecatedFor:\"getLineWidth\"},outline:{deprecatedFor:\"stroked\"},getColor:{deprecatedFor:[\"getFillColor\",\"getLineColor\"]}},Xu=class extends hn{getShaders(){return super.getShaders({vs:WH,fs:HH,modules:[Rs,fo]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceRadius:{size:1,transition:!0,accessor:\"getRadius\",defaultValue:1},instanceFillColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:\"getFillColor\",defaultValue:[0,0,0,255]},instanceLineColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:\"getLineColor\",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:\"getLineWidth\",defaultValue:1}})}updateState(t){if(super.updateState(t),t.changeFlags.extensionsChanged){var r;let{gl:i}=this.context;(r=this.state.model)===null||r===void 0||r.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{radiusUnits:r,radiusScale:i,radiusMinPixels:s,radiusMaxPixels:n,stroked:o,filled:c,billboard:f,antialiasing:_,lineWidthUnits:w,lineWidthScale:I,lineWidthMinPixels:R,lineWidthMaxPixels:N}=this.props;this.state.model.setUniforms(t).setUniforms({stroked:o?1:0,filled:c,billboard:f,antialiasing:_,radiusUnits:ho[r],radiusScale:i,radiusMinPixels:s,radiusMaxPixels:n,lineWidthUnits:ho[w],lineWidthScale:I,lineWidthMinPixels:R,lineWidthMaxPixels:N}).draw()}_getModel(t){let r=[-1,-1,0,1,-1,0,1,1,0,-1,1,0];return new un(t,{...this.getShaders(),id:this.props.id,geometry:new Yn({drawMode:6,vertexCount:4,attributes:{positions:{size:3,value:new Float32Array(r)}}}),isInstanced:!0})}};G(Xu,\"defaultProps\",Cdt);G(Xu,\"layerName\",\"ScatterplotLayer\");var Wv={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function Fg(e,t,r={}){return ZH(e,r)!==t?(Ldt(e,r),!0):!1}function ZH(e,t={}){return Math.sign(b3(e,t))}function b3(e,t={}){let{start:r=0,end:i=e.length}=t,s=t.size||2,n=0;for(let o=r,c=i-s;o0){let s=!0;for(let n=0;nt[2]&&(r|=2),e[1]t[3]&&(r|=8),r}function F2(e,t){let{size:r=2,broken:i=!1,gridResolution:s=10,gridOffset:n=[0,0],startIndex:o=0,endIndex:c=e.length}=t||{},f=(c-o)/r,_=[],w=[_],I=bm(e,0,r,o),R,N,j=$H(I,s,n,[]),Q=[];_c(_,I);for(let et=1;etr&&(_=[],w.push(_),_c(_,I)),N=B2(R,j)}_c(_,R),O2(I,R)}return i?w:w[0]}var YH=0,Rdt=1;function S3(e,t){for(let r=0;r=0?(_c(_,N)&&I.push(Q),ut+=j):I.length&&(I[I.length-1]=YH),O2(et,N),Y=j,K=Q;return[J?{pos:f,types:t&&w}:null,ut?{pos:_,types:t&&I}:null]}function $H(e,t,r,i){let s=Math.floor((e[0]-r[0])/t)*t+r[0],n=Math.floor((e[1]-r[1])/t)*t+r[1];return i[0]=s,i[1]=n,i[2]=s+t,i[3]=n+t,i}function Ddt(e,t,r){r&8?(e[1]+=t,e[3]+=t):r&4?(e[1]-=t,e[3]-=t):r&2?(e[0]+=t,e[2]+=t):r&1&&(e[0]-=t,e[2]-=t)}function Odt(e,t,r,i){let s=1/0,n=-1/0,o=1/0,c=-1/0;for(let f=0;fn?_:n,o=wc?w:c}return i[0][0]=s,i[0][1]=o,i[1][0]=n,i[1][1]=c,i}var Bdt=85.051129;function $O(e,t){let{size:r=2,startIndex:i=0,endIndex:s=e.length,normalize:n=!0}=t||{},o=e.slice(i,s);XH(o,r,0,s-i);let c=F2(o,{size:r,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(n)for(let f of c)KH(f,r);return c}function XO(e,t=null,r){let{size:i=2,normalize:s=!0,edgeTypes:n=!1}=r||{};t=t||[];let o=[],c=[],f=0,_=0;for(let I=0;I<=t.length;I++){let R=t[I]||e.length,N=_,j=Fdt(e,i,f,R);for(let Q=j;Qs&&(s=c,n=o-1)}return n}function zdt(e,t,r,i,s=Bdt){let n=e[r],o=e[i-t];if(Math.abs(n-o)>180){let c=bm(e,0,t,r);c[0]+=Math.round((o-n)/360)*360,_c(e,c),c[1]=Math.sign(c[1])*s,_c(e,c),c[0]=n,_c(e,c)}}function XH(e,t,r,i){let s=e[0],n;for(let o=r;o180||c<-180)&&(n-=Math.round(c/360)*360),e[o]=s=n}}function KH(e,t){let r,i=e.length/t;for(let n=0;n=i),s=s.flatMap(N=>[N[0],N[1]]),Fg(s,Wv.COUNTER_CLOCKWISE));let n=r>0,o=i+1,c=n?o*3+1:i,f=Math.PI*2/i,_=new Uint16Array(n?i*3*2:0),w=new Float32Array(c*3),I=new Float32Array(c*3),R=0;if(n){for(let N=0;N 0.0 && instanceElevations >= 0.0);\n float dotRadius = radius * coverage * shouldRender;\n\n geometry.pickingColor = instancePickingColors;\n vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\n vec3 centroidPosition64Low = instancePositions64Low;\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\n if (radiusUnits == UNIT_METERS) {\n offset = project_size(offset);\n }\n vec3 pos = vec3(offset, 0.);\n DECKGL_FILTER_SIZE(pos, geometry);\n\n gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\n geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var tq=`#version 300 es\n#define SHADER_NAME column-layer-fragment-shader\n\nprecision highp float;\n\nuniform vec3 project_uCameraPosition;\nuniform bool extruded;\nuniform bool isStroke;\n\nout vec4 fragColor;\n\nin vec4 vColor;\n#ifdef FLAT_SHADING\nin vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n fragColor = vColor;\n#ifdef FLAT_SHADING\n if (extruded && !isStroke && !picking_uActive) {\n vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\n }\n#endif\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;var T3=[0,0,0,255],Vdt={diskResolution:{type:\"number\",min:4,value:20},vertices:null,radius:{type:\"number\",min:0,value:1e3},angle:{type:\"number\",value:0},offset:{type:\"array\",value:[0,0]},coverage:{type:\"number\",min:0,max:1,value:1},elevationScale:{type:\"number\",min:0,value:1},radiusUnits:\"meters\",lineWidthUnits:\"meters\",lineWidthScale:1,lineWidthMinPixels:0,lineWidthMaxPixels:Number.MAX_SAFE_INTEGER,extruded:!0,wireframe:!1,filled:!0,stroked:!1,getPosition:{type:\"accessor\",value:e=>e.position},getFillColor:{type:\"accessor\",value:T3},getLineColor:{type:\"accessor\",value:T3},getLineWidth:{type:\"accessor\",value:1},getElevation:{type:\"accessor\",value:1e3},material:!0,getColor:{deprecatedFor:[\"getFillColor\",\"getLineColor\"]}},af=class extends hn{getShaders(){let{gl:t}=this.context,r=!hr(t),i={},s=this.props.flatShading&&Y0(t,Pi.GLSL_DERIVATIVES);return s&&(i.FLAT_SHADING=1),super.getShaders({vs:JH,fs:tq,defines:i,transpileToGLSL100:r,modules:[Rs,s?ky:qf,fo]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceElevations:{size:1,transition:!0,accessor:\"getElevation\"},instanceFillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getFillColor\",defaultValue:T3},instanceLineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:\"getLineColor\",defaultValue:T3},instanceStrokeWidths:{size:1,accessor:\"getLineWidth\",transition:!0}})}updateState(t){super.updateState(t);let{props:r,oldProps:i,changeFlags:s}=t,n=s.extensionsChanged||r.flatShading!==i.flatShading;if(n){var o;let{gl:c}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(c),this.getAttributeManager().invalidateAll()}(n||r.diskResolution!==i.diskResolution||r.vertices!==i.vertices||(r.extruded||r.stroked)!==(i.extruded||i.stroked))&&this._updateGeometry(r)}getGeometry(t,r,i){let s=new N2({radius:1,height:i?2:0,vertices:r,nradial:t}),n=0;if(r)for(let o=0;o=t.length&&(r+=1-t.length/s);let n=r*s;return i[0]=t[n],i[1]=t[n+1],i[2]=s===3&&t[n+2]||0,i}isClosed(t){if(!this.normalize)return!!this.opts.loop;let{positionSize:r}=this,i=t.length-r;return t[0]===t[i]&&t[1]===t[i+1]&&(r===2||t[2]===t[i+2])}};function rq(e){return Array.isArray(e[0])}var iq=`#define SHADER_NAME path-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute float instanceTypes;\nattribute vec3 instanceStartPositions;\nattribute vec3 instanceEndPositions;\nattribute vec3 instanceLeftPositions;\nattribute vec3 instanceRightPositions;\nattribute vec3 instanceLeftPositions64Low;\nattribute vec3 instanceStartPositions64Low;\nattribute vec3 instanceEndPositions64Low;\nattribute vec3 instanceRightPositions64Low;\nattribute float instanceStrokeWidths;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float jointType;\nuniform float capType;\nuniform float miterLimit;\nuniform bool billboard;\nuniform int widthUnits;\n\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nconst float EPSILON = 0.001;\nconst vec3 ZERO_OFFSET = vec3(0.0);\n\nfloat flipIfTrue(bool flag) {\n return -(float(flag) * 2. - 1.);\n}\nvec3 getLineJoinOffset(\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\n vec2 width\n) {\n bool isEnd = positions.x > 0.0;\n float sideOfPath = positions.y;\n float isJoint = float(sideOfPath == 0.0);\n\n vec3 deltaA3 = (currPoint - prevPoint);\n vec3 deltaB3 = (nextPoint - currPoint);\n\n mat3 rotationMatrix;\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\n if (needsRotation) {\n deltaA3 = deltaA3 * rotationMatrix;\n deltaB3 = deltaB3 * rotationMatrix;\n }\n vec2 deltaA = deltaA3.xy / width;\n vec2 deltaB = deltaB3.xy / width;\n\n float lenA = length(deltaA);\n float lenB = length(deltaB);\n\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\n\n vec2 perpA = vec2(-dirA.y, dirA.x);\n vec2 perpB = vec2(-dirB.y, dirB.x);\n vec2 tangent = dirA + dirB;\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\n vec2 miterVec = vec2(-tangent.y, tangent.x);\n vec2 dir = isEnd ? dirA : dirB;\n vec2 perp = isEnd ? perpA : perpB;\n float L = isEnd ? lenA : lenB;\n float sinHalfA = abs(dot(miterVec, perp));\n float cosHalfA = abs(dot(dirA, miterVec));\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\n float cornerPosition = sideOfPath * turnDirection;\n\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\n miterSize = mix(\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\n miterSize,\n step(0.0, cornerPosition)\n );\n\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\n * (sideOfPath + isJoint * turnDirection);\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\n bool isCap = isStartCap || isEndCap;\n if (isCap) {\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\n vJointType = capType;\n } else {\n vJointType = jointType;\n }\n vPathLength = L;\n vCornerOffset = offsetVec;\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\n vMiterLength = isCap ? isJoint : vMiterLength;\n\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\n vPathPosition = vec2(\n dot(offsetFromStartOfPath, perp),\n dot(offsetFromStartOfPath, dir)\n );\n geometry.uv = vPathPosition;\n\n float isValid = step(instanceTypes, 3.5);\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\n\n if (needsRotation) {\n offset = rotationMatrix * offset;\n }\n return offset;\n}\nvoid clipLine(inout vec4 position, vec4 refPosition) {\n if (position.w < EPSILON) {\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\n position = refPosition + (position - refPosition) * r;\n }\n}\n\nvoid main() {\n geometry.pickingColor = instancePickingColors;\n\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n\n float isEnd = positions.x;\n\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\n\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\n\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\n\n geometry.worldPosition = currPosition;\n vec2 widthPixels = vec2(clamp(\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels) / 2.0);\n vec3 width;\n\n if (billboard) {\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\n\n clipLine(prevPositionScreen, currPositionScreen);\n clipLine(nextPositionScreen, currPositionScreen);\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\n\n width = vec3(widthPixels, 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(\n prevPositionScreen.xyz / prevPositionScreen.w,\n currPositionScreen.xyz / currPositionScreen.w,\n nextPositionScreen.xyz / nextPositionScreen.w,\n project_pixel_size_to_clipspace(width.xy)\n );\n\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\n } else {\n prevPosition = project_position(prevPosition, prevPosition64Low);\n currPosition = project_position(currPosition, currPosition64Low);\n nextPosition = project_position(nextPosition, nextPosition64Low);\n\n width = vec3(project_pixel_size(widthPixels), 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\n geometry.position = vec4(currPosition + offset, 1.0);\n gl_Position = project_common_position_to_clipspace(geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var nq=`#define SHADER_NAME path-layer-fragment-shader\n\nprecision highp float;\n\nuniform float miterLimit;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nvoid main(void) {\n geometry.uv = vPathPosition;\n\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\n discard;\n }\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\n discard;\n }\n }\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var sq=[0,0,0,255],Wdt={widthUnits:\"meters\",widthScale:{type:\"number\",min:0,value:1},widthMinPixels:{type:\"number\",min:0,value:0},widthMaxPixels:{type:\"number\",min:0,value:Number.MAX_SAFE_INTEGER},jointRounded:!1,capRounded:!1,miterLimit:{type:\"number\",min:0,value:4},billboard:!1,_pathType:null,getPath:{type:\"accessor\",value:e=>e.path},getColor:{type:\"accessor\",value:sq},getWidth:{type:\"accessor\",value:1},rounded:{deprecatedFor:[\"jointRounded\",\"capRounded\"]}},JO={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e},yc=class extends hn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:iq,fs:nq,modules:[Rs,fo]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({positions:{size:3,vertexOffset:1,type:5130,fp64:this.use64bitPositions(),transition:JO,accessor:\"getPath\",update:this.calculatePositions,noAlloc:!0,shaderAttributes:{instanceLeftPositions:{vertexOffset:0},instanceStartPositions:{vertexOffset:1},instanceEndPositions:{vertexOffset:2},instanceRightPositions:{vertexOffset:3}}},instanceTypes:{size:1,type:5121,update:this.calculateSegmentTypes,noAlloc:!0},instanceStrokeWidths:{size:1,accessor:\"getWidth\",transition:JO,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,accessor:\"getColor\",transition:JO,defaultValue:sq},instancePickingColors:{size:3,type:5121,accessor:(i,{index:s,target:n})=>this.encodePickingColor(i&&i.__source?i.__source.index:s,n)}}),this.setState({pathTesselator:new U2({fp64:this.use64bitPositions()})})}updateState(t){super.updateState(t);let{props:r,changeFlags:i}=t,s=this.getAttributeManager();if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPath)){let{pathTesselator:c}=this.state,f=r.data.attributes||{};c.updateGeometry({data:r.data,geometryBuffer:f.getPath,buffers:f,normalize:!r._pathType,loop:r._pathType===\"loop\",getGeometry:r.getPath,positionFormat:r.positionFormat,wrapLongitude:r.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:i.dataChanged}),this.setState({numInstances:c.instanceCount,startIndices:c.vertexStarts}),i.dataChanged||s.invalidateAll()}if(i.extensionsChanged){var o;let{gl:c}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(c),s.invalidateAll()}}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i}=r,{data:s}=this.props;return s[0]&&s[0].__source&&(r.object=s.find(n=>n.__source.index===i)),r}disablePickingIndex(t){let{data:r}=this.props;if(r[0]&&r[0].__source)for(let i=0;i=1&&e[0].length>=2&&Number.isFinite(e[0][0])}function cpt(e){let t=e[0],r=e[e.length-1];return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]}function upt(e,t,r,i){for(let s=0;sc/t));let n=qv(e),o=i&&t===3;if(r){let c=n.length;n=n.slice();let f=[];for(let _=0;_f&&c>_||(f>_?(r||(n=n.slice()),pq(n,0,2,1)):(r||(n=n.slice()),pq(n,2,0,1)))}return(0,Aq.default)(n,s,t)}var H2=class extends rm{constructor(t){let{fp64:r,IndexType:i=Uint32Array}=t;super({...t,attributes:{positions:{size:3,type:r?Float64Array:Float32Array},vertexValid:{type:Uint8ClampedArray,size:1},indices:{type:i,size:1}}})}get(t){let{attributes:r}=this;return t===\"indices\"?r.indices&&r.indices.subarray(0,this.vertexCount):r[t]}updateGeometry(t){super.updateGeometry(t);let r=this.buffers.indices;if(r)this.vertexCount=(r.value||r).length;else if(this.data&&!this.getGeometry)throw new Error(\"missing indices buffer\")}normalizeGeometry(t){if(this.normalize){let r=L3(t,this.positionSize);return this.opts.resolution?z2(qv(r),W2(r),{size:this.positionSize,gridResolution:this.opts.resolution,edgeTypes:!0}):this.opts.wrapLongitude?XO(qv(r),W2(r),{size:this.positionSize,maxLatitude:86,edgeTypes:!0}):r}return t}getGeometrySize(t){if(_q(t)){let r=0;for(let i of t)r+=this.getGeometrySize(i);return r}return qv(t).length/this.positionSize}getGeometryFromBuffer(t){return this.normalize||!this.buffers.indices?super.getGeometryFromBuffer(t):null}updateGeometryAttributes(t,r){if(t&&_q(t))for(let i of t){let s=this.getGeometrySize(i);r.geometrySize=s,this.updateGeometryAttributes(i,r),r.vertexStart+=s,r.indexStart=this.indexStarts[r.geometryIndex+1]}else this._updateIndices(t,r),this._updatePositions(t,r),this._updateVertexValid(t,r)}_updateIndices(t,{geometryIndex:r,vertexStart:i,indexStart:s}){let{attributes:n,indexStarts:o,typedArrayManager:c}=this,f=n.indices;if(!f||!t)return;let _=s,w=mq(t,this.positionSize,this.opts.preproject,this.opts.full3d);f=c.allocate(f,s+w.length,{copy:!0});for(let I=0;I2?o[f*n+2]:0;s[c*3]=_,s[c*3+1]=w,s[c*3+2]=I}}_updateVertexValid(t,{vertexStart:r,geometrySize:i}){let{positionSize:s}=this,n=this.attributes.vertexValid,o=t&&W2(t);if(t&&t.edgeTypes?n.set(t.edgeTypes,r):n.fill(1,r,r+i),o)for(let c=0;c0&&!Number.isFinite(e[0])}var k3=`\nattribute vec2 vertexPositions;\nattribute float vertexValid;\n\nuniform bool extruded;\nuniform bool isWireframe;\nuniform float elevationScale;\nuniform float opacity;\n\nvarying vec4 vColor;\n\nstruct PolygonProps {\n vec4 fillColors;\n vec4 lineColors;\n vec3 positions;\n vec3 nextPositions;\n vec3 pickingColors;\n vec3 positions64Low;\n vec3 nextPositions64Low;\n float elevations;\n};\n\nvec3 project_offset_normal(vec3 vector) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\n }\n return project_normal(vector);\n}\n\nvoid calculatePosition(PolygonProps props) {\n#ifdef IS_SIDE_VERTEX\n if(vertexValid < 0.5){\n gl_Position = vec4(0.);\n return;\n }\n#endif\n\n vec3 pos;\n vec3 pos64Low;\n vec3 normal;\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\n\n geometry.worldPosition = props.positions;\n geometry.worldPositionAlt = props.nextPositions;\n geometry.pickingColor = props.pickingColors;\n\n#ifdef IS_SIDE_VERTEX\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\n#else\n pos = props.positions;\n pos64Low = props.positions64Low;\n#endif\n\n if (extruded) {\n pos.z += props.elevations * vertexPositions.y * elevationScale;\n }\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n if (extruded) {\n #ifdef IS_SIDE_VERTEX\n normal = vec3(\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\n 0.0);\n normal = project_offset_normal(normal);\n #else\n normal = project_normal(vec3(0.0, 0.0, 1.0));\n #endif\n geometry.normal = normal;\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\n vColor = vec4(lightColor, colors.a * opacity);\n } else {\n vColor = vec4(colors.rgb, colors.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;var yq=`#define SHADER_NAME solid-polygon-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float elevations;\nattribute vec4 fillColors;\nattribute vec4 lineColors;\nattribute vec3 pickingColors;\n\n`.concat(k3,`\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = positions;\n props.positions64Low = positions64Low;\n props.elevations = elevations;\n props.fillColors = fillColors;\n props.lineColors = lineColors;\n props.pickingColors = pickingColors;\n\n calculatePosition(props);\n}\n`);var vq=`#define SHADER_NAME solid-polygon-layer-vertex-shader-side\n#define IS_SIDE_VERTEX\n\n\nattribute vec3 instancePositions;\nattribute vec3 nextPositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 nextPositions64Low;\nattribute float instanceElevations;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\n`.concat(k3,`\n\nvoid main(void) {\n PolygonProps props;\n\n #if RING_WINDING_ORDER_CW == 1\n props.positions = instancePositions;\n props.positions64Low = instancePositions64Low;\n props.nextPositions = nextPositions;\n props.nextPositions64Low = nextPositions64Low;\n #else\n props.positions = nextPositions;\n props.positions64Low = nextPositions64Low;\n props.nextPositions = instancePositions;\n props.nextPositions64Low = instancePositions64Low;\n #endif\n props.elevations = instanceElevations;\n props.fillColors = instanceFillColors;\n props.lineColors = instanceLineColors;\n props.pickingColors = instancePickingColors;\n\n calculatePosition(props);\n}\n`);var xq=`#define SHADER_NAME solid-polygon-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var D3=[0,0,0,255],hpt={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:\"CW\",_full3d:!1,elevationScale:{type:\"number\",min:0,value:1},getPolygon:{type:\"accessor\",value:e=>e.polygon},getElevation:{type:\"accessor\",value:1e3},getFillColor:{type:\"accessor\",value:D3},getLineColor:{type:\"accessor\",value:D3},material:!0},R3={enter:(e,t)=>t.length?t.subarray(t.length-e.length):e},vc=class extends hn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(t){return super.getShaders({vs:t===\"top\"?yq:vq,fs:xq,defines:{RING_WINDING_ORDER_CW:!this.props._normalize&&this.props._windingOrder===\"CCW\"?0:1},modules:[Rs,qf,fo]})}get wrapLongitude(){return!1}initializeState(){let{gl:t,viewport:r}=this.context,{coordinateSystem:i}=this.props,{_full3d:s}=this.props;r.isGeospatial&&i===Yr.DEFAULT&&(i=Yr.LNGLAT);let n;i===Yr.LNGLAT&&(s?n=r.projectPosition.bind(r):n=r.projectFlat.bind(r)),this.setState({numInstances:0,polygonTesselator:new H2({preproject:n,fp64:this.use64bitPositions(),IndexType:!t||Dh(t,Pi.ELEMENT_INDEX_UINT32)?Uint32Array:Uint16Array})});let o=this.getAttributeManager(),c=!0;o.remove([\"instancePickingColors\"]),o.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:c},positions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:R3,accessor:\"getPolygon\",update:this.calculatePositions,noAlloc:c,shaderAttributes:{positions:{vertexOffset:0,divisor:0},instancePositions:{vertexOffset:0,divisor:1},nextPositions:{vertexOffset:1,divisor:1}}},vertexValid:{size:1,divisor:1,type:5121,update:this.calculateVertexValid,noAlloc:c},elevations:{size:1,transition:R3,accessor:\"getElevation\",shaderAttributes:{elevations:{divisor:0},instanceElevations:{divisor:1}}},fillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:R3,accessor:\"getFillColor\",defaultValue:D3,shaderAttributes:{fillColors:{divisor:0},instanceFillColors:{divisor:1}}},lineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:R3,accessor:\"getLineColor\",defaultValue:D3,shaderAttributes:{lineColors:{divisor:0},instanceLineColors:{divisor:1}}},pickingColors:{size:3,type:5121,accessor:(f,{index:_,target:w})=>this.encodePickingColor(f&&f.__source?f.__source.index:_,w),shaderAttributes:{pickingColors:{divisor:0},instancePickingColors:{divisor:1}}}})}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i}=r,{data:s}=this.props;return s[0]&&s[0].__source&&(r.object=s.find(n=>n.__source.index===i)),r}disablePickingIndex(t){let{data:r}=this.props;if(r[0]&&r[0].__source)for(let i=0;if.delete()),this.setState(this._getModels(this.context.gl)),n.invalidateAll()}}updateGeometry({props:t,oldProps:r,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPolygon)){let{polygonTesselator:n}=this.state,o=t.data.attributes||{};n.updateGeometry({data:t.data,normalize:t._normalize,geometryBuffer:o.getPolygon,buffers:o,getGeometry:t.getPolygon,positionFormat:t.positionFormat,wrapLongitude:t.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:i.dataChanged,full3d:t._full3d}),this.setState({numInstances:n.instanceCount,startIndices:n.vertexStarts}),i.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(t){let{id:r,filled:i,extruded:s}=this.props,n,o;if(i){let c=this.getShaders(\"top\");c.defines.NON_INSTANCED_MODEL=1,n=new un(t,{...c,id:\"\".concat(r,\"-top\"),drawMode:4,attributes:{vertexPositions:new Float32Array([0,1])},uniforms:{isWireframe:!1,isSideVertex:!1},vertexCount:0,isIndexed:!0})}return s&&(o=new un(t,{...this.getShaders(\"side\"),id:\"\".concat(r,\"-side\"),geometry:new Yn({drawMode:1,vertexCount:4,attributes:{vertexPositions:{size:2,value:new Float32Array([1,0,0,0,0,1,1,1])}}}),instanceCount:0,isInstanced:1}),o.userData.excludeAttributes={indices:!0}),{models:[o,n].filter(Boolean),topModel:n,sideModel:o}}calculateIndices(t){let{polygonTesselator:r}=this.state;t.startIndices=r.indexStarts,t.value=r.get(\"indices\")}calculatePositions(t){let{polygonTesselator:r}=this.state;t.startIndices=r.vertexStarts,t.value=r.get(\"positions\")}calculateVertexValid(t){t.value=this.state.polygonTesselator.get(\"vertexValid\")}};G(vc,\"defaultProps\",hpt);G(vc,\"layerName\",\"SolidPolygonLayer\");function O3({data:e,getIndex:t,dataRange:r,replace:i}){let{startRow:s=0,endRow:n=1/0}=r,o=e.length,c=o,f=o;for(let R=0;RR&&N>=s&&(c=R),N>=n){f=R;break}}let _=c,I=f-c!==i.length?e.slice(f):void 0;for(let R=0;Re.polygon},getFillColor:{type:\"accessor\",value:fpt},getLineColor:{type:\"accessor\",value:bq},getLineWidth:{type:\"accessor\",value:1},getElevation:{type:\"accessor\",value:1e3},material:!0},lf=class extends qi{initializeState(){this.state={paths:[]},this.props.getLineDashArray&&nr.removed(\"getLineDashArray\",\"PathStyleExtension\")()}updateState({changeFlags:t}){let r=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getPolygon);if(r&&Array.isArray(t.dataChanged)){let i=this.state.paths.slice(),s=t.dataChanged.map(n=>O3({data:i,getIndex:o=>o.__source.index,dataRange:n,replace:this._getPaths(n)}));this.setState({paths:i,pathsDiff:s})}else r&&this.setState({paths:this._getPaths(),pathsDiff:null})}_getPaths(t={}){let{data:r,getPolygon:i,positionFormat:s,_normalize:n}=this.props,o=[],c=s===\"XY\"?2:3,{startRow:f,endRow:_}=t,{iterable:w,objectInfo:I}=Xc(r,f,_);for(let R of w){I.index++;let N=i(R,I);n&&(N=L3(N,c));let{holeIndices:j}=N,Q=N.positions||N;if(j)for(let et=0;et<=j.length;et++){let Y=Q.slice(j[et-1]||0,j[et]||Q.length);o.push(this.getSubLayerRow({path:Y},R,I.index))}else o.push(this.getSubLayerRow({path:Q},R,I.index))}return o}renderLayers(){let{data:t,_dataDiff:r,stroked:i,filled:s,extruded:n,wireframe:o,_normalize:c,_windingOrder:f,elevationScale:_,transitions:w,positionFormat:I}=this.props,{lineWidthUnits:R,lineWidthScale:N,lineWidthMinPixels:j,lineWidthMaxPixels:Q,lineJointRounded:et,lineMiterLimit:Y,lineDashJustified:K}=this.props,{getFillColor:J,getLineColor:ut,getLineWidth:Pt,getLineDashArray:kt,getElevation:Kt,getPolygon:Zt,updateTriggers:ce,material:ue}=this.props,{paths:Ge,pathsDiff:tr}=this.state,er=this.getSubLayerClass(\"fill\",vc),Lr=this.getSubLayerClass(\"stroke\",yc),zi=this.shouldRenderSubLayer(\"fill\",Ge)&&new er({_dataDiff:r,extruded:n,elevationScale:_,filled:s,wireframe:o,_normalize:c,_windingOrder:f,getElevation:Kt,getFillColor:J,getLineColor:n&&o?ut:bq,material:ue,transitions:w},this.getSubLayerProps({id:\"fill\",updateTriggers:ce&&{getPolygon:ce.getPolygon,getElevation:ce.getElevation,getFillColor:ce.getFillColor,lineColors:n&&o,getLineColor:ce.getLineColor}}),{data:t,positionFormat:I,getPolygon:Zt}),No=!n&&i&&this.shouldRenderSubLayer(\"stroke\",Ge)&&new Lr({_dataDiff:tr&&(()=>tr),widthUnits:R,widthScale:N,widthMinPixels:j,widthMaxPixels:Q,jointRounded:et,miterLimit:Y,dashJustified:K,_pathType:\"loop\",transitions:w&&{getWidth:w.getLineWidth,getColor:w.getLineColor,getPath:w.getPolygon},getColor:this.getSubLayerAccessor(ut),getWidth:this.getSubLayerAccessor(Pt),getDashArray:this.getSubLayerAccessor(kt)},this.getSubLayerProps({id:\"stroke\",updateTriggers:ce&&{getWidth:ce.getLineWidth,getColor:ce.getLineColor,getDashArray:ce.getLineDashArray}}),{data:Ge,positionFormat:I,getPath:Ic=>Ic.path});return[!n&&zi,No,n&&zi]}};G(lf,\"layerName\",\"PolygonLayer\");G(lf,\"defaultProps\",dpt);function wq(e,t){if(!e)return null;let r=\"startIndices\"in e?e.startIndices[t]:t,i=e.featureIds.value[r];return r!==-1?ppt(e,i,r):null}function ppt(e,t,r){let i={properties:{...e.properties[t]}};for(let s in e.numericProps)i.properties[s]=e.numericProps[s].value[r];return i}function Sq(e,t){let r={points:null,lines:null,polygons:null};for(let i in r){let s=e[i].globalFeatureIds.value;r[i]=new Uint8ClampedArray(s.length*3);let n=[];for(let o=0;o 0.0) {\n float inFill = alpha;\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\n color = mix(outlineColor, vColor, inFill);\n alpha = inBorder;\n }\n }\n float a = alpha * color.a;\n \n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color.rgb, a * opacity);\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var sB=192/256,Mq=[],Apt={getIconOffsets:{type:\"accessor\",value:e=>e.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:\"color\",value:[0,0,0,255]}},Ng=class extends Ep{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return{...super.getShaders(),fs:Tq}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:\"getIconOffsets\"},instancePickingColors:{type:5121,size:3,accessor:(r,{index:i,target:s})=>this.encodePickingColor(i,s)}})}updateState(t){super.updateState(t);let{props:r,oldProps:i}=t,{outlineColor:s}=r;s!==i.outlineColor&&(s=s.map(n=>n/255),s[3]=Number.isFinite(s[3])?s[3]:1,this.setState({outlineColor:s})),!r.sdf&&r.outlineWidth&&nr.warn(\"\".concat(this.id,\": fontSettings.sdf is required to render outline\"))()}draw(t){let{sdf:r,smoothing:i,outlineWidth:s}=this.props,{outlineColor:n}=this.state,o=s?Math.max(i,sB*(1-s)):-1;if(t.uniforms={...t.uniforms,sdfBuffer:sB,outlineBuffer:o,gamma:i,sdf:!!r,outlineColor:n},super.draw(t),r&&s){let{iconManager:c}=this.state;c.getTexture()&&this.state.model.draw({uniforms:{outlineBuffer:sB}})}}getInstanceOffset(t){return t?Array.from(t).flatMap(r=>super.getInstanceOffset(r)):Mq}getInstanceColorMode(t){return 1}getInstanceIconFrame(t){return t?Array.from(t).flatMap(r=>super.getInstanceIconFrame(r)):Mq}};G(Ng,\"defaultProps\",Apt);G(Ng,\"layerName\",\"MultiIconLayer\");var q2=class{constructor({fontSize:t=24,buffer:r=3,radius:i=8,cutoff:s=.25,fontFamily:n=\"sans-serif\",fontWeight:o=\"normal\",fontStyle:c=\"normal\"}={}){this.buffer=r,this.cutoff=s,this.radius=i;let f=this.size=t+r*4,_=this._createCanvas(f),w=this.ctx=_.getContext(\"2d\",{willReadFrequently:!0});w.font=`${c} ${o} ${t}px ${n}`,w.textBaseline=\"alphabetic\",w.textAlign=\"left\",w.fillStyle=\"black\",this.gridOuter=new Float64Array(f*f),this.gridInner=new Float64Array(f*f),this.f=new Float64Array(f),this.z=new Float64Array(f+1),this.v=new Uint16Array(f)}_createCanvas(t){let r=document.createElement(\"canvas\");return r.width=r.height=t,r}draw(t){let{width:r,actualBoundingBoxAscent:i,actualBoundingBoxDescent:s,actualBoundingBoxLeft:n,actualBoundingBoxRight:o}=this.ctx.measureText(t),c=Math.ceil(i),f=0,_=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-n))),w=Math.min(this.size-this.buffer,c+Math.ceil(s)),I=_+2*this.buffer,R=w+2*this.buffer,N=Math.max(I*R,0),j=new Uint8ClampedArray(N),Q={data:j,width:I,height:R,glyphWidth:_,glyphHeight:w,glyphTop:c,glyphLeft:f,glyphAdvance:r};if(_===0||w===0)return Q;let{ctx:et,buffer:Y,gridInner:K,gridOuter:J}=this;et.clearRect(Y,Y,_,w),et.fillText(t,Y,Y+c);let ut=et.getImageData(Y,Y,_,w);J.fill(1e20,0,N),K.fill(0,0,N);for(let Pt=0;Pt0?ce*ce:0,K[Zt]=ce<0?ce*ce:0}}Eq(J,0,0,I,R,I,this.f,this.v,this.z),Eq(K,Y,Y,_,w,I,this.f,this.v,this.z);for(let Pt=0;Pt-1);f++,n[f]=c,o[f]=_,o[f+1]=1e20}for(let c=0,f=0;cs&&(_=0,f++),n[I]={x:_+i,y:c+f*w+i,width:R,height:w,layoutWidth:R,layoutHeight:r},_+=R+i*2}return{mapping:n,xOffset:_,yOffset:c+f*w,canvasHeight:_pt(c+(f+1)*w)}}function Cq(e,t,r,i){let s=0;for(let o=t;oi&&(oc){let I=Cq(e,c,f,s);_+I>i&&(oi&&(I=Lq(e,c,f,i,s,n),o=n[n.length-1])),c=f,_+=I}return _}function vpt(e,t,r,i,s=0,n){n===void 0&&(n=e.length);let o=[];return t===\"break-all\"?Lq(e,s,n,r,i,o):ypt(e,s,n,r,i,o),o}function xpt(e,t,r,i,s,n){let o=0,c=0;for(let f=t;f0,I=[0,0],R=[0,0],N=0,j=0,Q=0;for(let Y=0;Y<=o;Y++){let K=n[Y];if((K===`\n`||Y===o)&&(Q=Y),Q>j){let J=w?vpt(n,r,i,s,j,Q):gpt;for(let ut=0;ut<=J.length;ut++){let Pt=ut===0?j:J[ut-1],kt=ut1||f>0){let N=e.constructor;R=new N(_);for(let j=0;j<_;j++)R[j]=e[j*c+f]}for(let N=0;N=0&&this._order.splice(r,1)}_appendOrder(t){this._order.push(t)}};function bpt(){let e=[];for(let t=32;t<128;t++)e.push(String.fromCharCode(t));return e}var Ug={fontFamily:\"Monaco, monospace\",fontWeight:\"normal\",characterSet:bpt(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},Dq=1024,Oq=.9,Bq=1.2,zq=3,B3=new Zv(zq);function wpt(e,t){let r;typeof t==\"string\"?r=new Set(Array.from(t)):r=new Set(t);let i=B3.get(e);if(!i)return r;for(let s in i.mapping)r.has(s)&&r.delete(s);return r}function Spt(e,t){for(let r=0;r=zq,\"Invalid cache limit\"),B3=new Zv(e)}var Z2=class{constructor(){G(this,\"props\",{...Ug}),G(this,\"_key\",void 0),G(this,\"_atlas\",void 0)}get texture(){return this._atlas}get mapping(){return this._atlas&&this._atlas.mapping}get scale(){let{fontSize:t,buffer:r}=this.props;return(t*Bq+r*2)/t}setProps(t={}){Object.assign(this.props,t),this._key=this._getKey();let r=wpt(this._key,this.props.characterSet),i=B3.get(this._key);if(i&&r.size===0){this._atlas!==i&&(this._atlas=i);return}let s=this._generateFontAtlas(r,i);this._atlas=s,B3.set(this._key,s)}_generateFontAtlas(t,r){let{fontFamily:i,fontWeight:s,fontSize:n,buffer:o,sdf:c,radius:f,cutoff:_}=this.props,w=r&&r.data;w||(w=document.createElement(\"canvas\"),w.width=Dq);let I=w.getContext(\"2d\",{willReadFrequently:!0});Fq(I,i,n,s);let{mapping:R,canvasHeight:N,xOffset:j,yOffset:Q}=Iq({getFontWidth:et=>I.measureText(et).width,fontHeight:n*Bq,buffer:o,characterSet:t,maxCanvasWidth:Dq,...r&&{mapping:r.mapping,xOffset:r.xOffset,yOffset:r.yOffset}});if(w.height!==N){let et=I.getImageData(0,0,w.width,w.height);w.height=N,I.putImageData(et,0,0)}if(Fq(I,i,n,s),c){let et=new q2({fontSize:n,buffer:o,radius:f,cutoff:_,fontFamily:i,fontWeight:\"\".concat(s)});for(let Y of t){let{data:K,width:J,height:ut,glyphTop:Pt}=et.draw(Y);R[Y].width=J,R[Y].layoutOffsetY=n*Oq-Pt;let kt=I.createImageData(J,ut);Spt(K,kt),I.putImageData(kt,R[Y].x,R[Y].y)}}else for(let et of t)I.fillText(et,R[et].x,R[et].y+o+n*Oq);return{xOffset:j,yOffset:Q,mapping:R,data:w,width:w.width,height:w.height}}_getKey(){let{fontFamily:t,fontWeight:r,fontSize:i,buffer:s,sdf:n,radius:o,cutoff:c}=this.props;return n?\"\".concat(t,\" \").concat(r,\" \").concat(i,\" \").concat(s,\" \").concat(o,\" \").concat(c):\"\".concat(t,\" \").concat(r,\" \").concat(i,\" \").concat(s)}};var Uq=`#define SHADER_NAME text-background-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceRects;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec2 instancePixelOffsets;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;var Vq=`#define SHADER_NAME text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n if (stroked) {\n float distToEdge = min(\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\n );\n float isBorder = smoothedge(distToEdge, vLineWidth);\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\n } else {\n gl_FragColor = vFillColor;\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var Tpt={billboard:!0,sizeScale:1,sizeUnits:\"pixels\",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,padding:{type:\"array\",value:[0,0,0,0]},getPosition:{type:\"accessor\",value:e=>e.position},getSize:{type:\"accessor\",value:1},getAngle:{type:\"accessor\",value:0},getPixelOffset:{type:\"accessor\",value:[0,0]},getBoundingRect:{type:\"accessor\",value:[0,0,0,0]},getFillColor:{type:\"accessor\",value:[0,0,0,255]},getLineColor:{type:\"accessor\",value:[0,0,0,255]},getLineWidth:{type:\"accessor\",value:1}},Vg=class extends hn{constructor(...t){super(...t),G(this,\"state\",void 0)}getShaders(){return super.getShaders({vs:Uq,fs:Vq,modules:[Rs,fo]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:\"getPosition\"},instanceSizes:{size:1,transition:!0,accessor:\"getSize\",defaultValue:1},instanceAngles:{size:1,transition:!0,accessor:\"getAngle\"},instanceRects:{size:4,accessor:\"getBoundingRect\"},instancePixelOffsets:{size:2,transition:!0,accessor:\"getPixelOffset\"},instanceFillColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:\"getFillColor\",defaultValue:[0,0,0,255]},instanceLineColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:\"getLineColor\",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:\"getLineWidth\",defaultValue:1}})}updateState(t){super.updateState(t);let{changeFlags:r}=t;if(r.extensionsChanged){var i;let{gl:s}=this.context;(i=this.state.model)===null||i===void 0||i.delete(),this.state.model=this._getModel(s),this.getAttributeManager().invalidateAll()}}draw({uniforms:t}){let{billboard:r,sizeScale:i,sizeUnits:s,sizeMinPixels:n,sizeMaxPixels:o,getLineWidth:c}=this.props,{padding:f}=this.props;f.length<4&&(f=[f[0],f[1],f[0],f[1]]),this.state.model.setUniforms(t).setUniforms({billboard:r,stroked:!!c,padding:f,sizeUnits:ho[s],sizeScale:i,sizeMinPixels:n,sizeMaxPixels:o}).draw()}_getModel(t){let r=[0,0,1,0,1,1,0,1];return new un(t,{...this.getShaders(),id:this.props.id,geometry:new Yn({drawMode:6,vertexCount:4,attributes:{positions:{size:2,value:new Float32Array(r)}}}),isInstanced:!0})}};G(Vg,\"defaultProps\",Tpt);G(Vg,\"layerName\",\"TextBackgroundLayer\");var jq={start:1,middle:0,end:-1},Gq={top:1,center:0,bottom:-1},oB=[0,0,0,255],Mpt=1,Ept={billboard:!0,sizeScale:1,sizeUnits:\"pixels\",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,background:!1,getBackgroundColor:{type:\"accessor\",value:[255,255,255,255]},getBorderColor:{type:\"accessor\",value:oB},getBorderWidth:{type:\"accessor\",value:0},backgroundPadding:{type:\"array\",value:[0,0,0,0]},characterSet:{type:\"object\",value:Ug.characterSet},fontFamily:Ug.fontFamily,fontWeight:Ug.fontWeight,lineHeight:Mpt,outlineWidth:{type:\"number\",value:0,min:0},outlineColor:{type:\"color\",value:oB},fontSettings:{type:\"object\",value:{},compare:1},wordBreak:\"break-word\",maxWidth:{type:\"number\",value:-1},getText:{type:\"accessor\",value:e=>e.text},getPosition:{type:\"accessor\",value:e=>e.position},getColor:{type:\"accessor\",value:oB},getSize:{type:\"accessor\",value:32},getAngle:{type:\"accessor\",value:0},getTextAnchor:{type:\"accessor\",value:\"middle\"},getAlignmentBaseline:{type:\"accessor\",value:\"center\"},getPixelOffset:{type:\"accessor\",value:[0,0]},backgroundColor:{deprecatedFor:[\"background\",\"getBackgroundColor\"]}},cf=class extends qi{constructor(...t){super(...t),G(this,\"state\",void 0),G(this,\"getBoundingRect\",(r,i)=>{let{size:[s,n]}=this.transformParagraph(r,i),{fontSize:o}=this.state.fontAtlasManager.props;s/=o,n/=o;let{getTextAnchor:c,getAlignmentBaseline:f}=this.props,_=jq[typeof c==\"function\"?c(r,i):c],w=Gq[typeof f==\"function\"?f(r,i):f];return[(_-1)*s/2,(w-1)*n/2,s,n]}),G(this,\"getIconOffsets\",(r,i)=>{let{getTextAnchor:s,getAlignmentBaseline:n}=this.props,{x:o,y:c,rowWidth:f,size:[_,w]}=this.transformParagraph(r,i),I=jq[typeof s==\"function\"?s(r,i):s],R=Gq[typeof n==\"function\"?n(r,i):n],N=o.length,j=new Array(N*2),Q=0;for(let et=0;et0&&nr.warn(\"v8.9 breaking change: TextLayer maxWidth is now relative to text size\")()}updateState(t){let{props:r,oldProps:i,changeFlags:s}=t;(s.dataChanged||s.updateTriggersChanged&&(s.updateTriggersChanged.all||s.updateTriggersChanged.getText))&&this._updateText(),(this._updateFontAtlas()||r.lineHeight!==i.lineHeight||r.wordBreak!==i.wordBreak||r.maxWidth!==i.maxWidth)&&this.setState({styleVersion:this.state.styleVersion+1})}getPickingInfo({info:t}){return t.object=t.index>=0?this.props.data[t.index]:null,t}_updateFontAtlas(){let{fontSettings:t,fontFamily:r,fontWeight:i}=this.props,{fontAtlasManager:s,characterSet:n}=this.state,o={...t,characterSet:n,fontFamily:r,fontWeight:i};if(!s.mapping)return s.setProps(o),!0;for(let c in o)if(o[c]!==s.props[c])return s.setProps(o),!0;return!1}_updateText(){var t;let{data:r,characterSet:i}=this.props,s=(t=r.attributes)===null||t===void 0?void 0:t.getText,{getText:n}=this.props,o=r.startIndices,c,f=i===\"auto\"&&new Set;if(s&&o){let{texts:_,characterCount:w}=Rq({...ArrayBuffer.isView(s)?{value:s}:s,length:r.length,startIndices:o,characterSet:f});c=w,n=(I,{index:R})=>_[R]}else{let{iterable:_,objectInfo:w}=Xc(r);o=[0],c=0;for(let I of _){w.index++;let R=Array.from(n(I,w)||\"\");f&&R.forEach(f.add,f),c+=R.length,o.push(c)}}this.setState({getText:n,startIndices:o,numInstances:c,characterSet:f||i})}transformParagraph(t,r){let{fontAtlasManager:i}=this.state,s=i.mapping,n=this.state.getText,{wordBreak:o,lineHeight:c,maxWidth:f}=this.props,_=n(t,r)||\"\";return kq(_,c,o,f*i.props.fontSize,s)}renderLayers(){let{startIndices:t,numInstances:r,getText:i,fontAtlasManager:{scale:s,texture:n,mapping:o},styleVersion:c}=this.state,{data:f,_dataDiff:_,getPosition:w,getColor:I,getSize:R,getAngle:N,getPixelOffset:j,getBackgroundColor:Q,getBorderColor:et,getBorderWidth:Y,backgroundPadding:K,background:J,billboard:ut,fontSettings:Pt,outlineWidth:kt,outlineColor:Kt,sizeScale:Zt,sizeUnits:ce,sizeMinPixels:ue,sizeMaxPixels:Ge,transitions:tr,updateTriggers:er}=this.props,Lr=this.getSubLayerClass(\"characters\",Ng),zi=this.getSubLayerClass(\"background\",Vg);return[J&&new zi({getFillColor:Q,getLineColor:et,getLineWidth:Y,padding:K,getPosition:w,getSize:R,getAngle:N,getPixelOffset:j,billboard:ut,sizeScale:Zt,sizeUnits:ce,sizeMinPixels:ue,sizeMaxPixels:Ge,transitions:tr&&{getPosition:tr.getPosition,getAngle:tr.getAngle,getSize:tr.getSize,getFillColor:tr.getBackgroundColor,getLineColor:tr.getBorderColor,getLineWidth:tr.getBorderWidth,getPixelOffset:tr.getPixelOffset}},this.getSubLayerProps({id:\"background\",updateTriggers:{getPosition:er.getPosition,getAngle:er.getAngle,getSize:er.getSize,getFillColor:er.getBackgroundColor,getLineColor:er.getBorderColor,getLineWidth:er.getBorderWidth,getPixelOffset:er.getPixelOffset,getBoundingRect:{getText:er.getText,getTextAnchor:er.getTextAnchor,getAlignmentBaseline:er.getAlignmentBaseline,styleVersion:c}}}),{data:f.attributes&&f.attributes.background?{length:f.length,attributes:f.attributes.background}:f,_dataDiff:_,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new Lr({sdf:Pt.sdf,smoothing:Number.isFinite(Pt.smoothing)?Pt.smoothing:Ug.smoothing,outlineWidth:kt/(Pt.radius||Ug.radius),outlineColor:Kt,iconAtlas:n,iconMapping:o,getPosition:w,getColor:I,getSize:R,getAngle:N,getPixelOffset:j,billboard:ut,sizeScale:Zt*s,sizeUnits:ce,sizeMinPixels:ue*s,sizeMaxPixels:Ge*s,transitions:tr&&{getPosition:tr.getPosition,getAngle:tr.getAngle,getColor:tr.getColor,getSize:tr.getSize,getPixelOffset:tr.getPixelOffset}},this.getSubLayerProps({id:\"characters\",updateTriggers:{all:er.getText,getPosition:er.getPosition,getAngle:er.getAngle,getColor:er.getColor,getSize:er.getSize,getPixelOffset:er.getPixelOffset,getIconOffsets:{getTextAnchor:er.getTextAnchor,getAlignmentBaseline:er.getAlignmentBaseline,styleVersion:c}}}),{data:f,_dataDiff:_,startIndices:t,numInstances:r,getIconOffsets:this.getIconOffsets,getIcon:i})]}static set fontAtlasCacheLimit(t){Nq(t)}};G(cf,\"defaultProps\",Ept);G(cf,\"layerName\",\"TextLayer\");var Y2={circle:{type:Xu,props:{filled:\"filled\",stroked:\"stroked\",lineWidthMaxPixels:\"lineWidthMaxPixels\",lineWidthMinPixels:\"lineWidthMinPixels\",lineWidthScale:\"lineWidthScale\",lineWidthUnits:\"lineWidthUnits\",pointRadiusMaxPixels:\"radiusMaxPixels\",pointRadiusMinPixels:\"radiusMinPixels\",pointRadiusScale:\"radiusScale\",pointRadiusUnits:\"radiusUnits\",pointAntialiasing:\"antialiasing\",pointBillboard:\"billboard\",getFillColor:\"getFillColor\",getLineColor:\"getLineColor\",getLineWidth:\"getLineWidth\",getPointRadius:\"getRadius\"}},icon:{type:Ep,props:{iconAtlas:\"iconAtlas\",iconMapping:\"iconMapping\",iconSizeMaxPixels:\"sizeMaxPixels\",iconSizeMinPixels:\"sizeMinPixels\",iconSizeScale:\"sizeScale\",iconSizeUnits:\"sizeUnits\",iconAlphaCutoff:\"alphaCutoff\",iconBillboard:\"billboard\",getIcon:\"getIcon\",getIconAngle:\"getAngle\",getIconColor:\"getColor\",getIconPixelOffset:\"getPixelOffset\",getIconSize:\"getSize\"}},text:{type:cf,props:{textSizeMaxPixels:\"sizeMaxPixels\",textSizeMinPixels:\"sizeMinPixels\",textSizeScale:\"sizeScale\",textSizeUnits:\"sizeUnits\",textBackground:\"background\",textBackgroundPadding:\"backgroundPadding\",textFontFamily:\"fontFamily\",textFontWeight:\"fontWeight\",textLineHeight:\"lineHeight\",textMaxWidth:\"maxWidth\",textOutlineColor:\"outlineColor\",textOutlineWidth:\"outlineWidth\",textWordBreak:\"wordBreak\",textCharacterSet:\"characterSet\",textBillboard:\"billboard\",textFontSettings:\"fontSettings\",getText:\"getText\",getTextAngle:\"getAngle\",getTextColor:\"getColor\",getTextPixelOffset:\"getPixelOffset\",getTextSize:\"getSize\",getTextAnchor:\"getTextAnchor\",getTextAlignmentBaseline:\"getAlignmentBaseline\",getTextBackgroundColor:\"getBackgroundColor\",getTextBorderColor:\"getBorderColor\",getTextBorderWidth:\"getBorderWidth\"}}},Q2={type:yc,props:{lineWidthUnits:\"widthUnits\",lineWidthScale:\"widthScale\",lineWidthMinPixels:\"widthMinPixels\",lineWidthMaxPixels:\"widthMaxPixels\",lineJointRounded:\"jointRounded\",lineCapRounded:\"capRounded\",lineMiterLimit:\"miterLimit\",lineBillboard:\"billboard\",getLineColor:\"getColor\",getLineWidth:\"getWidth\"}},F3={type:vc,props:{extruded:\"extruded\",filled:\"filled\",wireframe:\"wireframe\",elevationScale:\"elevationScale\",material:\"material\",_full3d:\"_full3d\",getElevation:\"getElevation\",getFillColor:\"getFillColor\",getLineColor:\"getLineColor\"}};function Yv({type:e,props:t}){let r={};for(let i in t)r[i]=e.defaultProps[t[i]];return r}function z3(e,t){let{transitions:r,updateTriggers:i}=e.props,s={updateTriggers:{},transitions:r&&{getPosition:r.geometry}};for(let n in t){let o=t[n],c=e.props[n];n.startsWith(\"get\")&&(c=e.getSubLayerAccessor(c),s.updateTriggers[o]=i[n],r&&(s.transitions[o]=r[n])),s[o]=c}return s}function Hq(e){if(Array.isArray(e))return e;switch(nr.assert(e.type,\"GeoJSON does not have type\"),e.type){case\"Feature\":return[e];case\"FeatureCollection\":return nr.assert(Array.isArray(e.features),\"GeoJSON does not have features array\"),e.features;default:return[{geometry:e}]}}function aB(e,t,r={}){let i={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:s=0,endRow:n=e.length}=r;for(let o=s;o{c.push(r({geometry:{type:\"Point\",coordinates:I}},i,s))});break;case\"LineString\":f.push(r({geometry:e},i,s));break;case\"MultiLineString\":o.forEach(I=>{f.push(r({geometry:{type:\"LineString\",coordinates:I}},i,s))});break;case\"Polygon\":_.push(r({geometry:e},i,s)),o.forEach(I=>{w.push(r({geometry:{type:\"LineString\",coordinates:I}},i,s))});break;case\"MultiPolygon\":o.forEach(I=>{_.push(r({geometry:{type:\"Polygon\",coordinates:I}},i,s)),I.forEach(R=>{w.push(r({geometry:{type:\"LineString\",coordinates:R}},i,s))})});break;default:}}var Ppt={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function Ipt(e,t){let r=Ppt[e];for(nr.assert(r,\"Unknown GeoJSON type \".concat(e));t&&--r>0;)t=t[0];return t&&Number.isFinite(t[0])}function qq(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function N3(e){return e.geometry.coordinates}function Zq(e,t){let r=qq(),{pointFeatures:i,lineFeatures:s,polygonFeatures:n,polygonOutlineFeatures:o}=e;return r.points.data=i,r.points._dataDiff=t.pointFeatures&&(()=>t.pointFeatures),r.points.getPosition=N3,r.lines.data=s,r.lines._dataDiff=t.lineFeatures&&(()=>t.lineFeatures),r.lines.getPath=N3,r.polygons.data=n,r.polygons._dataDiff=t.polygonFeatures&&(()=>t.polygonFeatures),r.polygons.getPolygon=N3,r.polygonsOutline.data=o,r.polygonsOutline._dataDiff=t.polygonOutlineFeatures&&(()=>t.polygonOutlineFeatures),r.polygonsOutline.getPath=N3,r}function Yq(e,t){let r=qq(),{points:i,lines:s,polygons:n}=e,o=Sq(e,t);return r.points.data={length:i.positions.value.length/i.positions.size,attributes:{...i.attributes,getPosition:i.positions,instancePickingColors:{size:3,value:o.points}},properties:i.properties,numericProps:i.numericProps,featureIds:i.featureIds},r.lines.data={length:s.pathIndices.value.length-1,startIndices:s.pathIndices.value,attributes:{...s.attributes,getPath:s.positions,instancePickingColors:{size:3,value:o.lines}},properties:s.properties,numericProps:s.numericProps,featureIds:s.featureIds},r.lines._pathType=\"open\",r.polygons.data={length:n.polygonIndices.value.length-1,startIndices:n.polygonIndices.value,attributes:{...n.attributes,getPolygon:n.positions,pickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},r.polygons._normalize=!1,n.triangles&&(r.polygons.data.attributes.indices=n.triangles.value),r.polygonsOutline.data={length:n.primitivePolygonIndices.value.length-1,startIndices:n.primitivePolygonIndices.value,attributes:{...n.attributes,getPath:n.positions,instancePickingColors:{size:3,value:o.polygons}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},r.polygonsOutline._pathType=\"open\",r}var Cpt=[\"points\",\"linestrings\",\"polygons\"],Lpt={...Yv(Y2.circle),...Yv(Y2.icon),...Yv(Y2.text),...Yv(Q2),...Yv(F3),stroked:!0,filled:!0,extruded:!1,wireframe:!1,_full3d:!1,iconAtlas:{type:\"object\",value:null},iconMapping:{type:\"object\",value:{}},getIcon:{type:\"accessor\",value:e=>e.properties.icon},getText:{type:\"accessor\",value:e=>e.properties.text},pointType:\"circle\",getRadius:{deprecatedFor:\"getPointRadius\"}},Sm=class extends qi{initializeState(){this.state={layerProps:{},features:{}}}updateState({props:t,changeFlags:r}){if(!r.dataChanged)return;let{data:i}=this.props,s=i&&\"points\"in i&&\"polygons\"in i&&\"lines\"in i;this.setState({binary:s}),s?this._updateStateBinary({props:t,changeFlags:r}):this._updateStateJSON({props:t,changeFlags:r})}_updateStateBinary({props:t,changeFlags:r}){let i=Yq(t.data,this.encodePickingColor);this.setState({layerProps:i})}_updateStateJSON({props:t,changeFlags:r}){let i=Hq(t.data),s=this.getSubLayerRow.bind(this),n={},o={};if(Array.isArray(r.dataChanged)){let f=this.state.features;for(let _ in f)n[_]=f[_].slice(),o[_]=[];for(let _ of r.dataChanged){let w=aB(i,s,_);for(let I in f)o[I].push(O3({data:n[I],getIndex:R=>R.__source.index,dataRange:_,replace:w[I]}))}}else n=aB(i,s);let c=Zq(n,o);this.setState({features:n,featuresDiff:o,layerProps:c})}getPickingInfo(t){let r=super.getPickingInfo(t),{index:i,sourceLayer:s}=r;return r.featureType=Cpt.find(n=>s.id.startsWith(\"\".concat(this.id,\"-\").concat(n,\"-\"))),i>=0&&s.id.startsWith(\"\".concat(this.id,\"-points-text\"))&&this.state.binary&&(r.index=this.props.data.points.globalFeatureIds.value[i]),r}_updateAutoHighlight(t){let r=\"\".concat(this.id,\"-points-\"),i=t.featureType===\"points\";for(let s of this.getSubLayers())s.id.startsWith(r)===i&&s.updateAutoHighlight(t)}_renderPolygonLayer(){let{extruded:t,wireframe:r}=this.props,{layerProps:i}=this.state,s=\"polygons-fill\",n=this.shouldRenderSubLayer(s,i.polygons.data)&&this.getSubLayerClass(s,F3.type);if(n){let o=z3(this,F3.props),c=t&&r;return c||delete o.getLineColor,o.updateTriggers.lineColors=c,new n(o,this.getSubLayerProps({id:s,updateTriggers:o.updateTriggers}),i.polygons)}return null}_renderLineLayers(){let{extruded:t,stroked:r}=this.props,{layerProps:i}=this.state,s=\"polygons-stroke\",n=\"linestrings\",o=!t&&r&&this.shouldRenderSubLayer(s,i.polygonsOutline.data)&&this.getSubLayerClass(s,Q2.type),c=this.shouldRenderSubLayer(n,i.lines.data)&&this.getSubLayerClass(n,Q2.type);if(o||c){let f=z3(this,Q2.props);return[o&&new o(f,this.getSubLayerProps({id:s,updateTriggers:f.updateTriggers}),i.polygonsOutline),c&&new c(f,this.getSubLayerProps({id:n,updateTriggers:f.updateTriggers}),i.lines)]}return null}_renderPointLayers(){let{pointType:t}=this.props,{layerProps:r,binary:i}=this.state,{highlightedObjectIndex:s}=this.props;!i&&Number.isFinite(s)&&(s=r.points.data.findIndex(c=>c.__source.index===s));let n=new Set(t.split(\"+\")),o=[];for(let c of n){let f=\"points-\".concat(c),_=Y2[c],w=_&&this.shouldRenderSubLayer(f,r.points.data)&&this.getSubLayerClass(f,_.type);if(w){let I=z3(this,_.props),R=r.points;if(c===\"text\"&&i){let{instancePickingColors:N,...j}=R.data.attributes;R={...R,data:{...R.data,attributes:j}}}o.push(new w(I,this.getSubLayerProps({id:f,updateTriggers:I.updateTriggers,highlightedObjectIndex:s}),R))}}return o}renderLayers(){let{extruded:t}=this.props,r=this._renderPolygonLayer(),i=this._renderLineLayers(),s=this._renderPointLayers();return[!t&&r,i,s,t&&r]}getSubLayerAccessor(t){let{binary:r}=this.state;return!r||typeof t!=\"function\"?super.getSubLayerAccessor(t):(i,s)=>{let{data:n,index:o}=s,c=wq(n,o);return t(c,s)}}};G(Sm,\"layerName\",\"GeoJsonLayer\");G(Sm,\"defaultProps\",Lpt);var X$t=1/Math.PI*180,K$t=1/180*Math.PI,kpt={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...kpt}};var $2=globalThis.mathgl.config;function X2(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Qv(e,t,r){let i=$2.EPSILON;r&&($2.EPSILON=r);try{if(e===t)return!0;if(X2(e)&&X2(t)){if(e.length!==t.length)return!1;for(let s=0;s{t([r,i],[s,n],o,c)},this.options):Xq(this.points,t,this.options)}modifyWindingDirection(t){return this.isFlatArray?lB(this.points,t,this.options):$q(this.points,t,this.options)}};function fB(e,t,r=2,i,s=\"xy\"){let n=t&&t.length,o=n?t[0]*r:e.length,c=Jq(e,0,o,r,!0,i&&i[0],s),f=[];if(!c||c.next===c.prev)return f;let _,w,I,R,N,j,Q;if(n&&(c=Npt(e,t,c,r,i,s)),e.length>80*r){R=w=e[0],N=I=e[1];for(let et=r;etw&&(w=j),Q>I&&(I=Q);_=Math.max(w-R,I-N),_=_!==0?32767/_:0}return K2(c,f,r,R,N,_,0),f}function Jq(e,t,r,i,s,n,o){let c,f;n===void 0&&(n=$v(e,{start:t,end:r,size:i,plane:o}));let _=jg[o[0]],w=jg[o[1]];if(s===n<0)for(c=t;c=t;c-=i)f=Kq(c,e[c+_],e[c+w],f);return f&&G3(f,f.next)&&(tS(f),f=f.next),f}function Gg(e,t){if(!e)return e;t||(t=e);let r=e,i;do if(i=!1,!r.steiner&&(G3(r,r.next)||ys(r.prev,r,r.next)===0)){if(tS(r),r=t=r.prev,r===r.next)break;i=!0}else r=r.next;while(i||r!==t);return t}function K2(e,t,r,i,s,n,o){if(!e)return;!o&&n&&Wpt(e,i,s,n);let c=e,f,_;for(;e.prev!==e.next;){if(f=e.prev,_=e.next,n?Bpt(e,i,s,n):Opt(e)){t.push(f.i/r|0),t.push(e.i/r|0),t.push(_.i/r|0),tS(e),e=_.next,c=_.next;continue}if(e=_,e===c){o?o===1?(e=Fpt(Gg(e),t,r),K2(e,t,r,i,s,n,2)):o===2&&zpt(e,t,r,i,s,n):K2(Gg(e),t,r,i,s,n,1);break}}}function Opt(e){let t=e.prev,r=e,i=e.next;if(ys(t,r,i)>=0)return!1;let s=t.x,n=r.x,o=i.x,c=t.y,f=r.y,_=i.y,w=sn?s>o?s:o:n>o?n:o,N=c>f?c>_?c:_:f>_?f:_,j=i.next;for(;j!==t;){if(j.x>=w&&j.x<=R&&j.y>=I&&j.y<=N&&Kv(s,c,n,f,o,_,j.x,j.y)&&ys(j.prev,j,j.next)>=0)return!1;j=j.next}return!0}function Bpt(e,t,r,i){let s=e.prev,n=e,o=e.next;if(ys(s,n,o)>=0)return!1;let c=s.x,f=n.x,_=o.x,w=s.y,I=n.y,R=o.y,N=cf?c>_?c:_:f>_?f:_,et=w>I?w>R?w:R:I>R?I:R,Y=hB(N,j,t,r,i),K=hB(Q,et,t,r,i),J=e.prevZ,ut=e.nextZ;for(;J&&J.z>=Y&&ut&&ut.z<=K;){if(J.x>=N&&J.x<=Q&&J.y>=j&&J.y<=et&&J!==s&&J!==o&&Kv(c,w,f,I,_,R,J.x,J.y)&&ys(J.prev,J,J.next)>=0||(J=J.prevZ,ut.x>=N&&ut.x<=Q&&ut.y>=j&&ut.y<=et&&ut!==s&&ut!==o&&Kv(c,w,f,I,_,R,ut.x,ut.y)&&ys(ut.prev,ut,ut.next)>=0))return!1;ut=ut.nextZ}for(;J&&J.z>=Y;){if(J.x>=N&&J.x<=Q&&J.y>=j&&J.y<=et&&J!==s&&J!==o&&Kv(c,w,f,I,_,R,J.x,J.y)&&ys(J.prev,J,J.next)>=0)return!1;J=J.prevZ}for(;ut&&ut.z<=K;){if(ut.x>=N&&ut.x<=Q&&ut.y>=j&&ut.y<=et&&ut!==s&&ut!==o&&Kv(c,w,f,I,_,R,ut.x,ut.y)&&ys(ut.prev,ut,ut.next)>=0)return!1;ut=ut.nextZ}return!0}function Fpt(e,t,r){let i=e;do{let s=i.prev,n=i.next.next;!G3(s,n)&&tZ(s,i,i.next,n)&&J2(s,n)&&J2(n,s)&&(t.push(s.i/r|0),t.push(i.i/r|0),t.push(n.i/r|0),tS(i),tS(i.next),i=e=n),i=i.next}while(i!==e);return Gg(i)}function zpt(e,t,r,i,s,n){let o=e;do{let c=o.next.next;for(;c!==o.prev;){if(o.i!==c.i&&Zpt(o,c)){let f=eZ(o,c);o=Gg(o,o.next),f=Gg(f,f.next),K2(o,t,r,i,s,n,0),K2(f,t,r,i,s,n,0);return}c=c.next}o=o.next}while(o!==e)}function Npt(e,t,r,i,s,n){let o=[],c,f,_,w,I;for(c=0,f=t.length;c=r.next.y&&r.next.y!==r.y){let R=r.x+(s-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(R<=i&&R>n&&(n=R,o=r.x=r.x&&r.x>=f&&i!==r.x&&Kv(s<_?i:n,s,f,_,s<_?n:i,s,r.x,r.y)&&(I=Math.abs(s-r.y)/(i-r.x),J2(r,e)&&(Io.x||r.x===o.x&&Gpt(o,r)))&&(o=r,w=I)),r=r.next;while(r!==c);return o}function Gpt(e,t){return ys(e.prev,e,t.prev)<0&&ys(t.next,e,e.next)<0}function Wpt(e,t,r,i){let s=e;do s.z===0&&(s.z=hB(s.x,s.y,t,r,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,Hpt(s)}function Hpt(e){let t,r,i=1,s,n,o,c,f,_;do{for(n=e,e=null,_=null,s=0;n;){for(s++,c=n,o=0,r=0;r0||f>0&&c;)o!==0&&(f===0||!c||n.z<=c.z)?(t=n,n=n.nextZ,o--):(t=c,c=c.nextZ,f--),_?_.nextZ=t:e=t,t.prevZ=_,_=t;n=c}_.nextZ=null,i*=2}while(s>1);return e}function hB(e,t,r,i,s){return e=(e-r)*s|0,t=(t-i)*s|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function qpt(e){let t=e,r=e;do(t.x=(e-o)*(n-c)&&(e-o)*(i-c)>=(r-o)*(t-c)&&(r-o)*(n-c)>=(s-o)*(i-c)}function Zpt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!Ypt(e,t)&&(J2(e,t)&&J2(t,e)&&Qpt(e,t)&&(ys(e.prev,e,t.prev)||ys(e,t.prev,t))||G3(e,t)&&ys(e.prev,e,e.next)>0&&ys(t.prev,t,t.next)>0)}function ys(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function G3(e,t){return e.x===t.x&&e.y===t.y}function tZ(e,t,r,i){let s=j3(ys(e,t,r)),n=j3(ys(e,t,i)),o=j3(ys(r,i,e)),c=j3(ys(r,i,t));return!!(s!==n&&o!==c||s===0&&V3(e,r,t)||n===0&&V3(e,i,t)||o===0&&V3(r,e,i)||c===0&&V3(r,t,i))}function V3(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function j3(e){return e>0?1:e<0?-1:0}function Ypt(e,t){let r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&tZ(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function J2(e,t){return ys(e.prev,e,e.next)<0?ys(e,t,e.next)>=0&&ys(e,e.prev,t)>=0:ys(e,t,e.prev)<0||ys(e,e.next,t)<0}function Qpt(e,t){let r=e,i=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do r.y>n!=r.next.y>n&&r.next.y!==r.y&&s<(r.next.x-r.x)*(n-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next;while(r!==e);return i}function eZ(e,t){let r=new eS(e.i,e.x,e.y),i=new eS(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,r.next=s,s.prev=r,i.next=r,r.prev=i,n.next=i,i.prev=n,i}function Kq(e,t,r,i){let s=new eS(e,t,r);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function tS(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}var eS=class{constructor(t,r,i){G(this,\"i\",void 0),G(this,\"x\",void 0),G(this,\"y\",void 0),G(this,\"prev\",null),G(this,\"next\",null),G(this,\"z\",0),G(this,\"prevZ\",null),G(this,\"nextZ\",null),G(this,\"steiner\",!1),this.i=t,this.x=r,this.y=i}};function nZ(e){e(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),e(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),e(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),e.WGS84=e[\"EPSG:4326\"],e[\"EPSG:3785\"]=e[\"EPSG:3857\"],e.GOOGLE=e[\"EPSG:3857\"],e[\"EPSG:900913\"]=e[\"EPSG:3857\"],e[\"EPSG:102113\"]=e[\"EPSG:3857\"]}var uf=1,hf=2,Ip=3,sZ=4,rS=5,dB=6378137,oZ=6356752314e-3,pB=.0066943799901413165,Wg=484813681109536e-20,de=Math.PI/2,aZ=.16666666666666666,lZ=.04722222222222222,cZ=.022156084656084655,we=1e-10,vs=.017453292519943295,xc=57.29577951308232,Fi=Math.PI/4,Tm=Math.PI*2,xs=3.14159265359;var Rl={};Rl.greenwich=0;Rl.lisbon=-9.131906111111;Rl.paris=2.337229166667;Rl.bogota=-74.080916666667;Rl.madrid=-3.687938888889;Rl.rome=12.452333333333;Rl.bern=7.439583333333;Rl.jakarta=106.807719444444;Rl.ferro=-17.666666666667;Rl.brussels=4.367975;Rl.stockholm=18.058277777778;Rl.athens=23.7163375;Rl.oslo=10.722916666667;var uZ={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}};var hZ=/[\\s_\\-\\/\\(\\)]/g;function au(e,t){if(e[t])return e[t];for(var r=Object.keys(e),i=t.toLowerCase().replace(hZ,\"\"),s=-1,n,o;++s=this.text.length)return;e=this.text[this.place++]}switch(this.state){case nS:return this.neutral(e);case dZ:return this.keyword(e);case W3:return this.quoted(e);case AZ:return this.afterquote(e);case pZ:return this.number(e);case AB:return}};Cp.prototype.afterquote=function(e){if(e==='\"'){this.word+='\"',this.state=W3;return}if(H3.test(e)){this.word=this.word.trim(),this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in afterquote yet, index '+this.place)};Cp.prototype.afterItem=function(e){if(e===\",\"){this.word!==null&&this.currentObject.push(this.word),this.word=null,this.state=nS;return}if(e===\"]\"){this.level--,this.word!==null&&(this.currentObject.push(this.word),this.word=null),this.state=nS,this.currentObject=this.stack.pop(),this.currentObject||(this.state=AB);return}};Cp.prototype.number=function(e){if(mZ.test(e)){this.word+=e;return}if(H3.test(e)){this.word=parseFloat(this.word),this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in number yet, index '+this.place)};Cp.prototype.quoted=function(e){if(e==='\"'){this.state=AZ;return}this.word+=e};Cp.prototype.keyword=function(e){if(eAt.test(e)){this.word+=e;return}if(e===\"[\"){var t=[];t.push(this.word),this.level++,this.root===null?this.root=t:this.currentObject.push(t),this.stack.push(this.currentObject),this.currentObject=t,this.state=nS;return}if(H3.test(e)){this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in keyword yet, index '+this.place)};Cp.prototype.neutral=function(e){if(tAt.test(e)){this.word=e,this.state=dZ;return}if(e==='\"'){this.word=\"\",this.state=W3;return}if(mZ.test(e)){this.word=e,this.state=pZ;return}if(H3.test(e)){this.afterItem(e);return}throw new Error(`havn't handled \"`+e+'\" in neutral yet, index '+this.place)};Cp.prototype.output=function(){for(;this.place0?90:-90),e.lat_ts=e.lat1):!e.lat_ts&&e.lat0&&e.projName===\"Polar_Stereographic\"&&(e.lat_ts=e.lat0,e.lat0=fd(e.lat0>0?90:-90))}function q3(e){var t=fZ(e),r=t.shift(),i=t.shift();t.unshift([\"name\",i]),t.unshift([\"type\",r]);var s={};return Hg(t,s),sAt(s),s}function Ku(e){var t=this;if(arguments.length===2){var r=arguments[1];typeof r==\"string\"?r.charAt(0)===\"+\"?Ku[e]=iS(arguments[1]):Ku[e]=q3(arguments[1]):Ku[e]=r}else if(arguments.length===1){if(Array.isArray(e))return e.map(function(i){Array.isArray(i)?Ku.apply(t,i):Ku(i)});if(typeof e==\"string\"){if(e in Ku)return Ku[e]}else\"EPSG\"in e?Ku[\"EPSG:\"+e.EPSG]=e:\"ESRI\"in e?Ku[\"ESRI:\"+e.ESRI]=e:\"IAU2000\"in e?Ku[\"IAU2000:\"+e.IAU2000]=e:console.log(e);return}}nZ(Ku);var Jv=Ku;function oAt(e){return typeof e==\"string\"}function aAt(e){return e in Jv}var lAt=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];function cAt(e){return lAt.some(function(t){return e.indexOf(t)>-1})}var uAt=[\"3857\",\"900913\",\"3785\",\"102113\"];function hAt(e){var t=au(e,\"authority\");if(t){var r=au(t,\"epsg\");return r&&uAt.indexOf(r)>-1}}function fAt(e){var t=au(e,\"extension\");if(t)return au(t,\"proj4\")}function dAt(e){return e[0]===\"+\"}function pAt(e){if(oAt(e)){if(aAt(e))return Jv[e];if(cAt(e)){var t=q3(e);if(hAt(t))return Jv[\"EPSG:3857\"];var r=fAt(t);return r?iS(r):t}if(dAt(e))return iS(e)}else return e}var _Z=pAt;function mB(e,t){e=e||{};var r,i;if(!t)return e;for(i in t)r=t[i],r!==void 0&&(e[i]=r);return e}function sl(e,t,r){var i=e*t;return r/Math.sqrt(1-i*i)}function dd(e){return e<0?-1:1}function Ie(e){return Math.abs(e)<=xs?e:e-dd(e)*Tm}function Dl(e,t,r){var i=e*r,s=.5*e;return i=Math.pow((1-i)/(1+i),s),Math.tan(.5*(de-t))/i}function Lp(e,t){for(var r=.5*e,i,s,n=de-2*Math.atan(t),o=0;o<=15;o++)if(i=e*Math.sin(n),s=de-2*Math.atan(t*Math.pow((1-i)/(1+i),r))-n,n+=s,Math.abs(s)<=1e-10)return n;return-9999}function AAt(){var e=this.b/this.a;this.es=1-e*e,\"x0\"in this||(this.x0=0),\"y0\"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=sl(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)}function mAt(e){var t=e.x,r=e.y;if(r*xc>90&&r*xc<-90&&t*xc>180&&t*xc<-180)return null;var i,s;if(Math.abs(Math.abs(r)-de)<=we)return null;if(this.sphere)i=this.x0+this.a*this.k0*Ie(t-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(Fi+.5*r));else{var n=Math.sin(r),o=Dl(this.e,r,n);i=this.x0+this.a*this.k0*Ie(t-this.long0),s=this.y0-this.a*this.k0*Math.log(o)}return e.x=i,e.y=s,e}function gAt(e){var t=e.x-this.x0,r=e.y-this.y0,i,s;if(this.sphere)s=de-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var n=Math.exp(-r/(this.a*this.k0));if(s=Lp(this.e,n),s===-9999)return null}return i=Ie(this.long0+t/(this.a*this.k0)),e.x=i,e.y=s,e}var _At=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],yZ={init:AAt,forward:mAt,inverse:gAt,names:_At};function yAt(){}function vZ(e){return e}var vAt=[\"longlat\",\"identity\"],xZ={init:yAt,forward:vZ,inverse:vZ,names:vAt};var xAt=[yZ,xZ],Z3={},Y3=[];function bZ(e,t){var r=Y3.length;return e.names?(Y3[r]=e,e.names.forEach(function(i){Z3[i.toLowerCase()]=r}),this):(console.log(t),!0)}function bAt(e){if(!e)return!1;var t=e.toLowerCase();if(typeof Z3[t]<\"u\"&&Y3[Z3[t]])return Y3[Z3[t]]}function wAt(){xAt.forEach(bZ)}var wZ={start:wAt,add:bZ,get:bAt};var Xr={};Xr.MERIT={a:6378137,rf:298.257,ellipseName:\"MERIT 1983\"};Xr.SGS85={a:6378136,rf:298.257,ellipseName:\"Soviet Geodetic System 85\"};Xr.GRS80={a:6378137,rf:298.257222101,ellipseName:\"GRS 1980(IUGG, 1980)\"};Xr.IAU76={a:6378140,rf:298.257,ellipseName:\"IAU 1976\"};Xr.airy={a:6377563396e-3,b:635625691e-2,ellipseName:\"Airy 1830\"};Xr.APL4={a:6378137,rf:298.25,ellipseName:\"Appl. Physics. 1965\"};Xr.NWL9D={a:6378145,rf:298.25,ellipseName:\"Naval Weapons Lab., 1965\"};Xr.mod_airy={a:6377340189e-3,b:6356034446e-3,ellipseName:\"Modified Airy\"};Xr.andrae={a:637710443e-2,rf:300,ellipseName:\"Andrae 1876 (Den., Iclnd.)\"};Xr.aust_SA={a:6378160,rf:298.25,ellipseName:\"Australian Natl & S. Amer. 1969\"};Xr.GRS67={a:6378160,rf:298.247167427,ellipseName:\"GRS 67(IUGG 1967)\"};Xr.bessel={a:6377397155e-3,rf:299.1528128,ellipseName:\"Bessel 1841\"};Xr.bess_nam={a:6377483865e-3,rf:299.1528128,ellipseName:\"Bessel 1841 (Namibia)\"};Xr.clrk66={a:63782064e-1,b:63565838e-1,ellipseName:\"Clarke 1866\"};Xr.clrk80={a:6378249145e-3,rf:293.4663,ellipseName:\"Clarke 1880 mod.\"};Xr.clrk80ign={a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:\"Clarke 1880 (IGN)\"};Xr.clrk58={a:6378293645208759e-9,rf:294.2606763692654,ellipseName:\"Clarke 1858\"};Xr.CPM={a:63757387e-1,rf:334.29,ellipseName:\"Comm. des Poids et Mesures 1799\"};Xr.delmbr={a:6376428,rf:311.5,ellipseName:\"Delambre 1810 (Belgium)\"};Xr.engelis={a:637813605e-2,rf:298.2566,ellipseName:\"Engelis 1985\"};Xr.evrst30={a:6377276345e-3,rf:300.8017,ellipseName:\"Everest 1830\"};Xr.evrst48={a:6377304063e-3,rf:300.8017,ellipseName:\"Everest 1948\"};Xr.evrst56={a:6377301243e-3,rf:300.8017,ellipseName:\"Everest 1956\"};Xr.evrst69={a:6377295664e-3,rf:300.8017,ellipseName:\"Everest 1969\"};Xr.evrstSS={a:6377298556e-3,rf:300.8017,ellipseName:\"Everest (Sabah & Sarawak)\"};Xr.fschr60={a:6378166,rf:298.3,ellipseName:\"Fischer (Mercury Datum) 1960\"};Xr.fschr60m={a:6378155,rf:298.3,ellipseName:\"Fischer 1960\"};Xr.fschr68={a:6378150,rf:298.3,ellipseName:\"Fischer 1968\"};Xr.helmert={a:6378200,rf:298.3,ellipseName:\"Helmert 1906\"};Xr.hough={a:6378270,rf:297,ellipseName:\"Hough\"};Xr.intl={a:6378388,rf:297,ellipseName:\"International 1909 (Hayford)\"};Xr.kaula={a:6378163,rf:298.24,ellipseName:\"Kaula 1961\"};Xr.lerch={a:6378139,rf:298.257,ellipseName:\"Lerch 1979\"};Xr.mprts={a:6397300,rf:191,ellipseName:\"Maupertius 1738\"};Xr.new_intl={a:63781575e-1,b:63567722e-1,ellipseName:\"New International 1967\"};Xr.plessis={a:6376523,rf:6355863,ellipseName:\"Plessis 1817 (France)\"};Xr.krass={a:6378245,rf:298.3,ellipseName:\"Krassovsky, 1942\"};Xr.SEasia={a:6378155,b:63567733205e-4,ellipseName:\"Southeast Asia\"};Xr.walbeck={a:6376896,b:63558348467e-4,ellipseName:\"Walbeck\"};Xr.WGS60={a:6378165,rf:298.3,ellipseName:\"WGS 60\"};Xr.WGS66={a:6378145,rf:298.25,ellipseName:\"WGS 66\"};Xr.WGS7={a:6378135,rf:298.26,ellipseName:\"WGS 72\"};var SZ=Xr.WGS84={a:6378137,rf:298.257223563,ellipseName:\"WGS 84\"};Xr.sphere={a:6370997,b:6370997,ellipseName:\"Normal Sphere (r=6370997)\"};function TZ(e,t,r,i){var s=e*e,n=t*t,o=(s-n)/s,c=0;i?(e*=1-o*(aZ+o*(lZ+o*cZ)),s=e*e,o=0):c=Math.sqrt(o);var f=(s-n)/n;return{es:o,e:c,ep2:f}}function MZ(e,t,r,i,s){if(!e){var n=au(Xr,i);n||(n=SZ),e=n.a,t=n.b,r=n.rf}return r&&!t&&(t=(1-1/r)*e),(r===0||Math.abs(e-t)3&&(c.datum_params[3]!==0||c.datum_params[4]!==0||c.datum_params[5]!==0||c.datum_params[6]!==0)&&(c.datum_type=hf,c.datum_params[3]*=Wg,c.datum_params[4]*=Wg,c.datum_params[5]*=Wg,c.datum_params[6]=c.datum_params[6]/1e6+1)),o&&(c.datum_type=Ip,c.grids=o),c.a=r,c.b=i,c.es=s,c.ep2=n,c}var EZ=SAt;var PZ={};function _B(e,t){var r=new DataView(t),i=MAt(r),s=EAt(r,i),n=PAt(r,s,i),o={header:s,subgrids:n};return PZ[e]=o,o}function IZ(e){if(e===void 0)return null;var t=e.split(\",\");return t.map(TAt)}function TAt(e){if(e.length===0)return null;var t=e[0]===\"@\";return t&&(e=e.slice(1)),e===\"null\"?{name:\"null\",mandatory:!t,grid:null,isNull:!0}:{name:e,mandatory:!t,grid:PZ[e]||null,isNull:!1}}function tx(e){return e/3600*Math.PI/180}function MAt(e){var t=e.getInt32(8,!1);return t===11?!1:(t=e.getInt32(8,!0),t!==11&&console.warn(\"Failed to detect nadgrid endian-ness, defaulting to little-endian\"),!0)}function EAt(e,t){return{nFields:e.getInt32(8,t),nSubgridFields:e.getInt32(24,t),nSubgrids:e.getInt32(40,t),shiftType:gB(e,56,64).trim(),fromSemiMajorAxis:e.getFloat64(120,t),fromSemiMinorAxis:e.getFloat64(136,t),toSemiMajorAxis:e.getFloat64(152,t),toSemiMinorAxis:e.getFloat64(168,t)}}function gB(e,t,r){return String.fromCharCode.apply(null,new Uint8Array(e.buffer.slice(t,r)))}function PAt(e,t,r){for(var i=176,s=[],n=0;n5e-11?!1:e.datum_type===uf?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]:e.datum_type===hf?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]&&e.datum_params[3]===t.datum_params[3]&&e.datum_params[4]===t.datum_params[4]&&e.datum_params[5]===t.datum_params[5]&&e.datum_params[6]===t.datum_params[6]:!0}function Q3(e,t,r){var i=e.x,s=e.y,n=e.z?e.z:0,o,c,f,_;if(s<-de&&s>-1.001*de)s=-de;else if(s>de&&s<1.001*de)s=de;else{if(s<-de)return{x:-1/0,y:-1/0,z:e.z};if(s>de)return{x:1/0,y:1/0,z:e.z}}return i>Math.PI&&(i-=2*Math.PI),c=Math.sin(s),_=Math.cos(s),f=c*c,o=r/Math.sqrt(1-t*f),{x:(o+n)*_*Math.cos(i),y:(o+n)*_*Math.sin(i),z:(o*(1-t)+n)*c}}function $3(e,t,r,i){var s=1e-12,n=s*s,o=30,c,f,_,w,I,R,N,j,Q,et,Y,K,J,ut=e.x,Pt=e.y,kt=e.z?e.z:0,Kt,Zt,ce;if(c=Math.sqrt(ut*ut+Pt*Pt),f=Math.sqrt(ut*ut+Pt*Pt+kt*kt),c/rn&&Ji.y||j>i.x||Yc&&Math.abs(f.y)>c);if(o<0)return console.log(\"Inverse grid shift iterator failed to converge.\"),i;i.x=Ie(n.x+r.ll[0]),i.y=n.y+r.ll[1]}else isNaN(n.x)||(i.x=e.x+n.x,i.y=e.y+n.y);return i}function DZ(e,t){var r={x:e.x/t.del[0],y:e.y/t.del[1]},i={x:Math.floor(r.x),y:Math.floor(r.y)},s={x:r.x-1*i.x,y:r.y-1*i.y},n={x:Number.NaN,y:Number.NaN},o;if(i.x<0||i.x>=t.lim[0]||i.y<0||i.y>=t.lim[1])return n;o=i.y*t.lim[0]+i.x;var c={x:t.cvs[o][0],y:t.cvs[o][1]};o++;var f={x:t.cvs[o][0],y:t.cvs[o][1]};o+=t.lim[0];var _={x:t.cvs[o][0],y:t.cvs[o][1]};o--;var w={x:t.cvs[o][0],y:t.cvs[o][1]},I=s.x*s.y,R=s.x*(1-s.y),N=(1-s.x)*(1-s.y),j=(1-s.x)*s.y;return n.x=N*c.x+R*f.x+j*w.x+I*_.x,n.y=N*c.y+R*f.y+j*w.y+I*_.y,n}function yB(e,t,r){var i=r.x,s=r.y,n=r.z||0,o,c,f,_={};for(f=0;f<3;f++)if(!(t&&f===2&&r.z===void 0))switch(f===0?(o=i,\"ew\".indexOf(e.axis[f])!==-1?c=\"x\":c=\"y\"):f===1?(o=s,\"ns\".indexOf(e.axis[f])!==-1?c=\"y\":c=\"x\"):(o=n,c=\"z\"),e.axis[f]){case\"e\":_[c]=o;break;case\"w\":_[c]=-o;break;case\"n\":_[c]=o;break;case\"s\":_[c]=-o;break;case\"u\":r[c]!==void 0&&(_.z=o);break;case\"d\":r[c]!==void 0&&(_.z=-o);break;default:return null}return _}function K3(e){var t={x:e[0],y:e[1]};return e.length>2&&(t.z=e[2]),e.length>3&&(t.m=e[3]),t}function FZ(e){BZ(e.x),BZ(e.y)}function BZ(e){if(typeof Number.isFinite==\"function\"){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(typeof e!=\"number\"||e!==e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}function RAt(e,t){return(e.datum.datum_type===uf||e.datum.datum_type===hf||e.datum.datum_type===Ip)&&t.datumCode!==\"WGS84\"||(t.datum.datum_type===uf||t.datum.datum_type===hf||t.datum.datum_type===Ip)&&e.datumCode!==\"WGS84\"}function qg(e,t,r,i){var s;Array.isArray(r)?r=K3(r):r={x:r.x,y:r.y,z:r.z,m:r.m};var n=r.z!==void 0;if(FZ(r),e.datum&&t.datum&&RAt(e,t)&&(s=new Mm(\"WGS84\"),r=qg(e,s,r,i),e=s),i&&e.axis!==\"enu\"&&(r=yB(e,!1,r)),e.projName===\"longlat\")r={x:r.x*vs,y:r.y*vs,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),r=e.inverse(r),!r)return;if(e.from_greenwich&&(r.x+=e.from_greenwich),r=OZ(e.datum,t.datum,r),!!r)return t.from_greenwich&&(r={x:r.x-t.from_greenwich,y:r.y,z:r.z||0}),t.projName===\"longlat\"?r={x:r.x*xc,y:r.y*xc,z:r.z||0}:(r=t.forward(r),t.to_meter&&(r={x:r.x/t.to_meter,y:r.y/t.to_meter,z:r.z||0})),i&&t.axis!==\"enu\"?yB(t,!0,r):(r&&!n&&delete r.z,r)}var zZ=Mm(\"WGS84\");function vB(e,t,r,i){var s,n,o;return Array.isArray(r)?(s=qg(e,t,r,i)||{x:NaN,y:NaN},r.length>2?typeof e.name<\"u\"&&e.name===\"geocent\"||typeof t.name<\"u\"&&t.name===\"geocent\"?typeof s.z==\"number\"?[s.x,s.y,s.z].concat(r.splice(3)):[s.x,s.y,r[2]].concat(r.splice(3)):[s.x,s.y].concat(r.splice(2)):[s.x,s.y]):(n=qg(e,t,r,i),o=Object.keys(r),o.length===2||o.forEach(function(c){if(typeof e.name<\"u\"&&e.name===\"geocent\"||typeof t.name<\"u\"&&t.name===\"geocent\"){if(c===\"x\"||c===\"y\"||c===\"z\")return}else if(c===\"x\"||c===\"y\")return;n[c]=r[c]}),n)}function NZ(e){return e instanceof Mm?e:e.oProj?e.oProj:Mm(e)}function DAt(e,t,r){e=NZ(e);var i=!1,s;return typeof t>\"u\"?(t=e,e=zZ,i=!0):(typeof t.x<\"u\"||Array.isArray(t))&&(r=t,t=e,e=zZ,i=!0),t=NZ(t),r?vB(e,t,r):(s={forward:function(n,o){return vB(e,t,n,o)},inverse:function(n,o){return vB(t,e,n,o)}},i&&(s.oProj=t),s)}var bc=DAt;var UZ=6,jZ=\"AJSAJS\",GZ=\"AFAFAF\",rx=65,wc=73,Ju=79,sS=86,oS=90,WZ={forward:bB,inverse:OAt,toPoint:wB};function bB(e,t){return t=t||5,zAt(BAt({lat:e[1],lon:e[0]}),t)}function OAt(e){var t=SB(qZ(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat,t.lon,t.lat]:[t.left,t.bottom,t.right,t.top]}function wB(e){var t=SB(qZ(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat]:[(t.left+t.right)/2,(t.top+t.bottom)/2]}function xB(e){return e*(Math.PI/180)}function VZ(e){return 180*(e/Math.PI)}function BAt(e){var t=e.lat,r=e.lon,i=6378137,s=.00669438,n=.9996,o,c,f,_,w,I,R,N=xB(t),j=xB(r),Q,et;et=Math.floor((r+180)/6)+1,r===180&&(et=60),t>=56&&t<64&&r>=3&&r<12&&(et=32),t>=72&&t<84&&(r>=0&&r<9?et=31:r>=9&&r<21?et=33:r>=21&&r<33?et=35:r>=33&&r<42&&(et=37)),o=(et-1)*6-180+3,Q=xB(o),c=s/(1-s),f=i/Math.sqrt(1-s*Math.sin(N)*Math.sin(N)),_=Math.tan(N)*Math.tan(N),w=c*Math.cos(N)*Math.cos(N),I=Math.cos(N)*(j-Q),R=i*((1-s/4-3*s*s/64-5*s*s*s/256)*N-(3*s/8+3*s*s/32+45*s*s*s/1024)*Math.sin(2*N)+(15*s*s/256+45*s*s*s/1024)*Math.sin(4*N)-35*s*s*s/3072*Math.sin(6*N));var Y=n*f*(I+(1-_+w)*I*I*I/6+(5-18*_+_*_+72*w-58*c)*I*I*I*I*I/120)+5e5,K=n*(R+f*Math.tan(N)*(I*I/2+(5-_+9*w+4*w*w)*I*I*I*I/24+(61-58*_+_*_+600*w-330*c)*I*I*I*I*I*I/720));return t<0&&(K+=1e7),{northing:Math.round(K),easting:Math.round(Y),zoneNumber:et,zoneLetter:FAt(t)}}function SB(e){var t=e.northing,r=e.easting,i=e.zoneLetter,s=e.zoneNumber;if(s<0||s>60)return null;var n=.9996,o=6378137,c=.00669438,f,_=(1-Math.sqrt(1-c))/(1+Math.sqrt(1-c)),w,I,R,N,j,Q,et,Y,K,J=r-5e5,ut=t;i<\"N\"&&(ut-=1e7),et=(s-1)*6-180+3,f=c/(1-c),Q=ut/n,Y=Q/(o*(1-c/4-3*c*c/64-5*c*c*c/256)),K=Y+(3*_/2-27*_*_*_/32)*Math.sin(2*Y)+(21*_*_/16-55*_*_*_*_/32)*Math.sin(4*Y)+151*_*_*_/96*Math.sin(6*Y),w=o/Math.sqrt(1-c*Math.sin(K)*Math.sin(K)),I=Math.tan(K)*Math.tan(K),R=f*Math.cos(K)*Math.cos(K),N=o*(1-c)/Math.pow(1-c*Math.sin(K)*Math.sin(K),1.5),j=J/(w*n);var Pt=K-w*Math.tan(K)/N*(j*j/2-(5+3*I+10*R-4*R*R-9*f)*j*j*j*j/24+(61+90*I+298*R+45*I*I-252*f-3*R*R)*j*j*j*j*j*j/720);Pt=VZ(Pt);var kt=(j-(1+2*I+R)*j*j*j/6+(5-2*R+28*I-3*R*R+8*f+24*I*I)*j*j*j*j*j/120)/Math.cos(K);kt=et+VZ(kt);var Kt;if(e.accuracy){var Zt=SB({northing:e.northing+e.accuracy,easting:e.easting+e.accuracy,zoneLetter:e.zoneLetter,zoneNumber:e.zoneNumber});Kt={top:Zt.lat,right:Zt.lon,bottom:Pt,left:kt}}else Kt={lat:Pt,lon:kt};return Kt}function FAt(e){var t=\"Z\";return 84>=e&&e>=72?t=\"X\":72>e&&e>=64?t=\"W\":64>e&&e>=56?t=\"V\":56>e&&e>=48?t=\"U\":48>e&&e>=40?t=\"T\":40>e&&e>=32?t=\"S\":32>e&&e>=24?t=\"R\":24>e&&e>=16?t=\"Q\":16>e&&e>=8?t=\"P\":8>e&&e>=0?t=\"N\":0>e&&e>=-8?t=\"M\":-8>e&&e>=-16?t=\"L\":-16>e&&e>=-24?t=\"K\":-24>e&&e>=-32?t=\"J\":-32>e&&e>=-40?t=\"H\":-40>e&&e>=-48?t=\"G\":-48>e&&e>=-56?t=\"F\":-56>e&&e>=-64?t=\"E\":-64>e&&e>=-72?t=\"D\":-72>e&&e>=-80&&(t=\"C\"),t}function zAt(e,t){var r=\"00000\"+e.easting,i=\"00000\"+e.northing;return e.zoneNumber+e.zoneLetter+NAt(e.easting,e.northing,e.zoneNumber)+r.substr(r.length-5,t)+i.substr(i.length-5,t)}function NAt(e,t,r){var i=HZ(r),s=Math.floor(e/1e5),n=Math.floor(t/1e5)%20;return UAt(s,n,i)}function HZ(e){var t=e%UZ;return t===0&&(t=UZ),t}function UAt(e,t,r){var i=r-1,s=jZ.charCodeAt(i),n=GZ.charCodeAt(i),o=s+e-1,c=n+t,f=!1;o>oS&&(o=o-oS+rx-1,f=!0),(o===wc||swc||(o>wc||sJu||(o>Ju||soS&&(o=o-oS+rx-1),c>sS?(c=c-sS+rx-1,f=!0):f=!1,(c===wc||nwc||(c>wc||nJu||(c>Ju||nsS&&(c=c-sS+rx-1);var _=String.fromCharCode(o)+String.fromCharCode(c);return _}function qZ(e){if(e&&e.length===0)throw\"MGRSPoint coverting from nothing\";for(var t=e.length,r=null,i=\"\",s,n=0;!/[A-Z]/.test(s=e.charAt(n));){if(n>=2)throw\"MGRSPoint bad conversion from: \"+e;i+=s,n++}var o=parseInt(i,10);if(n===0||n+3>t)throw\"MGRSPoint bad conversion from: \"+e;var c=e.charAt(n++);if(c<=\"A\"||c===\"B\"||c===\"Y\"||c>=\"Z\"||c===\"I\"||c===\"O\")throw\"MGRSPoint zone letter \"+c+\" not handled: \"+e;r=e.substring(n,n+=2);for(var f=HZ(o),_=VAt(r.charAt(0),f),w=jAt(r.charAt(1),f);w0&&(Q=1e5/Math.pow(10,R),et=e.substring(n,n+R),N=parseFloat(et)*Q,Y=e.substring(n+R),j=parseFloat(Y)*Q),K=N+_,J=j+w,{easting:K,northing:J,zoneLetter:c,zoneNumber:o,accuracy:Q}}function VAt(e,t){for(var r=jZ.charCodeAt(t-1),i=1e5,s=!1;r!==e.charCodeAt(0);){if(r++,r===wc&&r++,r===Ju&&r++,r>oS){if(s)throw\"Bad character: \"+e;r=rx,s=!0}i+=1e5}return i}function jAt(e,t){if(e>\"V\")throw\"MGRSPoint given invalid Northing \"+e;for(var r=GZ.charCodeAt(t-1),i=0,s=!1;r!==e.charCodeAt(0);){if(r++,r===wc&&r++,r===Ju&&r++,r>sS){if(s)throw\"Bad character: \"+e;r=rx,s=!0}i+=1e5}return i}function GAt(e){var t;switch(e){case\"C\":t=11e5;break;case\"D\":t=2e6;break;case\"E\":t=28e5;break;case\"F\":t=37e5;break;case\"G\":t=46e5;break;case\"H\":t=55e5;break;case\"J\":t=64e5;break;case\"K\":t=73e5;break;case\"L\":t=82e5;break;case\"M\":t=91e5;break;case\"N\":t=0;break;case\"P\":t=8e5;break;case\"Q\":t=17e5;break;case\"R\":t=26e5;break;case\"S\":t=35e5;break;case\"T\":t=44e5;break;case\"U\":t=53e5;break;case\"V\":t=62e5;break;case\"W\":t=7e6;break;case\"X\":t=79e5;break;default:t=-1}if(t>=0)return t;throw\"Invalid zone letter: \"+e}function ix(e,t,r){if(!(this instanceof ix))return new ix(e,t,r);if(Array.isArray(e))this.x=e[0],this.y=e[1],this.z=e[2]||0;else if(typeof e==\"object\")this.x=e.x,this.y=e.y,this.z=e.z||0;else if(typeof e==\"string\"&&typeof t>\"u\"){var i=e.split(\",\");this.x=parseFloat(i[0],10),this.y=parseFloat(i[1],10),this.z=parseFloat(i[2],10)||0}else this.x=e,this.y=t,this.z=r||0;console.warn(\"proj4.Point will be removed in version 3, use proj4.toPoint\")}ix.fromMGRS=function(e){return new ix(wB(e))};ix.prototype.toMGRS=function(e){return bB([this.x,this.y],e)};var ZZ=ix;var WAt=1,HAt=.25,YZ=.046875,QZ=.01953125,$Z=.01068115234375,qAt=.75,ZAt=.46875,YAt=.013020833333333334,QAt=.007120768229166667,$At=.3645833333333333,XAt=.005696614583333333,KAt=.3076171875;function J3(e){var t=[];t[0]=WAt-e*(HAt+e*(YZ+e*(QZ+e*$Z))),t[1]=e*(qAt-e*(YZ+e*(QZ+e*$Z)));var r=e*e;return t[2]=r*(ZAt-e*(YAt+e*QAt)),r*=e,t[3]=r*($At-e*XAt),t[4]=r*e*KAt,t}function Zg(e,t,r,i){return r*=t,t*=t,i[0]*e-r*(i[1]+t*(i[2]+t*(i[3]+t*i[4])))}var JAt=20;function tI(e,t,r){for(var i=1/(1-t),s=e,n=JAt;n;--n){var o=Math.sin(s),c=1-t*o*o;if(c=(Zg(s,o,Math.cos(s),r)-e)*(c*Math.sqrt(c))*i,s-=c,Math.abs(c)we?Math.tan(r):0,Q=Math.pow(j,2),et=Math.pow(Q,2);s=1-this.es*Math.pow(c,2),w=w/Math.sqrt(s);var Y=Zg(r,c,f,this.en);n=this.a*(this.k0*w*(1+I/6*(1-Q+R+I/20*(5-18*Q+et+14*R-58*Q*R+I/42*(61+179*et-et*Q-479*Q)))))+this.x0,o=this.a*(this.k0*(Y-this.ml0+c*i*w/2*(1+I/12*(5-Q+9*R+4*N+I/30*(61+et-58*Q+270*R-330*Q*R+I/56*(1385+543*et-et*Q-3111*Q))))))+this.y0}else{var _=f*Math.sin(i);if(Math.abs(Math.abs(_)-1)=1){if(_-1>we)return 93;o=0}else o=Math.acos(o);r<0&&(o=-o),o=this.a*this.k0*(o-this.lat0)+this.y0}return e.x=n,e.y=o,e}function rmt(e){var t,r,i,s,n=(e.x-this.x0)*(1/this.a),o=(e.y-this.y0)*(1/this.a);if(this.es)if(t=this.ml0+o/this.k0,r=tI(t,this.es,this.en),Math.abs(r)we?Math.tan(r):0,j=this.ep2*Math.pow(R,2),Q=Math.pow(j,2),et=Math.pow(N,2),Y=Math.pow(et,2);t=1-this.es*Math.pow(I,2);var K=n*Math.sqrt(t)/this.k0,J=Math.pow(K,2);t=t*N,i=r-t*J/(1-this.es)*.5*(1-J/12*(5+3*et-9*j*et+j-4*Q-J/30*(61+90*et-252*j*et+45*Y+46*j-J/56*(1385+3633*et+4095*Y+1574*Y*et)))),s=Ie(this.long0+K*(1-J/6*(1+2*et+j-J/20*(5+28*et+24*Y+8*j*et+6*j-J/42*(61+662*et+1320*Y+720*Y*et))))/R)}else i=de*dd(o),s=0;else{var c=Math.exp(n/this.k0),f=.5*(c-1/c),_=this.lat0+o/this.k0,w=Math.cos(_);t=Math.sqrt((1-Math.pow(w,2))/(1+Math.pow(f,2))),i=Math.asin(t),o<0&&(i=-i),f===0&&w===0?s=0:s=Ie(Math.atan2(f,w)+this.long0)}return e.x=s,e.y=i,e}var imt=[\"Fast_Transverse_Mercator\",\"Fast Transverse Mercator\"],nx={init:tmt,forward:emt,inverse:rmt,names:imt};function eI(e){var t=Math.exp(e);return t=(t-1/t)/2,t}function Ta(e,t){e=Math.abs(e),t=Math.abs(t);var r=Math.max(e,t),i=Math.min(e,t)/(r||1);return r*Math.sqrt(1+Math.pow(i,2))}function XZ(e){var t=1+e,r=t-1;return r===0?e:e*Math.log(t)/r}function KZ(e){var t=Math.abs(e);return t=XZ(t*(1+t/(Ta(1,t)+1))),e<0?-t:t}function rI(e,t){for(var r=2*Math.cos(2*t),i=e.length-1,s=e[i],n=0,o;--i>=0;)o=-n+r*s+e[i],n=s,s=o;return t+o*Math.sin(2*t)}function JZ(e,t){for(var r=2*Math.cos(t),i=e.length-1,s=e[i],n=0,o;--i>=0;)o=-n+r*s+e[i],n=s,s=o;return Math.sin(t)*o}function tY(e){var t=Math.exp(e);return t=(t+1/t)/2,t}function TB(e,t,r){for(var i=Math.sin(t),s=Math.cos(t),n=eI(r),o=tY(r),c=2*s*o,f=-2*i*n,_=e.length-1,w=e[_],I=0,R=0,N=0,j,Q;--_>=0;)j=R,Q=I,R=w,I=N,w=-j+c*R-f*I+e[_],N=-Q+f*R+c*I;return c=i*o,f=s*n,[c*w-f*N,c*N+f*w]}function nmt(){if(!this.approx&&(isNaN(this.es)||this.es<=0))throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');this.approx&&(nx.init.apply(this),this.forward=nx.forward,this.inverse=nx.inverse),this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var e=this.es/(1+Math.sqrt(1-this.es)),t=e/(2-e),r=t;this.cgb[0]=t*(2+t*(-2/3+t*(-2+t*(116/45+t*(26/45+t*(-2854/675)))))),this.cbg[0]=t*(-2+t*(2/3+t*(4/3+t*(-82/45+t*(32/45+t*(4642/4725)))))),r=r*t,this.cgb[1]=r*(7/3+t*(-8/5+t*(-227/45+t*(2704/315+t*(2323/945))))),this.cbg[1]=r*(5/3+t*(-16/15+t*(-13/9+t*(904/315+t*(-1522/945))))),r=r*t,this.cgb[2]=r*(56/15+t*(-136/35+t*(-1262/105+t*(73814/2835)))),this.cbg[2]=r*(-26/15+t*(34/21+t*(8/5+t*(-12686/2835)))),r=r*t,this.cgb[3]=r*(4279/630+t*(-332/35+t*(-399572/14175))),this.cbg[3]=r*(1237/630+t*(-12/5+t*(-24832/14175))),r=r*t,this.cgb[4]=r*(4174/315+t*(-144838/6237)),this.cbg[4]=r*(-734/315+t*(109598/31185)),r=r*t,this.cgb[5]=r*(601676/22275),this.cbg[5]=r*(444337/155925),r=Math.pow(t,2),this.Qn=this.k0/(1+t)*(1+r*(1/4+r*(1/64+r/256))),this.utg[0]=t*(-.5+t*(2/3+t*(-37/96+t*(1/360+t*(81/512+t*(-96199/604800)))))),this.gtu[0]=t*(.5+t*(-2/3+t*(5/16+t*(41/180+t*(-127/288+t*(7891/37800)))))),this.utg[1]=r*(-1/48+t*(-1/15+t*(437/1440+t*(-46/105+t*(1118711/3870720))))),this.gtu[1]=r*(13/48+t*(-3/5+t*(557/1440+t*(281/630+t*(-1983433/1935360))))),r=r*t,this.utg[2]=r*(-17/480+t*(37/840+t*(209/4480+t*(-5569/90720)))),this.gtu[2]=r*(61/240+t*(-103/140+t*(15061/26880+t*(167603/181440)))),r=r*t,this.utg[3]=r*(-4397/161280+t*(11/504+t*(830251/7257600))),this.gtu[3]=r*(49561/161280+t*(-179/168+t*(6601661/7257600))),r=r*t,this.utg[4]=r*(-4583/161280+t*(108847/3991680)),this.gtu[4]=r*(34729/80640+t*(-3418889/1995840)),r=r*t,this.utg[5]=r*(-20648693/638668800),this.gtu[5]=r*(212378941/319334400);var i=rI(this.cbg,this.lat0);this.Zb=-this.Qn*(i+JZ(this.gtu,2*i))}function smt(e){var t=Ie(e.x-this.long0),r=e.y;r=rI(this.cbg,r);var i=Math.sin(r),s=Math.cos(r),n=Math.sin(t),o=Math.cos(t);r=Math.atan2(i,o*s),t=Math.atan2(n*s,Ta(i,s*o)),t=KZ(Math.tan(t));var c=TB(this.gtu,2*r,2*t);r=r+c[0],t=t+c[1];var f,_;return Math.abs(t)<=2.623395162778?(f=this.a*(this.Qn*t)+this.x0,_=this.a*(this.Qn*r+this.Zb)+this.y0):(f=1/0,_=1/0),e.x=f,e.y=_,e}function omt(e){var t=(e.x-this.x0)*(1/this.a),r=(e.y-this.y0)*(1/this.a);r=(r-this.Zb)/this.Qn,t=t/this.Qn;var i,s;if(Math.abs(t)<=2.623395162778){var n=TB(this.utg,2*r,2*t);r=r+n[0],t=t+n[1],t=Math.atan(eI(t));var o=Math.sin(r),c=Math.cos(r),f=Math.sin(t),_=Math.cos(t);r=Math.atan2(o*_,Ta(f,_*c)),t=Math.atan2(f,_*c),i=Ie(t+this.long0),s=rI(this.cgb,r)}else i=1/0,s=1/0;return e.x=i,e.y=s,e}var amt=[\"Extended_Transverse_Mercator\",\"Extended Transverse Mercator\",\"etmerc\",\"Transverse_Mercator\",\"Transverse Mercator\",\"Gauss Kruger\",\"Gauss_Kruger\",\"tmerc\"],sx={init:nmt,forward:smt,inverse:omt,names:amt};function eY(e,t){if(e===void 0){if(e=Math.floor((Ie(t)+Math.PI)*30/Math.PI)+1,e<0)return 0;if(e>60)return 60}return e}var lmt=\"etmerc\";function cmt(){var e=eY(this.zone,this.long0);if(e===void 0)throw new Error(\"unknown utm zone\");this.lat0=0,this.long0=(6*Math.abs(e)-183)*vs,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,sx.init.apply(this),this.forward=sx.forward,this.inverse=sx.inverse}var umt=[\"Universal Transverse Mercator System\",\"utm\"],rY={init:cmt,names:umt,dependsOn:lmt};function iI(e,t){return Math.pow((1-e)/(1+e),t)}var hmt=20;function fmt(){var e=Math.sin(this.lat0),t=Math.cos(this.lat0);t*=t,this.rc=Math.sqrt(1-this.es)/(1-this.es*e*e),this.C=Math.sqrt(1+this.es*t*t/(1-this.es)),this.phic0=Math.asin(e/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+Fi)/(Math.pow(Math.tan(.5*this.lat0+Fi),this.C)*iI(this.e*e,this.ratexp))}function dmt(e){var t=e.x,r=e.y;return e.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*r+Fi),this.C)*iI(this.e*Math.sin(r),this.ratexp))-de,e.x=this.C*t,e}function pmt(e){for(var t=1e-14,r=e.x/this.C,i=e.y,s=Math.pow(Math.tan(.5*i+Fi)/this.K,1/this.C),n=hmt;n>0&&(i=2*Math.atan(s*iI(this.e*Math.sin(e.y),-.5*this.e))-de,!(Math.abs(i-e.y)0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=we&&Math.abs(Math.cos(this.lat_ts))>we&&(this.k0=.5*this.cons*sl(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/Dl(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=sl(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-de,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))}function bmt(e){var t=e.x,r=e.y,i=Math.sin(r),s=Math.cos(r),n,o,c,f,_,w,I=Ie(t-this.long0);return Math.abs(Math.abs(t-this.long0)-Math.PI)<=we&&Math.abs(r+this.lat0)<=we?(e.x=NaN,e.y=NaN,e):this.sphere?(n=2*this.k0/(1+this.sinlat0*i+this.coslat0*s*Math.cos(I)),e.x=this.a*n*s*Math.sin(I)+this.x0,e.y=this.a*n*(this.coslat0*i-this.sinlat0*s*Math.cos(I))+this.y0,e):(o=2*Math.atan(this.ssfn_(r,i,this.e))-de,f=Math.cos(o),c=Math.sin(o),Math.abs(this.coslat0)<=we?(_=Dl(this.e,r*this.con,this.con*i),w=2*this.a*this.k0*_/this.cons,e.x=this.x0+w*Math.sin(t-this.long0),e.y=this.y0-this.con*w*Math.cos(t-this.long0),e):(Math.abs(this.sinlat0)0?t=Ie(this.long0+Math.atan2(e.x,-1*e.y)):t=Ie(this.long0+Math.atan2(e.x,e.y)):t=Ie(this.long0+Math.atan2(e.x*Math.sin(c),o*this.coslat0*Math.cos(c)-e.y*this.sinlat0*Math.sin(c))),e.x=t,e.y=r,e)}else if(Math.abs(this.coslat0)<=we){if(o<=we)return r=this.lat0,t=this.long0,e.x=t,e.y=r,e;e.x*=this.con,e.y*=this.con,i=o*this.cons/(2*this.a*this.k0),r=this.con*Lp(this.e,i),t=this.con*Ie(this.con*this.long0+Math.atan2(e.x,-1*e.y))}else s=2*Math.atan(o*this.cosX0/(2*this.a*this.k0*this.ms1)),t=this.long0,o<=we?n=this.X0:(n=Math.asin(Math.cos(s)*this.sinX0+e.y*Math.sin(s)*this.cosX0/o),t=Ie(this.long0+Math.atan2(e.x*Math.sin(s),o*this.cosX0*Math.cos(s)-e.y*this.sinX0*Math.sin(s)))),r=-1*Lp(this.e,Math.tan(.5*(de+n)));return e.x=t,e.y=r,e}var Smt=[\"stere\",\"Stereographic_South_Pole\",\"Polar Stereographic (variant B)\",\"Polar_Stereographic\"],nY={init:xmt,forward:bmt,inverse:wmt,names:Smt,ssfn_:vmt};function Tmt(){var e=this.lat0;this.lambda0=this.long0;var t=Math.sin(e),r=this.a,i=this.rf,s=1/i,n=2*s-Math.pow(s,2),o=this.e=Math.sqrt(n);this.R=this.k0*r*Math.sqrt(1-n)/(1-n*Math.pow(t,2)),this.alpha=Math.sqrt(1+n/(1-n)*Math.pow(Math.cos(e),4)),this.b0=Math.asin(t/this.alpha);var c=Math.log(Math.tan(Math.PI/4+this.b0/2)),f=Math.log(Math.tan(Math.PI/4+e/2)),_=Math.log((1+o*t)/(1-o*t));this.K=c-this.alpha*f+this.alpha*o/2*_}function Mmt(e){var t=Math.log(Math.tan(Math.PI/4-e.y/2)),r=this.e/2*Math.log((1+this.e*Math.sin(e.y))/(1-this.e*Math.sin(e.y))),i=-this.alpha*(t+r)+this.K,s=2*(Math.atan(Math.exp(i))-Math.PI/4),n=this.alpha*(e.x-this.lambda0),o=Math.atan(Math.sin(n)/(Math.sin(this.b0)*Math.tan(s)+Math.cos(this.b0)*Math.cos(n))),c=Math.asin(Math.cos(this.b0)*Math.sin(s)-Math.sin(this.b0)*Math.cos(s)*Math.cos(n));return e.y=this.R/2*Math.log((1+Math.sin(c))/(1-Math.sin(c)))+this.y0,e.x=this.R*o+this.x0,e}function Emt(e){for(var t=e.x-this.x0,r=e.y-this.y0,i=t/this.R,s=2*(Math.atan(Math.exp(r/this.R))-Math.PI/4),n=Math.asin(Math.cos(this.b0)*Math.sin(s)+Math.sin(this.b0)*Math.cos(s)*Math.cos(i)),o=Math.atan(Math.sin(i)/(Math.cos(this.b0)*Math.cos(i)-Math.sin(this.b0)*Math.tan(s))),c=this.lambda0+o/this.alpha,f=0,_=n,w=-1e3,I=0;Math.abs(_-w)>1e-7;){if(++I>20)return;f=1/this.alpha*(Math.log(Math.tan(Math.PI/4+n/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(_))/2)),w=_,_=2*Math.atan(Math.exp(f))-Math.PI/2}return e.x=c,e.y=_,e}var Pmt=[\"somerc\"],sY={init:Tmt,forward:Mmt,inverse:Emt,names:Pmt};var ox=1e-7;function Imt(e){var t=[\"Hotine_Oblique_Mercator\",\"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\"],r=typeof e.PROJECTION==\"object\"?Object.keys(e.PROJECTION)[0]:e.PROJECTION;return\"no_uoff\"in e||\"no_off\"in e||t.indexOf(r)!==-1}function Cmt(){var e,t,r,i,s,n,o,c,f,_,w=0,I,R=0,N=0,j=0,Q=0,et=0,Y=0,K;this.no_off=Imt(this),this.no_rot=\"no_rot\"in this;var J=!1;\"alpha\"in this&&(J=!0);var ut=!1;if(\"rectified_grid_angle\"in this&&(ut=!0),J&&(Y=this.alpha),ut&&(w=this.rectified_grid_angle*vs),J||ut)R=this.longc;else if(N=this.long1,Q=this.lat1,j=this.long2,et=this.lat2,Math.abs(Q-et)<=ox||(e=Math.abs(Q))<=ox||Math.abs(e-de)<=ox||Math.abs(Math.abs(this.lat0)-de)<=ox||Math.abs(Math.abs(et)-de)<=ox)throw new Error;var Pt=1-this.es;t=Math.sqrt(Pt),Math.abs(this.lat0)>we?(c=Math.sin(this.lat0),r=Math.cos(this.lat0),e=1-this.es*c*c,this.B=r*r,this.B=Math.sqrt(1+this.es*this.B*this.B/Pt),this.A=this.B*this.k0*t/e,i=this.B*t/(r*Math.sqrt(e)),s=i*i-1,s<=0?s=0:(s=Math.sqrt(s),this.lat0<0&&(s=-s)),this.E=s+=i,this.E*=Math.pow(Dl(this.e,this.lat0,c),this.B)):(this.B=1/t,this.A=this.k0,this.E=i=s=1),J||ut?(J?(I=Math.asin(Math.sin(Y)/i),ut||(w=Y)):(I=w,Y=Math.asin(i*Math.sin(I))),this.lam0=R-Math.asin(.5*(s-1/s)*Math.tan(I))/this.B):(n=Math.pow(Dl(this.e,Q,Math.sin(Q)),this.B),o=Math.pow(Dl(this.e,et,Math.sin(et)),this.B),s=this.E/n,f=(o-n)/(o+n),_=this.E*this.E,_=(_-o*n)/(_+o*n),e=N-j,e<-Math.pi?j-=Tm:e>Math.pi&&(j+=Tm),this.lam0=Ie(.5*(N+j)-Math.atan(_*Math.tan(.5*this.B*(N-j))/f)/this.B),I=Math.atan(2*Math.sin(this.B*Ie(N-this.lam0))/(s-1/s)),w=Y=Math.asin(i*Math.sin(I))),this.singam=Math.sin(I),this.cosgam=Math.cos(I),this.sinrot=Math.sin(w),this.cosrot=Math.cos(w),this.rB=1/this.B,this.ArB=this.A*this.rB,this.BrA=1/this.ArB,K=this.A*this.B,this.no_off?this.u_0=0:(this.u_0=Math.abs(this.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos(Y))),this.lat0<0&&(this.u_0=-this.u_0)),s=.5*I,this.v_pole_n=this.ArB*Math.log(Math.tan(Fi-s)),this.v_pole_s=this.ArB*Math.log(Math.tan(Fi+s))}function Lmt(e){var t={},r,i,s,n,o,c,f,_;if(e.x=e.x-this.lam0,Math.abs(Math.abs(e.y)-de)>we){if(o=this.E/Math.pow(Dl(this.e,e.y,Math.sin(e.y)),this.B),c=1/o,r=.5*(o-c),i=.5*(o+c),n=Math.sin(this.B*e.x),s=(r*this.singam-n*this.cosgam)/i,Math.abs(Math.abs(s)-1)0?this.v_pole_n:this.v_pole_s,f=this.ArB*e.y;return this.no_rot?(t.x=f,t.y=_):(f-=this.u_0,t.x=_*this.cosrot+f*this.sinrot,t.y=f*this.cosrot-_*this.sinrot),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t}function kmt(e){var t,r,i,s,n,o,c,f={};if(e.x=(e.x-this.x0)*(1/this.a),e.y=(e.y-this.y0)*(1/this.a),this.no_rot?(r=e.y,t=e.x):(r=e.x*this.cosrot-e.y*this.sinrot,t=e.y*this.cosrot+e.x*this.sinrot+this.u_0),i=Math.exp(-this.BrA*r),s=.5*(i-1/i),n=.5*(i+1/i),o=Math.sin(this.BrA*t),c=(o*this.cosgam+s*this.singam)/n,Math.abs(Math.abs(c)-1)we?this.ns=Math.log(i/c)/Math.log(s/f):this.ns=t,isNaN(this.ns)&&(this.ns=t),this.f0=i/(this.ns*Math.pow(s,this.ns)),this.rh=this.a*this.f0*Math.pow(_,this.ns),this.title||(this.title=\"Lambert Conformal Conic\")}}function Omt(e){var t=e.x,r=e.y;Math.abs(2*Math.abs(r)-Math.PI)<=we&&(r=dd(r)*(de-2*we));var i=Math.abs(Math.abs(r)-de),s,n;if(i>we)s=Dl(this.e,r,Math.sin(r)),n=this.a*this.f0*Math.pow(s,this.ns);else{if(i=r*this.ns,i<=0)return null;n=0}var o=this.ns*Ie(t-this.long0);return e.x=this.k0*(n*Math.sin(o))+this.x0,e.y=this.k0*(this.rh-n*Math.cos(o))+this.y0,e}function Bmt(e){var t,r,i,s,n,o=(e.x-this.x0)/this.k0,c=this.rh-(e.y-this.y0)/this.k0;this.ns>0?(t=Math.sqrt(o*o+c*c),r=1):(t=-Math.sqrt(o*o+c*c),r=-1);var f=0;if(t!==0&&(f=Math.atan2(r*o,r*c)),t!==0||this.ns>0){if(r=1/this.ns,i=Math.pow(t/(this.a*this.f0),r),s=Lp(this.e,i),s===-9999)return null}else s=-de;return n=Ie(f/this.ns+this.long0),e.x=n,e.y=s,e}var Fmt=[\"Lambert Tangential Conformal Conic Projection\",\"Lambert_Conformal_Conic\",\"Lambert_Conformal_Conic_1SP\",\"Lambert_Conformal_Conic_2SP\",\"lcc\",\"Lambert Conic Conformal (1SP)\",\"Lambert Conic Conformal (2SP)\"],aY={init:Dmt,forward:Omt,inverse:Bmt,names:Fmt};function zmt(){this.a=6377397155e-3,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.7417649320975901-.308341501185665),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq}function Nmt(e){var t,r,i,s,n,o,c,f=e.x,_=e.y,w=Ie(f-this.long0);return t=Math.pow((1+this.e*Math.sin(_))/(1-this.e*Math.sin(_)),this.alfa*this.e/2),r=2*(Math.atan(this.k*Math.pow(Math.tan(_/2+this.s45),this.alfa)/t)-this.s45),i=-w*this.alfa,s=Math.asin(Math.cos(this.ad)*Math.sin(r)+Math.sin(this.ad)*Math.cos(r)*Math.cos(i)),n=Math.asin(Math.cos(r)*Math.sin(i)/Math.cos(s)),o=this.n*n,c=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(s/2+this.s45),this.n),e.y=c*Math.cos(o)/1,e.x=c*Math.sin(o)/1,this.czech||(e.y*=-1,e.x*=-1),e}function Umt(e){var t,r,i,s,n,o,c,f,_=e.x;e.x=e.y,e.y=_,this.czech||(e.y*=-1,e.x*=-1),o=Math.sqrt(e.x*e.x+e.y*e.y),n=Math.atan2(e.y,e.x),s=n/Math.sin(this.s0),i=2*(Math.atan(Math.pow(this.ro0/o,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),t=Math.asin(Math.cos(this.ad)*Math.sin(i)-Math.sin(this.ad)*Math.cos(i)*Math.cos(s)),r=Math.asin(Math.cos(i)*Math.sin(s)/Math.cos(t)),e.x=this.long0-r/this.alfa,c=t,f=0;var w=0;do e.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(t/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(c))/(1-this.e*Math.sin(c)),this.e/2))-this.s45),Math.abs(c-e.y)<1e-10&&(f=1),c=e.y,w+=1;while(f===0&&w<15);return w>=15?null:e}var Vmt=[\"Krovak\",\"krovak\"],lY={init:zmt,forward:Nmt,inverse:Umt,names:Vmt};function zo(e,t,r,i,s){return e*s-t*Math.sin(2*s)+r*Math.sin(4*s)-i*Math.sin(6*s)}function kp(e){return 1-.25*e*(1+e/16*(3+1.25*e))}function Rp(e){return .375*e*(1+.25*e*(1+.46875*e))}function Dp(e){return .05859375*e*e*(1+.75*e)}function Op(e){return e*e*e*(35/3072)}function Bp(e,t,r){var i=t*r;return e/Math.sqrt(1-i*i)}function ff(e){return Math.abs(e)1e-7?(r=e*t,(1-e*e)*(t/(1-r*r)-.5/e*Math.log((1-r)/(1+r)))):2*t}var qmt=1,Zmt=2,Ymt=3,Qmt=4;function $mt(){var e=Math.abs(this.lat0);if(Math.abs(e-de)0){var t;switch(this.qp=df(this.e,1),this.mmf=.5/(1-this.es),this.apa=s0t(this.es),this.mode){case this.N_POLE:this.dd=1;break;case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=df(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd;break}}else this.mode===this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))}function Xmt(e){var t,r,i,s,n,o,c,f,_,w,I=e.x,R=e.y;if(I=Ie(I-this.long0),this.sphere){if(n=Math.sin(R),w=Math.cos(R),i=Math.cos(I),this.mode===this.OBLIQ||this.mode===this.EQUIT){if(r=this.mode===this.EQUIT?1+w*i:1+this.sinph0*n+this.cosph0*w*i,r<=we)return null;r=Math.sqrt(2/r),t=r*w*Math.sin(I),r*=this.mode===this.EQUIT?n:this.cosph0*n-this.sinph0*w*i}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(i=-i),Math.abs(R+this.lat0)=0?(t=(_=Math.sqrt(o))*s,r=i*(this.mode===this.S_POLE?_:-_)):t=r=0;break}}return e.x=this.a*t+this.x0,e.y=this.a*r+this.y0,e}function Kmt(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,r=e.y/this.a,i,s,n,o,c,f,_;if(this.sphere){var w=0,I,R=0;if(I=Math.sqrt(t*t+r*r),s=I*.5,s>1)return null;switch(s=2*Math.asin(s),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(R=Math.sin(s),w=Math.cos(s)),this.mode){case this.EQUIT:s=Math.abs(I)<=we?0:Math.asin(r*R/I),t*=R,r=w*I;break;case this.OBLIQ:s=Math.abs(I)<=we?this.lat0:Math.asin(w*this.sinph0+r*R*this.cosph0/I),t*=R*this.cosph0,r=(w-Math.sin(s)*this.sinph0)*I;break;case this.N_POLE:r=-r,s=de-s;break;case this.S_POLE:s-=de;break}i=r===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(t,r)}else{if(_=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(t/=this.dd,r*=this.dd,f=Math.sqrt(t*t+r*r),f1&&(e=e>1?1:-1),Math.asin(e)}function l0t(){Math.abs(this.lat1+this.lat2)we?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)}function c0t(e){var t=e.x,r=e.y;this.sin_phi=Math.sin(r),this.cos_phi=Math.cos(r);var i=df(this.e3,this.sin_phi),s=this.a*Math.sqrt(this.c-this.ns0*i)/this.ns0,n=this.ns0*Ie(t-this.long0),o=s*Math.sin(n)+this.x0,c=this.rh-s*Math.cos(n)+this.y0;return e.x=o,e.y=c,e}function u0t(e){var t,r,i,s,n,o;return e.x-=this.x0,e.y=this.rh-e.y+this.y0,this.ns0>=0?(t=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(t=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),s=0,t!==0&&(s=Math.atan2(i*e.x,i*e.y)),i=t*this.ns0/this.a,this.sphere?o=Math.asin((this.c-i*i)/(2*this.ns0)):(r=(this.c-i*i)/this.ns0,o=this.phi1z(this.e3,r)),n=Ie(s/this.ns0+this.long0),e.x=n,e.y=o,e}function h0t(e,t){var r,i,s,n,o,c=Sc(.5*t);if(e0||Math.abs(o)<=we?(c=this.x0+this.a*n*r*Math.sin(i)/o,f=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*s)/o):(c=this.x0+this.infinity_dist*r*Math.sin(i),f=this.y0+this.infinity_dist*(this.cos_p14*t-this.sin_p14*r*s)),e.x=c,e.y=f,e}function A0t(e){var t,r,i,s,n,o;return e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,(t=Math.sqrt(e.x*e.x+e.y*e.y))?(s=Math.atan2(t,this.rc),r=Math.sin(s),i=Math.cos(s),o=Sc(i*this.sin_p14+e.y*r*this.cos_p14/t),n=Math.atan2(e.x*r,t*this.cos_p14*i-e.y*this.sin_p14*r),n=Ie(this.long0+n)):(o=this.phic0,n=0),e.x=n,e.y=o,e}var m0t=[\"gnom\"],fY={init:d0t,forward:p0t,inverse:A0t,names:m0t};function dY(e,t){var r=1-(1-e*e)/(2*e)*Math.log((1-e)/(1+e));if(Math.abs(Math.abs(t)-r)<1e-6)return t<0?-1*de:de;for(var i=Math.asin(.5*t),s,n,o,c,f=0;f<30;f++)if(n=Math.sin(i),o=Math.cos(i),c=e*n,s=Math.pow(1-c*c,2)/(2*o)*(t/(1-e*e)-n/(1-c*c)+.5/e*Math.log((1-c)/(1+c))),i+=s,Math.abs(s)<=1e-10)return i;return NaN}function g0t(){this.sphere||(this.k0=sl(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))}function _0t(e){var t=e.x,r=e.y,i,s,n=Ie(t-this.long0);if(this.sphere)i=this.x0+this.a*n*Math.cos(this.lat_ts),s=this.y0+this.a*Math.sin(r)/Math.cos(this.lat_ts);else{var o=df(this.e,Math.sin(r));i=this.x0+this.a*this.k0*n,s=this.y0+this.a*o*.5/this.k0}return e.x=i,e.y=s,e}function y0t(e){e.x-=this.x0,e.y-=this.y0;var t,r;return this.sphere?(t=Ie(this.long0+e.x/this.a/Math.cos(this.lat_ts)),r=Math.asin(e.y/this.a*Math.cos(this.lat_ts))):(r=dY(this.e,2*e.y*this.k0/this.a),t=Ie(this.long0+e.x/(this.a*this.k0))),e.x=t,e.y=r,e}var v0t=[\"cea\"],pY={init:g0t,forward:_0t,inverse:y0t,names:v0t};function x0t(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||\"Equidistant Cylindrical (Plate Carre)\",this.rc=Math.cos(this.lat_ts)}function b0t(e){var t=e.x,r=e.y,i=Ie(t-this.long0),s=ff(r-this.lat0);return e.x=this.x0+this.a*i*this.rc,e.y=this.y0+this.a*s,e}function w0t(e){var t=e.x,r=e.y;return e.x=Ie(this.long0+(t-this.x0)/(this.a*this.rc)),e.y=ff(this.lat0+(r-this.y0)/this.a),e}var S0t=[\"Equirectangular\",\"Equidistant_Cylindrical\",\"eqc\"],AY={init:x0t,forward:b0t,inverse:w0t,names:S0t};var mY=20;function T0t(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=kp(this.es),this.e1=Rp(this.es),this.e2=Dp(this.es),this.e3=Op(this.es),this.ml0=this.a*zo(this.e0,this.e1,this.e2,this.e3,this.lat0)}function M0t(e){var t=e.x,r=e.y,i,s,n,o=Ie(t-this.long0);if(n=o*Math.sin(r),this.sphere)Math.abs(r)<=we?(i=this.a*o,s=-1*this.a*this.lat0):(i=this.a*Math.sin(n)/Math.tan(r),s=this.a*(ff(r-this.lat0)+(1-Math.cos(n))/Math.tan(r)));else if(Math.abs(r)<=we)i=this.a*o,s=-1*this.ml0;else{var c=Bp(this.a,this.e,Math.sin(r))/Math.tan(r);i=c*Math.sin(n),s=this.a*zo(this.e0,this.e1,this.e2,this.e3,r)-this.ml0+c*(1-Math.cos(n))}return e.x=i+this.x0,e.y=s+this.y0,e}function E0t(e){var t,r,i,s,n,o,c,f,_;if(i=e.x-this.x0,s=e.y-this.y0,this.sphere)if(Math.abs(s+this.a*this.lat0)<=we)t=Ie(i/this.a+this.long0),r=0;else{o=this.lat0+s/this.a,c=i*i/this.a/this.a+o*o,f=o;var w;for(n=mY;n;--n)if(w=Math.tan(f),_=-1*(o*(f*w+1)-f-.5*(f*f+c)*w)/((f-o)/w-1),f+=_,Math.abs(_)<=we){r=f;break}t=Ie(this.long0+Math.asin(i*Math.tan(f)/this.a)/Math.sin(r))}else if(Math.abs(s+this.ml0)<=we)r=0,t=Ie(this.long0+i/this.a);else{o=(this.ml0+s)/this.a,c=i*i/this.a/this.a+o*o,f=o;var I,R,N,j,Q;for(n=mY;n;--n)if(Q=this.e*Math.sin(f),I=Math.sqrt(1-Q*Q)*Math.tan(f),R=this.a*zo(this.e0,this.e1,this.e2,this.e3,f),N=this.e0-2*this.e1*Math.cos(2*f)+4*this.e2*Math.cos(4*f)-6*this.e3*Math.cos(6*f),j=R/this.a,_=(o*(I*j+1)-j-.5*I*(j*j+c))/(this.es*Math.sin(2*f)*(j*j+c-2*o*j)/(4*I)+(o-j)*(I*N-2/Math.sin(2*f))-N),f-=_,Math.abs(_)<=we){r=f;break}I=Math.sqrt(1-this.es*Math.pow(Math.sin(r),2))*Math.tan(r),t=Ie(this.long0+Math.asin(i*I/this.a)/Math.sin(r))}return e.x=t,e.y=r,e}var P0t=[\"Polyconic\",\"poly\"],gY={init:T0t,forward:M0t,inverse:E0t,names:P0t};function I0t(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013}function C0t(e){var t,r=e.x,i=e.y,s=i-this.lat0,n=r-this.long0,o=s/Wg*1e-5,c=n,f=1,_=0;for(t=1;t<=10;t++)f=f*o,_=_+this.A[t]*f;var w=_,I=c,R=1,N=0,j,Q,et=0,Y=0;for(t=1;t<=6;t++)j=R*w-N*I,Q=N*w+R*I,R=j,N=Q,et=et+this.B_re[t]*R-this.B_im[t]*N,Y=Y+this.B_im[t]*R+this.B_re[t]*N;return e.x=Y*this.a+this.x0,e.y=et*this.a+this.y0,e}function L0t(e){var t,r=e.x,i=e.y,s=r-this.x0,n=i-this.y0,o=n/this.a,c=s/this.a,f=1,_=0,w,I,R=0,N=0;for(t=1;t<=6;t++)w=f*o-_*c,I=_*o+f*c,f=w,_=I,R=R+this.C_re[t]*f-this.C_im[t]*_,N=N+this.C_im[t]*f+this.C_re[t]*_;for(var j=0;j.999999999999&&(r=.999999999999),t=Math.asin(r);var i=Ie(this.long0+e.x/(.900316316158*this.a*Math.cos(t)));i<-Math.PI&&(i=-Math.PI),i>Math.PI&&(i=Math.PI),r=(2*t+Math.sin(2*t))/Math.PI,Math.abs(r)>1&&(r=1);var s=Math.asin(r);return e.x=i,e.y=s,e}var H0t=[\"Mollweide\",\"moll\"],xY={init:j0t,forward:G0t,inverse:W0t,names:H0t};function q0t(){Math.abs(this.lat1+this.lat2)=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),t=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),t=-1);var n=0;if(r!==0&&(n=Math.atan2(t*e.x,t*e.y)),this.sphere)return s=Ie(this.long0+n/this.ns),i=ff(this.g-r/this.a),e.x=s,e.y=i,e;var o=this.g-r/this.a;return i=Yg(o,this.e0,this.e1,this.e2,this.e3),s=Ie(this.long0+n/this.ns),e.x=s,e.y=i,e}var Q0t=[\"Equidistant_Conic\",\"eqdc\"],bY={init:q0t,forward:Z0t,inverse:Y0t,names:Q0t};function $0t(){this.R=this.a}function X0t(e){var t=e.x,r=e.y,i=Ie(t-this.long0),s,n;Math.abs(r)<=we&&(s=this.x0+this.R*i,n=this.y0);var o=Sc(2*Math.abs(r/Math.PI));(Math.abs(i)<=we||Math.abs(Math.abs(r)-de)<=we)&&(s=this.x0,r>=0?n=this.y0+Math.PI*this.R*Math.tan(.5*o):n=this.y0+Math.PI*this.R*-Math.tan(.5*o));var c=.5*Math.abs(Math.PI/i-i/Math.PI),f=c*c,_=Math.sin(o),w=Math.cos(o),I=w/(_+w-1),R=I*I,N=I*(2/_-1),j=N*N,Q=Math.PI*this.R*(c*(I-j)+Math.sqrt(f*(I-j)*(I-j)-(j+f)*(R-j)))/(j+f);i<0&&(Q=-Q),s=this.x0+Q;var et=f+I;return Q=Math.PI*this.R*(N*et-c*Math.sqrt((j+f)*(f+1)-et*et))/(j+f),r>=0?n=this.y0+Q:n=this.y0-Q,e.x=s,e.y=n,e}function K0t(e){var t,r,i,s,n,o,c,f,_,w,I,R,N;return e.x-=this.x0,e.y-=this.y0,I=Math.PI*this.R,i=e.x/I,s=e.y/I,n=i*i+s*s,o=-Math.abs(s)*(1+n),c=o-2*s*s+i*i,f=-2*o+1+2*s*s+n*n,N=s*s/f+(2*c*c*c/f/f/f-9*o*c/f/f)/27,_=(o-c*c/3/f)/f,w=2*Math.sqrt(-_/3),I=3*N/_/w,Math.abs(I)>1&&(I>=0?I=1:I=-1),R=Math.acos(I)/3,e.y>=0?r=(-w*Math.cos(R+Math.PI/3)-c/3/f)*Math.PI:r=-(-w*Math.cos(R+Math.PI/3)-c/3/f)*Math.PI,Math.abs(i)2*de*this.a?void 0:(r=t/this.a,i=Math.sin(r),s=Math.cos(r),n=this.long0,Math.abs(t)<=we?o=this.lat0:(o=Sc(s*this.sin_p12+e.y*i*this.cos_p12/t),c=Math.abs(this.lat0)-de,Math.abs(c)<=we?this.lat0>=0?n=Ie(this.long0+Math.atan2(e.x,-e.y)):n=Ie(this.long0-Math.atan2(-e.x,e.y)):n=Ie(this.long0+Math.atan2(e.x*i,t*this.cos_p12*s-e.y*this.sin_p12*i))),e.x=n,e.y=o,e)):(f=kp(this.es),_=Rp(this.es),w=Dp(this.es),I=Op(this.es),Math.abs(this.sin_p12-1)<=we?(R=this.a*zo(f,_,w,I,de),t=Math.sqrt(e.x*e.x+e.y*e.y),N=R-t,o=Yg(N/this.a,f,_,w,I),n=Ie(this.long0+Math.atan2(e.x,-1*e.y)),e.x=n,e.y=o,e):Math.abs(this.sin_p12+1)<=we?(R=this.a*zo(f,_,w,I,de),t=Math.sqrt(e.x*e.x+e.y*e.y),N=t-R,o=Yg(N/this.a,f,_,w,I),n=Ie(this.long0+Math.atan2(e.x,e.y)),e.x=n,e.y=o,e):(t=Math.sqrt(e.x*e.x+e.y*e.y),et=Math.atan2(e.x,e.y),j=Bp(this.a,this.e,this.sin_p12),Y=Math.cos(et),K=this.e*this.cos_p12*Y,J=-K*K/(1-this.es),ut=3*this.es*(1-J)*this.sin_p12*this.cos_p12*Y/(1-this.es),Pt=t/j,kt=Pt-J*(1+J)*Math.pow(Pt,3)/6-ut*(1+3*J)*Math.pow(Pt,4)/24,Kt=1-J*kt*kt/2-Pt*kt*kt*kt/6,Q=Math.asin(this.sin_p12*Math.cos(kt)+this.cos_p12*Math.sin(kt)*Y),n=Ie(this.long0+Math.asin(Math.sin(et)*Math.sin(kt)/Math.cos(Q))),Zt=Math.sin(Q),o=Math.atan2((Zt-this.es*Kt*this.sin_p12)*Math.tan(Q),Zt*(1-this.es)),e.x=n,e.y=o,e))}var igt=[\"Azimuthal_Equidistant\",\"aeqd\"],SY={init:tgt,forward:egt,inverse:rgt,names:igt};function ngt(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)}function sgt(e){var t,r,i,s,n,o,c,f,_=e.x,w=e.y;return i=Ie(_-this.long0),t=Math.sin(w),r=Math.cos(w),s=Math.cos(i),o=this.sin_p14*t+this.cos_p14*r*s,n=1,(o>0||Math.abs(o)<=we)&&(c=this.a*n*r*Math.sin(i),f=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*s)),e.x=c,e.y=f,e}function ogt(e){var t,r,i,s,n,o,c;return e.x-=this.x0,e.y-=this.y0,t=Math.sqrt(e.x*e.x+e.y*e.y),r=Sc(t/this.a),i=Math.sin(r),s=Math.cos(r),o=this.long0,Math.abs(t)<=we?(c=this.lat0,e.x=o,e.y=c,e):(c=Sc(s*this.sin_p14+e.y*i*this.cos_p14/t),n=Math.abs(this.lat0)-de,Math.abs(n)<=we?(this.lat0>=0?o=Ie(this.long0+Math.atan2(e.x,-e.y)):o=Ie(this.long0-Math.atan2(-e.x,e.y)),e.x=o,e.y=c,e):(o=Ie(this.long0+Math.atan2(e.x*i,t*this.cos_p14*s-e.y*this.sin_p14*i)),e.x=o,e.y=c,e))}var agt=[\"ortho\"],TY={init:ngt,forward:sgt,inverse:ogt,names:agt};var bs={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},dn={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function lgt(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||\"Quadrilateralized Spherical Cube\",this.lat0>=de-Fi/2?this.face=bs.TOP:this.lat0<=-(de-Fi/2)?this.face=bs.BOTTOM:Math.abs(this.long0)<=Fi?this.face=bs.FRONT:Math.abs(this.long0)<=de+Fi?this.face=this.long0>0?bs.RIGHT:bs.LEFT:this.face=bs.BACK,this.es!==0&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)}function cgt(e){var t={x:0,y:0},r,i,s,n,o,c,f={value:0};if(e.x-=this.long0,this.es!==0?r=Math.atan(this.one_minus_f_squared*Math.tan(e.y)):r=e.y,i=e.x,this.face===bs.TOP)n=de-r,i>=Fi&&i<=de+Fi?(f.value=dn.AREA_0,s=i-de):i>de+Fi||i<=-(de+Fi)?(f.value=dn.AREA_1,s=i>0?i-xs:i+xs):i>-(de+Fi)&&i<=-Fi?(f.value=dn.AREA_2,s=i+de):(f.value=dn.AREA_3,s=i);else if(this.face===bs.BOTTOM)n=de+r,i>=Fi&&i<=de+Fi?(f.value=dn.AREA_0,s=-i+de):i=-Fi?(f.value=dn.AREA_1,s=-i):i<-Fi&&i>=-(de+Fi)?(f.value=dn.AREA_2,s=-i-de):(f.value=dn.AREA_3,s=i>0?-i+xs:-i-xs);else{var _,w,I,R,N,j,Q;this.face===bs.RIGHT?i=ax(i,+de):this.face===bs.BACK?i=ax(i,+xs):this.face===bs.LEFT&&(i=ax(i,-de)),R=Math.sin(r),N=Math.cos(r),j=Math.sin(i),Q=Math.cos(i),_=N*Q,w=N*j,I=R,this.face===bs.FRONT?(n=Math.acos(_),s=sI(n,I,w,f)):this.face===bs.RIGHT?(n=Math.acos(w),s=sI(n,I,-_,f)):this.face===bs.BACK?(n=Math.acos(-_),s=sI(n,I,-w,f)):this.face===bs.LEFT?(n=Math.acos(-w),s=sI(n,I,_,f)):(n=s=0,f.value=dn.AREA_0)}return c=Math.atan(12/xs*(s+Math.acos(Math.sin(s)*Math.cos(Fi))-de)),o=Math.sqrt((1-Math.cos(n))/(Math.cos(c)*Math.cos(c))/(1-Math.cos(Math.atan(1/Math.cos(s))))),f.value===dn.AREA_1?c+=de:f.value===dn.AREA_2?c+=xs:f.value===dn.AREA_3&&(c+=1.5*xs),t.x=o*Math.cos(c),t.y=o*Math.sin(c),t.x=t.x*this.a+this.x0,t.y=t.y*this.a+this.y0,e.x=t.x,e.y=t.y,e}function ugt(e){var t={lam:0,phi:0},r,i,s,n,o,c,f,_,w,I={value:0};if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,i=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),r=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?I.value=dn.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(I.value=dn.AREA_1,r-=de):e.x<0&&-e.x>=Math.abs(e.y)?(I.value=dn.AREA_2,r=r<0?r+xs:r-xs):(I.value=dn.AREA_3,r+=de),w=xs/12*Math.tan(r),o=Math.sin(w)/(Math.cos(w)-1/Math.sqrt(2)),c=Math.atan(o),s=Math.cos(r),n=Math.tan(i),f=1-s*s*n*n*(1-Math.cos(Math.atan(1/Math.cos(c)))),f<-1?f=-1:f>1&&(f=1),this.face===bs.TOP)_=Math.acos(f),t.phi=de-_,I.value===dn.AREA_0?t.lam=c+de:I.value===dn.AREA_1?t.lam=c<0?c+xs:c-xs:I.value===dn.AREA_2?t.lam=c-de:t.lam=c;else if(this.face===bs.BOTTOM)_=Math.acos(f),t.phi=_-de,I.value===dn.AREA_0?t.lam=-c+de:I.value===dn.AREA_1?t.lam=-c:I.value===dn.AREA_2?t.lam=-c-de:t.lam=c<0?-c-xs:-c+xs;else{var R,N,j;R=f,w=R*R,w>=1?j=0:j=Math.sqrt(1-w)*Math.sin(c),w+=j*j,w>=1?N=0:N=Math.sqrt(1-w),I.value===dn.AREA_1?(w=N,N=-j,j=w):I.value===dn.AREA_2?(N=-N,j=-j):I.value===dn.AREA_3&&(w=N,N=j,j=-w),this.face===bs.RIGHT?(w=R,R=-N,N=w):this.face===bs.BACK?(R=-R,N=-N):this.face===bs.LEFT&&(w=R,R=N,N=-w),t.phi=Math.acos(-j)-de,t.lam=Math.atan2(N,R),this.face===bs.RIGHT?t.lam=ax(t.lam,-de):this.face===bs.BACK?t.lam=ax(t.lam,-xs):this.face===bs.LEFT&&(t.lam=ax(t.lam,+de))}if(this.es!==0){var Q,et,Y;Q=t.phi<0?1:0,et=Math.tan(t.phi),Y=this.b/Math.sqrt(et*et+this.one_minus_f_squared),t.phi=Math.atan(Math.sqrt(this.a*this.a-Y*Y)/(this.one_minus_f*Y)),Q&&(t.phi=-t.phi)}return t.lam+=this.long0,e.x=t.lam,e.y=t.phi,e}function sI(e,t,r,i){var s;return eFi&&s<=de+Fi?(i.value=dn.AREA_1,s-=de):s>de+Fi||s<=-(de+Fi)?(i.value=dn.AREA_2,s=s>=0?s-xs:s+xs):(i.value=dn.AREA_3,s+=de)),s}function ax(e,t){var r=e+t;return r<-xs?r+=Tm:r>+xs&&(r-=Tm),r}var hgt=[\"Quadrilateralized Spherical Cube\",\"Quadrilateralized_Spherical_Cube\",\"qsc\"],MY={init:lgt,forward:cgt,inverse:ugt,names:hgt};var MB=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],aS=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],EY=.8487,PY=1.3523,IY=xc/5,fgt=1/IY,lx=18,oI=function(e,t){return e[0]+t*(e[1]+t*(e[2]+t*e[3]))},dgt=function(e,t){return e[1]+t*(2*e[2]+t*3*e[3])};function pgt(e,t,r,i){for(var s=t;i;--i){var n=e(s);if(s-=n,Math.abs(n)=lx&&(i=lx-1),r=xc*(r-fgt*i);var s={x:oI(MB[i],r)*t,y:oI(aS[i],r)};return e.y<0&&(s.y=-s.y),s.x=s.x*this.a*EY+this.x0,s.y=s.y*this.a*PY+this.y0,s}function ggt(e){var t={x:(e.x-this.x0)/(this.a*EY),y:Math.abs(e.y-this.y0)/(this.a*PY)};if(t.y>=1)t.x/=MB[lx][0],t.y=e.y<0?-de:de;else{var r=Math.floor(t.y*lx);for(r<0?r=0:r>=lx&&(r=lx-1);;)if(aS[r][0]>t.y)--r;else if(aS[r+1][0]<=t.y)++r;else break;var i=aS[r],s=5*(t.y-i[0])/(aS[r+1][0]-i[0]);s=pgt(function(n){return(oI(i,n)-t.y)/dgt(i,n)},s,we,100),t.x/=oI(MB[r],s),t.y=(5*r+s)*vs,e.y<0&&(t.y=-t.y)}return t.x=Ie(t.x+this.long0),t}var _gt=[\"Robinson\",\"robin\"],CY={init:Agt,forward:mgt,inverse:ggt,names:_gt};function ygt(){this.name=\"geocent\"}function vgt(e){var t=Q3(e,this.es,this.a);return t}function xgt(e){var t=$3(e,this.es,this.a,this.b);return t}var bgt=[\"Geocentric\",\"geocentric\",\"geocent\",\"Geocent\"],LY={init:ygt,forward:vgt,inverse:xgt,names:bgt};var ol={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3},lS={h:{def:1e5,num:!0},azi:{def:0,num:!0,degrees:!0},tilt:{def:0,num:!0,degrees:!0},long0:{def:0,num:!0},lat0:{def:0,num:!0}};function wgt(){if(Object.keys(lS).forEach(function(r){if(typeof this[r]>\"u\")this[r]=lS[r].def;else{if(lS[r].num&&isNaN(this[r]))throw new Error(\"Invalid parameter value, must be numeric \"+r+\" = \"+this[r]);lS[r].num&&(this[r]=parseFloat(this[r]))}lS[r].degrees&&(this[r]=this[r]*vs)}.bind(this)),Math.abs(Math.abs(this.lat0)-de)1e10)throw new Error(\"Invalid height\");this.p=1+this.pn1,this.rp=1/this.p,this.h1=1/this.pn1,this.pfact=(this.p+1)*this.h1,this.es=0;var e=this.tilt,t=this.azi;this.cg=Math.cos(t),this.sg=Math.sin(t),this.cw=Math.cos(e),this.sw=Math.sin(e)}function Sgt(e){e.x-=this.long0;var t=Math.sin(e.y),r=Math.cos(e.y),i=Math.cos(e.x),s,n;switch(this.mode){case ol.OBLIQ:n=this.sinph0*t+this.cosph0*r*i;break;case ol.EQUIT:n=r*i;break;case ol.S_POLE:n=-t;break;case ol.N_POLE:n=t;break}switch(n=this.pn1/(this.p-n),s=n*r*Math.sin(e.x),this.mode){case ol.OBLIQ:n*=this.cosph0*t-this.sinph0*r*i;break;case ol.EQUIT:n*=t;break;case ol.N_POLE:n*=-(r*i);break;case ol.S_POLE:n*=r*i;break}var o,c;return o=n*this.cg+s*this.sg,c=1/(o*this.sw*this.h1+this.cw),s=(s*this.cg-n*this.sg)*this.cw*c,n=o*c,e.x=s*this.a,e.y=n*this.a,e}function Tgt(e){e.x/=this.a,e.y/=this.a;var t={x:e.x,y:e.y},r,i,s;s=1/(this.pn1-e.y*this.sw),r=this.pn1*e.x*s,i=this.pn1*e.y*this.cw*s,e.x=r*this.cg+i*this.sg,e.y=i*this.cg-r*this.sg;var n=Ta(e.x,e.y);if(Math.abs(n)1e10)throw new Error;if(this.radius_g=1+this.radius_g_1,this.C=this.radius_g*this.radius_g-1,this.es!==0){var e=1-this.es,t=1/e;this.radius_p=Math.sqrt(e),this.radius_p2=e,this.radius_p_inv2=t,this.shape=\"ellipse\"}else this.radius_p=1,this.radius_p2=1,this.radius_p_inv2=1,this.shape=\"sphere\";this.title||(this.title=\"Geostationary Satellite View\")}function Pgt(e){var t=e.x,r=e.y,i,s,n,o;if(t=t-this.long0,this.shape===\"ellipse\"){r=Math.atan(this.radius_p2*Math.tan(r));var c=this.radius_p/Ta(this.radius_p*Math.cos(r),Math.sin(r));if(s=c*Math.cos(t)*Math.cos(r),n=c*Math.sin(t)*Math.cos(r),o=c*Math.sin(r),(this.radius_g-s)*s-n*n-o*o*this.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=this.radius_g-s,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Ta(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Ta(n,i)))}else this.shape===\"sphere\"&&(i=Math.cos(r),s=Math.cos(t)*i,n=Math.sin(t)*i,o=Math.sin(r),i=this.radius_g-s,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Ta(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Ta(n,i))));return e.x=e.x*this.a,e.y=e.y*this.a,e}function Igt(e){var t=-1,r=0,i=0,s,n,o,c;if(e.x=e.x/this.a,e.y=e.y/this.a,this.shape===\"ellipse\"){this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Ta(1,i)):(r=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Ta(1,r));var f=i/this.radius_p;if(s=r*r+f*f+t*t,n=2*this.radius_g*t,o=n*n-4*s*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-n-Math.sqrt(o))/(2*s),t=this.radius_g+c*t,r*=c,i*=c,e.x=Math.atan2(r,t),e.y=Math.atan(i*Math.cos(e.x)/t),e.y=Math.atan(this.radius_p_inv2*Math.tan(e.y))}else if(this.shape===\"sphere\"){if(this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Math.sqrt(1+i*i)):(r=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Math.sqrt(1+r*r)),s=r*r+i*i+t*t,n=2*this.radius_g*t,o=n*n-4*s*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-n-Math.sqrt(o))/(2*s),t=this.radius_g+c*t,r*=c,i*=c,e.x=Math.atan2(r,t),e.y=Math.atan(i*Math.cos(e.x)/t)}return e.x=e.x+this.long0,e}var Cgt=[\"Geostationary Satellite View\",\"Geostationary_Satellite\",\"geos\"],RY={init:Egt,forward:Pgt,inverse:Igt,names:Cgt};function DY(e){e.Proj.projections.add(nx),e.Proj.projections.add(sx),e.Proj.projections.add(rY),e.Proj.projections.add(iY),e.Proj.projections.add(nY),e.Proj.projections.add(sY),e.Proj.projections.add(oY),e.Proj.projections.add(aY),e.Proj.projections.add(lY),e.Proj.projections.add(cY),e.Proj.projections.add(uY),e.Proj.projections.add(hY),e.Proj.projections.add(fY),e.Proj.projections.add(pY),e.Proj.projections.add(AY),e.Proj.projections.add(gY),e.Proj.projections.add(_Y),e.Proj.projections.add(yY),e.Proj.projections.add(vY),e.Proj.projections.add(xY),e.Proj.projections.add(bY),e.Proj.projections.add(wY),e.Proj.projections.add(SY),e.Proj.projections.add(TY),e.Proj.projections.add(MY),e.Proj.projections.add(CY),e.Proj.projections.add(LY),e.Proj.projections.add(kY),e.Proj.projections.add(RY)}bc.defaultDatum=\"WGS84\";bc.Proj=Mm;bc.WGS84=new bc.Proj(\"WGS84\");bc.Point=ZZ;bc.toPoint=K3;bc.defs=Jv;bc.nadgrid=_B;bc.transform=qg;bc.mgrs=WZ;bc.version=\"__VERSION__\";DY(bc);var OY=bc;function hS(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function fS(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function cx(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function Lgt(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function kgt(e){return\"data\"in e?e.getChildAt(0):e.children[0]}function hI(e){return\"data\"in e?e.getChildAt(0):e.children[0]}var Ii=Object.freeze({__proto__:null,getLineStringChild:fS,getMultiLineStringChild:kgt,getMultiPointChild:Lgt,getMultiPolygonChild:hI,getPointChild:hS,getPolygonChild:cx});function fI(e,t){let r=e.valueOffsets,i=cx(e),s=i.valueOffsets,n=fS(i),o=n.type.listSize,c=hS(n),f=r[t],_=r[t+1],w=s[f],I=s[_],R=c.values.subarray(w*o,I*o);return new Xv(R,{size:o,isClosed:!0})}function FY(e){if(\"data\"in e)return new wr(e.data.map(r=>FY(r)));let t=new Float64Array(e.length);for(let r=0;rzY(r)));let t=new Float64Array(e.length);for(let r=0;rNY(n));let t=[],r=0;for(let n=0;nUY(t))):cx(e)}function VY(e){return\"data\"in e?new wr(e.data.map(t=>VY(t))):hI(e)}function dI(e){return Ne.isFixedSizeList(e)?!(![2,3,4].includes(e.listSize)||!Ne.isFloat(e.children[0])):Ne.isStruct(e)?!(![2,3,4].includes(e.children.length)||!e.children.every(t=>[\"x\",\"y\",\"z\",\"m\"].includes(t.name))||!e.children.every(t=>Ne.isFloat(t))):!1}function pI(e){return!(!Ne.isList(e)||!dI(e.children[0].type))}function CB(e){return!(!Ne.isList(e)||!pI(e.children[0].type))}function jY(e){return!(!Ne.isList(e)||!dI(e.children[0].type))}function GY(e){return!(!Ne.isList(e)||!pI(e.children[0].type))}function WY(e){return!(!Ne.isList(e)||!CB(e.children[0].type))}function Dgt(e){return dI(e.type)}function Ogt(e){return pI(e.type)}function Bgt(e){return CB(e.type)}function Fgt(e){return jY(e.type)}function zgt(e){return GY(e.type)}function Ngt(e){return WY(e.type)}function Ugt(e,t){if(!e)throw new Error(`assertion failed ${t}`)}function Vgt(){throw new Error(\"assertion failed\")}function HY(e,t){if(Dgt(e))return qY(e,t);if(Ogt(e))return EB(e,t);if(Bgt(e))return PB(e,t);if(Fgt(e))return EB(e,t);if(zgt(e))return PB(e,t);if(Ngt(e))return jgt(e,t);Vgt()}function qY(e,t){Ugt(e.type.listSize===2,\"expected 2D\");let r=hS(e),i=r.values,s=new Float64Array(i.length);for(let o=0;oBY(s,i))):BY(e,i)}function BY(e,t){let r=[0,0];return HY(e,(s,n)=>(r[0]=s,r[1]=n,t.forward(r)))}var Em;(function(e){e.POINT=\"geoarrow.point\",e.LINESTRING=\"geoarrow.linestring\",e.POLYGON=\"geoarrow.polygon\",e.MULTIPOINT=\"geoarrow.multipoint\",e.MULTILINESTRING=\"geoarrow.multilinestring\",e.MULTIPOLYGON=\"geoarrow.multipolygon\"})(Em||(Em={}));var uI=class{minX;minY;maxX;maxY;constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}updateBbox(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.maxY>this.maxY&&(this.maxY=t.maxY)}updateCoord(t,r){tthis.maxX&&(this.maxX=t),r>this.maxY&&(this.maxY=r)}};function Wgt(e,t){switch(t.metadata.get(\"ARROW:extension:name\")){case Em.POINT:return ZY(e);case Em.LINESTRING:case Em.MULTIPOINT:return YY(e);case Em.POLYGON:case Em.MULTILINESTRING:return QY(e);case Em.MULTIPOLYGON:return qgt(e);default:throw new Error(\"Unknown ext type name\")}}function Hgt(e){let r=hS(e).values,i=new uI;for(let s=0;s$Y(r)));let t=new Am({type:new lc,nullValues:[null]});t.set(e.length-1,null);for(let r=0;rXY(r,t));return}for(let r=0;ruS(n,t)));let r=[];for(let n of e.children)r.push(uS(n,t));let i;e.dictionary!==void 0&&(i=uS(e.dictionary,t));let s={[Li.OFFSET]:aI(e.buffers[Li.OFFSET],t),[Li.DATA]:aI(e.buffers[Li.DATA],t),[Li.VALIDITY]:aI(e.buffers[Li.VALIDITY],t),[Li.TYPE]:aI(e.buffers[Li.TYPE],t)};return new Oi(e.type,e.offset,e.length,e._nullCount,s,r,i)}function lI(e){if(\"data\"in e)return e.data.some(r=>lI(r));for(let r of e.children)if(lI(r))return!0;if(e.dictionary!==void 0&&lI(e.dictionary))return!0;let t=[Li.OFFSET,Li.DATA,Li.VALIDITY,Li.TYPE];for(let r of t)if(e.buffers[r]!==void 0&&KY(e.buffers[r]))return!0;return!1}function KY(e){return!(e.byteOffset===0&&e.byteLength===e.buffer.byteLength)}function aI(e,t){return e===void 0||!t&&!KY(e)?e:e.slice()}function cI(e,t=!1){if(\"data\"in e){let i=[],s=[];for(let o of e.data){let[c,f]=cI(o);i.push(c),s.push(...f)}return[new wr(i),s]}e=uS(e,t);let r=[];for(let i=0;i1)throw new Error(\"expected 1 field\");return new uc(t[0])}case Dt.Struct:{let t=e.children.map(cS);return new fn(t)}case Dt.Union:{let t=e.children.map(cS);return new hc(e.mode,e.typeIds,t)}case Dt.FixedSizeBinary:return new Zu(e.byteWidth);case Dt.FixedSizeList:{let t=e.children.map(cS);if(t.length>1)throw new Error(\"expected 1 field\");return new Ll(e.listSize,t[0])}case Dt.Map:{let t=e.children.map(cS);if(t.length>1)throw new Error(\"expected 1 field\");let r=t[0];return new fc(r,e.keysSorted)}case Dt.Duration:return new qu(e.unit);default:throw new Error(`unknown type ${e}`)}}function cS(e){let t=JY(e.type);return new si(e.name,t,e.nullable,e.metadata)}function kB(e){let t=e.children.map(s=>kB(s)),r=e.dictionary?tQ(e.dictionary):void 0,i={[Li.OFFSET]:e.valueOffsets,[Li.DATA]:e.values,[Li.VALIDITY]:e.nullBitmap,[Li.TYPE]:e.typeIds};return new Oi(JY(e.type),e.offset,e.length,e._nullCount,i,t,r)}function tQ(e){return new wr(e.data.map(t=>kB(t)))}var RB=Object.freeze({__proto__:null,hardClone:uS,isShared:lI,preparePostMessage:cI,rehydrateData:kB,rehydrateVector:tQ});function Jgt(e,t,r){let i=e.fields.findIndex(s=>s.name===r||s.metadata.get(\"ARROW:extension:name\")===t);return i!==-1?i:null}function t_t(e,t){let{index:r,data:i}=e,s=r;i.invertedGeomOffsets!==void 0&&(s=i.invertedGeomOffsets[r]);let n={data:i.data,length:i.length,attributes:i.attributes},o={index:s,data:n,target:e.target};return t(o)}function to(e){let{props:t,propName:r,propInput:i,chunkIdx:s,geomCoordOffsets:n}=e;if(i!==void 0)if(i instanceof wr){let o=i.data[s];if(Ne.isFixedSizeList(o)){yr(o.children.length===1);let c=o.children[0].values;n&&(c=AI(c,o.type.listSize,n)),t.data.attributes[r]={value:c,size:o.type.listSize,normalized:!0}}else if(Ne.isFloat(o)){let c=o.values;n&&(c=AI(c,1,n)),t.data.attributes[r]={value:c,size:1}}}else typeof i==\"function\"?t[r]=(o,c)=>r===\"getPolygonOffset\"?i(o,c):t_t(c,i):t[r]=i}function AI(e,t,r){let i=r[r.length-1],s=new e.constructor(i*t);for(let n=0;n(t[i+1]=t[i]+r.length,t),new Uint32Array(e.length+1))}function io(e,t){let r=[],i=[];for(let[s,n]of Object.entries(e))s.startsWith(\"get\")&&n instanceof wr&&(r.push(n),s.endsWith(\"Color\")&&i.push(n));e_t(t,r);for(let s of i)r_t(s)}function e_t(e,t){for(let r of t)yr(e.batches.length===r.data.length);for(let r of t)for(let i=0;ithis.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let t=this.content?this.content.byteLength:0;return Number.isFinite(t)||console.error(\"byteLength not defined in tile data\"),t}async _loadData({getData:t,requestScheduler:r,onLoad:i,onError:s}){let{index:n,id:o,bbox:c,userData:f,zoom:_}=this,w=this._loaderId;this._abortController=new AbortController;let{signal:I}=this._abortController,R=await r.scheduleRequest(this,Q=>Q.isSelected?1:-1);if(!R){this._isCancelled=!0;return}if(this._isCancelled){R.done();return}let N=null,j;try{N=await t({index:n,id:o,bbox:c,userData:f,zoom:_,signal:I})}catch(Q){j=Q||!0}finally{R.done()}if(w===this._loaderId){if(this._loader=void 0,this.content=N,this._isCancelled&&!N){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,j?s(j,this):i(this)}}loadData(t){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(t),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){var t;this.isLoaded||(this._isCancelled=!0,(t=this._abortController)===null||t===void 0||t.abort())}};var no={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var sQ=new Fe,a_t=new Fe,Qg=class e{constructor(t=[0,0,0],r=[0,0,0],i){G(this,\"center\",void 0),G(this,\"halfDiagonal\",void 0),G(this,\"minimum\",void 0),G(this,\"maximum\",void 0),i=i||sQ.copy(t).add(r).scale(.5),this.center=new Fe(i),this.halfDiagonal=new Fe(r).subtract(this.center),this.minimum=new Fe(t),this.maximum=new Fe(r)}clone(){return new e(this.minimum,this.maximum,this.center)}equals(t){return this===t||!!t&&this.minimum.equals(t.minimum)&&this.maximum.equals(t.maximum)}transform(t){return this.center.transformAsPoint(t),this.halfDiagonal.transform(t),this.minimum.transform(t),this.maximum.transform(t),this}intersectPlane(t){let{halfDiagonal:r}=this,i=a_t.from(t.normal),s=r.x*Math.abs(i.x)+r.y*Math.abs(i.y)+r.z*Math.abs(i.z),n=this.center.dot(i)+t.distance;return n-s>0?no.INSIDE:n+s<0?no.OUTSIDE:no.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=sQ.from(t).subtract(this.center),{halfDiagonal:i}=this,s=0,n;return n=Math.abs(r.x)-i.x,n>0&&(s+=n*n),n=Math.abs(r.y)-i.y,n>0&&(s+=n*n),n=Math.abs(r.z)-i.z,n>0&&(s+=n*n),s}};var AS=new Fe,oQ=new Fe,$g=class e{constructor(t=[0,0,0],r=0){G(this,\"center\",void 0),G(this,\"radius\",void 0),this.radius=-0,this.center=new Fe,this.fromCenterRadius(t,r)}fromCenterRadius(t,r){return this.center.from(t),this.radius=r,this}fromCornerPoints(t,r){return r=AS.from(r),this.center=new Fe().from(t).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new e(this.center,this.radius)}union(t){let r=this.center,i=this.radius,s=t.center,n=t.radius,o=AS.copy(s).subtract(r),c=o.magnitude();if(i>=c+n)return this.clone();if(n>=c+i)return t.clone();let f=(i+c+n)*.5;return oQ.copy(o).scale((-i+f)/c).add(r),this.center.copy(oQ),this.radius=f,this}expand(t){let i=AS.from(t).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(t){this.center.transform(t);let r=Jj(AS,t);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(t){let r=this.distanceTo(t);return r*r}distanceTo(t){let i=AS.from(t).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(t){let r=this.center,i=this.radius,n=t.normal.dot(r)+t.distance;return n<-i?no.OUTSIDE:n=f?no.INSIDE:no.INTERSECTING}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=c_t.from(t).subtract(this.center),i=this.halfAxes,s=i.getColumn(0,gI),n=i.getColumn(1,_I),o=i.getColumn(2,yI),c=s.magnitude(),f=n.magnitude(),_=o.magnitude();s.normalize(),n.normalize(),o.normalize();let w=0,I;return I=Math.abs(r.dot(s))-c,I>0&&(w+=I*I),I=Math.abs(r.dot(n))-f,I>0&&(w+=I*I),I=Math.abs(r.dot(o))-_,I>0&&(w+=I*I),w}computePlaneDistances(t,r,i=[-0,-0]){let s=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,o=this.center,c=this.halfAxes,f=c.getColumn(0,gI),_=c.getColumn(1,_I),w=c.getColumn(2,yI),I=u_t.copy(f).add(_).add(w).add(o),R=h_t.copy(I).subtract(t),N=r.dot(R);return s=Math.min(N,s),n=Math.max(N,n),I.copy(o).add(f).add(_).subtract(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),I.copy(o).add(f).subtract(_).add(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),I.copy(o).add(f).subtract(_).subtract(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(I).subtract(f).add(_).add(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(I).subtract(f).add(_).subtract(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(I).subtract(f).subtract(_).add(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),o.copy(I).subtract(f).subtract(_).subtract(w),R.copy(I).subtract(t),N=r.dot(R),s=Math.min(N,s),n=Math.max(N,n),i[0]=s,i[1]=n,i}transform(t){this.center.transformAsPoint(t);let r=this.halfAxes.getColumn(0,gI);r.transformAsPoint(t);let i=this.halfAxes.getColumn(1,_I);i.transformAsPoint(t);let s=this.halfAxes.getColumn(2,yI);return s.transformAsPoint(t),this.halfAxes=new is([...r,...i,...s]),this}getTransform(){throw new Error(\"not implemented\")}};var aQ=new Fe,lQ=new Fe,Af=class e{constructor(t=[0,0,1],r=0){G(this,\"normal\",void 0),G(this,\"distance\",void 0),this.normal=new Fe,this.distance=-0,this.fromNormalDistance(t,r)}fromNormalDistance(t,r){return Oh(Number.isFinite(r)),this.normal.from(t).normalize(),this.distance=r,this}fromPointNormal(t,r){t=aQ.from(t),this.normal.from(r).normalize();let i=-this.normal.dot(t);return this.distance=i,this}fromCoefficients(t,r,i,s){return this.normal.set(t,r,i),Oh(ko(this.normal.len(),1)),this.distance=s,this}clone(){return new e(this.normal,this.distance)}equals(t){return ko(this.distance,t.distance)&&ko(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let r=lQ.copy(this.normal).transformAsVector(t).normalize(),i=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(i,r)}projectPointOntoPlane(t,r=[0,0,0]){t=aQ.from(t);let i=this.getPointDistance(t),s=lQ.copy(this.normal).scale(i);return t.subtract(s).to(r)}};var cQ=[new Fe([1,0,0]),new Fe([0,1,0]),new Fe([0,0,1])],uQ=new Fe,f_t=new Fe,One=new Af(new Fe(1,0,0),0),pd=class e{constructor(t=[]){G(this,\"planes\",void 0),this.planes=t}fromBoundingSphere(t){this.planes.length=2*cQ.length;let r=t.center,i=t.radius,s=0;for(let n of cQ){let o=this.planes[s],c=this.planes[s+1];o||(o=this.planes[s]=new Af),c||(c=this.planes[s+1]=new Af);let f=uQ.copy(n).scale(-i).add(r),_=-n.dot(f);o.fromPointNormal(f,n);let w=uQ.copy(n).scale(i).add(r),I=f_t.copy(n).negate(),R=-I.dot(w);c.fromPointNormal(w,I),s+=2}return this}computeVisibility(t){let r=no.INSIDE;for(let i of this.planes)switch(t.intersectPlane(i)){case no.OUTSIDE:return no.OUTSIDE;case no.INTERSECTING:r=no.INTERSECTING;break;default:}return r}computeVisibilityWithPlaneMask(t,r){if(Oh(Number.isFinite(r),\"parentPlaneMask is required.\"),r===e.MASK_OUTSIDE||r===e.MASK_INSIDE)return r;let i=e.MASK_INSIDE,s=this.planes;for(let n=0;nf;)__t(c,vI),hQ.copy(vI).transpose(),c.multiplyRight(vI),c.multiplyLeft(hQ),o.multiplyRight(vI),++s>2&&(++n,s=0);return t.unitary=o.toTarget(t.unitary),t.diagonal=c.toTarget(t.diagonal),t}function m_t(e){let t=0;for(let r=0;r<9;++r){let i=e[r];t+=i*i}return Math.sqrt(t)}var OB=[1,0,0],BB=[2,2,1];function g_t(e){let t=0;for(let r=0;r<3;++r){let i=e[Ad.getElementIndex(BB[r],OB[r])];t+=2*i*i}return Math.sqrt(t)}function __t(e,t){let r=FE.EPSILON15,i=0,s=1;for(let _=0;_<3;++_){let w=Math.abs(e[Ad.getElementIndex(BB[_],OB[_])]);w>i&&(s=_,i=w)}let n=OB[s],o=BB[s],c=1,f=0;if(Math.abs(e[Ad.getElementIndex(o,n)])>r){let _=e[Ad.getElementIndex(o,o)],w=e[Ad.getElementIndex(n,n)],I=e[Ad.getElementIndex(o,n)],R=(_-w)/2/I,N;R<0?N=-1/(-R+Math.sqrt(1+R*R)):N=1/(R+Math.sqrt(1+R*R)),c=1/Math.sqrt(1+N*N),f=N*c}return is.IDENTITY.to(t),t[Ad.getElementIndex(n,n)]=t[Ad.getElementIndex(o,o)]=c,t[Ad.getElementIndex(o,n)]=f,t[Ad.getElementIndex(n,o)]=-f,t}var Pm=new Fe,y_t=new Fe,v_t=new Fe,x_t=new Fe,b_t=new Fe,w_t=new is,S_t={diagonal:new is,unitary:new is};function FB(e,t=new hx){if(!e||e.length===0)return t.halfAxes=new is([0,0,0,0,0,0,0,0,0]),t.center=new Fe,t;let r=e.length,i=new Fe(0,0,0);for(let ce of e)i.add(ce);let s=1/r;i.multiplyByScalar(s);let n=0,o=0,c=0,f=0,_=0,w=0;for(let ce of e){let ue=Pm.copy(ce).subtract(i);n+=ue.x*ue.x,o+=ue.x*ue.y,c+=ue.x*ue.z,f+=ue.y*ue.y,_+=ue.y*ue.z,w+=ue.z*ue.z}n*=s,o*=s,c*=s,f*=s,_*=s,w*=s;let I=w_t;I[0]=n,I[1]=o,I[2]=c,I[3]=o,I[4]=f,I[5]=_,I[6]=c,I[7]=_,I[8]=w;let{unitary:R}=xI(I,S_t),N=t.halfAxes.copy(R),j=N.getColumn(0,v_t),Q=N.getColumn(1,x_t),et=N.getColumn(2,b_t),Y=-Number.MAX_VALUE,K=-Number.MAX_VALUE,J=-Number.MAX_VALUE,ut=Number.MAX_VALUE,Pt=Number.MAX_VALUE,kt=Number.MAX_VALUE;for(let ce of e)Pm.copy(ce),Y=Math.max(Pm.dot(j),Y),K=Math.max(Pm.dot(Q),K),J=Math.max(Pm.dot(et),J),ut=Math.min(Pm.dot(j),ut),Pt=Math.min(Pm.dot(Q),Pt),kt=Math.min(Pm.dot(et),kt);j=j.multiplyByScalar(.5*(ut+Y)),Q=Q.multiplyByScalar(.5*(Pt+K)),et=et.multiplyByScalar(.5*(kt+J)),t.center.copy(j).add(Q).add(et);let Kt=y_t.set(Y-ut,K-Pt,J-kt).multiplyByScalar(.5),Zt=new is([Kt[0],0,0,0,Kt[1],0,0,0,Kt[2]]);return t.halfAxes.multiplyRight(Zt),t}var fx=512,fQ=3,dQ=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],pQ=dQ.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),T_t=pQ.concat([[.25,.5],[.75,.5]]),zB=class e{constructor(t,r,i){G(this,\"x\",void 0),G(this,\"y\",void 0),G(this,\"z\",void 0),G(this,\"childVisible\",void 0),G(this,\"selected\",void 0),G(this,\"_children\",void 0),this.x=t,this.y=r,this.z=i}get children(){if(!this._children){let t=this.x*2,r=this.y*2,i=this.z+1;this._children=[new e(t,r,i),new e(t,r+1,i),new e(t+1,r,i),new e(t+1,r+1,i)]}return this._children}update(t){let{viewport:r,cullingVolume:i,elevationBounds:s,minZ:n,maxZ:o,bounds:c,offset:f,project:_}=t,w=this.getBoundingVolume(s,f,_);if(c&&!this.insideBounds(c)||i.computeVisibility(w)<0)return!1;if(!this.childVisible){let{z:R}=this;if(R=n){let N=w.distanceTo(r.cameraPosition)*r.scale/r.height;R+=Math.floor(Math.log2(N))}if(R>=o)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(let R of this.children)R.update(t);return!0}getSelected(t=[]){if(this.selected&&t.push(this),this._children)for(let r of this._children)r.getSelected(t);return t}insideBounds([t,r,i,s]){let n=Math.pow(2,this.z),o=fx/n;return this.x*ot&&(this.y+1)*o>r}getBoundingVolume(t,r,i){if(i){let f=this.z<1?T_t:this.z<2?pQ:dQ,_=[];for(let w of f){let I=bI(this.x+w[0],this.y+w[1],this.z);I[2]=t[0],_.push(i(I)),t[0]!==t[1]&&(I[2]=t[1],_.push(i(I)))}return FB(_)}let s=Math.pow(2,this.z),n=fx/s,o=this.x*n+r*fx,c=fx-(this.y+1)*n;return new Qg([o,c,t[0]],[o+n,c+n,t[1]])}};function AQ(e,t,r,i){let s=e instanceof Yy&&e.resolution?e.projectPosition:null,n=Object.values(e.getFrustumPlanes()).map(({normal:N,distance:j})=>new Af(N.clone().negate(),j)),o=new pd(n),c=e.distanceScales.unitsPerMeter[2],f=r&&r[0]*c||0,_=r&&r[1]*c||0,w=e instanceof oc&&e.pitch<=60?t:0;if(i){let[N,j,Q,et]=i,Y=va([N,et]),K=va([Q,j]);i=[Y[0],fx-Y[1],K[0],fx-K[1]]}let I=new zB(0,0,0),R={viewport:e,project:s,cullingVolume:o,elevationBounds:[f,_],minZ:w,maxZ:t,bounds:i,offset:0};if(I.update(R),e instanceof oc&&e.subViewports&&e.subViewports.length>1){for(R.offset=-1;I.update(R)&&!(--R.offset<-fQ););for(R.offset=1;I.update(R)&&!(++R.offset>fQ););}return I.getSelected()}var zp=512,M_t=[-1/0,-1/0,1/0,1/0],UB={type:\"object\",value:null,validate:(e,t)=>t.optional&&e===null||typeof e==\"string\"||Array.isArray(e)&&e.every(r=>typeof r==\"string\"),equal:(e,t)=>{if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t))return!1;let r=e.length;if(r!==t.length)return!1;for(let i=0;is[0])),Math.min(...r.map(s=>s[1])),Math.max(...r.map(s=>s[0])),Math.max(...r.map(s=>s[1]))]}function E_t(e){return Math.abs(e.split(\"\").reduce((t,r)=>(t<<5)-t+r.charCodeAt(0)|0,0))}function VB(e,t){if(!e||!e.length)return null;let{index:r,id:i}=t;if(Array.isArray(e)){let n=E_t(i)%e.length;e=e[n]}let s=e;for(let n of Object.keys(r)){let o=new RegExp(\"{\".concat(n,\"}\"),\"g\");s=s.replace(o,String(r[n]))}return Number.isInteger(r.y)&&Number.isInteger(r.z)&&(s=s.replace(/\\{-y\\}/g,String(Math.pow(2,r.z)-r.y-1))),s}function P_t(e,t,r){let i;if(t&&t.length===2){let[s,n]=t,o=e.getBounds({z:s}),c=e.getBounds({z:n});i=[Math.min(o[0],c[0]),Math.min(o[1],c[1]),Math.max(o[2],c[2]),Math.max(o[3],c[3])]}else i=e.getBounds();return e.isGeospatial?[Math.max(i[0],r[0]),Math.max(i[1],r[1]),Math.min(i[2],r[2]),Math.min(i[3],r[3])]:[Math.max(Math.min(i[0],r[2]),r[0]),Math.max(Math.min(i[1],r[3]),r[1]),Math.min(Math.max(i[2],r[0]),r[2]),Math.min(Math.max(i[3],r[1]),r[3])]}function _Q({viewport:e,z:t=0,cullRect:r}){return(e.subViewports||[e]).map(s=>NB(s,t,r))}function NB(e,t,r){if(!Array.isArray(t)){let n=r.x-e.x,o=r.y-e.y,{width:c,height:f}=r,_={targetZ:t},w=e.unproject([n,o],_),I=e.unproject([n+c,o],_),R=e.unproject([n,o+f],_),N=e.unproject([n+c,o+f],_);return[Math.min(w[0],I[0],R[0],N[0]),Math.min(w[1],I[1],R[1],N[1]),Math.max(w[0],I[0],R[0],N[0]),Math.max(w[1],I[1],R[1],N[1])]}let i=NB(e,t[0],r),s=NB(e,t[1],r);return[Math.min(i[0],s[0]),Math.min(i[1],s[1]),Math.max(i[2],s[2]),Math.max(i[3],s[3])]}function I_t(e,t,r){return r?gQ(e,r).map(s=>s*t/zp):e.map(i=>i*t/zp)}function jB(e,t){return Math.pow(2,e)*zp/t}function bI(e,t,r){let i=jB(r,zp),s=e/i*360-180,n=Math.PI-2*Math.PI*t/i,o=180/Math.PI*Math.atan(.5*(Math.exp(n)-Math.exp(-n)));return[s,o]}function mQ(e,t,r,i){let s=jB(r,i);return[e/s*zp,t/s*zp]}function GB(e,t,r,i,s=zp){if(e.isGeospatial){let[_,w]=bI(t,r,i),[I,R]=bI(t+1,r+1,i);return{west:_,north:w,east:I,south:R}}let[n,o]=mQ(t,r,i,s),[c,f]=mQ(t+1,r+1,i,s);return{left:n,top:o,right:c,bottom:f}}function C_t(e,t,r,i,s){let n=P_t(e,null,i),o=jB(t,r),[c,f,_,w]=I_t(n,o,s),I=[];for(let R=Math.floor(c);R<_;R++)for(let N=Math.floor(f);Nt&&(_=t);let w=s;return o&&c&&s&&!e.isGeospatial&&(w=gQ(s,o)),e.isGeospatial?AQ(e,_,i,s):C_t(e,_,n,w||M_t,c)}function yQ(e){let t={},r;return i=>{for(let s in i)if(!L_t(i[s],t[s])){r=e(i),t=i;break}return r}}function L_t(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i{}},B_t={extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:\"best-available\",zRange:null,maxRequests:6,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{}},mS=class{constructor(t){G(this,\"opts\",void 0),G(this,\"_requestScheduler\",void 0),G(this,\"_cache\",void 0),G(this,\"_dirty\",void 0),G(this,\"_tiles\",void 0),G(this,\"_cacheByteSize\",void 0),G(this,\"_viewport\",void 0),G(this,\"_zRange\",void 0),G(this,\"_selectedTiles\",void 0),G(this,\"_frameNumber\",void 0),G(this,\"_modelMatrix\",void 0),G(this,\"_modelMatrixInverse\",void 0),G(this,\"_maxZoom\",void 0),G(this,\"_minZoom\",void 0),G(this,\"onTileLoad\",void 0),G(this,\"_getCullBounds\",yQ(_Q)),this.opts={...B_t,...t},this.onTileLoad=r=>{var i,s;(i=(s=this.opts).onTileLoad)===null||i===void 0||i.call(s,r),this.opts.maxCacheByteSize&&(this._cacheByteSize+=r.byteLength,this._resizeCache())},this._requestScheduler=new ay({maxRequests:t.maxRequests,throttleRequests:!!(t.maxRequests&&t.maxRequests>0)}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._viewport=null,this._selectedTiles=null,this._frameNumber=0,this._modelMatrix=new Tn,this._modelMatrixInverse=new Tn,this.setOptions(t)}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(t=>t.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(t=>t.needsReload)}setOptions(t){Object.assign(this.opts,t),Number.isFinite(t.maxZoom)&&(this._maxZoom=Math.floor(t.maxZoom)),Number.isFinite(t.minZoom)&&(this._minZoom=Math.ceil(t.minZoom))}finalize(){for(let t of this._cache.values())t.isLoading&&t.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(let t of this._cache.keys()){let r=this._cache.get(t);!this._selectedTiles||!this._selectedTiles.includes(r)?this._cache.delete(t):r.setNeedsReload()}}update(t,{zRange:r,modelMatrix:i}={}){let s=new Tn(i),n=!s.equals(this._modelMatrix);if(!this._viewport||!t.equals(this._viewport)||!ko(this._zRange,r)||n){n&&(this._modelMatrixInverse=s.clone().invert(),this._modelMatrix=s),this._viewport=t,this._zRange=r;let c=this.getTileIndices({viewport:t,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:r,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=c.map(f=>this._getTile(f,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(c=>this._getTile(c.index,!0)));let o=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),o&&this._frameNumber++,this._frameNumber}isTileVisible(t,r){if(!t.isVisible)return!1;if(r&&this._viewport){let i=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:r}),{bbox:s}=t;for(let[n,o,c,f]of i){let _;if(\"west\"in s)_=s.westn&&s.southo;else{let w=Math.min(s.top,s.bottom),I=Math.max(s.top,s.bottom);_=s.leftn&&wo}if(_)return!0}return!1}return!0}getTileIndices({viewport:t,maxZoom:r,minZoom:i,zRange:s,modelMatrix:n,modelMatrixInverse:o}){let{tileSize:c,extent:f,zoomOffset:_}=this.opts;return WB({viewport:t,maxZoom:r,minZoom:i,zRange:s,tileSize:c,extent:f,modelMatrix:n,modelMatrixInverse:o,zoomOffset:_})}getTileId(t){return\"\".concat(t.x,\"-\").concat(t.y,\"-\").concat(t.z)}getTileZoom(t){return t.z}getTileMetadata(t){let{tileSize:r}=this.opts;return{bbox:GB(this._viewport,t.x,t.y,t.z,r)}}getParentIndex(t){let r=Math.floor(t.x/2),i=Math.floor(t.y/2),s=t.z-1;return{x:r,y:i,z:s}}updateTileStates(){let t=this.opts.refinementStrategy||gS,r=new Array(this._cache.size),i=0;for(let s of this._cache.values())r[i++]=s.isVisible,s.isSelected=!1,s.isVisible=!1;for(let s of this._selectedTiles)s.isSelected=!0,s.isVisible=!0;(typeof t==\"function\"?t:O_t[t])(Array.from(this._cache.values())),i=0;for(let s of this._cache.values())if(r[i++]!==s.isVisible)return!0;return!1}_pruneRequests(){let{maxRequests:t=0}=this.opts,r=[],i=0;for(let s of this._cache.values())s.isLoading&&(i++,!s.isSelected&&!s.isVisible&&r.push(s));for(;t>0&&i>t&&r.length>0;)r.shift().abort(),i--}_rebuildTree(){let{_cache:t}=this;for(let r of t.values())r.parent=null,r.children&&(r.children.length=0);for(let r of t.values()){let i=this._getNearestAncestor(r);r.parent=i,i!=null&&i.children&&i.children.push(r)}}_resizeCache(){let{_cache:t,opts:r}=this,i=r.maxCacheSize||(r.maxCacheByteSize?1/0:D_t*this.selectedTiles.length),s=r.maxCacheByteSize||1/0;if(t.size>i||this._cacheByteSize>s){for(let[f,_]of t){if(!_.isVisible&&!_.isSelected){var o,c;this._cacheByteSize-=r.maxCacheByteSize?_.byteLength:0,t.delete(f),(o=(c=this.opts).onTileUnload)===null||o===void 0||o.call(c,_)}if(t.size<=i&&this._cacheByteSize<=s)break}this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((f,_)=>f.zoom-_.zoom),this._dirty=!1)}_getTile(t,r){let i=this.getTileId(t),s=this._cache.get(i),n=!1;return!s&&r?(s=new mI(t),Object.assign(s,this.getTileMetadata(s.index)),Object.assign(s,{id:i,zoom:this.getTileZoom(s.index)}),n=!0,this._cache.set(i,s),this._dirty=!0):s&&s.needsReload&&(n=!0),s&&n&&s.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),s}_getNearestAncestor(t){let{_minZoom:r=0}=this,i=t.index;for(;this.getTileZoom(i)>r;){i=this.getParentIndex(i);let s=this._getTile(i);if(s)return s}return null}};function F_t(e){for(let t of e)t.state=0;for(let t of e)t.isSelected&&!xQ(t)&&HB(t);for(let t of e)t.isVisible=!!(t.state&wI)}function z_t(e){for(let r of e)r.state=0;for(let r of e)r.isSelected&&xQ(r);let t=Array.from(e).sort((r,i)=>r.zoom-i.zoom);for(let r of t)if(r.isVisible=!!(r.state&wI),r.children&&(r.isVisible||r.state&vQ))for(let i of r.children)i.state=vQ;else r.isSelected&&HB(r)}function xQ(e){let t=e;for(;t;){if(t.isLoaded||t.content)return t.state|=wI,!0;t=t.parent}return!1}function HB(e){for(let t of e.children)t.isLoaded||t.content?t.state|=wI:HB(t)}var N_t={TilesetClass:mS,data:{type:\"data\",value:[]},dataComparator:UB.equal,renderSubLayers:{type:\"function\",value:e=>new Sm(e)},getTileData:{type:\"function\",optional:!0,value:null},onViewportLoad:{type:\"function\",optional:!0,value:null},onTileLoad:{type:\"function\",value:e=>{}},onTileUnload:{type:\"function\",value:e=>{}},onTileError:{type:\"function\",value:e=>console.error(e)},extent:{type:\"array\",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:gS,zRange:null,maxRequests:6,zoomOffset:0},Im=class extends qi{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){var t,r;(t=this.state)===null||t===void 0||(r=t.tileset)===null||r===void 0||r.finalize()}get isLoaded(){var t,r,i;return(t=this.state)===null||t===void 0||(r=t.tileset)===null||r===void 0||(i=r.selectedTiles)===null||i===void 0?void 0:i.every(s=>s.isLoaded&&s.layers&&s.layers.every(n=>n.isLoaded))}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState({changeFlags:t}){let{tileset:r}=this.state,i=t.propsOrDataChanged||t.updateTriggersChanged,s=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getTileData);r?i&&(r.setOptions(this._getTilesetOptions()),s?r.reloadAll():this.state.tileset.tiles.forEach(n=>{n.layers=null})):(r=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:r})),this._updateTileset()}_getTilesetOptions(){let{tileSize:t,maxCacheSize:r,maxCacheByteSize:i,refinementStrategy:s,extent:n,maxZoom:o,minZoom:c,maxRequests:f,zoomOffset:_}=this.props;return{maxCacheSize:r,maxCacheByteSize:i,maxZoom:o,minZoom:c,tileSize:t,refinementStrategy:s,extent:n,maxRequests:f,zoomOffset:_,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){let{tileset:t}=this.state,{zRange:r,modelMatrix:i}=this.props,s=t.update(this.context.viewport,{zRange:r,modelMatrix:i}),{isLoaded:n}=t,o=this.state.isLoaded!==n,c=this.state.frameNumber!==s;n&&(o||c)&&this._onViewportLoad(),c&&this.setState({frameNumber:s}),this.state.isLoaded=n}_onViewportLoad(){let{tileset:t}=this.state,{onViewportLoad:r}=this.props;r&&r(t.selectedTiles)}_onTileLoad(t){this.props.onTileLoad(t),t.layers=null,this.setNeedsUpdate()}_onTileError(t,r){this.props.onTileError(t),r.layers=null,this.setNeedsUpdate()}_onTileUnload(t){this.props.onTileUnload(t)}getTileData(t){let{data:r,getTileData:i,fetch:s}=this.props,{signal:n}=t;return t.url=typeof r==\"string\"||Array.isArray(r)?VB(r,t):null,i?i(t):s&&t.url?s(t.url,{propName:\"data\",layer:this,signal:n}):null}renderSubLayers(t){return this.props.renderSubLayers(t)}getSubLayerPropsByTile(t){return null}getPickingInfo({info:t,sourceLayer:r}){let i=r.props.tile;return t.picked&&(t.tile=i),t.sourceTile=i,t}_updateAutoHighlight(t){let r=t.sourceTile;if(r&&r.layers)for(let i of r.layers)i.updateAutoHighlight(t)}renderLayers(){return this.state.tileset.tiles.map(t=>{let r=this.getSubLayerPropsByTile(t);if(!(!t.isLoaded&&!t.content))if(t.layers)r&&t.layers[0]&&Object.keys(r).some(i=>t.layers[0].props[i]!==r[i])&&(t.layers=t.layers.map(i=>i.clone(r)));else{let i=this.renderSubLayers({...this.props,...this.getSubLayerProps({id:t.id,updateTriggers:this.props.updateTriggers}),data:t.content,_offset:0,tile:t});t.layers=ap(i,Boolean).map(s=>s.clone({tile:t,...r}))}return t.layers})}filterSubLayer({layer:t,cullRect:r}){let{tile:i}=t.props;return this.state.tileset.isTileVisible(i,r)}};G(Im,\"defaultProps\",N_t);G(Im,\"layerName\",\"TileLayer\");var Mc=function(e){e=e||{};var t=typeof e<\"u\"?e:{},r={},i;for(i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);var s=[],n=\"\";function o(Ht){return t.locateFile?t.locateFile(Ht,n):n+Ht}var c;document.currentScript&&(n=document.currentScript.src),n.indexOf(\"blob:\")!==0?n=n.substr(0,n.lastIndexOf(\"/\")+1):n=\"\",c=function(fe,De,xr){var g=new XMLHttpRequest;g.open(\"GET\",fe,!0),g.responseType=\"arraybuffer\",g.onload=function(){if(g.status==200||g.status==0&&g.response){De(g.response);return}var Si=ht(fe);if(Si){De(Si.buffer);return}xr()},g.onerror=xr,g.send(null)};var f=t.print||console.log.bind(console),_=t.printErr||console.warn.bind(console);for(i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);r=null,t.arguments&&(s=t.arguments);var w=0,I=function(Ht){w=Ht},R=function(){return w},N=8;function j(Ht,fe,De,xr){switch(De=De||\"i8\",De.charAt(De.length-1)===\"*\"&&(De=\"i32\"),De){case\"i1\":Lr[Ht>>0]=fe;break;case\"i8\":Lr[Ht>>0]=fe;break;case\"i16\":No[Ht>>1]=fe;break;case\"i32\":Uo[Ht>>2]=fe;break;case\"i64\":ve=[fe>>>0,(bo=fe,+Fl(bo)>=1?bo>0?(pn(+as(bo/4294967296),4294967295)|0)>>>0:~~+te((bo-+(~~bo>>>0))/4294967296)>>>0:0)],Uo[Ht>>2]=ve[0],Uo[Ht+4>>2]=ve[1];break;case\"float\":Vo[Ht>>2]=fe;break;case\"double\":wi[Ht>>3]=fe;break;default:sh(\"invalid type for setValue: \"+De)}}function Q(Ht,fe,De){switch(fe=fe||\"i8\",fe.charAt(fe.length-1)===\"*\"&&(fe=\"i32\"),fe){case\"i1\":return Lr[Ht>>0];case\"i8\":return Lr[Ht>>0];case\"i16\":return No[Ht>>1];case\"i32\":return Uo[Ht>>2];case\"i64\":return Uo[Ht>>2];case\"float\":return Vo[Ht>>2];case\"double\":return wi[Ht>>3];default:sh(\"invalid type for getValue: \"+fe)}return null}var et=!1;function Y(Ht,fe){Ht||sh(\"Assertion failed: \"+fe)}function K(Ht){var fe=t[\"_\"+Ht];return Y(fe,\"Cannot call unknown function \"+Ht+\", make sure it is exported\"),fe}function J(Ht,fe,De,xr,g){var Ni={string:function(Ur){var hi=0;if(Ur!=null&&Ur!==0){var So=(Ur.length<<2)+1;hi=Hp(So),ce(Ur,hi,So)}return hi},array:function(Ur){var hi=Hp(Ur.length);return Ge(Ur,hi),hi}};function Si(Ur){return fe===\"string\"?Kt(Ur):fe===\"boolean\"?!!Ur:Ur}var Tt=K(Ht),Ms=[],ls=0;if(xr)for(var li=0;li=xr);)++g;if(g-fe>16&&Ht.subarray&&Pt)return Pt.decode(Ht.subarray(fe,g));for(var Ni=\"\";fe>10,56320|ls&1023)}}return Ni}function Kt(Ht,fe){return Ht?kt(zi,Ht,fe):\"\"}function Zt(Ht,fe,De,xr){if(!(xr>0))return 0;for(var g=De,Ni=De+xr-1,Si=0;Si=55296&&Tt<=57343){var Ms=Ht.charCodeAt(++Si);Tt=65536+((Tt&1023)<<10)|Ms&1023}if(Tt<=127){if(De>=Ni)break;fe[De++]=Tt}else if(Tt<=2047){if(De+1>=Ni)break;fe[De++]=192|Tt>>6,fe[De++]=128|Tt&63}else if(Tt<=65535){if(De+2>=Ni)break;fe[De++]=224|Tt>>12,fe[De++]=128|Tt>>6&63,fe[De++]=128|Tt&63}else{if(De+3>=Ni)break;fe[De++]=240|Tt>>18,fe[De++]=128|Tt>>12&63,fe[De++]=128|Tt>>6&63,fe[De++]=128|Tt&63}}return fe[De]=0,De-g}function ce(Ht,fe,De){return Zt(Ht,zi,fe,De)}var ue=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function Ge(Ht,fe){Lr.set(Ht,fe)}function tr(Ht,fe){return Ht%fe>0&&(Ht+=fe-Ht%fe),Ht}var er,Lr,zi,No,Ic,Uo,rh,Vo,wi;function Bs(Ht){er=Ht,t.HEAP8=Lr=new Int8Array(Ht),t.HEAP16=No=new Int16Array(Ht),t.HEAP32=Uo=new Int32Array(Ht),t.HEAPU8=zi=new Uint8Array(Ht),t.HEAPU16=Ic=new Uint16Array(Ht),t.HEAPU32=rh=new Uint32Array(Ht),t.HEAPF32=Vo=new Float32Array(Ht),t.HEAPF64=wi=new Float64Array(Ht)}var ll=5266928,Cc=24016,Lc=t.TOTAL_MEMORY||33554432;t.buffer?er=t.buffer:er=new ArrayBuffer(Lc),Lc=er.byteLength,Bs(er),Uo[Cc>>2]=ll;function Qi(Ht){for(;Ht.length>0;){var fe=Ht.shift();if(typeof fe==\"function\"){fe();continue}var De=fe.func;typeof De==\"number\"?fe.arg===void 0?t.dynCall_v(De):t.dynCall_vi(De,fe.arg):De(fe.arg===void 0?null:fe.arg)}}var Xn=[],Ci=[],Kn=[],jo=[];function cl(){if(t.preRun)for(typeof t.preRun==\"function\"&&(t.preRun=[t.preRun]);t.preRun.length;)os(t.preRun.shift());Qi(Xn)}function vo(){Qi(Ci)}function Pa(){Qi(Kn)}function na(){if(t.postRun)for(typeof t.postRun==\"function\"&&(t.postRun=[t.postRun]);t.postRun.length;)so(t.postRun.shift());Qi(jo)}function os(Ht){Xn.unshift(Ht)}function so(Ht){jo.unshift(Ht)}var Fl=Math.abs,te=Math.ceil,as=Math.floor,pn=Math.min,gi=0,oi=null,oo=null;function uu(Ht){gi++,t.monitorRunDependencies&&t.monitorRunDependencies(gi)}function ul(Ht){if(gi--,t.monitorRunDependencies&&t.monitorRunDependencies(gi),gi==0&&(oi!==null&&(clearInterval(oi),oi=null),oo)){var fe=oo;oo=null,fe()}}t.preloadedImages={},t.preloadedAudios={};var xo=null,hl=\"data:application/octet-stream;base64,\";function Ia(Ht){return String.prototype.startsWith?Ht.startsWith(hl):Ht.indexOf(hl)===0}var bo,ve;xo=\"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";var Go=24032;function An(Ht){return Ht}function zl(Ht){var fe=/\\b__Z[\\w\\d_]+/g;return Ht.replace(fe,function(De){var xr=De;return De===xr?De:xr+\" [\"+De+\"]\"})}function Ca(){var Ht=new Error;if(!Ht.stack){try{throw new Error(0)}catch(fe){Ht=fe}if(!Ht.stack)return\"(no stack trace available)\"}return Ht.stack.toString()}function Se(){var Ht=Ca();return t.extraStackTrace&&(Ht+=`\n`+t.extraStackTrace()),zl(Ht)}function Dr(Ht,fe,De,xr){sh(\"Assertion failed: \"+Kt(Ht)+\", at: \"+[fe?Kt(fe):\"unknown filename\",De,xr?Kt(xr):\"unknown function\"])}function mr(){return Lr.length}function Fs(Ht,fe,De){zi.set(zi.subarray(fe,fe+De),Ht)}function La(Ht){return t.___errno_location&&(Uo[t.___errno_location()>>2]=Ht),Ht}function Tr(Ht){sh(\"OOM\")}function sa(Ht){try{var fe=new ArrayBuffer(Ht);return fe.byteLength!=Ht?void 0:(new Int8Array(fe).set(Lr),vi(fe),Bs(fe),1)}catch{}}function gt(Ht){var fe=mr(),De=16777216,xr=2147483648-De;if(Ht>xr)return!1;for(var g=16777216,Ni=Math.max(fe,g);Ni>4,g=(Tt&15)<<4|Ms>>2,Ni=(Ms&3)<<6|ls,De=De+String.fromCharCode(xr),Ms!==64&&(De=De+String.fromCharCode(g)),ls!==64&&(De=De+String.fromCharCode(Ni));while(li>2]=p,g[k+4>>2]=m,k=(C|0)!=0,k&&(g[C>>2]=0),Ui(p,m)|0)return zt=1,wt=Gt,zt|0;g[zt>>2]=0;t:do if((y|0)>=1)if(k)for(it=0,ot=1,Ct=1,L=0,k=p;;){if(!(L|it)){if(k=jn(k,m,4,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(Ui(k,m)|0){k=1;break t}}if(k=jn(k,m,g[16+(it<<2)>>2]|0,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(p=S+(Ct<<3)|0,g[p>>2]=k,g[p+4>>2]=m,g[C+(Ct<<2)>>2]=ot,L=L+1|0,p=(L|0)==(ot|0),z=it+1|0,H=(z|0)==6,Ui(k,m)|0){k=1;break t}if(ot=ot+(H&p&1)|0,(ot|0)>(y|0)){k=0;break}else it=p?H?0:z:it,Ct=Ct+1|0,L=p?0:L}else for(it=0,ot=1,Ct=1,L=0,k=p;;){if(!(L|it)){if(k=jn(k,m,4,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(Ui(k,m)|0){k=1;break t}}if(k=jn(k,m,g[16+(it<<2)>>2]|0,zt)|0,m=It()|0,(k|0)==0&(m|0)==0){k=2;break t}if(p=S+(Ct<<3)|0,g[p>>2]=k,g[p+4>>2]=m,L=L+1|0,p=(L|0)==(ot|0),z=it+1|0,H=(z|0)==6,Ui(k,m)|0){k=1;break t}if(ot=ot+(H&p&1)|0,(ot|0)>(y|0)){k=0;break}else it=p?H?0:z:it,Ct=Ct+1|0,L=p?0:L}else k=0;while(!1);return zt=k,wt=Gt,zt|0}function Ba(p,m,y,S,C,k,L){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0,k=k|0,L=L|0;var z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0;if(Ct=wt,wt=wt+16|0,ot=Ct,(p|0)==0&(m|0)==0){wt=Ct;return}if(z=Qo(p|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0,It()|0,H=S+(z<<3)|0,zt=H,Gt=g[zt>>2]|0,zt=g[zt+4>>2]|0,it=(Gt|0)==(p|0)&(zt|0)==(m|0),!((Gt|0)==0&(zt|0)==0|it))do z=(z+1|0)%(k|0)|0,H=S+(z<<3)|0,Gt=H,zt=g[Gt>>2]|0,Gt=g[Gt+4>>2]|0,it=(zt|0)==(p|0)&(Gt|0)==(m|0);while(!((zt|0)==0&(Gt|0)==0|it));if(z=C+(z<<2)|0,it&&(g[z>>2]|0)<=(L|0)){wt=Ct;return}if(Gt=H,g[Gt>>2]=p,g[Gt+4>>2]=m,g[z>>2]=L,(L|0)>=(y|0)){wt=Ct;return}Gt=L+1|0,g[ot>>2]=0,zt=jn(p,m,2,ot)|0,Ba(zt,It()|0,y,S,C,k,Gt),g[ot>>2]=0,zt=jn(p,m,3,ot)|0,Ba(zt,It()|0,y,S,C,k,Gt),g[ot>>2]=0,zt=jn(p,m,1,ot)|0,Ba(zt,It()|0,y,S,C,k,Gt),g[ot>>2]=0,zt=jn(p,m,5,ot)|0,Ba(zt,It()|0,y,S,C,k,Gt),g[ot>>2]=0,zt=jn(p,m,4,ot)|0,Ba(zt,It()|0,y,S,C,k,Gt),g[ot>>2]=0,zt=jn(p,m,6,ot)|0,Ba(zt,It()|0,y,S,C,k,Gt),wt=Ct}function jn(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0;if((g[S>>2]|0)>0){C=0;do y=Na(y)|0,C=C+1|0;while((C|0)<(g[S>>2]|0))}z=me(p|0,m|0,45)|0,It()|0,H=z&127,k=Es(p,m)|0,C=me(p|0,m|0,52)|0,It()|0,C=C&15;t:do if(!C)L=6;else for(;;){if(Ct=(15-C|0)*3|0,zt=me(p|0,m|0,Ct|0)|0,It()|0,zt=zt&7,Gt=(qo(C)|0)==0,C=C+-1|0,ot=Le(7,0,Ct|0)|0,m=m&~(It()|0),Ct=Le(g[(Gt?464:48)+(zt*28|0)+(y<<2)>>2]|0,0,Ct|0)|0,it=It()|0,y=g[(Gt?672:256)+(zt*28|0)+(y<<2)>>2]|0,p=Ct|p&~ot,m=it|m,!y){y=0;break t}if(!C){L=6;break}}while(!1);(L|0)==6&&(Gt=g[880+(H*28|0)+(y<<2)>>2]|0,zt=Le(Gt|0,0,45)|0,p=zt|p,m=It()|0|m&-1040385,y=g[4304+(H*28|0)+(y<<2)>>2]|0,(Gt&127|0)==127&&(Gt=Le(g[880+(H*28|0)+20>>2]|0,0,45)|0,m=It()|0|m&-1040385,y=g[4304+(H*28|0)+20>>2]|0,p=Ho(Gt|p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+1)),L=me(p|0,m|0,45)|0,It()|0,L=L&127;t:do if(fi(L)|0){e:do if((Es(p,m)|0)==1){if((H|0)!=(L|0))if(lh(L,g[7728+(H*28|0)>>2]|0)|0){p=Fd(p,m)|0,k=1,m=It()|0;break}else{p=Ho(p,m)|0,k=1,m=It()|0;break}switch(k|0){case 5:{p=Fd(p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+5,k=0;break e}case 3:{p=Ho(p,m)|0,m=It()|0,g[S>>2]=(g[S>>2]|0)+1,k=0;break e}default:return zt=0,Gt=0,$e(zt|0),Gt|0}}else k=0;while(!1);if((y|0)>0){C=0;do p=mh(p,m)|0,m=It()|0,C=C+1|0;while((C|0)!=(y|0))}if((H|0)!=(L|0)){if(!(du(L)|0)){if((k|0)!=0|(Es(p,m)|0)!=5)break;g[S>>2]=(g[S>>2]|0)+1;break}switch(z&127){case 8:case 118:break t;default:}(Es(p,m)|0)!=3&&(g[S>>2]=(g[S>>2]|0)+1)}}else if((y|0)>0){C=0;do p=Ho(p,m)|0,m=It()|0,C=C+1|0;while((C|0)!=(y|0))}while(!1);return g[S>>2]=((g[S>>2]|0)+y|0)%6|0,zt=m,Gt=p,$e(zt|0),Gt|0}function a_(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0;if(Ct=wt,wt=wt+16|0,ot=Ct,!y)return ot=S,g[ot>>2]=p,g[ot+4>>2]=m,ot=0,wt=Ct,ot|0;g[ot>>2]=0;t:do if(Ui(p,m)|0)p=1;else{if(k=(y|0)>0,k){C=0,it=p;do{if(it=jn(it,m,4,ot)|0,m=It()|0,(it|0)==0&(m|0)==0){p=2;break t}if(C=C+1|0,Ui(it,m)|0){p=1;break t}}while((C|0)<(y|0));if(H=S,g[H>>2]=it,g[H+4>>2]=m,H=y+-1|0,k){k=0,L=1,C=it,p=m;do{if(C=jn(C,p,2,ot)|0,p=It()|0,(C|0)==0&(p|0)==0){p=2;break t}if(z=S+(L<<3)|0,g[z>>2]=C,g[z+4>>2]=p,L=L+1|0,Ui(C,p)|0){p=1;break t}k=k+1|0}while((k|0)<(y|0));z=0,k=L;do{if(C=jn(C,p,3,ot)|0,p=It()|0,(C|0)==0&(p|0)==0){p=2;break t}if(L=S+(k<<3)|0,g[L>>2]=C,g[L+4>>2]=p,k=k+1|0,Ui(C,p)|0){p=1;break t}z=z+1|0}while((z|0)<(y|0));L=0;do{if(C=jn(C,p,1,ot)|0,p=It()|0,(C|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=C,g[z+4>>2]=p,k=k+1|0,Ui(C,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));L=0;do{if(C=jn(C,p,5,ot)|0,p=It()|0,(C|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=C,g[z+4>>2]=p,k=k+1|0,Ui(C,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));L=0;do{if(C=jn(C,p,4,ot)|0,p=It()|0,(C|0)==0&(p|0)==0){p=2;break t}if(z=S+(k<<3)|0,g[z>>2]=C,g[z+4>>2]=p,k=k+1|0,Ui(C,p)|0){p=1;break t}L=L+1|0}while((L|0)<(y|0));for(L=0;;){if(C=jn(C,p,6,ot)|0,p=It()|0,(C|0)==0&(p|0)==0){p=2;break t}if((L|0)!=(H|0))if(z=S+(k<<3)|0,g[z>>2]=C,g[z+4>>2]=p,!(Ui(C,p)|0))k=k+1|0;else{p=1;break t}if(L=L+1|0,(L|0)>=(y|0)){L=it,k=m;break}}}else L=it,C=it,k=m,p=m}else L=S,g[L>>2]=p,g[L+4>>2]=m,L=p,C=p,k=m,p=m;p=((L|0)!=(C|0)|(k|0)!=(p|0))&1}while(!1);return ot=p,wt=Ct,ot|0}function Cd(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0;if(k=wt,wt=wt+48|0,C=k+8|0,S=k,z=p,L=g[z+4>>2]|0,y=S,g[y>>2]=g[z>>2],g[y+4>>2]=L,Me(S,C),C=ch(C,m)|0,m=g[S>>2]|0,S=g[p+8>>2]|0,(S|0)<=0)return z=m,L=(C|0)<(z|0),z=L?z:C,z=z+12|0,wt=k,z|0;y=g[p+12>>2]|0,p=0;do m=(g[y+(p<<3)>>2]|0)+m|0,p=p+1|0;while((p|0)<(S|0));return z=(C|0)<(m|0),z=z?m:C,z=z+12|0,wt=k,z|0}function $p(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0;if(z=wt,wt=wt+48|0,S=z+8|0,C=z,!(Xp(p,m,y)|0)){wt=z;return}if(H=p,k=g[H+4>>2]|0,L=C,g[L>>2]=g[H>>2],g[L+4>>2]=k,Me(C,S),L=ch(S,m)|0,m=g[C>>2]|0,k=g[p+8>>2]|0,(k|0)>0){C=g[p+12>>2]|0,S=0;do m=(g[C+(S<<3)>>2]|0)+m|0,S=S+1|0;while((S|0)!=(k|0))}if(m=(L|0)<(m|0)?m:L,(m|0)<=-12){wt=z;return}H=m+11|0,Oc(y|0,0,(((H|0)>0?H:0)<<3)+8|0)|0,wt=z}function Xp(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Wi=0,Mi=0,cn=0,Ei=0,bn=0,gn=0,Or=0;if(Or=wt,wt=wt+112|0,cn=Or+80|0,H=Or+72|0,Ei=Or,bn=Or+56|0,it=p+8|0,gn=co((g[it>>2]<<5)+32|0)|0,gn||Ti(22848,22448,800,22456),dr(p,gn),k=p,S=g[k+4>>2]|0,z=H,g[z>>2]=g[k>>2],g[z+4>>2]=S,Me(H,cn),z=ch(cn,m)|0,S=g[H>>2]|0,k=g[it>>2]|0,(k|0)>0){L=g[p+12>>2]|0,C=0;do S=(g[L+(C<<3)>>2]|0)+S|0,C=C+1|0;while((C|0)!=(k|0))}if(z=(z|0)<(S|0)?S:z,Mi=z+12|0,C=Ua(Mi,8)|0,ot=Ua(Mi,8)|0,g[cn>>2]=0,Zr=p,Wi=g[Zr+4>>2]|0,S=H,g[S>>2]=g[Zr>>2],g[S+4>>2]=Wi,S=r0(H,Mi,m,cn,C,ot)|0,S|0)return Gr(C),Gr(ot),Gr(gn),gn=S,wt=Or,gn|0;t:do if((g[it>>2]|0)>0){for(k=p+12|0,S=0;L=r0((g[k>>2]|0)+(S<<3)|0,Mi,m,cn,C,ot)|0,S=S+1|0,!(L|0);)if((S|0)>=(g[it>>2]|0))break t;return Gr(C),Gr(ot),Gr(gn),gn=L,wt=Or,gn|0}while(!1);(z|0)>-12&&Oc(ot|0,0,((Mi|0)>1?Mi:1)<<3|0)|0;t:do if((g[cn>>2]|0)>0){Wi=((Mi|0)<0)<<31>>31,Nt=C,Ze=ot,Ke=C,be=C,ze=ot,Zr=C,S=C,Ce=C,Ve=ot,Jt=ot,_e=ot,C=ot;e:for(;;){for(ie=g[cn>>2]|0,Gt=0,ee=0,k=0;;){L=Ei,z=L+56|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(z|0));if(m=Nt+(Gt<<3)|0,H=g[m>>2]|0,m=g[m+4>>2]|0,_f(H,m,1,Ei,0)|0){L=Ei,z=L+56|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(z|0));L=Ua(7,4)|0,L|0&&(Ba(H,m,1,Ei,L,7,0),Gr(L))}zt=0;do{Ct=Ei+(zt<<3)|0,ot=g[Ct>>2]|0,Ct=g[Ct+4>>2]|0;r:do if(!((ot|0)==0&(Ct|0)==0)){if(H=Qo(ot|0,Ct|0,Mi|0,Wi|0)|0,It()|0,L=y+(H<<3)|0,z=L,m=g[z>>2]|0,z=g[z+4>>2]|0,!((m|0)==0&(z|0)==0))for(it=0;;){if((it|0)>(Mi|0))break e;if((m|0)==(ot|0)&(z|0)==(Ct|0))break r;if(H=(H+1|0)%(Mi|0)|0,L=y+(H<<3)|0,z=L,m=g[z>>2]|0,z=g[z+4>>2]|0,(m|0)==0&(z|0)==0)break;it=it+1|0}(ot|0)==0&(Ct|0)==0||(l(ot,Ct,bn),Xe(p,gn,bn)|0&&(it=L,g[it>>2]=ot,g[it+4>>2]=Ct,it=Ze+(k<<3)|0,g[it>>2]=ot,g[it+4>>2]=Ct,k=k+1|0))}while(!1);zt=zt+1|0}while(zt>>>0<7);if(ee=ee+1|0,(ee|0)>=(ie|0))break;Gt=Gt+1|0}if((ie|0)>0&&Oc(Ke|0,0,ie<<3|0)|0,g[cn>>2]=k,(k|0)>0)ot=C,Ct=_e,zt=Zr,Gt=Jt,ee=Ve,ie=Ze,C=Ce,_e=S,Jt=be,Ve=Ke,Ce=ot,S=Ct,Zr=ze,ze=zt,be=Gt,Ke=ee,Ze=Nt,Nt=ie;else break t}return Gr(be),Gr(ze),Gr(gn),gn=-1,wt=Or,gn|0}else S=ot;while(!1);return Gr(gn),Gr(C),Gr(S),gn=0,wt=Or,gn|0}function r0(p,m,y,S,C,k){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0,k=k|0;var L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Wi=0,Mi=0,cn=0;if(Wi=wt,wt=wt+48|0,Ke=Wi+32|0,be=Wi+16|0,ze=Wi,L=g[p>>2]|0,(L|0)<=0)return Zr=0,wt=Wi,Zr|0;Ve=p+4|0,Jt=Ke+8|0,_e=be+8|0,Nt=ze+8|0,Ze=((m|0)<0)<<31>>31,Ce=0;t:for(;;){z=g[Ve>>2]|0,ee=z+(Ce<<4)|0,g[Ke>>2]=g[ee>>2],g[Ke+4>>2]=g[ee+4>>2],g[Ke+8>>2]=g[ee+8>>2],g[Ke+12>>2]=g[ee+12>>2],(Ce|0)==(L+-1|0)?(g[be>>2]=g[z>>2],g[be+4>>2]=g[z+4>>2],g[be+8>>2]=g[z+8>>2],g[be+12>>2]=g[z+12>>2]):(ee=z+(Ce+1<<4)|0,g[be>>2]=g[ee>>2],g[be+4>>2]=g[ee+4>>2],g[be+8>>2]=g[ee+8>>2],g[be+12>>2]=g[ee+12>>2]),ee=la(Ke,be,y)|0;e:do if((ee|0)>0){ie=+(ee|0),Gt=0;r:for(;;){cn=+(ee-Gt|0),Mi=+(Gt|0),Tt[ze>>3]=+Tt[Ke>>3]*cn/ie+ +Tt[be>>3]*Mi/ie,Tt[Nt>>3]=+Tt[Jt>>3]*cn/ie+ +Tt[_e>>3]*Mi/ie,Ct=lA(ze,y)|0,zt=It()|0,z=Qo(Ct|0,zt|0,m|0,Ze|0)|0,It()|0,L=k+(z<<3)|0,H=L,it=g[H>>2]|0,H=g[H+4>>2]|0;i:do if((it|0)==0&(H|0)==0)Zr=14;else for(ot=0;;){if((ot|0)>(m|0)){L=1;break i}if((it|0)==(Ct|0)&(H|0)==(zt|0)){L=7;break i}if(z=(z+1|0)%(m|0)|0,L=k+(z<<3)|0,H=L,it=g[H>>2]|0,H=g[H+4>>2]|0,(it|0)==0&(H|0)==0){Zr=14;break}else ot=ot+1|0}while(!1);switch((Zr|0)==14&&(Zr=0,(Ct|0)==0&(zt|0)==0?L=7:(g[L>>2]=Ct,g[L+4>>2]=zt,L=g[S>>2]|0,ot=C+(L<<3)|0,g[ot>>2]=Ct,g[ot+4>>2]=zt,g[S>>2]=L+1,L=0)),L&7){case 7:case 0:break;default:break r}if(Gt=Gt+1|0,(ee|0)<=(Gt|0)){Zr=8;break e}}if(L|0){L=-1,Zr=20;break t}}else Zr=8;while(!1);if((Zr|0)==8&&(Zr=0),Ce=Ce+1|0,L=g[p>>2]|0,(Ce|0)>=(L|0)){L=0,Zr=20;break}}return(Zr|0)==20?(wt=Wi,L|0):0}function Pn(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0;if(it=wt,wt=wt+176|0,H=it,(m|0)<1){gu(y,0,0),wt=it;return}L=p,L=me(g[L>>2]|0,g[L+4>>2]|0,52)|0,It()|0,gu(y,(m|0)>6?m:6,L&15),L=0;do{if(S=p+(L<<3)|0,d(g[S>>2]|0,g[S+4>>2]|0,H),S=g[H>>2]|0,(S|0)>0){z=0;do k=H+8+(z<<4)|0,z=z+1|0,S=H+8+(((z|0)%(S|0)|0)<<4)|0,C=_h(y,S,k)|0,C?Ps(y,C)|0:Mo(y,k,S)|0,S=g[H>>2]|0;while((z|0)<(S|0))}L=L+1|0}while((L|0)!=(m|0));wt=it}function oh(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0;if(k=wt,wt=wt+32|0,S=k,C=k+16|0,Pn(p,m,C),g[y>>2]=0,g[y+4>>2]=0,g[y+8>>2]=0,p=Vs(C)|0,!p){Wt(y)|0,gh(C),wt=k;return}do{m=yt(y)|0;do dt(m,p)|0,L=p+16|0,g[S>>2]=g[L>>2],g[S+4>>2]=g[L+4>>2],g[S+8>>2]=g[L+8>>2],g[S+12>>2]=g[L+12>>2],Ps(C,p)|0,p=On(C,S)|0;while(p|0);p=Vs(C)|0}while(p|0);Wt(y)|0,gh(C),wt=k}function fi(p){return p=p|0,g[7728+(p*28|0)+16>>2]|0}function du(p){return p=p|0,(p|0)==4|(p|0)==117|0}function yf(p){return p=p|0,g[11152+((g[p>>2]|0)*216|0)+((g[p+4>>2]|0)*72|0)+((g[p+8>>2]|0)*24|0)+(g[p+12>>2]<<3)>>2]|0}function Kp(p){return p=p|0,g[11152+((g[p>>2]|0)*216|0)+((g[p+4>>2]|0)*72|0)+((g[p+8>>2]|0)*24|0)+(g[p+12>>2]<<3)+4>>2]|0}function ah(p,m){p=p|0,m=m|0,p=7728+(p*28|0)|0,g[m>>2]=g[p>>2],g[m+4>>2]=g[p+4>>2],g[m+8>>2]=g[p+8>>2],g[m+12>>2]=g[p+12>>2]}function Ld(p,m){p=p|0,m=m|0;var y=0,S=0;if(m>>>0>20)return m=-1,m|0;do if((g[11152+(m*216|0)>>2]|0)!=(p|0))if((g[11152+(m*216|0)+8>>2]|0)!=(p|0))if((g[11152+(m*216|0)+16>>2]|0)!=(p|0))if((g[11152+(m*216|0)+24>>2]|0)!=(p|0))if((g[11152+(m*216|0)+32>>2]|0)!=(p|0))if((g[11152+(m*216|0)+40>>2]|0)!=(p|0))if((g[11152+(m*216|0)+48>>2]|0)!=(p|0))if((g[11152+(m*216|0)+56>>2]|0)!=(p|0))if((g[11152+(m*216|0)+64>>2]|0)!=(p|0))if((g[11152+(m*216|0)+72>>2]|0)!=(p|0))if((g[11152+(m*216|0)+80>>2]|0)!=(p|0))if((g[11152+(m*216|0)+88>>2]|0)!=(p|0))if((g[11152+(m*216|0)+96>>2]|0)!=(p|0))if((g[11152+(m*216|0)+104>>2]|0)!=(p|0))if((g[11152+(m*216|0)+112>>2]|0)!=(p|0))if((g[11152+(m*216|0)+120>>2]|0)!=(p|0))if((g[11152+(m*216|0)+128>>2]|0)!=(p|0))if((g[11152+(m*216|0)+136>>2]|0)==(p|0))p=2,y=1,S=2;else{if((g[11152+(m*216|0)+144>>2]|0)==(p|0)){p=0,y=2,S=0;break}if((g[11152+(m*216|0)+152>>2]|0)==(p|0)){p=0,y=2,S=1;break}if((g[11152+(m*216|0)+160>>2]|0)==(p|0)){p=0,y=2,S=2;break}if((g[11152+(m*216|0)+168>>2]|0)==(p|0)){p=1,y=2,S=0;break}if((g[11152+(m*216|0)+176>>2]|0)==(p|0)){p=1,y=2,S=1;break}if((g[11152+(m*216|0)+184>>2]|0)==(p|0)){p=1,y=2,S=2;break}if((g[11152+(m*216|0)+192>>2]|0)==(p|0)){p=2,y=2,S=0;break}if((g[11152+(m*216|0)+200>>2]|0)==(p|0)){p=2,y=2,S=1;break}if((g[11152+(m*216|0)+208>>2]|0)==(p|0)){p=2,y=2,S=2;break}else p=-1;return p|0}else p=2,y=1,S=1;else p=2,y=1,S=0;else p=1,y=1,S=2;else p=1,y=1,S=1;else p=1,y=1,S=0;else p=0,y=1,S=2;else p=0,y=1,S=1;else p=0,y=1,S=0;else p=2,y=0,S=2;else p=2,y=0,S=1;else p=2,y=0,S=0;else p=1,y=0,S=2;else p=1,y=0,S=1;else p=1,y=0,S=0;else p=0,y=0,S=2;else p=0,y=0,S=1;else p=0,y=0,S=0;while(!1);return m=g[11152+(m*216|0)+(y*72|0)+(p*24|0)+(S<<3)+4>>2]|0,m|0}function lh(p,m){return p=p|0,m=m|0,(g[7728+(p*28|0)+20>>2]|0)==(m|0)?(m=1,m|0):(m=(g[7728+(p*28|0)+24>>2]|0)==(m|0),m|0)}function Jp(p,m){return p=p|0,m=m|0,g[880+(p*28|0)+(m<<2)>>2]|0}function tA(p,m){return p=p|0,m=m|0,(g[880+(p*28|0)>>2]|0)==(m|0)?(m=0,m|0):(g[880+(p*28|0)+4>>2]|0)==(m|0)?(m=1,m|0):(g[880+(p*28|0)+8>>2]|0)==(m|0)?(m=2,m|0):(g[880+(p*28|0)+12>>2]|0)==(m|0)?(m=3,m|0):(g[880+(p*28|0)+16>>2]|0)==(m|0)?(m=4,m|0):(g[880+(p*28|0)+20>>2]|0)==(m|0)?(m=5,m|0):((g[880+(p*28|0)+24>>2]|0)==(m|0)?6:7)|0}function l_(){return 122}function c_(p){p=p|0;var m=0,y=0,S=0;m=0;do Le(m|0,0,45)|0,S=It()|0|134225919,y=p+(m<<3)|0,g[y>>2]=-1,g[y+4>>2]=S,m=m+1|0;while((m|0)!=122)}function i0(p){return p=p|0,+Tt[p+16>>3]<+Tt[p+24>>3]|0}function pl(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;return y=+Tt[m>>3],!(y>=+Tt[p+8>>3])||!(y<=+Tt[p>>3])?(m=0,m|0):(S=+Tt[p+16>>3],y=+Tt[p+24>>3],C=+Tt[m+8>>3],m=C>=y,p=C<=S&1,S>2]=0,k=k+4|0;while((k|0)<(z|0));return O(m,C),k=C,z=g[k>>2]|0,k=g[k+4>>2]|0,l(z,k,y),d(z,k,S),H=+Dc(y,S+8|0),Tt[y>>3]=+Tt[p>>3],k=y+8|0,Tt[k>>3]=+Tt[p+16>>3],Tt[S>>3]=+Tt[p+8>>3],z=S+8|0,Tt[z>>3]=+Tt[p+24>>3],it=+Dc(y,S),z=~~+Xi(+(it*it/+ml(+ +li(+((+Tt[k>>3]-+Tt[z>>3])/(+Tt[y>>3]-+Tt[S>>3]))),3)/(H*(H*2.59807621135)*.8))),wt=L,(z|0?z:1)|0}function la(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0;z=wt,wt=wt+288|0,S=z+264|0,C=z+96|0,k=z,L=k,H=L+96|0;do g[L>>2]=0,L=L+4|0;while((L|0)<(H|0));return O(y,k),H=k,L=g[H>>2]|0,H=g[H+4>>2]|0,l(L,H,S),d(L,H,C),it=+Dc(S,C+8|0),H=~~+Xi(+(+Dc(p,m)/(it*2))),wt=z,(H|0?H:1)|0}function kd(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0,g[p>>2]=m,g[p+4>>2]=y,g[p+8>>2]=S}function u_(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;Ct=m+8|0,g[Ct>>2]=0,H=+Tt[p>>3],L=+li(+H),it=+Tt[p+8>>3],z=+li(+it)/.8660254037844386,L=L+z*.5,y=~~L,p=~~z,L=L-+(y|0),z=z-+(p|0);do if(L<.5)if(L<.3333333333333333)if(g[m>>2]=y,z<(L+1)*.5){g[m+4>>2]=p;break}else{p=p+1|0,g[m+4>>2]=p;break}else if(zt=1-L,p=(!(z>2]=p,zt<=z&z>2]=y;break}else{g[m>>2]=y;break}else{if(!(L<.6666666666666666))if(y=y+1|0,g[m>>2]=y,z>2]=p;break}else{p=p+1|0,g[m+4>>2]=p;break}if(z<1-L){if(g[m+4>>2]=p,L*2+-1>2]=y;break}}else p=p+1|0,g[m+4>>2]=p;y=y+1|0,g[m>>2]=y}while(!1);do if(H<0)if(p&1){ot=(p+1|0)/2|0,ot=zd(y|0,((y|0)<0)<<31>>31|0,ot|0,((ot|0)<0)<<31>>31|0)|0,y=~~(+(y|0)-((+(ot>>>0)+4294967296*+(It()|0))*2+1)),g[m>>2]=y;break}else{ot=(p|0)/2|0,ot=zd(y|0,((y|0)<0)<<31>>31|0,ot|0,((ot|0)<0)<<31>>31|0)|0,y=~~(+(y|0)-(+(ot>>>0)+4294967296*+(It()|0))*2),g[m>>2]=y;break}while(!1);ot=m+4|0,it<0&&(y=y-((p<<1|1|0)/2|0)|0,g[m>>2]=y,p=0-p|0,g[ot>>2]=p),S=p-y|0,(y|0)<0?(C=0-y|0,g[ot>>2]=S,g[Ct>>2]=C,g[m>>2]=0,p=S,y=0):C=0,(p|0)<0&&(y=y-p|0,g[m>>2]=y,C=C-p|0,g[Ct>>2]=C,g[ot>>2]=0,p=0),k=y-C|0,S=p-C|0,(C|0)<0&&(g[m>>2]=k,g[ot>>2]=S,g[Ct>>2]=0,p=S,y=k,C=0),S=(p|0)<(y|0)?p:y,S=(C|0)<(S|0)?C:S,!((S|0)<=0)&&(g[m>>2]=y-S,g[ot>>2]=p-S,g[Ct>>2]=C-S)}function Ns(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,(m|0)<0&&(y=y-m|0,g[L>>2]=y,k=p+8|0,g[k>>2]=(g[k>>2]|0)-m,g[p>>2]=0,m=0),(y|0)<0?(m=m-y|0,g[p>>2]=m,k=p+8|0,C=(g[k>>2]|0)-y|0,g[k>>2]=C,g[L>>2]=0,y=0):(C=p+8|0,k=C,C=g[C>>2]|0),(C|0)<0&&(m=m-C|0,g[p>>2]=m,y=y-C|0,g[L>>2]=y,g[k>>2]=0,C=0),S=(y|0)<(m|0)?y:m,S=(C|0)<(S|0)?C:S,!((S|0)<=0)&&(g[p>>2]=m-S,g[L>>2]=y-S,g[k>>2]=C-S)}function pu(p,m){p=p|0,m=m|0;var y=0,S=0;S=g[p+8>>2]|0,y=+((g[p+4>>2]|0)-S|0),Tt[m>>3]=+((g[p>>2]|0)-S|0)-y*.5,Tt[m+8>>3]=y*.8660254037844386}function In(p,m,y){p=p|0,m=m|0,y=y|0,g[y>>2]=(g[m>>2]|0)+(g[p>>2]|0),g[y+4>>2]=(g[m+4>>2]|0)+(g[p+4>>2]|0),g[y+8>>2]=(g[m+8>>2]|0)+(g[p+8>>2]|0)}function eA(p,m,y){p=p|0,m=m|0,y=y|0,g[y>>2]=(g[p>>2]|0)-(g[m>>2]|0),g[y+4>>2]=(g[p+4>>2]|0)-(g[m+4>>2]|0),g[y+8>>2]=(g[p+8>>2]|0)-(g[m+8>>2]|0)}function ca(p,m){p=p|0,m=m|0;var y=0,S=0;y=Rc(g[p>>2]|0,m)|0,g[p>>2]=y,y=p+4|0,S=Rc(g[y>>2]|0,m)|0,g[y>>2]=S,p=p+8|0,m=Rc(g[p>>2]|0,m)|0,g[p>>2]=m}function Fa(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;L=g[p>>2]|0,z=(L|0)<0,S=(g[p+4>>2]|0)-(z?L:0)|0,k=(S|0)<0,C=(k?0-S|0:0)+((g[p+8>>2]|0)-(z?L:0))|0,y=(C|0)<0,p=y?0:C,m=(k?0:S)-(y?C:0)|0,C=(z?0:L)-(k?S:0)-(y?C:0)|0,y=(m|0)<(C|0)?m:C,y=(p|0)<(y|0)?p:y,S=(y|0)>0,p=p-(S?y:0)|0,m=m-(S?y:0)|0;t:do switch(C-(S?y:0)|0){case 0:switch(m|0){case 0:return z=p|0?(p|0)==1?1:7:0,z|0;case 1:return z=p|0?(p|0)==1?3:7:2,z|0;default:break t}case 1:switch(m|0){case 0:return z=p|0?(p|0)==1?5:7:4,z|0;case 1:{if(!p)p=6;else break t;return p|0}default:break t}default:}while(!1);return z=7,z|0}function Rd(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;L=p+8|0,y=g[L>>2]|0,m=(g[p>>2]|0)-y|0,z=p+4|0,y=(g[z>>2]|0)-y|0,S=mn(+((m*3|0)-y|0)/7)|0,g[p>>2]=S,m=mn(+((y<<1)+m|0)/7)|0,g[z>>2]=m,g[L>>2]=0,y=m-S|0,(S|0)<0?(k=0-S|0,g[z>>2]=y,g[L>>2]=k,g[p>>2]=0,m=y,S=0,y=k):y=0,(m|0)<0&&(S=S-m|0,g[p>>2]=S,y=y-m|0,g[L>>2]=y,g[z>>2]=0,m=0),k=S-y|0,C=m-y|0,(y|0)<0?(g[p>>2]=k,g[z>>2]=C,g[L>>2]=0,m=C,C=k,y=0):C=S,S=(m|0)<(C|0)?m:C,S=(y|0)<(S|0)?y:S,!((S|0)<=0)&&(g[p>>2]=C-S,g[z>>2]=m-S,g[L>>2]=y-S)}function Al(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;L=p+8|0,y=g[L>>2]|0,m=(g[p>>2]|0)-y|0,z=p+4|0,y=(g[z>>2]|0)-y|0,S=mn(+((m<<1)+y|0)/7)|0,g[p>>2]=S,m=mn(+((y*3|0)-m|0)/7)|0,g[z>>2]=m,g[L>>2]=0,y=m-S|0,(S|0)<0?(k=0-S|0,g[z>>2]=y,g[L>>2]=k,g[p>>2]=0,m=y,S=0,y=k):y=0,(m|0)<0&&(S=S-m|0,g[p>>2]=S,y=y-m|0,g[L>>2]=y,g[z>>2]=0,m=0),k=S-y|0,C=m-y|0,(y|0)<0?(g[p>>2]=k,g[z>>2]=C,g[L>>2]=0,m=C,C=k,y=0):C=S,S=(m|0)<(C|0)?m:C,S=(y|0)<(S|0)?y:S,!((S|0)<=0)&&(g[p>>2]=C-S,g[z>>2]=m-S,g[L>>2]=y-S)}function za(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,z=p+8|0,S=g[z>>2]|0,C=y+(m*3|0)|0,g[p>>2]=C,y=S+(y*3|0)|0,g[L>>2]=y,m=(S*3|0)+m|0,g[z>>2]=m,S=y-C|0,(C|0)<0?(m=m-C|0,g[L>>2]=S,g[z>>2]=m,g[p>>2]=0,y=S,S=0):S=C,(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,C=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=C,g[z>>2]=0,S=k,m=0):C=y,y=(C|0)<(S|0)?C:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=C-y,g[z>>2]=m-y)}function uh(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;C=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=(m*3|0)+C|0,C=y+(C*3|0)|0,g[p>>2]=C,g[L>>2]=S,m=(y*3|0)+m|0,g[z>>2]=m,y=S-C|0,(C|0)<0?(m=m-C|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,C=0):y=S,(y|0)<0&&(C=C-y|0,g[p>>2]=C,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=C-m|0,S=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=S,g[z>>2]=0,C=k,m=0):S=y,y=(S|0)<(C|0)?S:C,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=C-y,g[L>>2]=S-y,g[z>>2]=m-y)}function rA(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0;(m+-1|0)>>>0>=6||(C=(g[15472+(m*12|0)>>2]|0)+(g[p>>2]|0)|0,g[p>>2]=C,z=p+4|0,S=(g[15472+(m*12|0)+4>>2]|0)+(g[z>>2]|0)|0,g[z>>2]=S,L=p+8|0,m=(g[15472+(m*12|0)+8>>2]|0)+(g[L>>2]|0)|0,g[L>>2]=m,y=S-C|0,(C|0)<0?(m=m-C|0,g[z>>2]=y,g[L>>2]=m,g[p>>2]=0,S=0):(y=S,S=C),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[L>>2]=m,g[z>>2]=0,y=0),k=S-m|0,C=y-m|0,(m|0)<0?(g[p>>2]=k,g[z>>2]=C,g[L>>2]=0,S=k,m=0):C=y,y=(C|0)<(S|0)?C:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[z>>2]=C-y,g[L>>2]=m-y))}function n0(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;C=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=m+C|0,C=y+C|0,g[p>>2]=C,g[L>>2]=S,m=y+m|0,g[z>>2]=m,y=S-C|0,(C|0)<0?(m=m-C|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,S=0):(y=S,S=C),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,C=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=C,g[z>>2]=0,S=k,m=0):C=y,y=(C|0)<(S|0)?C:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=C-y,g[z>>2]=m-y)}function hh(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,S=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,C=S+m|0,g[p>>2]=C,S=y+S|0,g[L>>2]=S,m=y+m|0,g[z>>2]=m,y=S-C|0,(C|0)<0?(m=m-C|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,S=0):(y=S,S=C),(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,C=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=C,g[z>>2]=0,S=k,m=0):C=y,y=(C|0)<(S|0)?C:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=C-y,g[z>>2]=m-y)}function Na(p){switch(p=p|0,p|0){case 1:{p=5;break}case 5:{p=4;break}case 4:{p=6;break}case 6:{p=2;break}case 2:{p=3;break}case 3:{p=1;break}default:}return p|0}function ao(p){switch(p=p|0,p|0){case 1:{p=3;break}case 3:{p=2;break}case 2:{p=6;break}case 6:{p=4;break}case 4:{p=5;break}case 5:{p=1;break}default:}return p|0}function Ue(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;m=g[p>>2]|0,L=p+4|0,y=g[L>>2]|0,z=p+8|0,S=g[z>>2]|0,C=y+(m<<1)|0,g[p>>2]=C,y=S+(y<<1)|0,g[L>>2]=y,m=(S<<1)+m|0,g[z>>2]=m,S=y-C|0,(C|0)<0?(m=m-C|0,g[L>>2]=S,g[z>>2]=m,g[p>>2]=0,y=S,S=0):S=C,(y|0)<0&&(S=S-y|0,g[p>>2]=S,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=S-m|0,C=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=C,g[z>>2]=0,S=k,m=0):C=y,y=(C|0)<(S|0)?C:S,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=S-y,g[L>>2]=C-y,g[z>>2]=m-y)}function Dd(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;C=g[p>>2]|0,L=p+4|0,m=g[L>>2]|0,z=p+8|0,y=g[z>>2]|0,S=(m<<1)+C|0,C=y+(C<<1)|0,g[p>>2]=C,g[L>>2]=S,m=(y<<1)+m|0,g[z>>2]=m,y=S-C|0,(C|0)<0?(m=m-C|0,g[L>>2]=y,g[z>>2]=m,g[p>>2]=0,C=0):y=S,(y|0)<0&&(C=C-y|0,g[p>>2]=C,m=m-y|0,g[z>>2]=m,g[L>>2]=0,y=0),k=C-m|0,S=y-m|0,(m|0)<0?(g[p>>2]=k,g[L>>2]=S,g[z>>2]=0,C=k,m=0):S=y,y=(S|0)<(C|0)?S:C,y=(m|0)<(y|0)?m:y,!((y|0)<=0)&&(g[p>>2]=C-y,g[L>>2]=S-y,g[z>>2]=m-y)}function Gl(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0;return L=(g[p>>2]|0)-(g[m>>2]|0)|0,z=(L|0)<0,S=(g[p+4>>2]|0)-(g[m+4>>2]|0)-(z?L:0)|0,k=(S|0)<0,C=(z?0-L|0:0)+(g[p+8>>2]|0)-(g[m+8>>2]|0)+(k?0-S|0:0)|0,p=(C|0)<0,m=p?0:C,y=(k?0:S)-(p?C:0)|0,C=(z?0:L)-(k?S:0)-(p?C:0)|0,p=(y|0)<(C|0)?y:C,p=(m|0)<(p|0)?m:p,S=(p|0)>0,m=m-(S?p:0)|0,y=y-(S?p:0)|0,p=C-(S?p:0)|0,p=(p|0)>-1?p:0-p|0,y=(y|0)>-1?y:0-y|0,m=(m|0)>-1?m:0-m|0,m=(y|0)>(m|0)?y:m,((p|0)>(m|0)?p:m)|0}function vf(p,m){p=p|0,m=m|0;var y=0;y=g[p+8>>2]|0,g[m>>2]=(g[p>>2]|0)-y,g[m+4>>2]=(g[p+4>>2]|0)-y}function h_(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0;S=g[p>>2]|0,g[m>>2]=S,p=g[p+4>>2]|0,L=m+4|0,g[L>>2]=p,z=m+8|0,g[z>>2]=0,y=p-S|0,(S|0)<0?(p=0-S|0,g[L>>2]=y,g[z>>2]=p,g[m>>2]=0,S=0):(y=p,p=0),(y|0)<0&&(S=S-y|0,g[m>>2]=S,p=p-y|0,g[z>>2]=p,g[L>>2]=0,y=0),k=S-p|0,C=y-p|0,(p|0)<0?(g[m>>2]=k,g[L>>2]=C,g[z>>2]=0,y=C,C=k,p=0):C=S,S=(y|0)<(C|0)?y:C,S=(p|0)<(S|0)?p:S,!((S|0)<=0)&&(g[m>>2]=C-S,g[L>>2]=y-S,g[z>>2]=p-S)}function Re(p){p=p|0;var m=0,y=0,S=0,C=0;m=p+8|0,C=g[m>>2]|0,y=C-(g[p>>2]|0)|0,g[p>>2]=y,S=p+4|0,p=(g[S>>2]|0)-C|0,g[S>>2]=p,g[m>>2]=0-(p+y)}function s0(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;y=g[p>>2]|0,m=0-y|0,g[p>>2]=m,L=p+8|0,g[L>>2]=0,z=p+4|0,S=g[z>>2]|0,C=S+y|0,(y|0)>0?(g[z>>2]=C,g[L>>2]=y,g[p>>2]=0,m=0,S=C):y=0,(S|0)<0?(k=m-S|0,g[p>>2]=k,y=y-S|0,g[L>>2]=y,g[z>>2]=0,C=k-y|0,m=0-y|0,(y|0)<0?(g[p>>2]=C,g[z>>2]=m,g[L>>2]=0,S=m,y=0):(S=0,C=k)):C=m,m=(S|0)<(C|0)?S:C,m=(y|0)<(m|0)?y:m,!((m|0)<=0)&&(g[p>>2]=C-m,g[z>>2]=S-m,g[L>>2]=y-m)}function o0(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;S=wt,wt=wt+16|0,C=S,kx(p,m,y,C),u_(C,y+4|0),wt=S}function kx(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0;if(H=wt,wt=wt+32|0,k=H,Wl(p,k),g[y>>2]=0,C=+jr(15888,k),L=+jr(15912,k),L>2]=1,C=L),L=+jr(15936,k),L>2]=2,C=L),L=+jr(15960,k),L>2]=3,C=L),L=+jr(15984,k),L>2]=4,C=L),L=+jr(16008,k),L>2]=5,C=L),L=+jr(16032,k),L>2]=6,C=L),L=+jr(16056,k),L>2]=7,C=L),L=+jr(16080,k),L>2]=8,C=L),L=+jr(16104,k),L>2]=9,C=L),L=+jr(16128,k),L>2]=10,C=L),L=+jr(16152,k),L>2]=11,C=L),L=+jr(16176,k),L>2]=12,C=L),L=+jr(16200,k),L>2]=13,C=L),L=+jr(16224,k),L>2]=14,C=L),L=+jr(16248,k),L>2]=15,C=L),L=+jr(16272,k),L>2]=16,C=L),L=+jr(16296,k),L>2]=17,C=L),L=+jr(16320,k),L>2]=18,C=L),L=+jr(16344,k),L>2]=19,C=L),L=+gf(+(1-C*.5)),L<1e-16){g[S>>2]=0,g[S+4>>2]=0,g[S+8>>2]=0,g[S+12>>2]=0,wt=H;return}if(y=g[y>>2]|0,C=+Tt[16368+(y*24|0)>>3],C=+dh(C-+dh(+Od(15568+(y<<4)|0,p))),qo(m)|0?z=+dh(C+-.3334731722518321):z=C,C=+So(+L)/.381966011250105,(m|0)>0){k=0;do C=C*2.6457513110645907,k=k+1|0;while((k|0)!=(m|0))}L=+Ur(+z)*C,Tt[S>>3]=L,z=+hi(+z)*C,Tt[S+8>>3]=z,wt=H}function fh(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0;if(k=+us(p),k<1e-16){m=15568+(m<<4)|0,g[C>>2]=g[m>>2],g[C+4>>2]=g[m+4>>2],g[C+8>>2]=g[m+8>>2],g[C+12>>2]=g[m+12>>2];return}if(L=+qr(+ +Tt[p+8>>3],+ +Tt[p>>3]),(y|0)>0){p=0;do k=k/2.6457513110645907,p=p+1|0;while((p|0)!=(y|0))}S?(k=k/3,y=(qo(y)|0)==0,k=+Md(+((y?k:k/2.6457513110645907)*.381966011250105))):(k=+Md(+(k*.381966011250105)),qo(y)|0&&(L=+dh(L+.3334731722518321))),h0(15568+(m<<4)|0,+dh(+Tt[16368+(m*24|0)>>3]-L),k,C)}function f_(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;S=wt,wt=wt+16|0,C=S,pu(p+4|0,C),fh(C,g[p>>2]|0,m,0,y),wt=S}function a0(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Wi=0,Mi=0,cn=0,Ei=0,bn=0,gn=0,Or=0;if(bn=wt,wt=wt+272|0,k=bn+256|0,Jt=bn+240|0,Mi=bn,cn=bn+224|0,Ei=bn+208|0,_e=bn+176|0,Nt=bn+160|0,Ze=bn+192|0,Ke=bn+144|0,be=bn+128|0,ze=bn+112|0,Zr=bn+96|0,Wi=bn+80|0,g[k>>2]=m,g[Jt>>2]=g[p>>2],g[Jt+4>>2]=g[p+4>>2],g[Jt+8>>2]=g[p+8>>2],g[Jt+12>>2]=g[p+12>>2],l0(Jt,k,Mi),g[C>>2]=0,Jt=S+y+((S|0)==5&1)|0,(Jt|0)<=(y|0)){wt=bn;return}H=g[k>>2]|0,it=cn+4|0,ot=_e+4|0,Ct=y+5|0,zt=16848+(H<<2)|0,Gt=16928+(H<<2)|0,ee=be+8|0,ie=ze+8|0,Ce=Zr+8|0,Ve=Ei+4|0,z=y;t:for(;;){L=Mi+(((z|0)%5|0)<<4)|0,g[Ei>>2]=g[L>>2],g[Ei+4>>2]=g[L+4>>2],g[Ei+8>>2]=g[L+8>>2],g[Ei+12>>2]=g[L+12>>2];do;while((xf(Ei,H,0,1)|0)==2);if((z|0)>(y|0)&(qo(m)|0)!=0){if(g[_e>>2]=g[Ei>>2],g[_e+4>>2]=g[Ei+4>>2],g[_e+8>>2]=g[Ei+8>>2],g[_e+12>>2]=g[Ei+12>>2],pu(it,Nt),S=g[_e>>2]|0,k=g[17008+(S*80|0)+(g[cn>>2]<<2)>>2]|0,g[_e>>2]=g[18608+(S*80|0)+(k*20|0)>>2],L=g[18608+(S*80|0)+(k*20|0)+16>>2]|0,(L|0)>0){p=0;do n0(ot),p=p+1|0;while((p|0)<(L|0))}switch(L=18608+(S*80|0)+(k*20|0)+4|0,g[Ze>>2]=g[L>>2],g[Ze+4>>2]=g[L+4>>2],g[Ze+8>>2]=g[L+8>>2],ca(Ze,(g[zt>>2]|0)*3|0),In(ot,Ze,ot),Ns(ot),pu(ot,Ke),gn=+(g[Gt>>2]|0),Tt[be>>3]=gn*3,Tt[ee>>3]=0,Or=gn*-1.5,Tt[ze>>3]=Or,Tt[ie>>3]=gn*2.598076211353316,Tt[Zr>>3]=Or,Tt[Ce>>3]=gn*-2.598076211353316,g[17008+((g[_e>>2]|0)*80|0)+(g[Ei>>2]<<2)>>2]|0){case 1:{p=ze,S=be;break}case 3:{p=Zr,S=ze;break}case 2:{p=be,S=Zr;break}default:{p=12;break t}}Dn(Nt,Ke,S,p,Wi),fh(Wi,g[_e>>2]|0,H,1,C+8+(g[C>>2]<<4)|0),g[C>>2]=(g[C>>2]|0)+1}if((z|0)<(Ct|0)&&(pu(Ve,_e),fh(_e,g[Ei>>2]|0,H,1,C+8+(g[C>>2]<<4)|0),g[C>>2]=(g[C>>2]|0)+1),g[cn>>2]=g[Ei>>2],g[cn+4>>2]=g[Ei+4>>2],g[cn+8>>2]=g[Ei+8>>2],g[cn+12>>2]=g[Ei+12>>2],z=z+1|0,(z|0)>=(Jt|0)){p=3;break}}if((p|0)==3){wt=bn;return}else(p|0)==12&&Ti(22474,22521,581,22531)}function l0(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0;H=wt,wt=wt+128|0,S=H+64|0,C=H,k=S,L=20208,z=k+60|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));k=C,L=20272,z=k+60|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));z=(qo(g[m>>2]|0)|0)==0,S=z?S:C,C=p+4|0,Ue(C),Dd(C),qo(g[m>>2]|0)|0&&(uh(C),g[m>>2]=(g[m>>2]|0)+1),g[y>>2]=g[p>>2],m=y+4|0,In(C,S,m),Ns(m),g[y+16>>2]=g[p>>2],m=y+20|0,In(C,S+12|0,m),Ns(m),g[y+32>>2]=g[p>>2],m=y+36|0,In(C,S+24|0,m),Ns(m),g[y+48>>2]=g[p>>2],m=y+52|0,In(C,S+36|0,m),Ns(m),g[y+64>>2]=g[p>>2],y=y+68|0,In(C,S+48|0,y),Ns(y),wt=H}function xf(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0;if(ee=wt,wt=wt+32|0,zt=ee+12|0,z=ee,Gt=p+4|0,Ct=g[16928+(m<<2)>>2]|0,ot=(S|0)!=0,Ct=ot?Ct*3|0:Ct,C=g[Gt>>2]|0,it=p+8|0,L=g[it>>2]|0,ot){if(k=p+12|0,S=g[k>>2]|0,C=L+C+S|0,(C|0)==(Ct|0))return Gt=1,wt=ee,Gt|0;H=k}else H=p+12|0,S=g[H>>2]|0,C=L+C+S|0;if((C|0)<=(Ct|0))return Gt=0,wt=ee,Gt|0;do if((S|0)>0){if(S=g[p>>2]|0,(L|0)>0){k=18608+(S*80|0)+60|0,S=p;break}S=18608+(S*80|0)+40|0,y?(kd(zt,Ct,0,0),eA(Gt,zt,z),hh(z),In(z,zt,Gt),k=S,S=p):(k=S,S=p)}else k=18608+((g[p>>2]|0)*80|0)+20|0,S=p;while(!1);if(g[S>>2]=g[k>>2],C=k+16|0,(g[C>>2]|0)>0){S=0;do n0(Gt),S=S+1|0;while((S|0)<(g[C>>2]|0))}return p=k+4|0,g[zt>>2]=g[p>>2],g[zt+4>>2]=g[p+4>>2],g[zt+8>>2]=g[p+8>>2],m=g[16848+(m<<2)>>2]|0,ca(zt,ot?m*3|0:m),In(Gt,zt,Gt),Ns(Gt),ot?S=((g[it>>2]|0)+(g[Gt>>2]|0)+(g[H>>2]|0)|0)==(Ct|0)?1:2:S=2,Gt=S,wt=ee,Gt|0}function c0(p,m){p=p|0,m=m|0;var y=0;do y=xf(p,m,0,1)|0;while((y|0)==2);return y|0}function iA(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Wi=0,Mi=0;if(Zr=wt,wt=wt+240|0,k=Zr+224|0,Ze=Zr+208|0,Ke=Zr,be=Zr+192|0,ze=Zr+176|0,Ce=Zr+160|0,Ve=Zr+144|0,Jt=Zr+128|0,_e=Zr+112|0,Nt=Zr+96|0,g[k>>2]=m,g[Ze>>2]=g[p>>2],g[Ze+4>>2]=g[p+4>>2],g[Ze+8>>2]=g[p+8>>2],g[Ze+12>>2]=g[p+12>>2],nA(Ze,k,Ke),g[C>>2]=0,ie=S+y+((S|0)==6&1)|0,(ie|0)<=(y|0)){wt=Zr;return}H=g[k>>2]|0,it=y+6|0,ot=16928+(H<<2)|0,Ct=Ve+8|0,zt=Jt+8|0,Gt=_e+8|0,ee=be+4|0,L=0,z=y,S=-1;t:for(;;){if(k=(z|0)%6|0,p=Ke+(k<<4)|0,g[be>>2]=g[p>>2],g[be+4>>2]=g[p+4>>2],g[be+8>>2]=g[p+8>>2],g[be+12>>2]=g[p+12>>2],p=L,L=xf(be,H,0,1)|0,(z|0)>(y|0)&(qo(m)|0)!=0&&(p|0)!=1&&(g[be>>2]|0)!=(S|0)){switch(pu(Ke+(((k+5|0)%6|0)<<4)+4|0,ze),pu(Ke+(k<<4)+4|0,Ce),Wi=+(g[ot>>2]|0),Tt[Ve>>3]=Wi*3,Tt[Ct>>3]=0,Mi=Wi*-1.5,Tt[Jt>>3]=Mi,Tt[zt>>3]=Wi*2.598076211353316,Tt[_e>>3]=Mi,Tt[Gt>>3]=Wi*-2.598076211353316,k=g[Ze>>2]|0,g[17008+(k*80|0)+(((S|0)==(k|0)?g[be>>2]|0:S)<<2)>>2]|0){case 1:{p=Jt,S=Ve;break}case 3:{p=_e,S=Jt;break}case 2:{p=Ve,S=_e;break}default:{p=8;break t}}Dn(ze,Ce,S,p,Nt),!(Zo(ze,Nt)|0)&&!(Zo(Ce,Nt)|0)&&(fh(Nt,g[Ze>>2]|0,H,1,C+8+(g[C>>2]<<4)|0),g[C>>2]=(g[C>>2]|0)+1)}if((z|0)<(it|0)&&(pu(ee,ze),fh(ze,g[be>>2]|0,H,1,C+8+(g[C>>2]<<4)|0),g[C>>2]=(g[C>>2]|0)+1),z=z+1|0,(z|0)>=(ie|0)){p=3;break}else S=g[be>>2]|0}if((p|0)==3){wt=Zr;return}else(p|0)==8&&Ti(22557,22521,746,22602)}function nA(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0;H=wt,wt=wt+160|0,S=H+80|0,C=H,k=S,L=20336,z=k+72|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));k=C,L=20416,z=k+72|0;do g[k>>2]=g[L>>2],k=k+4|0,L=L+4|0;while((k|0)<(z|0));z=(qo(g[m>>2]|0)|0)==0,S=z?S:C,C=p+4|0,Ue(C),Dd(C),qo(g[m>>2]|0)|0&&(uh(C),g[m>>2]=(g[m>>2]|0)+1),g[y>>2]=g[p>>2],m=y+4|0,In(C,S,m),Ns(m),g[y+16>>2]=g[p>>2],m=y+20|0,In(C,S+12|0,m),Ns(m),g[y+32>>2]=g[p>>2],m=y+36|0,In(C,S+24|0,m),Ns(m),g[y+48>>2]=g[p>>2],m=y+52|0,In(C,S+36|0,m),Ns(m),g[y+64>>2]=g[p>>2],m=y+68|0,In(C,S+48|0,m),Ns(m),g[y+80>>2]=g[p>>2],y=y+84|0,In(C,S+60|0,y),Ns(y),wt=H}function dh(p){p=+p;var m=0;return m=p<0?p+6.283185307179586:p,+(p>=6.283185307179586?m+-6.283185307179586:m)}function cs(p,m){return p=p|0,m=m|0,+li(+(+Tt[p>>3]-+Tt[m>>3]))<17453292519943298e-27?(m=+li(+(+Tt[p+8>>3]-+Tt[m+8>>3]))<17453292519943298e-27,m|0):(m=0,m|0)}function Au(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0;return C=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((C-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+C)*+Ur(+S)*y),+(+qr(+ +vn(+y),+ +vn(+(1-y)))*2)}function Dc(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0;return C=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((C-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+C)*+Ur(+S)*y),+(+qr(+ +vn(+y),+ +vn(+(1-y)))*2*6371.007180918475)}function u0(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0;return C=+Tt[m>>3],S=+Tt[p>>3],k=+hi(+((C-S)*.5)),y=+hi(+((+Tt[m+8>>3]-+Tt[p+8>>3])*.5)),y=k*k+y*(+Ur(+C)*+Ur(+S)*y),+(+qr(+ +vn(+y),+ +vn(+(1-y)))*2*6371.007180918475*1e3)}function Od(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0;return k=+Tt[m>>3],S=+Ur(+k),C=+Tt[m+8>>3]-+Tt[p+8>>3],L=S*+hi(+C),y=+Tt[p>>3],+ +qr(+L,+(+hi(+k)*+Ur(+y)-+Ur(+C)*(S*+hi(+y))))}function h0(p,m,y,S){p=p|0,m=+m,y=+y,S=S|0;var C=0,k=0,L=0,z=0;if(y<1e-16){g[S>>2]=g[p>>2],g[S+4>>2]=g[p+4>>2],g[S+8>>2]=g[p+8>>2],g[S+12>>2]=g[p+12>>2];return}k=m<0?m+6.283185307179586:m,k=m>=6.283185307179586?k+-6.283185307179586:k;do if(k<1e-16)m=+Tt[p>>3]+y,Tt[S>>3]=m,C=S;else{if(C=+li(+(k+-3.141592653589793))<1e-16,m=+Tt[p>>3],C){m=m-y,Tt[S>>3]=m,C=S;break}if(L=+Ur(+y),y=+hi(+y),m=L*+hi(+m)+ +Ur(+k)*(y*+Ur(+m)),m=m>1?1:m,m=+n_(+(m<-1?-1:m)),Tt[S>>3]=m,+li(+(m+-1.5707963267948966))<1e-16){Tt[S>>3]=1.5707963267948966,Tt[S+8>>3]=0;return}if(+li(+(m+1.5707963267948966))<1e-16){Tt[S>>3]=-1.5707963267948966,Tt[S+8>>3]=0;return}if(z=+Ur(+m),k=y*+hi(+k)/z,y=+Tt[p>>3],m=(L-+hi(+m)*+hi(+y))/+Ur(+y)/z,L=k>1?1:k,m=m>1?1:m,m=+Tt[p+8>>3]+ +qr(+(L<-1?-1:L),+(m<-1?-1:m)),m>3.141592653589793)do m=m+-6.283185307179586;while(m>3.141592653589793);if(m<-3.141592653589793)do m=m+6.283185307179586;while(m<-3.141592653589793);Tt[S+8>>3]=m;return}while(!1);if(+li(+(m+-1.5707963267948966))<1e-16){Tt[C>>3]=1.5707963267948966,Tt[S+8>>3]=0;return}if(+li(+(m+1.5707963267948966))<1e-16){Tt[C>>3]=-1.5707963267948966,Tt[S+8>>3]=0;return}if(m=+Tt[p+8>>3],m>3.141592653589793)do m=m+-6.283185307179586;while(m>3.141592653589793);if(m<-3.141592653589793)do m=m+6.283185307179586;while(m<-3.141592653589793);Tt[S+8>>3]=m}function d_(p){return p=p|0,+ +Tt[20496+(p<<3)>>3]}function ua(p){return p=p|0,+ +Tt[20624+(p<<3)>>3]}function ln(p){return p=p|0,+ +Tt[20752+(p<<3)>>3]}function sA(p){return p=p|0,+ +Tt[20880+(p<<3)>>3]}function f0(p){p=p|0;var m=0;return m=21008+(p<<3)|0,p=g[m>>2]|0,$e(g[m+4>>2]|0),p|0}function ph(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;return zt=+Tt[m>>3],ot=+Tt[p>>3],H=+hi(+((zt-ot)*.5)),k=+Tt[m+8>>3],it=+Tt[p+8>>3],L=+hi(+((k-it)*.5)),z=+Ur(+ot),Ct=+Ur(+zt),L=H*H+L*(Ct*z*L),L=+qr(+ +vn(+L),+ +vn(+(1-L)))*2,H=+Tt[y>>3],zt=+hi(+((H-zt)*.5)),S=+Tt[y+8>>3],k=+hi(+((S-k)*.5)),C=+Ur(+H),k=zt*zt+k*(Ct*C*k),k=+qr(+ +vn(+k),+ +vn(+(1-k)))*2,H=+hi(+((ot-H)*.5)),S=+hi(+((it-S)*.5)),S=H*H+S*(z*C*S),S=+qr(+ +vn(+S),+ +vn(+(1-S)))*2,C=(L+k+S)*.5,+(+Md(+ +vn(+(+So(+(C*.5))*+So(+((C-L)*.5))*+So(+((C-k)*.5))*+So(+((C-S)*.5)))))*4)}function p_(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,C=k,l(p,m,S),d(p,m,C),m=g[C>>2]|0,(m|0)<=0)return y=0,wt=k,+y;if(y=+ph(C+8|0,C+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)==1)return wt=k,+y;p=1;do L=p,p=p+1|0,y=y+ +ph(C+8+(L<<4)|0,C+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0));return wt=k,+y}function A_(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,C=k,l(p,m,S),d(p,m,C),m=g[C>>2]|0,(m|0)>0){if(y=+ph(C+8|0,C+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)!=1){p=1;do L=p,p=p+1|0,y=y+ +ph(C+8+(L<<4)|0,C+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0))}}else y=0;return wt=k,+(y*6371.007180918475*6371.007180918475)}function Rx(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0;if(k=wt,wt=wt+192|0,S=k+168|0,C=k,l(p,m,S),d(p,m,C),m=g[C>>2]|0,(m|0)>0){if(y=+ph(C+8|0,C+8+(((m|0)!=1&1)<<4)|0,S)+0,(m|0)!=1){p=1;do L=p,p=p+1|0,y=y+ +ph(C+8+(L<<4)|0,C+8+(((p|0)%(m|0)|0)<<4)|0,S);while((p|0)<(m|0))}}else y=0;return wt=k,+(y*6371.007180918475*6371.007180918475*1e3*1e3)}function To(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return C=0,wt=L,+C;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],C=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=C,C=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((C-z)*.5)),z=it*it+z*(+Ur(+S)*+Ur(+H)*z),y=y+ +qr(+ +vn(+z),+ +vn(+(1-z)))*2;while((p|0)<(m|0));return wt=L,+y}function oA(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return C=0,wt=L,+C;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],C=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=C,C=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((C-z)*.5)),z=it*it+z*(+Ur(+H)*+Ur(+S)*z),y=y+ +qr(+ +vn(+z),+ +vn(+(1-z)))*2;while((p|0)!=(m|0));return it=y*6371.007180918475,wt=L,+it}function rr(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0;if(L=wt,wt=wt+176|0,k=L,pt(p,m,k),p=g[k>>2]|0,(p|0)<=1)return C=0,wt=L,+C;m=p+-1|0,p=0,y=0,S=+Tt[k+8>>3],C=+Tt[k+16>>3];do p=p+1|0,H=S,S=+Tt[k+8+(p<<4)>>3],it=+hi(+((S-H)*.5)),z=C,C=+Tt[k+8+(p<<4)+8>>3],z=+hi(+((C-z)*.5)),z=it*it+z*(+Ur(+H)*+Ur(+S)*z),y=y+ +qr(+ +vn(+z),+ +vn(+(1-z)))*2;while((p|0)!=(m|0));return it=y*6371.007180918475*1e3,wt=L,+it}function fr(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,52)|0,It()|0,m&15|0}function bf(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,45)|0,It()|0,m&127|0}function aA(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0;if(!(!0&(m&-16777216|0)==134217728)||(L=me(p|0,m|0,45)|0,It()|0,L=L&127,L>>>0>121))return m=0,m|0;y=me(p|0,m|0,52)|0,It()|0,y=y&15;do if(y|0){for(C=1,S=0;;){if(k=me(p|0,m|0,(15-C|0)*3|0)|0,It()|0,k=k&7,(k|0)!=0&(S^1))if((k|0)==1&(fi(L)|0)!=0){z=0,S=13;break}else S=1;if((k|0)==7){z=0,S=13;break}if(C>>>0>>0)C=C+1|0;else{S=9;break}}if((S|0)==9){if((y|0)==15)z=1;else break;return z|0}else if((S|0)==13)return z|0}while(!1);for(;;){if(z=me(p|0,m|0,(14-y|0)*3|0)|0,It()|0,!((z&7|0)==7&!0)){z=0,S=13;break}if(y>>>0<14)y=y+1|0;else{z=1,S=13;break}}return(S|0)==13?z|0:0}function Bd(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,(S|0)>=(y|0)){if((S|0)!=(y|0))if(y>>>0<=15){if(C=Le(y|0,0,52)|0,p=C|p,m=It()|0|m&-15728641,(S|0)>(y|0))do C=Le(7,0,(14-y|0)*3|0)|0,y=y+1|0,p=C|p,m=It()|0|m;while((y|0)<(S|0))}else m=0,p=0}else m=0,p=0;return $e(m|0),p|0}function Gn(p,m,y){return p=p|0,m=m|0,y=y|0,p=me(p|0,m|0,52)|0,It()|0,p=p&15,(y|0)<16&(p|0)<=(y|0)?(y=We(7,y-p|0)|0,y|0):(y=0,y|0)}function lo(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(L=me(p|0,m|0,52)|0,It()|0,L=L&15,!!((y|0)<16&(L|0)<=(y|0))){if((L|0)==(y|0)){y=S,g[y>>2]=p,g[y+4>>2]=m;return}if(H=We(7,y-L|0)|0,it=(H|0)/7|0,z=me(p|0,m|0,45)|0,It()|0,!(fi(z&127)|0))k=0;else{t:do if(!L)C=0;else for(k=1;;){if(C=me(p|0,m|0,(15-k|0)*3|0)|0,It()|0,C=C&7,C|0)break t;if(k>>>0>>0)k=k+1|0;else{C=0;break}}while(!1);k=(C|0)==0}if(ot=Le(L+1|0,0,52)|0,C=It()|0|m&-15728641,z=(14-L|0)*3|0,m=Le(7,0,z|0)|0,m=(ot|p)&~m,L=C&~(It()|0),lo(m,L,y,S),C=S+(it<<3)|0,!k){ot=Le(1,0,z|0)|0,lo(ot|m,It()|0|L,y,C),ot=C+(it<<3)|0,H=Le(2,0,z|0)|0,lo(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(3,0,z|0)|0,lo(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(4,0,z|0)|0,lo(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(5,0,z|0)|0,lo(H|m,It()|0|L,y,ot),H=Le(6,0,z|0)|0,lo(H|m,It()|0|L,y,ot+(it<<3)|0);return}k=C+(it<<3)|0,(H|0)>6&&(H=C+8|0,ot=(k>>>0>H>>>0?k:H)+-1+(0-C)|0,Oc(C|0,0,ot+8&-8|0)|0,C=H+(ot>>>3<<3)|0),ot=Le(2,0,z|0)|0,lo(ot|m,It()|0|L,y,C),ot=C+(it<<3)|0,H=Le(3,0,z|0)|0,lo(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(4,0,z|0)|0,lo(H|m,It()|0|L,y,ot),ot=ot+(it<<3)|0,H=Le(5,0,z|0)|0,lo(H|m,It()|0|L,y,ot),H=Le(6,0,z|0)|0,lo(H|m,It()|0|L,y,ot+(it<<3)|0)}}function Ui(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;if(C=me(p|0,m|0,45)|0,It()|0,!(fi(C&127)|0))return C=0,C|0;C=me(p|0,m|0,52)|0,It()|0,C=C&15;t:do if(!C)y=0;else for(S=1;;){if(y=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,y=y&7,y|0)break t;if(S>>>0>>0)S=S+1|0;else{y=0;break}}while(!1);return C=(y|0)==0&1,C|0}function m_(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,(y|0)<16&(S|0)<=(y|0)){if((S|0)!=(y|0)&&(C=Le(y|0,0,52)|0,p=C|p,m=It()|0|m&-15728641,(S|0)<(y|0)))do C=Le(7,0,(14-S|0)*3|0)|0,S=S+1|0,p=p&~C,m=m&~(It()|0);while((S|0)<(y|0))}else m=0,p=0;return $e(m|0),p|0}function Ah(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0;if(!y)return be=0,be|0;if(C=p,S=g[C>>2]|0,C=g[C+4>>2]|0,!0&(C&15728640|0)==0){if((y|0)<=0||(be=m,g[be>>2]=S,g[be+4>>2]=C,(y|0)==1))return be=0,be|0;S=1;do Ze=p+(S<<3)|0,Ke=g[Ze+4>>2]|0,be=m+(S<<3)|0,g[be>>2]=g[Ze>>2],g[be+4>>2]=Ke,S=S+1|0;while((S|0)!=(y|0));return S=0,S|0}if(Ze=y<<3,Ke=co(Ze)|0,!Ke)return be=-3,be|0;if(Va(Ke|0,p|0,Ze|0)|0,Nt=Ua(y,8)|0,!Nt)return Gr(Ke),be=-3,be|0;S=y;t:for(;;){L=Ke,ot=g[L>>2]|0,L=g[L+4>>2]|0,Jt=me(ot|0,L|0,52)|0,It()|0,Jt=Jt&15,_e=Jt+-1|0,Ve=(S|0)>0;e:do if(Ve){if(Ce=((S|0)<0)<<31>>31,ee=Le(_e|0,0,52)|0,ie=It()|0,_e>>>0>15)for(C=0,p=ot,y=L;;){if(!((p|0)==0&(y|0)==0)){if(k=me(p|0,y|0,52)|0,It()|0,k=k&15,z=(k|0)<(_e|0),k=(k|0)==(_e|0),it=z?0:k?p:0,p=z?0:k?y:0,y=Qo(it|0,p|0,S|0,Ce|0)|0,It()|0,k=Nt+(y<<3)|0,z=k,H=g[z>>2]|0,z=g[z+4>>2]|0,(H|0)==0&(z|0)==0)y=it;else for(ee=0,Gt=y,zt=z,y=it;;){if((ee|0)>(S|0)){be=41;break t}if((H|0)==(y|0)&(zt&-117440513|0)==(p|0)){it=me(H|0,zt|0,56)|0,It()|0,it=it&7,Ct=it+1|0,ie=me(H|0,zt|0,45)|0,It()|0;r:do if(!(fi(ie&127)|0))z=7;else{if(H=me(H|0,zt|0,52)|0,It()|0,H=H&15,!H){z=6;break}for(z=1;;){if(ie=Le(7,0,(15-z|0)*3|0)|0,!((ie&y|0)==0&((It()|0)&p|0)==0)){z=7;break r}if(z>>>0>>0)z=z+1|0;else{z=6;break}}}while(!1);if((it+2|0)>>>0>z>>>0){be=51;break t}ie=Le(Ct|0,0,56)|0,p=It()|0|p&-117440513,z=k,g[z>>2]=0,g[z+4>>2]=0,z=Gt,y=ie|y}else z=(Gt+1|0)%(S|0)|0;if(k=Nt+(z<<3)|0,zt=k,H=g[zt>>2]|0,zt=g[zt+4>>2]|0,(H|0)==0&(zt|0)==0)break;ee=ee+1|0,Gt=z}ie=k,g[ie>>2]=y,g[ie+4>>2]=p}if(C=C+1|0,(C|0)>=(S|0))break e;y=Ke+(C<<3)|0,p=g[y>>2]|0,y=g[y+4>>2]|0}for(C=0,p=ot,y=L;;){if(!((p|0)==0&(y|0)==0)){if(z=me(p|0,y|0,52)|0,It()|0,z=z&15,(z|0)>=(_e|0)){if((z|0)!=(_e|0)&&(p=p|ee,y=y&-15728641|ie,z>>>0>=Jt>>>0)){k=_e;do Gt=Le(7,0,(14-k|0)*3|0)|0,k=k+1|0,p=Gt|p,y=It()|0|y;while(k>>>0>>0)}}else p=0,y=0;if(z=Qo(p|0,y|0,S|0,Ce|0)|0,It()|0,k=Nt+(z<<3)|0,H=k,it=g[H>>2]|0,H=g[H+4>>2]|0,!((it|0)==0&(H|0)==0))for(Gt=0;;){if((Gt|0)>(S|0)){be=41;break t}if((it|0)==(p|0)&(H&-117440513|0)==(y|0)){Ct=me(it|0,H|0,56)|0,It()|0,Ct=Ct&7,zt=Ct+1|0,ze=me(it|0,H|0,45)|0,It()|0;r:do if(!(fi(ze&127)|0))H=7;else{if(it=me(it|0,H|0,52)|0,It()|0,it=it&15,!it){H=6;break}for(H=1;;){if(ze=Le(7,0,(15-H|0)*3|0)|0,!((ze&p|0)==0&((It()|0)&y|0)==0)){H=7;break r}if(H>>>0>>0)H=H+1|0;else{H=6;break}}}while(!1);if((Ct+2|0)>>>0>H>>>0){be=51;break t}ze=Le(zt|0,0,56)|0,y=It()|0|y&-117440513,zt=k,g[zt>>2]=0,g[zt+4>>2]=0,p=ze|p}else z=(z+1|0)%(S|0)|0;if(k=Nt+(z<<3)|0,H=k,it=g[H>>2]|0,H=g[H+4>>2]|0,(it|0)==0&(H|0)==0)break;Gt=Gt+1|0}ze=k,g[ze>>2]=p,g[ze+4>>2]=y}if(C=C+1|0,(C|0)>=(S|0))break e;y=Ke+(C<<3)|0,p=g[y>>2]|0,y=g[y+4>>2]|0}}while(!1);if((S+5|0)>>>0<11){be=99;break}if(ie=Ua((S|0)/6|0,8)|0,!ie){be=58;break}e:do if(Ve){Gt=0,zt=0;do{if(z=Nt+(Gt<<3)|0,p=z,C=g[p>>2]|0,p=g[p+4>>2]|0,!((C|0)==0&(p|0)==0)){H=me(C|0,p|0,56)|0,It()|0,H=H&7,y=H+1|0,it=p&-117440513,ze=me(C|0,p|0,45)|0,It()|0;r:do if(fi(ze&127)|0){if(Ct=me(C|0,p|0,52)|0,It()|0,Ct=Ct&15,Ct|0)for(k=1;;){if(ze=Le(7,0,(15-k|0)*3|0)|0,!((C&ze|0)==0&(it&(It()|0)|0)==0))break r;if(k>>>0>>0)k=k+1|0;else break}p=Le(y|0,0,56)|0,C=p|C,p=It()|0|it,y=z,g[y>>2]=C,g[y+4>>2]=p,y=H+2|0}while(!1);(y|0)==7&&(ze=ie+(zt<<3)|0,g[ze>>2]=C,g[ze+4>>2]=p&-117440513,zt=zt+1|0)}Gt=Gt+1|0}while((Gt|0)!=(S|0));if(Ve){if(ee=((S|0)<0)<<31>>31,Ct=Le(_e|0,0,52)|0,Gt=It()|0,_e>>>0>15)for(p=0,C=0;;){do if(!((ot|0)==0&(L|0)==0)){for(H=me(ot|0,L|0,52)|0,It()|0,H=H&15,k=(H|0)<(_e|0),H=(H|0)==(_e|0),z=k?0:H?ot:0,H=k?0:H?L:0,k=Qo(z|0,H|0,S|0,ee|0)|0,It()|0,y=0;;){if((y|0)>(S|0)){be=98;break t}if(ze=Nt+(k<<3)|0,it=g[ze+4>>2]|0,(it&-117440513|0)==(H|0)&&(g[ze>>2]|0)==(z|0)){be=70;break}if(k=(k+1|0)%(S|0)|0,ze=Nt+(k<<3)|0,(g[ze>>2]|0)==(z|0)&&(g[ze+4>>2]|0)==(H|0))break;y=y+1|0}if((be|0)==70&&(be=0,!0&(it&117440512|0)==100663296))break;ze=m+(C<<3)|0,g[ze>>2]=ot,g[ze+4>>2]=L,C=C+1|0}while(!1);if(p=p+1|0,(p|0)>=(S|0)){S=zt;break e}L=Ke+(p<<3)|0,ot=g[L>>2]|0,L=g[L+4>>2]|0}for(p=0,C=0;;){do if(!((ot|0)==0&(L|0)==0)){if(H=me(ot|0,L|0,52)|0,It()|0,H=H&15,(H|0)>=(_e|0))if((H|0)!=(_e|0))if(y=ot|Ct,k=L&-15728641|Gt,H>>>0>>0)H=k;else{z=_e;do ze=Le(7,0,(14-z|0)*3|0)|0,z=z+1|0,y=ze|y,k=It()|0|k;while(z>>>0>>0);H=k}else y=ot,H=L;else y=0,H=0;for(z=Qo(y|0,H|0,S|0,ee|0)|0,It()|0,k=0;;){if((k|0)>(S|0)){be=98;break t}if(ze=Nt+(z<<3)|0,it=g[ze+4>>2]|0,(it&-117440513|0)==(H|0)&&(g[ze>>2]|0)==(y|0)){be=93;break}if(z=(z+1|0)%(S|0)|0,ze=Nt+(z<<3)|0,(g[ze>>2]|0)==(y|0)&&(g[ze+4>>2]|0)==(H|0))break;k=k+1|0}if((be|0)==93&&(be=0,!0&(it&117440512|0)==100663296))break;ze=m+(C<<3)|0,g[ze>>2]=ot,g[ze+4>>2]=L,C=C+1|0}while(!1);if(p=p+1|0,(p|0)>=(S|0)){S=zt;break e}L=Ke+(p<<3)|0,ot=g[L>>2]|0,L=g[L+4>>2]|0}}else C=0,S=zt}else C=0,S=0;while(!1);if(Oc(Nt|0,0,Ze|0)|0,Va(Ke|0,ie|0,S<<3|0)|0,Gr(ie),S)m=m+(C<<3)|0;else break}return(be|0)==41?(Gr(Ke),Gr(Nt),ze=-1,ze|0):(be|0)==51?(Gr(Ke),Gr(Nt),ze=-2,ze|0):(be|0)==58?(Gr(Ke),Gr(Nt),ze=-3,ze|0):(be|0)==98?(Gr(ie),Gr(Ke),Gr(Nt),ze=-1,ze|0):((be|0)==99&&Va(m|0,Ke|0,S<<3|0)|0,Gr(Ke),Gr(Nt),ze=0,ze|0)}function Cn(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0;if((m|0)<=0)return C=0,C|0;if((C|0)>=16){for(k=0;;){if(ot=p+(k<<3)|0,!((g[ot>>2]|0)==0&(g[ot+4>>2]|0)==0)){k=14;break}if(k=k+1|0,(k|0)>=(m|0)){L=0,k=16;break}}if((k|0)==14)return((S|0)>0?-2:-1)|0;if((k|0)==16)return L|0}k=0,ot=0;t:for(;;){it=p+(ot<<3)|0,z=it,L=g[z>>2]|0,z=g[z+4>>2]|0;do if(!((L|0)==0&(z|0)==0)){if((k|0)>=(S|0)){L=-1,k=16;break t}if(H=me(L|0,z|0,52)|0,It()|0,H=H&15,(H|0)>(C|0)){L=-2,k=16;break t}if((H|0)==(C|0)){it=y+(k<<3)|0,g[it>>2]=L,g[it+4>>2]=z,k=k+1|0;break}if(L=(We(7,C-H|0)|0)+k|0,(L|0)>(S|0)){L=-1,k=16;break t}lo(g[it>>2]|0,g[it+4>>2]|0,C,y+(k<<3)|0),k=L}while(!1);if(ot=ot+1|0,(ot|0)>=(m|0)){L=0,k=16;break}}return(k|0)==16?L|0:0}function xn(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0;if((m|0)<=0)return y=0,y|0;if((y|0)>=16){for(S=0;;){if(L=p+(S<<3)|0,!((g[L>>2]|0)==0&(g[L+4>>2]|0)==0)){S=-1,C=13;break}if(S=S+1|0,(S|0)>=(m|0)){S=0,C=13;break}}if((C|0)==13)return S|0}S=0,L=0;t:for(;;){C=p+(L<<3)|0,k=g[C>>2]|0,C=g[C+4>>2]|0;do if(!((k|0)==0&(C|0)==0)){if(C=me(k|0,C|0,52)|0,It()|0,C=C&15,(C|0)>(y|0)){S=-1,C=13;break t}if((C|0)==(y|0)){S=S+1|0;break}else{S=(We(7,y-C|0)|0)+S|0;break}}while(!1);if(L=L+1|0,(L|0)>=(m|0)){C=13;break}}return(C|0)==13?S|0:0}function wf(p,m){return p=p|0,m=m|0,m=me(p|0,m|0,52)|0,It()|0,m&1|0}function Es(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;if(C=me(p|0,m|0,52)|0,It()|0,C=C&15,!C)return C=0,C|0;for(S=1;;){if(y=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,y=y&7,y|0){S=5;break}if(S>>>0>>0)S=S+1|0;else{y=0,S=5;break}}return(S|0)==5?y|0:0}function mh(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0;if(H=me(p|0,m|0,52)|0,It()|0,H=H&15,!H)return z=m,H=p,$e(z|0),H|0;for(z=1,y=0;;){k=(15-z|0)*3|0,S=Le(7,0,k|0)|0,C=It()|0,L=me(p|0,m|0,k|0)|0,It()|0,k=Le(Na(L&7)|0,0,k|0)|0,L=It()|0,p=k|p&~S,m=L|m&~C;t:do if(!y)if((k&S|0)==0&(L&C|0)==0)y=0;else if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)y=1;else{y=1;e:for(;;){switch(L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,L&7){case 1:break e;case 0:break;default:{y=1;break t}}if(y>>>0>>0)y=y+1|0;else{y=1;break t}}for(y=1;;)if(L=(15-y|0)*3|0,C=me(p|0,m|0,L|0)|0,It()|0,k=Le(7,0,L|0)|0,m=m&~(It()|0),L=Le(Na(C&7)|0,0,L|0)|0,p=p&~k|L,m=m|(It()|0),y>>>0>>0)y=y+1|0;else{y=1;break}}while(!1);if(z>>>0>>0)z=z+1|0;else break}return $e(m|0),p|0}function Ho(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return y=m,S=p,$e(y|0),S|0;for(y=1;k=(15-y|0)*3|0,L=me(p|0,m|0,k|0)|0,It()|0,C=Le(7,0,k|0)|0,m=m&~(It()|0),k=Le(Na(L&7)|0,0,k|0)|0,p=k|p&~C,m=It()|0|m,y>>>0>>0;)y=y+1|0;return $e(m|0),p|0}function d0(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0;if(H=me(p|0,m|0,52)|0,It()|0,H=H&15,!H)return z=m,H=p,$e(z|0),H|0;for(z=1,y=0;;){k=(15-z|0)*3|0,S=Le(7,0,k|0)|0,C=It()|0,L=me(p|0,m|0,k|0)|0,It()|0,k=Le(ao(L&7)|0,0,k|0)|0,L=It()|0,p=k|p&~S,m=L|m&~C;t:do if(!y)if((k&S|0)==0&(L&C|0)==0)y=0;else if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)y=1;else{y=1;e:for(;;){switch(L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,L&7){case 1:break e;case 0:break;default:{y=1;break t}}if(y>>>0>>0)y=y+1|0;else{y=1;break t}}for(y=1;;)if(C=(15-y|0)*3|0,k=Le(7,0,C|0)|0,L=m&~(It()|0),m=me(p|0,m|0,C|0)|0,It()|0,m=Le(ao(m&7)|0,0,C|0)|0,p=p&~k|m,m=L|(It()|0),y>>>0>>0)y=y+1|0;else{y=1;break}}while(!1);if(z>>>0>>0)z=z+1|0;else break}return $e(m|0),p|0}function Fd(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return y=m,S=p,$e(y|0),S|0;for(y=1;L=(15-y|0)*3|0,k=Le(7,0,L|0)|0,C=m&~(It()|0),m=me(p|0,m|0,L|0)|0,It()|0,m=Le(ao(m&7)|0,0,L|0)|0,p=m|p&~k,m=It()|0|C,y>>>0>>0;)y=y+1|0;return $e(m|0),p|0}function Sf(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(H=wt,wt=wt+64|0,z=H+40|0,S=H+24|0,C=H+12|0,k=H,Le(m|0,0,52)|0,y=It()|0|134225919,!m)return(g[p+4>>2]|0)>2||(g[p+8>>2]|0)>2||(g[p+12>>2]|0)>2?(L=0,z=0,$e(L|0),wt=H,z|0):(Le(yf(p)|0,0,45)|0,L=It()|0|y,z=-1,$e(L|0),wt=H,z|0);if(g[z>>2]=g[p>>2],g[z+4>>2]=g[p+4>>2],g[z+8>>2]=g[p+8>>2],g[z+12>>2]=g[p+12>>2],L=z+4|0,(m|0)>0)for(p=-1;g[S>>2]=g[L>>2],g[S+4>>2]=g[L+4>>2],g[S+8>>2]=g[L+8>>2],m&1?(Rd(L),g[C>>2]=g[L>>2],g[C+4>>2]=g[L+4>>2],g[C+8>>2]=g[L+8>>2],za(C)):(Al(L),g[C>>2]=g[L>>2],g[C+4>>2]=g[L+4>>2],g[C+8>>2]=g[L+8>>2],uh(C)),eA(S,C,k),Ns(k),ot=(15-m|0)*3|0,it=Le(7,0,ot|0)|0,y=y&~(It()|0),ot=Le(Fa(k)|0,0,ot|0)|0,p=ot|p&~it,y=It()|0|y,(m|0)>1;)m=m+-1|0;else p=-1;t:do if((g[L>>2]|0)<=2&&(g[z+8>>2]|0)<=2&&(g[z+12>>2]|0)<=2){if(S=yf(z)|0,m=Le(S|0,0,45)|0,m=m|p,p=It()|0|y&-1040385,k=Kp(z)|0,!(fi(S)|0)){if((k|0)<=0)break;for(C=0;;){if(S=me(m|0,p|0,52)|0,It()|0,S=S&15,S)for(y=1;ot=(15-y|0)*3|0,z=me(m|0,p|0,ot|0)|0,It()|0,it=Le(7,0,ot|0)|0,p=p&~(It()|0),ot=Le(Na(z&7)|0,0,ot|0)|0,m=m&~it|ot,p=p|(It()|0),y>>>0>>0;)y=y+1|0;if(C=C+1|0,(C|0)==(k|0))break t}}C=me(m|0,p|0,52)|0,It()|0,C=C&15;e:do if(C){y=1;r:for(;;){switch(ot=me(m|0,p|0,(15-y|0)*3|0)|0,It()|0,ot&7){case 1:break r;case 0:break;default:break e}if(y>>>0>>0)y=y+1|0;else break e}if(lh(S,g[z>>2]|0)|0)for(y=1;z=(15-y|0)*3|0,it=Le(7,0,z|0)|0,ot=p&~(It()|0),p=me(m|0,p|0,z|0)|0,It()|0,p=Le(ao(p&7)|0,0,z|0)|0,m=m&~it|p,p=ot|(It()|0),y>>>0>>0;)y=y+1|0;else for(y=1;ot=(15-y|0)*3|0,z=me(m|0,p|0,ot|0)|0,It()|0,it=Le(7,0,ot|0)|0,p=p&~(It()|0),ot=Le(Na(z&7)|0,0,ot|0)|0,m=m&~it|ot,p=p|(It()|0),y>>>0>>0;)y=y+1|0}while(!1);if((k|0)>0){y=0;do m=mh(m,p)|0,p=It()|0,y=y+1|0;while((y|0)!=(k|0))}}else m=0,p=0;while(!1);return it=p,ot=m,$e(it|0),wt=H,ot|0}function qo(p){return p=p|0,(p|0)%2|0|0}function lA(p,m){p=p|0,m=m|0;var y=0,S=0;return S=wt,wt=wt+16|0,y=S,m>>>0<=15&&(g[p+4>>2]&2146435072|0)!=2146435072&&(g[p+8+4>>2]&2146435072|0)!=2146435072?(o0(p,m,y),m=Sf(y,m)|0,p=It()|0):(p=0,m=0),$e(p|0),wt=S,m|0}function xi(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0;if(C=y+4|0,k=me(p|0,m|0,52)|0,It()|0,k=k&15,L=me(p|0,m|0,45)|0,It()|0,S=(k|0)==0,fi(L&127)|0){if(S)return L=1,L|0;S=1}else{if(S)return L=0,L|0;!(g[C>>2]|0)&&!(g[y+8>>2]|0)?S=(g[y+12>>2]|0)!=0&1:S=1}for(y=1;y&1?za(C):uh(C),L=me(p|0,m|0,(15-y|0)*3|0)|0,It()|0,rA(C,L&7),y>>>0>>0;)y=y+1|0;return S|0}function T(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0;ot=wt,wt=wt+16|0,H=ot,it=me(p|0,m|0,45)|0,It()|0,it=it&127;t:do if(fi(it)|0&&(k=me(p|0,m|0,52)|0,It()|0,k=k&15,(k|0)!=0)){S=1;e:for(;;){switch(z=me(p|0,m|0,(15-S|0)*3|0)|0,It()|0,z&7){case 5:break e;case 0:break;default:{S=m;break t}}if(S>>>0>>0)S=S+1|0;else{S=m;break t}}for(C=1,S=m;m=(15-C|0)*3|0,L=Le(7,0,m|0)|0,z=S&~(It()|0),S=me(p|0,S|0,m|0)|0,It()|0,S=Le(ao(S&7)|0,0,m|0)|0,p=p&~L|S,S=z|(It()|0),C>>>0>>0;)C=C+1|0}else S=m;while(!1);if(z=7728+(it*28|0)|0,g[y>>2]=g[z>>2],g[y+4>>2]=g[z+4>>2],g[y+8>>2]=g[z+8>>2],g[y+12>>2]=g[z+12>>2],!(xi(p,S,y)|0)){wt=ot;return}if(L=y+4|0,g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],k=me(p|0,S|0,52)|0,It()|0,z=k&15,k&1?(uh(L),k=z+1|0):k=z,!(fi(it)|0))S=0;else{t:do if(!z)S=0;else for(m=1;;){if(C=me(p|0,S|0,(15-m|0)*3|0)|0,It()|0,C=C&7,C|0){S=C;break t}if(m>>>0>>0)m=m+1|0;else{S=0;break}}while(!1);S=(S|0)==4&1}if(!(xf(y,k,S,0)|0))(k|0)!=(z|0)&&(g[L>>2]=g[H>>2],g[L+4>>2]=g[H+4>>2],g[L+8>>2]=g[H+8>>2]);else{if(fi(it)|0)do;while(xf(y,k,0,0)|0);(k|0)!=(z|0)&&Al(L)}wt=ot}function l(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;S=wt,wt=wt+16|0,C=S,T(p,m,C),m=me(p|0,m|0,52)|0,It()|0,f_(C,m&15,y),wt=S}function d(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0;L=wt,wt=wt+16|0,k=L,T(p,m,k),S=me(p|0,m|0,45)|0,It()|0,S=(fi(S&127)|0)==0,C=me(p|0,m|0,52)|0,It()|0,C=C&15;t:do if(!S){if(C|0)for(S=1;;){if(z=Le(7,0,(15-S|0)*3|0)|0,!((z&p|0)==0&((It()|0)&m|0)==0))break t;if(S>>>0>>0)S=S+1|0;else break}a0(k,C,0,5,y),wt=L;return}while(!1);iA(k,C,0,6,y),wt=L}function v(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;if(S=me(p|0,m|0,45)|0,It()|0,!(fi(S&127)|0))return S=2,S|0;if(S=me(p|0,m|0,52)|0,It()|0,S=S&15,!S)return S=5,S|0;for(y=1;;){if(C=Le(7,0,(15-y|0)*3|0)|0,!((C&p|0)==0&((It()|0)&m|0)==0)){y=2,p=6;break}if(y>>>0>>0)y=y+1|0;else{y=5,p=6;break}}return(p|0)==6?y|0:0}function b(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0;Ct=wt,wt=wt+128|0,it=Ct+112|0,k=Ct+96|0,ot=Ct,C=me(p|0,m|0,52)|0,It()|0,z=C&15,g[it>>2]=z,L=me(p|0,m|0,45)|0,It()|0,L=L&127;t:do if(fi(L)|0){if(z|0)for(S=1;;){if(H=Le(7,0,(15-S|0)*3|0)|0,!((H&p|0)==0&((It()|0)&m|0)==0)){C=0;break t}if(S>>>0>>0)S=S+1|0;else break}if(C&1)C=1;else{H=Le(z+1|0,0,52)|0,ot=It()|0|m&-15728641,it=Le(7,0,(14-z|0)*3|0)|0,b((H|p)&~it,ot&~(It()|0),y),wt=Ct;return}}else C=0;while(!1);T(p,m,k),C?(l0(k,it,ot),H=5):(nA(k,it,ot),H=6);t:do if(fi(L)|0)if(!z)S=20;else for(S=1;;){if(L=Le(7,0,(15-S|0)*3|0)|0,!((L&p|0)==0&((It()|0)&m|0)==0)){S=8;break t}if(S>>>0>>0)S=S+1|0;else{S=20;break}}else S=8;while(!1);if(Oc(y|0,-1,S|0)|0,C){C=0;do{for(k=ot+(C<<4)|0,c0(k,g[it>>2]|0)|0,k=g[k>>2]|0,S=0;L=y+(S<<2)|0,z=g[L>>2]|0,!((z|0)==-1|(z|0)==(k|0));)S=S+1|0;g[L>>2]=k,C=C+1|0}while((C|0)!=(H|0))}else{C=0;do{for(k=ot+(C<<4)|0,xf(k,g[it>>2]|0,0,1)|0,k=g[k>>2]|0,S=0;L=y+(S<<2)|0,z=g[L>>2]|0,!((z|0)==-1|(z|0)==(k|0));)S=S+1|0;g[L>>2]=k,C=C+1|0}while((C|0)!=(H|0))}wt=Ct}function M(){return 12}function O(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0;if(Le(p|0,0,52)|0,z=It()|0|134225919,(p|0)<1){S=0,y=0;do fi(S)|0&&(Le(S|0,0,45)|0,L=z|(It()|0),p=m+(y<<3)|0,g[p>>2]=-1,g[p+4>>2]=L,y=y+1|0),S=S+1|0;while((S|0)!=122);return}L=0,y=0;do{if(fi(L)|0){for(Le(L|0,0,45)|0,S=1,C=-1,k=z|(It()|0);H=Le(7,0,(15-S|0)*3|0)|0,C=C&~H,k=k&~(It()|0),(S|0)!=(p|0);)S=S+1|0;H=m+(y<<3)|0,g[H>>2]=C,g[H+4>>2]=k,y=y+1|0}L=L+1|0}while((L|0)!=122)}function B(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0;if(z=wt,wt=wt+64|0,L=z,(p|0)==(y|0)&(m|0)==(S|0)|(!1|(m&2013265920|0)!=134217728|(!1|(S&2013265920|0)!=134217728))||(C=me(p|0,m|0,52)|0,It()|0,C=C&15,k=me(y|0,S|0,52)|0,It()|0,(C|0)!=(k&15|0)))return L=0,wt=z,L|0;if(k=C+-1|0,C>>>0>1&&(it=Bd(p,m,k)|0,H=It()|0,k=Bd(y,S,k)|0,(it|0)==(k|0)&(H|0)==(It()|0))&&(k=(C^15)*3|0,C=me(p|0,m|0,k|0)|0,It()|0,C=C&7,k=me(y|0,S|0,k|0)|0,It()|0,k=k&7,(C|0)==0|(k|0)==0||(g[21136+(C<<2)>>2]|0)==(k|0)||(g[21168+(C<<2)>>2]|0)==(k|0)))return it=1,wt=z,it|0;C=L,k=C+56|0;do g[C>>2]=0,C=C+4|0;while((C|0)<(k|0));return s_(p,m,1,L),it=L,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0))&&(it=L+8|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+16|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+24|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+32|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))&&(it=L+40|0,!((g[it>>2]|0)==(y|0)&&(g[it+4>>2]|0)==(S|0)))?(C=L+48|0,C=((g[C>>2]|0)==(y|0)?(g[C+4>>2]|0)==(S|0):0)&1):C=1,it=C,wt=z,it|0}function U(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(it=wt,wt=wt+16|0,L=it,!(B(p,m,y,S)|0))return z=0,H=0,$e(z|0),wt=it,H|0;for(z=m&-2130706433,C=(Ui(p,m)|0)==0,C=C?1:2;g[L>>2]=0,ot=jn(p,m,C,L)|0,k=C+1|0,!((ot|0)==(y|0)&(It()|0)==(S|0));)if(k>>>0<7)C=k;else{C=0,p=0,H=6;break}return(H|0)==6?($e(C|0),wt=it,p|0):(ot=Le(C|0,0,56)|0,H=z|(It()|0)|268435456,ot=p|ot,$e(H|0),wt=it,ot|0)}function W(p,m){p=p|0,m=m|0;var y=0;return y=!0&(m&2013265920|0)==268435456,$e((y?m&-2130706433|134217728:0)|0),(y?p:0)|0}function Z(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;return S=wt,wt=wt+16|0,y=S,!0&(m&2013265920|0)==268435456?(C=me(p|0,m|0,56)|0,It()|0,g[y>>2]=0,y=jn(p,m&-2130706433|134217728,C&7,y)|0,m=It()|0,$e(m|0),wt=S,y|0):(m=0,y=0,$e(m|0),wt=S,y|0)}function $(p,m){p=p|0,m=m|0;var y=0;if(!(!0&(m&2013265920|0)==268435456))return y=0,y|0;switch(y=me(p|0,m|0,56)|0,It()|0,y&7){case 0:case 7:return y=0,y|0;default:}return y=m&-2130706433|134217728,!0&(m&117440512|0)==16777216&(Ui(p,y)|0)!=0?(y=0,y|0):(y=aA(p,y)|0,y|0)}function st(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0;k=wt,wt=wt+16|0,S=k,L=!0&(m&2013265920|0)==268435456,C=m&-2130706433|134217728,z=y,g[z>>2]=L?p:0,g[z+4>>2]=L?C:0,L?(m=me(p|0,m|0,56)|0,It()|0,g[S>>2]=0,p=jn(p,C,m&7,S)|0,m=It()|0):(p=0,m=0),z=y+8|0,g[z>>2]=p,g[z+4>>2]=m,wt=k}function At(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;C=(Ui(p,m)|0)==0,m=m&-2130706433,S=y,g[S>>2]=C?p:0,g[S+4>>2]=C?m|285212672:0,S=y+8|0,g[S>>2]=p,g[S+4>>2]=m|301989888,S=y+16|0,g[S>>2]=p,g[S+4>>2]=m|318767104,S=y+24|0,g[S>>2]=p,g[S+4>>2]=m|335544320,S=y+32|0,g[S>>2]=p,g[S+4>>2]=m|352321536,y=y+40|0,g[y>>2]=p,g[y+4>>2]=m|369098752}function pt(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0;if(L=wt,wt=wt+16|0,k=L,S=me(p|0,m|0,56)|0,It()|0,z=!0&(m&2013265920|0)==268435456,C=z?p:0,p=z?m&-2130706433|134217728:0,m=mu(C,p,S&7)|0,(m|0)==-1){g[y>>2]=0,wt=L;return}T(C,p,k),S=me(C|0,p|0,52)|0,It()|0,S=S&15,Ui(C,p)|0?a0(k,S,m,2,y):iA(k,S,m,2,y),wt=L}function yt(p){p=p|0;var m=0,y=0,S=0;return m=Ua(1,12)|0,m||Ti(22691,22646,49,22704),y=p+4|0,S=g[y>>2]|0,S|0?(S=S+8|0,g[S>>2]=m,g[y>>2]=m,m|0):(g[p>>2]|0&&Ti(22721,22646,61,22744),S=p,g[S>>2]=m,g[y>>2]=m,m|0)}function dt(p,m){p=p|0,m=m|0;var y=0,S=0;return S=co(24)|0,S||Ti(22758,22646,78,22772),g[S>>2]=g[m>>2],g[S+4>>2]=g[m+4>>2],g[S+8>>2]=g[m+8>>2],g[S+12>>2]=g[m+12>>2],g[S+16>>2]=0,m=p+4|0,y=g[m>>2]|0,y|0?(g[y+16>>2]=S,g[m>>2]=S,S|0):(g[p>>2]|0&&Ti(22787,22646,82,22772),g[p>>2]=S,g[m>>2]=S,S|0)}function Ft(p){p=p|0;var m=0,y=0,S=0,C=0;if(p)for(S=1;;){if(m=g[p>>2]|0,m|0)do{if(y=g[m>>2]|0,y|0)do C=y,y=g[y+16>>2]|0,Gr(C);while(y|0);C=m,m=g[m+8>>2]|0,Gr(C)}while(m|0);if(m=p,p=g[p+8>>2]|0,S||Gr(m),p)S=0;else break}}function Wt(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0,ze=0,Zr=0,Wi=0,Mi=0,cn=0,Ei=0,bn=0,gn=0,Or=0;if(C=p+8|0,g[C>>2]|0)return Or=1,Or|0;if(S=g[p>>2]|0,!S)return Or=0,Or|0;m=S,y=0;do y=y+1|0,m=g[m+8>>2]|0;while(m|0);if(y>>>0<2)return Or=0,Or|0;bn=co(y<<2)|0,bn||Ti(22807,22646,317,22826),Ei=co(y<<5)|0,Ei||Ti(22848,22646,321,22826),g[p>>2]=0,Ke=p+4|0,g[Ke>>2]=0,g[C>>2]=0,y=0,cn=0,Ze=0,Ct=0;t:for(;;){if(ot=g[S>>2]|0,ot){k=0,L=ot;do{if(H=+Tt[L+8>>3],m=L,L=g[L+16>>2]|0,it=(L|0)==0,C=it?ot:L,z=+Tt[C+8>>3],+li(+(H-z))>3.141592653589793){Or=14;break}k=k+(z-H)*(+Tt[m>>3]+ +Tt[C>>3])}while(!it);if((Or|0)==14){Or=0,k=0,m=ot;do Nt=+Tt[m+8>>3],Mi=m+16|0,Wi=g[Mi>>2]|0,Wi=Wi|0?Wi:ot,_e=+Tt[Wi+8>>3],k=k+(+Tt[m>>3]+ +Tt[Wi>>3])*((_e<0?_e+6.283185307179586:_e)-(Nt<0?Nt+6.283185307179586:Nt)),m=g[(m|0?Mi:S)>>2]|0;while(m|0)}k>0?(g[bn+(cn<<2)>>2]=S,cn=cn+1|0,C=Ze,m=Ct):Or=19}else Or=19;if((Or|0)==19){Or=0;do if(y){if(m=y+8|0,g[m>>2]|0){Or=21;break t}if(y=Ua(1,12)|0,!y){Or=23;break t}g[m>>2]=y,C=y+4|0,L=y,m=Ct}else if(Ct){C=Ke,L=Ct+8|0,m=S,y=p;break}else if(g[p>>2]|0){Or=27;break t}else{C=Ke,L=p,m=S,y=p;break}while(!1);if(g[L>>2]=S,g[C>>2]=S,L=Ei+(Ze<<5)|0,it=g[S>>2]|0,it){for(ot=Ei+(Ze<<5)+8|0,Tt[ot>>3]=17976931348623157e292,Ct=Ei+(Ze<<5)+24|0,Tt[Ct>>3]=17976931348623157e292,Tt[L>>3]=-17976931348623157e292,zt=Ei+(Ze<<5)+16|0,Tt[zt>>3]=-17976931348623157e292,Ve=17976931348623157e292,Jt=-17976931348623157e292,C=0,Gt=it,H=17976931348623157e292,ie=17976931348623157e292,Ce=-17976931348623157e292,z=-17976931348623157e292;k=+Tt[Gt>>3],Nt=+Tt[Gt+8>>3],Gt=g[Gt+16>>2]|0,ee=(Gt|0)==0,_e=+Tt[(ee?it:Gt)+8>>3],k>3]=k,H=k),Nt>3]=Nt,ie=Nt),k>Ce?Tt[L>>3]=k:k=Ce,Nt>z&&(Tt[zt>>3]=Nt,z=Nt),Ve=Nt>0&NtJt?Nt:Jt,C=C|+li(+(Nt-_e))>3.141592653589793,!ee;)Ce=k;C&&(Tt[zt>>3]=Jt,Tt[Ct>>3]=Ve)}else g[L>>2]=0,g[L+4>>2]=0,g[L+8>>2]=0,g[L+12>>2]=0,g[L+16>>2]=0,g[L+20>>2]=0,g[L+24>>2]=0,g[L+28>>2]=0;C=Ze+1|0}if(Mi=S+8|0,S=g[Mi>>2]|0,g[Mi>>2]=0,S)Ze=C,Ct=m;else{Or=45;break}}if((Or|0)==21)Ti(22624,22646,35,22658);else if((Or|0)==23)Ti(22678,22646,37,22658);else if((Or|0)==27)Ti(22721,22646,61,22744);else if((Or|0)==45){t:do if((cn|0)>0){for(Mi=(C|0)==0,Zr=C<<2,Wi=(p|0)==0,ze=0,m=0;;){if(be=g[bn+(ze<<2)>>2]|0,Mi)Or=73;else{if(Ze=co(Zr)|0,!Ze){Or=50;break}if(Ke=co(Zr)|0,!Ke){Or=52;break}e:do if(Wi)y=0;else{for(C=0,y=0,L=p;S=Ei+(C<<5)|0,St(g[L>>2]|0,S,g[be>>2]|0)|0?(g[Ze+(y<<2)>>2]=L,g[Ke+(y<<2)>>2]=S,ee=y+1|0):ee=y,L=g[L+8>>2]|0,L;)C=C+1|0,y=ee;if((ee|0)>0)if(S=g[Ze>>2]|0,(ee|0)==1)y=S;else for(zt=0,Gt=-1,y=S,Ct=S;;){for(it=g[Ct>>2]|0,S=0,L=0;C=g[g[Ze+(L<<2)>>2]>>2]|0,(C|0)==(it|0)?ot=S:ot=S+((St(C,g[Ke+(L<<2)>>2]|0,g[it>>2]|0)|0)&1)|0,L=L+1|0,(L|0)!=(ee|0);)S=ot;if(C=(ot|0)>(Gt|0),y=C?Ct:y,S=zt+1|0,(S|0)==(ee|0))break e;zt=S,Gt=C?ot:Gt,Ct=g[Ze+(S<<2)>>2]|0}else y=0}while(!1);if(Gr(Ze),Gr(Ke),y){if(C=y+4|0,S=g[C>>2]|0,S)y=S+8|0;else if(g[y>>2]|0){Or=70;break}g[y>>2]=be,g[C>>2]=be}else Or=73}if((Or|0)==73){if(Or=0,m=g[be>>2]|0,m|0)do Ke=m,m=g[m+16>>2]|0,Gr(Ke);while(m|0);Gr(be),m=2}if(ze=ze+1|0,(ze|0)>=(cn|0)){gn=m;break t}}(Or|0)==50?Ti(22863,22646,249,22882):(Or|0)==52?Ti(22901,22646,252,22882):(Or|0)==70&&Ti(22721,22646,61,22744)}else gn=0;while(!1);return Gr(bn),Gr(Ei),Or=gn,Or|0}return 0}function St(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0;if(!(pl(m,y)|0)||(m=i0(m)|0,it=+Tt[y>>3],S=+Tt[y+8>>3],S=m&S<0?S+6.283185307179586:S,p=g[p>>2]|0,!p))return p=0,p|0;if(m){m=0,y=p;t:for(;;){for(;L=+Tt[y>>3],H=+Tt[y+8>>3],y=y+16|0,ot=g[y>>2]|0,ot=ot|0?ot:p,k=+Tt[ot>>3],C=+Tt[ot+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=C,C=H),!!(itz);)if(y=g[y>>2]|0,!y){y=22;break t}if(H=C<0?C+6.283185307179586:C,L=L<0?L+6.283185307179586:L,S=L==S|H==S?S+-2220446049250313e-31:S,H=H+(it-k)/(z-k)*(L-H),(H<0?H+6.283185307179586:H)>S&&(m=m^1),y=g[y>>2]|0,!y){y=22;break}}if((y|0)==22)return m|0}else{m=0,y=p;t:for(;;){for(;L=+Tt[y>>3],H=+Tt[y+8>>3],y=y+16|0,ot=g[y>>2]|0,ot=ot|0?ot:p,k=+Tt[ot>>3],C=+Tt[ot+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=C,C=H),!!(itz);)if(y=g[y>>2]|0,!y){y=22;break t}if(S=L==S|C==S?S+-2220446049250313e-31:S,C+(it-k)/(z-k)*(L-C)>S&&(m=m^1),y=g[y>>2]|0,!y){y=22;break}}if((y|0)==22)return m|0}return 0}function Bt(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(Jt=wt,wt=wt+32|0,Ve=Jt+16|0,Ce=Jt,k=me(p|0,m|0,52)|0,It()|0,k=k&15,Gt=me(y|0,S|0,52)|0,It()|0,(k|0)!=(Gt&15|0))return Ve=1,wt=Jt,Ve|0;if(it=me(p|0,m|0,45)|0,It()|0,it=it&127,ot=me(y|0,S|0,45)|0,It()|0,ot=ot&127,Gt=(it|0)!=(ot|0),Gt){if(z=tA(it,ot)|0,(z|0)==7)return Ve=2,wt=Jt,Ve|0;H=tA(ot,it)|0,(H|0)==7?Ti(22925,22949,151,22959):(ee=z,L=H)}else ee=0,L=0;Ct=fi(it)|0,zt=fi(ot)|0,g[Ve>>2]=0,g[Ve+4>>2]=0,g[Ve+8>>2]=0,g[Ve+12>>2]=0;do if(ee){if(ot=g[4304+(it*28|0)+(ee<<2)>>2]|0,z=(ot|0)>0,zt)if(z){it=0,H=y,z=S;do H=d0(H,z)|0,z=It()|0,L=ao(L)|0,(L|0)==1&&(L=ao(1)|0),it=it+1|0;while((it|0)!=(ot|0));ot=L,it=H,H=z}else ot=L,it=y,H=S;else if(z){it=0,H=y,z=S;do H=Fd(H,z)|0,z=It()|0,L=ao(L)|0,it=it+1|0;while((it|0)!=(ot|0));ot=L,it=H,H=z}else ot=L,it=y,H=S;if(xi(it,H,Ve)|0,Gt||Ti(22972,22949,181,22959),z=(Ct|0)!=0,L=(zt|0)!=0,z&L&&Ti(22999,22949,182,22959),z){if(L=Es(p,m)|0,xr[22032+(L*7|0)+ee>>0]|0){k=3;break}H=g[21200+(L*28|0)+(ee<<2)>>2]|0,it=H,ie=26}else if(L){if(L=Es(it,H)|0,xr[22032+(L*7|0)+ot>>0]|0){k=4;break}it=0,H=g[21200+(ot*28|0)+(L<<2)>>2]|0,ie=26}else L=0;if((ie|0)==26)if((H|0)<=-1&&Ti(23030,22949,212,22959),(it|0)<=-1&&Ti(23053,22949,213,22959),(H|0)>0){z=Ve+4|0,L=0;do hh(z),L=L+1|0;while((L|0)!=(H|0));L=it}else L=it;if(g[Ce>>2]=0,g[Ce+4>>2]=0,g[Ce+8>>2]=0,rA(Ce,ee),k|0)for(;qo(k)|0?za(Ce):uh(Ce),(k|0)>1;)k=k+-1|0;if((L|0)>0){k=0;do hh(Ce),k=k+1|0;while((k|0)!=(L|0))}ie=Ve+4|0,In(ie,Ce,ie),Ns(ie),ie=50}else if(xi(y,S,Ve)|0,(Ct|0)!=0&(zt|0)!=0)if((ot|0)!=(it|0)&&Ti(23077,22949,243,22959),L=Es(p,m)|0,k=Es(y,S)|0,xr[22032+(L*7|0)+k>>0]|0)k=5;else if(L=g[21200+(L*28|0)+(k<<2)>>2]|0,(L|0)>0){z=Ve+4|0,k=0;do hh(z),k=k+1|0;while((k|0)!=(L|0));ie=50}else ie=50;else ie=50;while(!1);return(ie|0)==50&&(k=Ve+4|0,g[C>>2]=g[k>>2],g[C+4>>2]=g[k+4>>2],g[C+8>>2]=g[k+8>>2],k=0),Ve=k,wt=Jt,Ve|0}function Yt(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(ee=wt,wt=wt+48|0,L=ee+36|0,z=ee+24|0,H=ee+12|0,it=ee,k=me(p|0,m|0,52)|0,It()|0,k=k&15,zt=me(p|0,m|0,45)|0,It()|0,zt=zt&127,ot=fi(zt)|0,Le(k|0,0,52)|0,Ce=It()|0|134225919,ie=S,g[ie>>2]=-1,g[ie+4>>2]=Ce,!k)return(g[y>>2]|0)>1||(g[y+4>>2]|0)>1||(g[y+8>>2]|0)>1||(C=Jp(zt,Fa(y)|0)|0,(C|0)==127)?(Ce=1,wt=ee,Ce|0):(Gt=Le(C|0,0,45)|0,ie=It()|0,zt=S,ie=g[zt+4>>2]&-1040385|ie,Ce=S,g[Ce>>2]=g[zt>>2]|Gt,g[Ce+4>>2]=ie,Ce=0,wt=ee,Ce|0);for(g[L>>2]=g[y>>2],g[L+4>>2]=g[y+4>>2],g[L+8>>2]=g[y+8>>2];g[z>>2]=g[L>>2],g[z+4>>2]=g[L+4>>2],g[z+8>>2]=g[L+8>>2],qo(k)|0?(Rd(L),g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],za(H)):(Al(L),g[H>>2]=g[L>>2],g[H+4>>2]=g[L+4>>2],g[H+8>>2]=g[L+8>>2],uh(H)),eA(z,H,it),Ns(it),ie=S,Ve=g[ie>>2]|0,ie=g[ie+4>>2]|0,Jt=(15-k|0)*3|0,y=Le(7,0,Jt|0)|0,ie=ie&~(It()|0),Jt=Le(Fa(it)|0,0,Jt|0)|0,ie=It()|0|ie,Ce=S,g[Ce>>2]=Jt|Ve&~y,g[Ce+4>>2]=ie,(k|0)>1;)k=k+-1|0;t:do if((g[L>>2]|0)<=1&&(g[L+4>>2]|0)<=1&&(g[L+8>>2]|0)<=1){k=Fa(L)|0,z=Jp(zt,k)|0,(z|0)==127?it=0:it=fi(z)|0;e:do if(k){if(ot){if(L=21408+((Es(p,m)|0)*28|0)+(k<<2)|0,L=g[L>>2]|0,(L|0)>0){y=0;do k=Na(k)|0,y=y+1|0;while((y|0)!=(L|0))}if((k|0)==1){C=3;break t}y=Jp(zt,k)|0,(y|0)==127&&Ti(23104,22949,376,23134),fi(y)|0?Ti(23147,22949,377,23134):(Gt=L,Ct=k,C=y)}else Gt=0,Ct=k,C=z;if(H=g[4304+(zt*28|0)+(Ct<<2)>>2]|0,(H|0)<=-1&&Ti(23178,22949,384,23134),!it){if((Gt|0)<=-1&&Ti(23030,22949,417,23134),Gt|0){L=S,k=0,y=g[L>>2]|0,L=g[L+4>>2]|0;do y=Ho(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,k=k+1|0;while((k|0)<(Gt|0))}if((H|0)<=0){k=54;break}for(L=S,k=0,y=g[L>>2]|0,L=g[L+4>>2]|0;;)if(y=Ho(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,k=k+1|0,(k|0)==(H|0)){k=54;break e}}if(z=tA(C,zt)|0,(z|0)==7&&Ti(22925,22949,393,23134),k=S,y=g[k>>2]|0,k=g[k+4>>2]|0,(H|0)>0){L=0;do y=Ho(y,k)|0,k=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=k,L=L+1|0;while((L|0)!=(H|0))}if(y=Es(y,k)|0,Jt=du(C)|0,y=g[(Jt?21824:21616)+(z*28|0)+(y<<2)>>2]|0,(y|0)<=-1&&Ti(23030,22949,412,23134),!y)k=54;else{z=S,k=0,L=g[z>>2]|0,z=g[z+4>>2]|0;do L=mh(L,z)|0,z=It()|0,Jt=S,g[Jt>>2]=L,g[Jt+4>>2]=z,k=k+1|0;while((k|0)<(y|0));k=54}}else if((ot|0)!=0&(it|0)!=0)if(Jt=Es(p,m)|0,k=S,k=21408+(Jt*28|0)+((Es(g[k>>2]|0,g[k+4>>2]|0)|0)<<2)|0,k=g[k>>2]|0,(k|0)<=-1&&Ti(23201,22949,433,23134),!k)C=z,k=55;else{L=S,C=0,y=g[L>>2]|0,L=g[L+4>>2]|0;do y=Ho(y,L)|0,L=It()|0,Jt=S,g[Jt>>2]=y,g[Jt+4>>2]=L,C=C+1|0;while((C|0)<(k|0));C=z,k=54}else C=z,k=54;while(!1);if((k|0)==54&&it&&(k=55),(k|0)==55&&(Jt=S,(Es(g[Jt>>2]|0,g[Jt+4>>2]|0)|0)==1)){C=4;break}Jt=S,Ce=g[Jt>>2]|0,Jt=g[Jt+4>>2]&-1040385,Ve=Le(C|0,0,45)|0,Jt=Jt|(It()|0),C=S,g[C>>2]=Ce|Ve,g[C+4>>2]=Jt,C=0}else C=2;while(!1);return Jt=C,wt=ee,Jt|0}function Qt(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0;return L=wt,wt=wt+16|0,k=L,p=Bt(p,m,y,S,k)|0,p||(vf(k,C),p=0),wt=L,p|0}function oe(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0;return C=wt,wt=wt+16|0,k=C,h_(y,k),S=Yt(p,m,k,S)|0,wt=C,S|0}function pe(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0;return L=wt,wt=wt+32|0,C=L+12|0,k=L,!(Bt(p,m,p,m,C)|0)&&!(Bt(p,m,y,S,k)|0)?p=Gl(C,k)|0:p=-1,wt=L,p|0}function he(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0,L=0;return L=wt,wt=wt+32|0,C=L+12|0,k=L,!(Bt(p,m,p,m,C)|0)&&!(Bt(p,m,y,S,k)|0)?p=Gl(C,k)|0:p=-1,wt=L,(p>>>31^1)+p|0}function xe(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0;if(Ze=wt,wt=wt+48|0,k=Ze+24|0,L=Ze+12|0,Nt=Ze,!(Bt(p,m,p,m,k)|0)&&!(Bt(p,m,y,S,L)|0)){if(_e=Gl(k,L)|0,(_e|0)<0)return Nt=_e,wt=Ze,Nt|0;for(g[k>>2]=0,g[k+4>>2]=0,g[k+8>>2]=0,g[L>>2]=0,g[L+4>>2]=0,g[L+8>>2]=0,Bt(p,m,p,m,k)|0,Bt(p,m,y,S,L)|0,Re(k),Re(L),_e?(ot=g[k>>2]|0,Gt=+(_e|0),Ce=k+4|0,Ct=g[Ce>>2]|0,Ve=k+8|0,zt=g[Ve>>2]|0,Jt=k,y=ot,S=Ct,k=zt,ee=+((g[L>>2]|0)-ot|0)/Gt,ie=+((g[L+4>>2]|0)-Ct|0)/Gt,Gt=+((g[L+8>>2]|0)-zt|0)/Gt):(S=k+4|0,zt=k+8|0,Ce=S,Ve=zt,Jt=k,y=g[k>>2]|0,S=g[S>>2]|0,k=g[zt>>2]|0,ee=0,ie=0,Gt=0),g[Nt>>2]=y,zt=Nt+4|0,g[zt>>2]=S,Ct=Nt+8|0,g[Ct>>2]=k,ot=0;;){H=+(ot|0),Ke=ee*H+ +(y|0),z=ie*H+ +(g[Ce>>2]|0),H=Gt*H+ +(g[Ve>>2]|0),S=~~+Tf(+Ke),L=~~+Tf(+z),y=~~+Tf(+H),Ke=+li(+(+(S|0)-Ke)),z=+li(+(+(L|0)-z)),H=+li(+(+(y|0)-H));do if(Ke>z&Ke>H)S=0-(L+y)|0,k=L;else if(it=0-S|0,z>H){k=it-y|0;break}else{k=L,y=it-L|0;break}while(!1);if(g[Nt>>2]=S,g[zt>>2]=k,g[Ct>>2]=y,s0(Nt),Yt(p,m,Nt,C+(ot<<3)|0)|0,(ot|0)==(_e|0))break;ot=ot+1|0,y=g[Jt>>2]|0}return Nt=0,wt=Ze,Nt|0}return Nt=-1,wt=Ze,Nt|0}function We(p,m){p=p|0,m=m|0;var y=0;if(!m)return y=1,y|0;y=p,p=1;do p=Rc(m&1|0?y:1,p)|0,m=m>>1,y=Rc(y,y)|0;while(m|0);return p|0}function Kr(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;if(!(pl(m,y)|0)||(m=i0(m)|0,zt=+Tt[y>>3],S=+Tt[y+8>>3],S=m&S<0?S+6.283185307179586:S,Ct=g[p>>2]|0,(Ct|0)<=0))return Ct=0,Ct|0;if(ot=g[p+4>>2]|0,m){m=0,y=-1,p=0;t:for(;;){for(it=p;L=+Tt[ot+(it<<4)>>3],H=+Tt[ot+(it<<4)+8>>3],p=(y+2|0)%(Ct|0)|0,k=+Tt[ot+(p<<4)>>3],C=+Tt[ot+(p<<4)+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=C,C=H),!!(ztz);)if(y=it+1|0,(y|0)<(Ct|0))p=it,it=y,y=p;else{y=22;break t}if(H=C<0?C+6.283185307179586:C,L=L<0?L+6.283185307179586:L,S=L==S|H==S?S+-2220446049250313e-31:S,H=H+(zt-k)/(z-k)*(L-H),(H<0?H+6.283185307179586:H)>S&&(m=m^1),p=it+1|0,(p|0)>=(Ct|0)){y=22;break}else y=it}if((y|0)==22)return m|0}else{m=0,y=-1,p=0;t:for(;;){for(it=p;L=+Tt[ot+(it<<4)>>3],H=+Tt[ot+(it<<4)+8>>3],p=(y+2|0)%(Ct|0)|0,k=+Tt[ot+(p<<4)>>3],C=+Tt[ot+(p<<4)+8>>3],L>k?(z=L,L=H):(z=k,k=L,L=C,C=H),!!(ztz);)if(y=it+1|0,(y|0)<(Ct|0))p=it,it=y,y=p;else{y=22;break t}if(S=L==S|C==S?S+-2220446049250313e-31:S,C+(zt-k)/(z-k)*(L-C)>S&&(m=m^1),p=it+1|0,(p|0)>=(Ct|0)){y=22;break}else y=it}if((y|0)==22)return m|0}return 0}function Me(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0;if(ee=g[p>>2]|0,!ee){g[m>>2]=0,g[m+4>>2]=0,g[m+8>>2]=0,g[m+12>>2]=0,g[m+16>>2]=0,g[m+20>>2]=0,g[m+24>>2]=0,g[m+28>>2]=0;return}if(ie=m+8|0,Tt[ie>>3]=17976931348623157e292,Ce=m+24|0,Tt[Ce>>3]=17976931348623157e292,Tt[m>>3]=-17976931348623157e292,Ve=m+16|0,Tt[Ve>>3]=-17976931348623157e292,!((ee|0)<=0)){for(zt=g[p+4>>2]|0,it=17976931348623157e292,ot=-17976931348623157e292,Ct=0,p=-1,k=17976931348623157e292,L=17976931348623157e292,H=-17976931348623157e292,S=-17976931348623157e292,Gt=0;y=+Tt[zt+(Gt<<4)>>3],z=+Tt[zt+(Gt<<4)+8>>3],p=p+2|0,C=+Tt[zt+(((p|0)==(ee|0)?0:p)<<4)+8>>3],y>3]=y,k=y),z>3]=z,L=z),y>H?Tt[m>>3]=y:y=H,z>S&&(Tt[Ve>>3]=z,S=z),it=z>0&zot?z:ot,Ct=Ct|+li(+(z-C))>3.141592653589793,p=Gt+1|0,(p|0)!=(ee|0);)Jt=Gt,H=y,Gt=p,p=Jt;Ct&&(Tt[Ve>>3]=ot,Tt[Ce>>3]=it)}}function dr(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0,Ke=0,be=0;if(ee=g[p>>2]|0,ee){if(ie=m+8|0,Tt[ie>>3]=17976931348623157e292,Ce=m+24|0,Tt[Ce>>3]=17976931348623157e292,Tt[m>>3]=-17976931348623157e292,Ve=m+16|0,Tt[Ve>>3]=-17976931348623157e292,(ee|0)>0){for(C=g[p+4>>2]|0,zt=17976931348623157e292,Gt=-17976931348623157e292,S=0,y=-1,H=17976931348623157e292,it=17976931348623157e292,Ct=-17976931348623157e292,L=-17976931348623157e292,Jt=0;k=+Tt[C+(Jt<<4)>>3],ot=+Tt[C+(Jt<<4)+8>>3],Ke=y+2|0,z=+Tt[C+(((Ke|0)==(ee|0)?0:Ke)<<4)+8>>3],k>3]=k,H=k),ot>3]=ot,it=ot),k>Ct?Tt[m>>3]=k:k=Ct,ot>L&&(Tt[Ve>>3]=ot,L=ot),zt=ot>0&otGt?ot:Gt,S=S|+li(+(ot-z))>3.141592653589793,y=Jt+1|0,(y|0)!=(ee|0);)Ke=Jt,Ct=k,Jt=y,y=Ke;S&&(Tt[Ve>>3]=Gt,Tt[Ce>>3]=zt)}}else g[m>>2]=0,g[m+4>>2]=0,g[m+8>>2]=0,g[m+12>>2]=0,g[m+16>>2]=0,g[m+20>>2]=0,g[m+24>>2]=0,g[m+28>>2]=0;if(Ke=p+8|0,y=g[Ke>>2]|0,!((y|0)<=0)){Ze=p+12|0,Nt=0;do if(C=g[Ze>>2]|0,S=Nt,Nt=Nt+1|0,Ce=m+(Nt<<5)|0,Ve=g[C+(S<<3)>>2]|0,Ve){if(Jt=m+(Nt<<5)+8|0,Tt[Jt>>3]=17976931348623157e292,p=m+(Nt<<5)+24|0,Tt[p>>3]=17976931348623157e292,Tt[Ce>>3]=-17976931348623157e292,_e=m+(Nt<<5)+16|0,Tt[_e>>3]=-17976931348623157e292,(Ve|0)>0){for(ee=g[C+(S<<3)+4>>2]|0,zt=17976931348623157e292,Gt=-17976931348623157e292,C=0,S=-1,ie=0,H=17976931348623157e292,it=17976931348623157e292,ot=-17976931348623157e292,L=-17976931348623157e292;k=+Tt[ee+(ie<<4)>>3],Ct=+Tt[ee+(ie<<4)+8>>3],S=S+2|0,z=+Tt[ee+(((S|0)==(Ve|0)?0:S)<<4)+8>>3],k>3]=k,H=k),Ct>3]=Ct,it=Ct),k>ot?Tt[Ce>>3]=k:k=ot,Ct>L&&(Tt[_e>>3]=Ct,L=Ct),zt=Ct>0&CtGt?Ct:Gt,C=C|+li(+(Ct-z))>3.141592653589793,S=ie+1|0,(S|0)!=(Ve|0);)be=ie,ie=S,ot=k,S=be;C&&(Tt[_e>>3]=Gt,Tt[p>>3]=zt)}}else g[Ce>>2]=0,g[Ce+4>>2]=0,g[Ce+8>>2]=0,g[Ce+12>>2]=0,g[Ce+16>>2]=0,g[Ce+20>>2]=0,g[Ce+24>>2]=0,g[Ce+28>>2]=0,y=g[Ke>>2]|0;while((Nt|0)<(y|0))}}function Xe(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0;if(!(Kr(p,m,y)|0))return C=0,C|0;if(C=p+8|0,(g[C>>2]|0)<=0)return C=1,C|0;for(S=p+12|0,p=0;;){if(k=p,p=p+1|0,Kr((g[S>>2]|0)+(k<<3)|0,m+(p<<5)|0,y)|0){p=0,S=6;break}if((p|0)>=(g[C>>2]|0)){p=1,S=6;break}}return(S|0)==6?p|0:0}function Vi(){return 8}function Jr(){return 16}function Vr(){return 168}function ei(){return 8}function Rn(){return 16}function Ki(){return 12}function Us(){return 8}function us(p){p=p|0;var m=0,y=0;return y=+Tt[p>>3],m=+Tt[p+8>>3],+ +vn(+(y*y+m*m))}function Dn(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0;it=+Tt[p>>3],H=+Tt[m>>3]-it,z=+Tt[p+8>>3],L=+Tt[m+8>>3]-z,Ct=+Tt[y>>3],k=+Tt[S>>3]-Ct,zt=+Tt[y+8>>3],ot=+Tt[S+8>>3]-zt,k=(k*(z-zt)-(it-Ct)*ot)/(H*ot-L*k),Tt[C>>3]=it+H*k,Tt[C+8>>3]=z+L*k}function Zo(p,m){return p=p|0,m=m|0,+Tt[p>>3]!=+Tt[m>>3]?(m=0,m|0):(m=+Tt[p+8>>3]==+Tt[m+8>>3],m|0)}function jr(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;return C=+Tt[p>>3]-+Tt[m>>3],S=+Tt[p+8>>3]-+Tt[m+8>>3],y=+Tt[p+16>>3]-+Tt[m+16>>3],+(C*C+S*S+y*y)}function Wl(p,m){p=p|0,m=m|0;var y=0,S=0,C=0;y=+Tt[p>>3],S=+Ur(+y),y=+hi(+y),Tt[m+16>>3]=y,y=+Tt[p+8>>3],C=S*+Ur(+y),Tt[m>>3]=C,y=S*+hi(+y),Tt[m+8>>3]=y}function Hl(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0;if(it=wt,wt=wt+32|0,C=it+16|0,k=it,T(p,m,C),L=bf(p,m)|0,H=Es(p,m)|0,ah(L,k),m=Ld(L,g[C>>2]|0)|0,!(fi(L)|0))return H=m,wt=it,H|0;do switch(L|0){case 4:{p=0,y=14;break}case 14:{p=1,y=14;break}case 24:{p=2,y=14;break}case 38:{p=3,y=14;break}case 49:{p=4,y=14;break}case 58:{p=5,y=14;break}case 63:{p=6,y=14;break}case 72:{p=7,y=14;break}case 83:{p=8,y=14;break}case 97:{p=9,y=14;break}case 107:{p=10,y=14;break}case 117:{p=11,y=14;break}default:z=0,S=0}while(!1);return(y|0)==14&&(z=g[22096+(p*24|0)+8>>2]|0,S=g[22096+(p*24|0)+16>>2]|0),p=g[C>>2]|0,(p|0)!=(g[k>>2]|0)&&(L=du(L)|0,p=g[C>>2]|0,L|(p|0)==(S|0)&&(m=(m+1|0)%6|0)),(H|0)==3&(p|0)==(S|0)?(H=(m+5|0)%6|0,wt=it,H|0):(H|0)==5&(p|0)==(z|0)?(H=(m+1|0)%6|0,wt=it,H|0):(H=m,wt=it,H|0)}function mu(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;return S=Ui(p,m)|0,(y+-1|0)>>>0>5||(C=(S|0)!=0,(y|0)==1&C)?(y=-1,y|0):(S=Hl(p,m)|0,C?(y=(5-S+(g[22384+(y<<2)>>2]|0)|0)%5|0,y|0):(y=(6-S+(g[22416+(y<<2)>>2]|0)|0)%6|0,y|0))}function gu(p,m,y){p=p|0,m=m|0,y=y|0;var S=0;(m|0)>0?(S=Ua(m,4)|0,g[p>>2]=S,S||Ti(23230,23253,40,23267)):g[p>>2]=0,g[p+4>>2]=m,g[p+8>>2]=0,g[p+12>>2]=y}function gh(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0;C=p+4|0,k=p+12|0,L=p+8|0;t:for(;;){for(y=g[C>>2]|0,m=0;;){if((m|0)>=(y|0))break t;if(S=g[p>>2]|0,z=g[S+(m<<2)>>2]|0,!z)m=m+1|0;else break}m=S+(~~(+li(+(+dl(10,+ +(15-(g[k>>2]|0)|0))*(+Tt[z>>3]+ +Tt[z+8>>3])))%+(y|0))>>>0<<2)|0,y=g[m>>2]|0;e:do if(y|0){if(S=z+32|0,(y|0)==(z|0))g[m>>2]=g[S>>2];else{if(y=y+32|0,m=g[y>>2]|0,!m)break;for(;(m|0)!=(z|0);)if(y=m+32|0,m=g[y>>2]|0,!m)break e;g[y>>2]=g[S>>2]}Gr(z),g[L>>2]=(g[L>>2]|0)+-1}while(!1)}Gr(g[p>>2]|0)}function Vs(p){p=p|0;var m=0,y=0,S=0;for(S=g[p+4>>2]|0,y=0;;){if((y|0)>=(S|0)){m=0,y=4;break}if(m=g[(g[p>>2]|0)+(y<<2)>>2]|0,!m)y=y+1|0;else{y=4;break}}return(y|0)==4?m|0:0}function Ps(p,m){p=p|0,m=m|0;var y=0,S=0,C=0,k=0;if(y=~~(+li(+(+dl(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,y=(g[p>>2]|0)+(y<<2)|0,S=g[y>>2]|0,!S)return k=1,k|0;k=m+32|0;do if((S|0)!=(m|0)){if(y=g[S+32>>2]|0,!y)return k=1,k|0;for(C=y;;){if((C|0)==(m|0)){C=8;break}if(y=g[C+32>>2]|0,y)S=C,C=y;else{y=1,C=10;break}}if((C|0)==8){g[S+32>>2]=g[k>>2];break}else if((C|0)==10)return y|0}else g[y>>2]=g[k>>2];while(!1);return Gr(m),k=p+8|0,g[k>>2]=(g[k>>2]|0)+-1,k=0,k|0}function Mo(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0;k=co(40)|0,k||Ti(23283,23253,98,23296),g[k>>2]=g[m>>2],g[k+4>>2]=g[m+4>>2],g[k+8>>2]=g[m+8>>2],g[k+12>>2]=g[m+12>>2],C=k+16|0,g[C>>2]=g[y>>2],g[C+4>>2]=g[y+4>>2],g[C+8>>2]=g[y+8>>2],g[C+12>>2]=g[y+12>>2],g[k+32>>2]=0,C=~~(+li(+(+dl(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,C=(g[p>>2]|0)+(C<<2)|0,S=g[C>>2]|0;do if(!S)g[C>>2]=k;else{for(;!(cs(S,m)|0&&cs(S+16|0,y)|0);)if(C=g[S+32>>2]|0,S=C|0?C:S,!(g[S+32>>2]|0)){L=10;break}if((L|0)==10){g[S+32>>2]=k;break}return Gr(k),L=S,L|0}while(!1);return L=p+8|0,g[L>>2]=(g[L>>2]|0)+1,L=k,L|0}function _h(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0;if(C=~~(+li(+(+dl(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,C=g[(g[p>>2]|0)+(C<<2)>>2]|0,!C)return y=0,y|0;if(!y){for(p=C;;){if(cs(p,m)|0){S=10;break}if(p=g[p+32>>2]|0,!p){p=0,S=10;break}}if((S|0)==10)return p|0}for(p=C;;){if(cs(p,m)|0&&cs(p+16|0,y)|0){S=10;break}if(p=g[p+32>>2]|0,!p){p=0,S=10;break}}return(S|0)==10?p|0:0}function On(p,m){p=p|0,m=m|0;var y=0;if(y=~~(+li(+(+dl(10,+ +(15-(g[p+12>>2]|0)|0))*(+Tt[m>>3]+ +Tt[m+8>>3])))%+(g[p+4>>2]|0))>>>0,p=g[(g[p>>2]|0)+(y<<2)>>2]|0,!p)return y=0,y|0;for(;;){if(cs(p,m)|0){m=5;break}if(p=g[p+32>>2]|0,!p){p=0,m=5;break}}return(m|0)==5?p|0:0}function hs(){return 23312}function Yo(p){return p=+p,+ +Dx(+p)}function mn(p){return p=+p,~~+Yo(p)|0}function co(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0,ie=0,Ce=0,Ve=0,Jt=0,_e=0,Nt=0,Ze=0;Ze=wt,wt=wt+16|0,zt=Ze;do if(p>>>0<245){if(it=p>>>0<11?16:p+11&-8,p=it>>>3,Ct=g[5829]|0,y=Ct>>>p,y&3|0)return m=(y&1^1)+p|0,p=23356+(m<<1<<2)|0,y=p+8|0,S=g[y>>2]|0,C=S+8|0,k=g[C>>2]|0,(k|0)==(p|0)?g[5829]=Ct&~(1<>2]=p,g[y>>2]=k),Nt=m<<3,g[S+4>>2]=Nt|3,Nt=S+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1,Nt=C,wt=Ze,Nt|0;if(ot=g[5831]|0,it>>>0>ot>>>0){if(y|0)return m=2<>>12&16,m=m>>>z,y=m>>>5&8,m=m>>>y,k=m>>>2&4,m=m>>>k,p=m>>>1&2,m=m>>>p,S=m>>>1&1,S=(y|z|k|p|S)+(m>>>S)|0,m=23356+(S<<1<<2)|0,p=m+8|0,k=g[p>>2]|0,z=k+8|0,y=g[z>>2]|0,(y|0)==(m|0)?(p=Ct&~(1<>2]=m,g[p>>2]=y,p=Ct),Nt=S<<3,L=Nt-it|0,g[k+4>>2]=it|3,C=k+it|0,g[C+4>>2]=L|1,g[k+Nt>>2]=L,ot|0&&(S=g[5834]|0,m=ot>>>3,y=23356+(m<<1<<2)|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=S,g[m+12>>2]=S,g[S+8>>2]=m,g[S+12>>2]=y),g[5831]=L,g[5834]=C,Nt=z,wt=Ze,Nt|0;if(k=g[5830]|0,k){for(y=(k&0-k)+-1|0,C=y>>>12&16,y=y>>>C,S=y>>>5&8,y=y>>>S,L=y>>>2&4,y=y>>>L,z=y>>>1&2,y=y>>>z,H=y>>>1&1,H=g[23620+((S|C|L|z|H)+(y>>>H)<<2)>>2]|0,y=H,z=H,H=(g[H+4>>2]&-8)-it|0;p=g[y+16>>2]|0,!(!p&&(p=g[y+20>>2]|0,!p));)L=(g[p+4>>2]&-8)-it|0,C=L>>>0>>0,y=p,z=C?p:z,H=C?L:H;if(L=z+it|0,L>>>0>z>>>0){C=g[z+24>>2]|0,m=g[z+12>>2]|0;do if((m|0)==(z|0)){if(p=z+20|0,m=g[p>>2]|0,!m&&(p=z+16|0,m=g[p>>2]|0,!m)){y=0;break}for(;;)if(S=m+20|0,y=g[S>>2]|0,y)m=y,p=S;else if(S=m+16|0,y=g[S>>2]|0,y)m=y,p=S;else break;g[p>>2]=0,y=m}else y=g[z+8>>2]|0,g[y+12>>2]=m,g[m+8>>2]=y,y=m;while(!1);do if(C|0){if(m=g[z+28>>2]|0,p=23620+(m<<2)|0,(z|0)==(g[p>>2]|0)){if(g[p>>2]=y,!y){g[5830]=k&~(1<>2]|0)==(z|0)?Nt:C+20|0)>>2]=y,!y)break;g[y+24>>2]=C,m=g[z+16>>2]|0,m|0&&(g[y+16>>2]=m,g[m+24>>2]=y),m=g[z+20>>2]|0,m|0&&(g[y+20>>2]=m,g[m+24>>2]=y)}while(!1);return H>>>0<16?(Nt=H+it|0,g[z+4>>2]=Nt|3,Nt=z+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1):(g[z+4>>2]=it|3,g[L+4>>2]=H|1,g[L+H>>2]=H,ot|0&&(S=g[5834]|0,m=ot>>>3,y=23356+(m<<1<<2)|0,m=1<>2]|0):(g[5829]=m|Ct,m=y,p=y+8|0),g[p>>2]=S,g[m+12>>2]=S,g[S+8>>2]=m,g[S+12>>2]=y),g[5831]=H,g[5834]=L),Nt=z+8|0,wt=Ze,Nt|0}else Ct=it}else Ct=it}else Ct=it}else if(p>>>0<=4294967231)if(p=p+11|0,it=p&-8,S=g[5830]|0,S){C=0-it|0,p=p>>>8,p?it>>>0>16777215?H=31:(Ct=(p+1048320|0)>>>16&8,ie=p<>>16&4,ie=ie<>>16&2,H=14-(z|Ct|H)+(ie<>>15)|0,H=it>>>(H+7|0)&1|H<<1):H=0,y=g[23620+(H<<2)>>2]|0;t:do if(!y)y=0,p=0,ie=61;else for(p=0,z=it<<((H|0)==31?0:25-(H>>>1)|0),k=0;;){if(L=(g[y+4>>2]&-8)-it|0,L>>>0>>0)if(L)p=y,C=L;else{p=y,C=0,ie=65;break t}if(ie=g[y+20>>2]|0,y=g[y+16+(z>>>31<<2)>>2]|0,k=(ie|0)==0|(ie|0)==(y|0)?k:ie,y)z=z<<1;else{y=k,ie=61;break}}while(!1);if((ie|0)==61){if((y|0)==0&(p|0)==0){if(p=2<>>12&16,Ct=Ct>>>L,k=Ct>>>5&8,Ct=Ct>>>k,z=Ct>>>2&4,Ct=Ct>>>z,H=Ct>>>1&2,Ct=Ct>>>H,y=Ct>>>1&1,p=0,y=g[23620+((k|L|z|H|y)+(Ct>>>y)<<2)>>2]|0}y?ie=65:(z=p,L=C)}if((ie|0)==65)for(k=y;;)if(Ct=(g[k+4>>2]&-8)-it|0,y=Ct>>>0>>0,C=y?Ct:C,p=y?k:p,y=g[k+16>>2]|0,y||(y=g[k+20>>2]|0),y)k=y;else{z=p,L=C;break}if(z|0&&L>>>0<((g[5831]|0)-it|0)>>>0&&(ot=z+it|0,ot>>>0>z>>>0)){k=g[z+24>>2]|0,m=g[z+12>>2]|0;do if((m|0)==(z|0)){if(p=z+20|0,m=g[p>>2]|0,!m&&(p=z+16|0,m=g[p>>2]|0,!m)){m=0;break}for(;;)if(C=m+20|0,y=g[C>>2]|0,y)m=y,p=C;else if(C=m+16|0,y=g[C>>2]|0,y)m=y,p=C;else break;g[p>>2]=0}else Nt=g[z+8>>2]|0,g[Nt+12>>2]=m,g[m+8>>2]=Nt;while(!1);do if(k){if(p=g[z+28>>2]|0,y=23620+(p<<2)|0,(z|0)==(g[y>>2]|0)){if(g[y>>2]=m,!m){S=S&~(1<>2]|0)==(z|0)?Nt:k+20|0)>>2]=m,!m)break;g[m+24>>2]=k,p=g[z+16>>2]|0,p|0&&(g[m+16>>2]=p,g[p+24>>2]=m),p=g[z+20>>2]|0,p&&(g[m+20>>2]=p,g[p+24>>2]=m)}while(!1);t:do if(L>>>0<16)Nt=L+it|0,g[z+4>>2]=Nt|3,Nt=z+Nt+4|0,g[Nt>>2]=g[Nt>>2]|1;else{if(g[z+4>>2]=it|3,g[ot+4>>2]=L|1,g[ot+L>>2]=L,m=L>>>3,L>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=ot,g[m+12>>2]=ot,g[ot+8>>2]=m,g[ot+12>>2]=y;break}if(m=L>>>8,m?L>>>0>16777215?y=31:(_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,y=14-(Jt|_e|y)+(Nt<>>15)|0,y=L>>>(y+7|0)&1|y<<1):y=0,m=23620+(y<<2)|0,g[ot+28>>2]=y,p=ot+16|0,g[p+4>>2]=0,g[p>>2]=0,p=1<>2]=ot,g[ot+24>>2]=m,g[ot+12>>2]=ot,g[ot+8>>2]=ot;break}m=g[m>>2]|0;e:do if((g[m+4>>2]&-8|0)!=(L|0)){for(S=L<<((y|0)==31?0:25-(y>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(L|0)){m=p;break e}else S=S<<1,m=p;g[y>>2]=ot,g[ot+24>>2]=m,g[ot+12>>2]=ot,g[ot+8>>2]=ot;break t}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=ot,g[_e>>2]=ot,g[ot+8>>2]=Nt,g[ot+12>>2]=m,g[ot+24>>2]=0}while(!1);return Nt=z+8|0,wt=Ze,Nt|0}else Ct=it}else Ct=it;else Ct=-1;while(!1);if(y=g[5831]|0,y>>>0>=Ct>>>0)return m=y-Ct|0,p=g[5834]|0,m>>>0>15?(Nt=p+Ct|0,g[5834]=Nt,g[5831]=m,g[Nt+4>>2]=m|1,g[p+y>>2]=m,g[p+4>>2]=Ct|3):(g[5831]=0,g[5834]=0,g[p+4>>2]=y|3,Nt=p+y+4|0,g[Nt>>2]=g[Nt>>2]|1),Nt=p+8|0,wt=Ze,Nt|0;if(L=g[5832]|0,L>>>0>Ct>>>0)return Jt=L-Ct|0,g[5832]=Jt,Nt=g[5835]|0,_e=Nt+Ct|0,g[5835]=_e,g[_e+4>>2]=Jt|1,g[Nt+4>>2]=Ct|3,Nt=Nt+8|0,wt=Ze,Nt|0;if(g[5947]|0?p=g[5949]|0:(g[5949]=4096,g[5948]=4096,g[5950]=-1,g[5951]=-1,g[5952]=0,g[5940]=0,g[5947]=zt&-16^1431655768,p=4096),z=Ct+48|0,H=Ct+47|0,k=p+H|0,C=0-p|0,it=k&C,it>>>0<=Ct>>>0||(p=g[5939]|0,p|0&&(ot=g[5937]|0,zt=ot+it|0,zt>>>0<=ot>>>0|zt>>>0>p>>>0)))return Nt=0,wt=Ze,Nt|0;t:do if(g[5940]&4)m=0,ie=143;else{y=g[5835]|0;e:do if(y){for(S=23764;zt=g[S>>2]|0,!(zt>>>0<=y>>>0&&(zt+(g[S+4>>2]|0)|0)>>>0>y>>>0);)if(p=g[S+8>>2]|0,p)S=p;else{ie=128;break e}if(m=k-L&C,m>>>0<2147483647)if(p=Ji(m|0)|0,(p|0)==((g[S>>2]|0)+(g[S+4>>2]|0)|0)){if((p|0)!=-1){L=m,k=p,ie=145;break t}}else S=p,ie=136;else m=0}else ie=128;while(!1);do if((ie|0)==128)if(y=Ji(0)|0,(y|0)!=-1&&(m=y,Gt=g[5948]|0,ee=Gt+-1|0,m=(ee&m|0?(ee+m&0-Gt)-m|0:0)+it|0,Gt=g[5937]|0,ee=m+Gt|0,m>>>0>Ct>>>0&m>>>0<2147483647)){if(zt=g[5939]|0,zt|0&&ee>>>0<=Gt>>>0|ee>>>0>zt>>>0){m=0;break}if(p=Ji(m|0)|0,(p|0)==(y|0)){L=m,k=y,ie=145;break t}else S=p,ie=136}else m=0;while(!1);do if((ie|0)==136){if(y=0-m|0,!(z>>>0>m>>>0&(m>>>0<2147483647&(S|0)!=-1)))if((S|0)==-1){m=0;break}else{L=m,k=S,ie=145;break t}if(p=g[5949]|0,p=H-m+p&0-p,p>>>0>=2147483647){L=m,k=S,ie=145;break t}if((Ji(p|0)|0)==-1){Ji(y|0)|0,m=0;break}else{L=p+m|0,k=S,ie=145;break t}}while(!1);g[5940]=g[5940]|4,ie=143}while(!1);if((ie|0)==143&&it>>>0<2147483647&&(Jt=Ji(it|0)|0,ee=Ji(0)|0,Ce=ee-Jt|0,Ve=Ce>>>0>(Ct+40|0)>>>0,!((Jt|0)==-1|Ve^1|Jt>>>0>>0&((Jt|0)!=-1&(ee|0)!=-1)^1))&&(L=Ve?Ce:m,k=Jt,ie=145),(ie|0)==145){m=(g[5937]|0)+L|0,g[5937]=m,m>>>0>(g[5938]|0)>>>0&&(g[5938]=m),H=g[5835]|0;t:do if(H){for(m=23764;;){if(p=g[m>>2]|0,y=g[m+4>>2]|0,(k|0)==(p+y|0)){ie=154;break}if(S=g[m+8>>2]|0,S)m=S;else break}if((ie|0)==154&&(_e=m+4|0,(g[m+12>>2]&8|0)==0)&&k>>>0>H>>>0&p>>>0<=H>>>0){g[_e>>2]=y+L,Nt=(g[5832]|0)+L|0,Jt=H+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=H+Jt|0,Jt=Nt-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[H+Nt+4>>2]=40,g[5836]=g[5951];break}for(k>>>0<(g[5833]|0)>>>0&&(g[5833]=k),y=k+L|0,m=23764;;){if((g[m>>2]|0)==(y|0)){ie=162;break}if(p=g[m+8>>2]|0,p)m=p;else break}if((ie|0)==162&&!(g[m+12>>2]&8|0)){g[m>>2]=k,ot=m+4|0,g[ot>>2]=(g[ot>>2]|0)+L,ot=k+8|0,ot=k+(ot&7|0?0-ot&7:0)|0,m=y+8|0,m=y+(m&7|0?0-m&7:0)|0,it=ot+Ct|0,z=m-ot-Ct|0,g[ot+4>>2]=Ct|3;e:do if((H|0)==(m|0))Nt=(g[5832]|0)+z|0,g[5832]=Nt,g[5835]=it,g[it+4>>2]=Nt|1;else{if((g[5834]|0)==(m|0)){Nt=(g[5831]|0)+z|0,g[5831]=Nt,g[5834]=it,g[it+4>>2]=Nt|1,g[it+Nt>>2]=Nt;break}if(p=g[m+4>>2]|0,(p&3|0)==1){L=p&-8,S=p>>>3;r:do if(p>>>0<256)if(p=g[m+8>>2]|0,y=g[m+12>>2]|0,(y|0)==(p|0)){g[5829]=g[5829]&~(1<>2]=y,g[y+8>>2]=p;break}else{k=g[m+24>>2]|0,p=g[m+12>>2]|0;do if((p|0)==(m|0)){if(y=m+16|0,S=y+4|0,p=g[S>>2]|0,p)y=S;else if(p=g[y>>2]|0,!p){p=0;break}for(;;)if(C=p+20|0,S=g[C>>2]|0,S)p=S,y=C;else if(C=p+16|0,S=g[C>>2]|0,S)p=S,y=C;else break;g[y>>2]=0}else Nt=g[m+8>>2]|0,g[Nt+12>>2]=p,g[p+8>>2]=Nt;while(!1);if(!k)break;y=g[m+28>>2]|0,S=23620+(y<<2)|0;do if((g[S>>2]|0)!=(m|0)){if(Nt=k+16|0,g[((g[Nt>>2]|0)==(m|0)?Nt:k+20|0)>>2]=p,!p)break r}else{if(g[S>>2]=p,p|0)break;g[5830]=g[5830]&~(1<>2]=k,y=m+16|0,S=g[y>>2]|0,S|0&&(g[p+16>>2]=S,g[S+24>>2]=p),y=g[y+4>>2]|0,!y)break;g[p+20>>2]=y,g[y+24>>2]=p}while(!1);m=m+L|0,C=L+z|0}else C=z;if(m=m+4|0,g[m>>2]=g[m>>2]&-2,g[it+4>>2]=C|1,g[it+C>>2]=C,m=C>>>3,C>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=it,g[m+12>>2]=it,g[it+8>>2]=m,g[it+12>>2]=y;break}m=C>>>8;do if(!m)S=0;else{if(C>>>0>16777215){S=31;break}_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,S=14-(Jt|_e|S)+(Nt<>>15)|0,S=C>>>(S+7|0)&1|S<<1}while(!1);if(m=23620+(S<<2)|0,g[it+28>>2]=S,p=it+16|0,g[p+4>>2]=0,g[p>>2]=0,p=g[5830]|0,y=1<>2]=it,g[it+24>>2]=m,g[it+12>>2]=it,g[it+8>>2]=it;break}m=g[m>>2]|0;r:do if((g[m+4>>2]&-8|0)!=(C|0)){for(S=C<<((S|0)==31?0:25-(S>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(C|0)){m=p;break r}else S=S<<1,m=p;g[y>>2]=it,g[it+24>>2]=m,g[it+12>>2]=it,g[it+8>>2]=it;break e}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=it,g[_e>>2]=it,g[it+8>>2]=Nt,g[it+12>>2]=m,g[it+24>>2]=0}while(!1);return Nt=ot+8|0,wt=Ze,Nt|0}for(m=23764;p=g[m>>2]|0,!(p>>>0<=H>>>0&&(Nt=p+(g[m+4>>2]|0)|0,Nt>>>0>H>>>0));)m=g[m+8>>2]|0;C=Nt+-47|0,p=C+8|0,p=C+(p&7|0?0-p&7:0)|0,C=H+16|0,p=p>>>0>>0?H:p,m=p+8|0,y=L+-40|0,Jt=k+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=k+Jt|0,Jt=y-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[k+y+4>>2]=40,g[5836]=g[5951],y=p+4|0,g[y>>2]=27,g[m>>2]=g[5941],g[m+4>>2]=g[5942],g[m+8>>2]=g[5943],g[m+12>>2]=g[5944],g[5941]=k,g[5942]=L,g[5944]=0,g[5943]=m,m=p+24|0;do _e=m,m=m+4|0,g[m>>2]=7;while((_e+8|0)>>>0>>0);if((p|0)!=(H|0)){if(k=p-H|0,g[y>>2]=g[y>>2]&-2,g[H+4>>2]=k|1,g[p>>2]=k,m=k>>>3,k>>>0<256){y=23356+(m<<1<<2)|0,p=g[5829]|0,m=1<>2]|0):(g[5829]=p|m,m=y,p=y+8|0),g[p>>2]=H,g[m+12>>2]=H,g[H+8>>2]=m,g[H+12>>2]=y;break}if(m=k>>>8,m?k>>>0>16777215?S=31:(_e=(m+1048320|0)>>>16&8,Nt=m<<_e,Jt=(Nt+520192|0)>>>16&4,Nt=Nt<>>16&2,S=14-(Jt|_e|S)+(Nt<>>15)|0,S=k>>>(S+7|0)&1|S<<1):S=0,y=23620+(S<<2)|0,g[H+28>>2]=S,g[H+20>>2]=0,g[C>>2]=0,m=g[5830]|0,p=1<>2]=H,g[H+24>>2]=y,g[H+12>>2]=H,g[H+8>>2]=H;break}m=g[y>>2]|0;e:do if((g[m+4>>2]&-8|0)!=(k|0)){for(S=k<<((S|0)==31?0:25-(S>>>1)|0);y=m+16+(S>>>31<<2)|0,p=g[y>>2]|0,!!p;)if((g[p+4>>2]&-8|0)==(k|0)){m=p;break e}else S=S<<1,m=p;g[y>>2]=H,g[H+24>>2]=m,g[H+12>>2]=H,g[H+8>>2]=H;break t}while(!1);_e=m+8|0,Nt=g[_e>>2]|0,g[Nt+12>>2]=H,g[_e>>2]=H,g[H+8>>2]=Nt,g[H+12>>2]=m,g[H+24>>2]=0}}else Nt=g[5833]|0,(Nt|0)==0|k>>>0>>0&&(g[5833]=k),g[5941]=k,g[5942]=L,g[5944]=0,g[5838]=g[5947],g[5837]=-1,g[5842]=23356,g[5841]=23356,g[5844]=23364,g[5843]=23364,g[5846]=23372,g[5845]=23372,g[5848]=23380,g[5847]=23380,g[5850]=23388,g[5849]=23388,g[5852]=23396,g[5851]=23396,g[5854]=23404,g[5853]=23404,g[5856]=23412,g[5855]=23412,g[5858]=23420,g[5857]=23420,g[5860]=23428,g[5859]=23428,g[5862]=23436,g[5861]=23436,g[5864]=23444,g[5863]=23444,g[5866]=23452,g[5865]=23452,g[5868]=23460,g[5867]=23460,g[5870]=23468,g[5869]=23468,g[5872]=23476,g[5871]=23476,g[5874]=23484,g[5873]=23484,g[5876]=23492,g[5875]=23492,g[5878]=23500,g[5877]=23500,g[5880]=23508,g[5879]=23508,g[5882]=23516,g[5881]=23516,g[5884]=23524,g[5883]=23524,g[5886]=23532,g[5885]=23532,g[5888]=23540,g[5887]=23540,g[5890]=23548,g[5889]=23548,g[5892]=23556,g[5891]=23556,g[5894]=23564,g[5893]=23564,g[5896]=23572,g[5895]=23572,g[5898]=23580,g[5897]=23580,g[5900]=23588,g[5899]=23588,g[5902]=23596,g[5901]=23596,g[5904]=23604,g[5903]=23604,Nt=L+-40|0,Jt=k+8|0,Jt=Jt&7|0?0-Jt&7:0,_e=k+Jt|0,Jt=Nt-Jt|0,g[5835]=_e,g[5832]=Jt,g[_e+4>>2]=Jt|1,g[k+Nt+4>>2]=40,g[5836]=g[5951];while(!1);if(m=g[5832]|0,m>>>0>Ct>>>0)return Jt=m-Ct|0,g[5832]=Jt,Nt=g[5835]|0,_e=Nt+Ct|0,g[5835]=_e,g[_e+4>>2]=Jt|1,g[Nt+4>>2]=Ct|3,Nt=Nt+8|0,wt=Ze,Nt|0}return Nt=hs()|0,g[Nt>>2]=12,Nt=0,wt=Ze,Nt|0}function Gr(p){p=p|0;var m=0,y=0,S=0,C=0,k=0,L=0,z=0,H=0;if(p){y=p+-8|0,C=g[5833]|0,p=g[p+-4>>2]|0,m=p&-8,H=y+m|0;do if(p&1)z=y,L=y;else{if(S=g[y>>2]|0,!(p&3)||(L=y+(0-S)|0,k=S+m|0,L>>>0>>0))return;if((g[5834]|0)==(L|0)){if(p=H+4|0,m=g[p>>2]|0,(m&3|0)!=3){z=L,m=k;break}g[5831]=k,g[p>>2]=m&-2,g[L+4>>2]=k|1,g[L+k>>2]=k;return}if(y=S>>>3,S>>>0<256)if(p=g[L+8>>2]|0,m=g[L+12>>2]|0,(m|0)==(p|0)){g[5829]=g[5829]&~(1<>2]=m,g[m+8>>2]=p,z=L,m=k;break}C=g[L+24>>2]|0,p=g[L+12>>2]|0;do if((p|0)==(L|0)){if(m=L+16|0,y=m+4|0,p=g[y>>2]|0,p)m=y;else if(p=g[m>>2]|0,!p){p=0;break}for(;;)if(S=p+20|0,y=g[S>>2]|0,y)p=y,m=S;else if(S=p+16|0,y=g[S>>2]|0,y)p=y,m=S;else break;g[m>>2]=0}else z=g[L+8>>2]|0,g[z+12>>2]=p,g[p+8>>2]=z;while(!1);if(C){if(m=g[L+28>>2]|0,y=23620+(m<<2)|0,(g[y>>2]|0)==(L|0)){if(g[y>>2]=p,!p){g[5830]=g[5830]&~(1<>2]|0)==(L|0)?z:C+20|0)>>2]=p,!p){z=L,m=k;break}g[p+24>>2]=C,m=L+16|0,y=g[m>>2]|0,y|0&&(g[p+16>>2]=y,g[y+24>>2]=p),m=g[m+4>>2]|0,m?(g[p+20>>2]=m,g[m+24>>2]=p,z=L,m=k):(z=L,m=k)}else z=L,m=k}while(!1);if(!(L>>>0>=H>>>0)&&(p=H+4|0,S=g[p>>2]|0,!!(S&1))){if(S&2)g[p>>2]=S&-2,g[z+4>>2]=m|1,g[L+m>>2]=m,C=m;else{if((g[5835]|0)==(H|0)){if(H=(g[5832]|0)+m|0,g[5832]=H,g[5835]=z,g[z+4>>2]=H|1,(z|0)!=(g[5834]|0))return;g[5834]=0,g[5831]=0;return}if((g[5834]|0)==(H|0)){H=(g[5831]|0)+m|0,g[5831]=H,g[5834]=L,g[z+4>>2]=H|1,g[L+H>>2]=H;return}C=(S&-8)+m|0,y=S>>>3;do if(S>>>0<256)if(m=g[H+8>>2]|0,p=g[H+12>>2]|0,(p|0)==(m|0)){g[5829]=g[5829]&~(1<>2]=p,g[p+8>>2]=m;break}else{k=g[H+24>>2]|0,p=g[H+12>>2]|0;do if((p|0)==(H|0)){if(m=H+16|0,y=m+4|0,p=g[y>>2]|0,p)m=y;else if(p=g[m>>2]|0,!p){y=0;break}for(;;)if(S=p+20|0,y=g[S>>2]|0,y)p=y,m=S;else if(S=p+16|0,y=g[S>>2]|0,y)p=y,m=S;else break;g[m>>2]=0,y=p}else y=g[H+8>>2]|0,g[y+12>>2]=p,g[p+8>>2]=y,y=p;while(!1);if(k|0){if(p=g[H+28>>2]|0,m=23620+(p<<2)|0,(g[m>>2]|0)==(H|0)){if(g[m>>2]=y,!y){g[5830]=g[5830]&~(1<>2]|0)==(H|0)?S:k+20|0)>>2]=y,!y)break;g[y+24>>2]=k,p=H+16|0,m=g[p>>2]|0,m|0&&(g[y+16>>2]=m,g[m+24>>2]=y),p=g[p+4>>2]|0,p|0&&(g[y+20>>2]=p,g[p+24>>2]=y)}}while(!1);if(g[z+4>>2]=C|1,g[L+C>>2]=C,(z|0)==(g[5834]|0)){g[5831]=C;return}}if(p=C>>>3,C>>>0<256){y=23356+(p<<1<<2)|0,m=g[5829]|0,p=1<>2]|0):(g[5829]=m|p,p=y,m=y+8|0),g[m>>2]=z,g[p+12>>2]=z,g[z+8>>2]=p,g[z+12>>2]=y;return}p=C>>>8,p?C>>>0>16777215?S=31:(L=(p+1048320|0)>>>16&8,H=p<>>16&4,H=H<>>16&2,S=14-(k|L|S)+(H<>>15)|0,S=C>>>(S+7|0)&1|S<<1):S=0,p=23620+(S<<2)|0,g[z+28>>2]=S,g[z+20>>2]=0,g[z+16>>2]=0,m=g[5830]|0,y=1<>2]=z,g[z+24>>2]=p,g[z+12>>2]=z,g[z+8>>2]=z;else{p=g[p>>2]|0;e:do if((g[p+4>>2]&-8|0)!=(C|0)){for(S=C<<((S|0)==31?0:25-(S>>>1)|0);y=p+16+(S>>>31<<2)|0,m=g[y>>2]|0,!!m;)if((g[m+4>>2]&-8|0)==(C|0)){p=m;break e}else S=S<<1,p=m;g[y>>2]=z,g[z+24>>2]=p,g[z+12>>2]=z,g[z+8>>2]=z;break t}while(!1);L=p+8|0,H=g[L>>2]|0,g[H+12>>2]=z,g[L>>2]=z,g[z+8>>2]=H,g[z+12>>2]=p,g[z+24>>2]=0}while(!1);if(H=(g[5837]|0)+-1|0,g[5837]=H,!(H|0)){for(p=23772;p=g[p>>2]|0,p;)p=p+8|0;g[5837]=-1}}}}function Ua(p,m){p=p|0,m=m|0;var y=0;return p?(y=Rc(m,p)|0,(m|p)>>>0>65535&&(y=((y>>>0)/(p>>>0)|0|0)==(m|0)?y:-1)):y=0,p=co(y)|0,!p||!(g[p+-4>>2]&3)||Oc(p|0,0,y|0)|0,p|0}function g_(p,m,y,S){return p=p|0,m=m|0,y=y|0,S=S|0,y=p+y>>>0,$e(m+S+(y>>>0

>>0|0)>>>0|0),y|0|0}function zd(p,m,y,S){return p=p|0,m=m|0,y=y|0,S=S|0,S=m-S-(y>>>0>p>>>0|0)>>>0,$e(S|0),p-y>>>0|0|0}function cA(p){return p=p|0,(p?31-(aa(p^p-1)|0)|0:32)|0}function ql(p,m,y,S,C){p=p|0,m=m|0,y=y|0,S=S|0,C=C|0;var k=0,L=0,z=0,H=0,it=0,ot=0,Ct=0,zt=0,Gt=0,ee=0;if(ot=p,H=m,it=H,L=y,zt=S,z=zt,!it)return k=(C|0)!=0,z?k?(g[C>>2]=p|0,g[C+4>>2]=m&0,zt=0,C=0,$e(zt|0),C|0):(zt=0,C=0,$e(zt|0),C|0):(k&&(g[C>>2]=(ot>>>0)%(L>>>0),g[C+4>>2]=0),zt=0,C=(ot>>>0)/(L>>>0)>>>0,$e(zt|0),C|0);k=(z|0)==0;do if(L){if(!k){if(k=(aa(z|0)|0)-(aa(it|0)|0)|0,k>>>0<=31){Ct=k+1|0,z=31-k|0,m=k-31>>31,L=Ct,p=ot>>>(Ct>>>0)&m|it<>>(Ct>>>0)&m,k=0,z=ot<>2]=p|0,g[C+4>>2]=H|m&0,zt=0,C=0,$e(zt|0),C|0):(zt=0,C=0,$e(zt|0),C|0)}if(k=L-1|0,k&L|0){z=(aa(L|0)|0)+33-(aa(it|0)|0)|0,ee=64-z|0,Ct=32-z|0,H=Ct>>31,Gt=z-32|0,m=Gt>>31,L=z,p=Ct-1>>31&it>>>(Gt>>>0)|(it<>>(z>>>0))&m,m=m&it>>>(z>>>0),k=ot<>>(Gt>>>0))&H|ot<>31;break}return C|0&&(g[C>>2]=k&ot,g[C+4>>2]=0),(L|0)==1?(Gt=H|m&0,ee=p|0|0,$e(Gt|0),ee|0):(ee=cA(L|0)|0,Gt=it>>>(ee>>>0)|0,ee=it<<32-ee|ot>>>(ee>>>0)|0,$e(Gt|0),ee|0)}else{if(k)return C|0&&(g[C>>2]=(it>>>0)%(L>>>0),g[C+4>>2]=0),Gt=0,ee=(it>>>0)/(L>>>0)>>>0,$e(Gt|0),ee|0;if(!ot)return C|0&&(g[C>>2]=0,g[C+4>>2]=(it>>>0)%(z>>>0)),Gt=0,ee=(it>>>0)/(z>>>0)>>>0,$e(Gt|0),ee|0;if(k=z-1|0,!(k&z))return C|0&&(g[C>>2]=p|0,g[C+4>>2]=k&it|m&0),Gt=0,ee=it>>>((cA(z|0)|0)>>>0),$e(Gt|0),ee|0;if(k=(aa(z|0)|0)-(aa(it|0)|0)|0,k>>>0<=30){m=k+1|0,z=31-k|0,L=m,p=it<>>(m>>>0),m=it>>>(m>>>0),k=0,z=ot<>2]=p|0,g[C+4>>2]=H|m&0,Gt=0,ee=0,$e(Gt|0),ee|0):(Gt=0,ee=0,$e(Gt|0),ee|0)}while(!1);if(!L)it=z,H=0,z=0;else{Ct=y|0|0,ot=zt|S&0,it=g_(Ct|0,ot|0,-1,-1)|0,y=It()|0,H=z,z=0;do S=H,H=k>>>31|H<<1,k=z|k<<1,S=p<<1|S>>>31|0,zt=p>>>31|m<<1|0,zd(it|0,y|0,S|0,zt|0)|0,ee=It()|0,Gt=ee>>31|((ee|0)<0?-1:0)<<1,z=Gt&1,p=zd(S|0,zt|0,Gt&Ct|0,(((ee|0)<0?-1:0)>>31|((ee|0)<0?-1:0)<<1)&ot|0)|0,m=It()|0,L=L-1|0;while(L|0);it=H,H=0}return L=0,C|0&&(g[C>>2]=p,g[C+4>>2]=m),Gt=(k|0)>>>31|(it|L)<<1|(L<<1|k>>>31)&0|H,ee=(k<<1|0)&-2|z,$e(Gt|0),ee|0}function Qo(p,m,y,S){p=p|0,m=m|0,y=y|0,S=S|0;var C=0,k=0;return k=wt,wt=wt+16|0,C=k|0,ql(p,m,y,S,C)|0,wt=k,$e(g[C+4>>2]|0),g[C>>2]|0|0}function me(p,m,y){return p=p|0,m=m|0,y=y|0,(y|0)<32?($e(m>>>y|0),p>>>y|(m&(1<>>y-32|0)}function Le(p,m,y){return p=p|0,m=m|0,y=y|0,(y|0)<32?($e(m<>>32-y|0),p<=0?+ls(p+.5):+Xi(p-.5)}function Va(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0;if((y|0)>=8192)return Yp(p|0,m|0,y|0)|0,p|0;if(k=p|0,C=p+y|0,(p&3)==(m&3)){for(;p&3;){if(!y)return k|0;xr[p>>0]=xr[m>>0]|0,p=p+1|0,m=m+1|0,y=y-1|0}for(y=C&-4|0,S=y-64|0;(p|0)<=(S|0);)g[p>>2]=g[m>>2],g[p+4>>2]=g[m+4>>2],g[p+8>>2]=g[m+8>>2],g[p+12>>2]=g[m+12>>2],g[p+16>>2]=g[m+16>>2],g[p+20>>2]=g[m+20>>2],g[p+24>>2]=g[m+24>>2],g[p+28>>2]=g[m+28>>2],g[p+32>>2]=g[m+32>>2],g[p+36>>2]=g[m+36>>2],g[p+40>>2]=g[m+40>>2],g[p+44>>2]=g[m+44>>2],g[p+48>>2]=g[m+48>>2],g[p+52>>2]=g[m+52>>2],g[p+56>>2]=g[m+56>>2],g[p+60>>2]=g[m+60>>2],p=p+64|0,m=m+64|0;for(;(p|0)<(y|0);)g[p>>2]=g[m>>2],p=p+4|0,m=m+4|0}else for(y=C-4|0;(p|0)<(y|0);)xr[p>>0]=xr[m>>0]|0,xr[p+1>>0]=xr[m+1>>0]|0,xr[p+2>>0]=xr[m+2>>0]|0,xr[p+3>>0]=xr[m+3>>0]|0,p=p+4|0,m=m+4|0;for(;(p|0)<(C|0);)xr[p>>0]=xr[m>>0]|0,p=p+1|0,m=m+1|0;return k|0}function Oc(p,m,y){p=p|0,m=m|0,y=y|0;var S=0,C=0,k=0,L=0;if(k=p+y|0,m=m&255,(y|0)>=67){for(;p&3;)xr[p>>0]=m,p=p+1|0;for(S=k&-4|0,L=m|m<<8|m<<16|m<<24,C=S-64|0;(p|0)<=(C|0);)g[p>>2]=L,g[p+4>>2]=L,g[p+8>>2]=L,g[p+12>>2]=L,g[p+16>>2]=L,g[p+20>>2]=L,g[p+24>>2]=L,g[p+28>>2]=L,g[p+32>>2]=L,g[p+36>>2]=L,g[p+40>>2]=L,g[p+44>>2]=L,g[p+48>>2]=L,g[p+52>>2]=L,g[p+56>>2]=L,g[p+60>>2]=L,p=p+64|0;for(;(p|0)<(S|0);)g[p>>2]=L,p=p+4|0}for(;(p|0)<(k|0);)xr[p>>0]=m,p=p+1|0;return k-y|0}function Dx(p){return p=+p,p>=0?+ls(p+.5):+Xi(p-.5)}function Ji(p){p=p|0;var m=0,y=0,S=0;return S=Km()|0,y=g[Ms>>2]|0,m=y+p|0,(p|0)>0&(m|0)<(y|0)|(m|0)<0?(Jm(m|0)|0,Xm(12),-1):(m|0)>(S|0)&&!(Qp(m|0)|0)?(Xm(12),-1):(g[Ms>>2]=m,y|0)}return{___uremdi3:Qo,_bitshift64Lshr:me,_bitshift64Shl:Le,_calloc:Ua,_cellAreaKm2:A_,_cellAreaM2:Rx,_cellAreaRads2:p_,_compact:Ah,_destroyLinkedPolygon:Ft,_edgeLengthKm:ln,_edgeLengthM:sA,_emscripten_replace_memory:t0,_exactEdgeLengthKm:oA,_exactEdgeLengthM:rr,_exactEdgeLengthRads:To,_experimentalH3ToLocalIj:Qt,_experimentalLocalIjToH3:oe,_free:Gr,_geoToH3:lA,_getDestinationH3IndexFromUnidirectionalEdge:Z,_getH3IndexesFromUnidirectionalEdge:st,_getH3UnidirectionalEdge:U,_getH3UnidirectionalEdgeBoundary:pt,_getH3UnidirectionalEdgesFromHexagon:At,_getOriginH3IndexFromUnidirectionalEdge:W,_getPentagonIndexes:O,_getRes0Indexes:c_,_h3Distance:pe,_h3GetBaseCell:bf,_h3GetFaces:b,_h3GetResolution:fr,_h3IndexesAreNeighbors:B,_h3IsPentagon:Ui,_h3IsResClassIII:wf,_h3IsValid:aA,_h3Line:xe,_h3LineSize:he,_h3SetToLinkedGeo:oh,_h3ToCenterChild:m_,_h3ToChildren:lo,_h3ToGeo:l,_h3ToGeoBoundary:d,_h3ToParent:Bd,_h3UnidirectionalEdgeIsValid:$,_hexAreaKm2:d_,_hexAreaM2:ua,_hexRing:a_,_i64Subtract:zd,_kRing:s_,_kRingDistances:o_,_llvm_minnum_f64:ml,_llvm_round_f64:Tf,_malloc:co,_maxFaceCount:v,_maxH3ToChildrenSize:Gn,_maxKringSize:e0,_maxPolyfillSize:Cd,_maxUncompactSize:xn,_memcpy:Va,_memset:Oc,_numHexagons:f0,_pentagonIndexCount:M,_pointDistKm:Dc,_pointDistM:u0,_pointDistRads:Au,_polyfill:$p,_res0IndexCount:l_,_round:Dx,_sbrk:Ji,_sizeOfCoordIJ:Us,_sizeOfGeoBoundary:Vr,_sizeOfGeoCoord:Jr,_sizeOfGeoPolygon:Rn,_sizeOfGeofence:ei,_sizeOfH3Index:Vi,_sizeOfLinkedGeoPolygon:Ki,_uncompact:Cn,establishStackSpace:Lx,stackAlloc:Ed,stackRestore:Id,stackSave:Pd}}(vt,xt,er),Ot=t.___uremdi3=_t.___uremdi3,Mt=t._bitshift64Lshr=_t._bitshift64Lshr,Ut=t._bitshift64Shl=_t._bitshift64Shl,re=t._calloc=_t._calloc,se=t._cellAreaKm2=_t._cellAreaKm2,ae=t._cellAreaM2=_t._cellAreaM2,ar=t._cellAreaRads2=_t._cellAreaRads2,_r=t._compact=_t._compact,Ye=t._destroyLinkedPolygon=_t._destroyLinkedPolygon,lr=t._edgeLengthKm=_t._edgeLengthKm,br=t._edgeLengthM=_t._edgeLengthM,vi=t._emscripten_replace_memory=_t._emscripten_replace_memory,Bi=t._exactEdgeLengthKm=_t._exactEdgeLengthKm,ni=t._exactEdgeLengthM=_t._exactEdgeLengthM,Hr=t._exactEdgeLengthRads=_t._exactEdgeLengthRads,Un=t._experimentalH3ToLocalIj=_t._experimentalH3ToLocalIj,ki=t._experimentalLocalIjToH3=_t._experimentalLocalIjToH3,yn=t._free=_t._free,Jn=t._geoToH3=_t._geoToH3,oa=t._getDestinationH3IndexFromUnidirectionalEdge=_t._getDestinationH3IndexFromUnidirectionalEdge,Nm=t._getH3IndexesFromUnidirectionalEdge=_t._getH3IndexesFromUnidirectionalEdge,Nl=t._getH3UnidirectionalEdge=_t._getH3UnidirectionalEdge,Ss=t._getH3UnidirectionalEdgeBoundary=_t._getH3UnidirectionalEdgeBoundary,ih=t._getH3UnidirectionalEdgesFromHexagon=_t._getH3UnidirectionalEdgesFromHexagon,ai=t._getOriginH3IndexFromUnidirectionalEdge=_t._getOriginH3IndexFromUnidirectionalEdge,ka=t._getPentagonIndexes=_t._getPentagonIndexes,kc=t._getRes0Indexes=_t._getRes0Indexes,on=t._h3Distance=_t._h3Distance,kn=t._h3GetBaseCell=_t._h3GetBaseCell,Um=t._h3GetFaces=_t._h3GetFaces,Wo=t._h3GetResolution=_t._h3GetResolution,Vn=t._h3IndexesAreNeighbors=_t._h3IndexesAreNeighbors,wo=t._h3IsPentagon=_t._h3IsPentagon,Ul=t._h3IsResClassIII=_t._h3IsResClassIII,$i=t._h3IsValid=_t._h3IsValid,_i=t._h3Line=_t._h3Line,Vl=t._h3LineSize=_t._h3LineSize,an=t._h3SetToLinkedGeo=_t._h3SetToLinkedGeo,hu=t._h3ToCenterChild=_t._h3ToCenterChild,ts=t._h3ToChildren=_t._h3ToChildren,Gp=t._h3ToGeo=_t._h3ToGeo,jl=t._h3ToGeoBoundary=_t._h3ToGeoBoundary,_d=t._h3ToParent=_t._h3ToParent,yd=t._h3UnidirectionalEdgeIsValid=_t._h3UnidirectionalEdgeIsValid,vd=t._hexAreaKm2=_t._hexAreaKm2,xd=t._hexAreaM2=_t._hexAreaM2,lt=t._hexRing=_t._hexRing,ft=t._i64Subtract=_t._i64Subtract,Lt=t._kRing=_t._kRing,$t=t._kRingDistances=_t._kRingDistances,ge=t._llvm_minnum_f64=_t._llvm_minnum_f64,qe=t._llvm_round_f64=_t._llvm_round_f64,ti=t._malloc=_t._malloc,es=t._maxFaceCount=_t._maxFaceCount,Ts=t._maxH3ToChildrenSize=_t._maxH3ToChildrenSize,zs=t._maxKringSize=_t._maxKringSize,Ra=t._maxPolyfillSize=_t._maxPolyfillSize,Vm=t._maxUncompactSize=_t._maxUncompactSize,Ix=t._memcpy=_t._memcpy,Cx=t._memset=_t._memset,e_=t._numHexagons=_t._numHexagons,r_=t._pentagonIndexCount=_t._pentagonIndexCount,mf=t._pointDistKm=_t._pointDistKm,jm=t._pointDistM=_t._pointDistM,fl=t._pointDistRads=_t._pointDistRads,Gm=t._polyfill=_t._polyfill,Wm=t._res0IndexCount=_t._res0IndexCount,Wp=t._round=_t._round,Hm=t._sbrk=_t._sbrk,bd=t._sizeOfCoordIJ=_t._sizeOfCoordIJ,nh=t._sizeOfGeoBoundary=_t._sizeOfGeoBoundary,ui=t._sizeOfGeoCoord=_t._sizeOfGeoCoord,qm=t._sizeOfGeoPolygon=_t._sizeOfGeoPolygon,Da=t._sizeOfGeofence=_t._sizeOfGeofence,Oa=t._sizeOfH3Index=_t._sizeOfH3Index,i_=t._sizeOfLinkedGeoPolygon=_t._sizeOfLinkedGeoPolygon,Zm=t._uncompact=_t._uncompact,Ym=t.establishStackSpace=_t.establishStackSpace,Hp=t.stackAlloc=_t.stackAlloc,Qm=t.stackRestore=_t.stackRestore,qp=t.stackSave=_t.stackSave;if(t.asm=_t,t.cwrap=ut,t.setValue=j,t.getValue=Q,t.getTempRet0=R,xo){Ia(xo)||(xo=o(xo));{uu(\"memory initializer\");var wd=function(Ht){Ht.byteLength&&(Ht=new Uint8Array(Ht)),zi.set(Ht,N),t.memoryInitializerRequest&&delete t.memoryInitializerRequest.response,ul(\"memory initializer\")},Zp=function(){c(xo,wd,function(){throw\"could not load memory initializer \"+xo})},Sd=ht(xo);if(Sd)wd(Sd.buffer);else if(t.memoryInitializerRequest){var $m=function(){var Ht=t.memoryInitializerRequest,fe=Ht.response;if(Ht.status!==200&&Ht.status!==0){var De=ht(t.memoryInitializerRequestURL);if(De)fe=De.buffer;else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+Ht.status+\", retrying \"+xo),Zp();return}}wd(fe)};t.memoryInitializerRequest.response?setTimeout($m,0):t.memoryInitializerRequest.addEventListener(\"load\",$m)}else Zp()}}var Td;oo=function Ht(){Td||fu(),Td||(oo=Ht)};function fu(Ht){if(Ht=Ht||s,gi>0||(cl(),gi>0))return;function fe(){Td||(Td=!0,!et&&(vo(),Pa(),t.onRuntimeInitialized&&t.onRuntimeInitialized(),na()))}t.setStatus?(t.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){t.setStatus(\"\")},1),fe()},1)):fe()}t.run=fu;function sh(Ht){throw t.onAbort&&t.onAbort(Ht),Ht+=\"\",f(Ht),_(Ht),et=!0,\"abort(\"+Ht+\"). Build with -s ASSERTIONS=1 for more info.\"}if(t.abort=sh,t.preInit)for(typeof t.preInit==\"function\"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return fu(),e}(typeof Mc==\"object\"?Mc:{}),Sr=\"number\",_S=Sr,$r=Sr,mi=Sr,Tc=Sr,Gi=Sr,U_t=[[\"sizeOfH3Index\",Sr],[\"sizeOfGeoCoord\",Sr],[\"sizeOfGeoBoundary\",Sr],[\"sizeOfGeoPolygon\",Sr],[\"sizeOfGeofence\",Sr],[\"sizeOfLinkedGeoPolygon\",Sr],[\"sizeOfCoordIJ\",Sr],[\"h3IsValid\",_S,[$r,mi]],[\"geoToH3\",$r,[Sr,Sr,Tc]],[\"h3ToGeo\",null,[$r,mi,Gi]],[\"h3ToGeoBoundary\",null,[$r,mi,Gi]],[\"maxKringSize\",Sr,[Sr]],[\"kRing\",null,[$r,mi,Sr,Gi]],[\"kRingDistances\",null,[$r,mi,Sr,Gi,Gi]],[\"hexRing\",null,[$r,mi,Sr,Gi]],[\"maxPolyfillSize\",Sr,[Gi,Tc]],[\"polyfill\",null,[Gi,Tc,Gi]],[\"h3SetToLinkedGeo\",null,[Gi,Sr,Gi]],[\"destroyLinkedPolygon\",null,[Gi]],[\"compact\",Sr,[Gi,Gi,Sr]],[\"uncompact\",Sr,[Gi,Sr,Gi,Sr,Tc]],[\"maxUncompactSize\",Sr,[Gi,Sr,Tc]],[\"h3IsPentagon\",_S,[$r,mi]],[\"h3IsResClassIII\",_S,[$r,mi]],[\"h3GetBaseCell\",Sr,[$r,mi]],[\"h3GetResolution\",Sr,[$r,mi]],[\"maxFaceCount\",Sr,[$r,mi]],[\"h3GetFaces\",null,[$r,mi,Gi]],[\"h3ToParent\",$r,[$r,mi,Tc]],[\"h3ToChildren\",null,[$r,mi,Tc,Gi]],[\"h3ToCenterChild\",$r,[$r,mi,Tc]],[\"maxH3ToChildrenSize\",Sr,[$r,mi,Tc]],[\"h3IndexesAreNeighbors\",_S,[$r,mi,$r,mi]],[\"getH3UnidirectionalEdge\",$r,[$r,mi,$r,mi]],[\"getOriginH3IndexFromUnidirectionalEdge\",$r,[$r,mi]],[\"getDestinationH3IndexFromUnidirectionalEdge\",$r,[$r,mi]],[\"h3UnidirectionalEdgeIsValid\",_S,[$r,mi]],[\"getH3IndexesFromUnidirectionalEdge\",null,[$r,mi,Gi]],[\"getH3UnidirectionalEdgesFromHexagon\",null,[$r,mi,Gi]],[\"getH3UnidirectionalEdgeBoundary\",null,[$r,mi,Gi]],[\"h3Distance\",Sr,[$r,mi,$r,mi]],[\"h3Line\",Sr,[$r,mi,$r,mi,Gi]],[\"h3LineSize\",Sr,[$r,mi,$r,mi]],[\"experimentalH3ToLocalIj\",Sr,[$r,mi,$r,mi,Gi]],[\"experimentalLocalIjToH3\",Sr,[$r,mi,Gi,Gi]],[\"hexAreaM2\",Sr,[Tc]],[\"hexAreaKm2\",Sr,[Tc]],[\"edgeLengthM\",Sr,[Tc]],[\"edgeLengthKm\",Sr,[Tc]],[\"pointDistM\",Sr,[Gi,Gi]],[\"pointDistKm\",Sr,[Gi,Gi]],[\"pointDistRads\",Sr,[Gi,Gi]],[\"cellAreaM2\",Sr,[$r,mi]],[\"cellAreaKm2\",Sr,[$r,mi]],[\"cellAreaRads2\",Sr,[$r,mi]],[\"exactEdgeLengthM\",Sr,[$r,mi]],[\"exactEdgeLengthKm\",Sr,[$r,mi]],[\"exactEdgeLengthRads\",Sr,[$r,mi]],[\"numHexagons\",Sr,[Tc]],[\"getRes0Indexes\",null,[Gi]],[\"res0IndexCount\",Sr],[\"getPentagonIndexes\",null,[Sr,Gi]],[\"pentagonIndexCount\",Sr]],Ma={};U_t.forEach(function(t){Ma[t[0]]=Mc.cwrap.apply(Mc,t)});var dx=16;var yS=8,aoe=Ma.sizeOfH3Index(),SQ=Ma.sizeOfGeoCoord(),V_t=Ma.sizeOfGeoBoundary(),loe=Ma.sizeOfGeoPolygon(),coe=Ma.sizeOfGeofence(),uoe=Ma.sizeOfLinkedGeoPolygon(),hoe=Ma.sizeOfCoordIJ(),bQ={m:\"m\",m2:\"m2\",km:\"km\",km2:\"km2\",rads:\"rads\",rads2:\"rads2\"};function j_t(e){if(typeof e!=\"number\"||e<0||e>15||Math.floor(e)!==e)throw new Error(\"Invalid resolution: \"+e)}var G_t=/[^0-9a-fA-F]/;function px(e){if(Array.isArray(e)&&e.length===2&&Number.isInteger(e[0])&&Number.isInteger(e[1]))return e;if(typeof e!=\"string\"||G_t.test(e))return[0,0];var t=parseInt(e.substring(0,e.length-8),dx),r=parseInt(e.substring(e.length-8),dx);return[r,t]}function wQ(e){if(e>=0)return e.toString(dx);e=e&2147483647;var t=TQ(8,e.toString(dx)),r=(parseInt(t[0],dx)+8).toString(dx);return t=r+t.substring(1),t}function W_t(e,t){return wQ(t)+TQ(8,wQ(e))}function TQ(e,t){for(var r=e-t.length,i=\"\",s=0;s180?r[0]-=360:i<-180&&(r[0]+=360)}}function K_t(e,t,r){let[i,s]=TI(e),n=t.length;DQ(t,s);let o=t[0]===t[n-1]?n-1:n;for(let c=0;ce.hexagon},extruded:!0},Np=class e extends qi{constructor(...t){super(...t),G(this,\"state\",void 0)}initializeState(){e._checkH3Lib(),this.state={edgeLengthKM:0,resolution:-1}}shouldUpdateState({changeFlags:t}){return this._shouldUseHighPrecision()?t.propsOrDataChanged:t.somethingChanged}updateState({props:t,changeFlags:r}){if(t.highPrecision!==!0&&(r.dataChanged||r.updateTriggersChanged&&r.updateTriggersChanged.getHexagon)){let i=this._calculateH3DataProps();this.setState(i)}this._updateVertices(this.context.viewport)}_calculateH3DataProps(){let t=-1,r=!1,i=!1,{iterable:s,objectInfo:n}=Xc(this.props.data);for(let o of s){n.index++;let c=this.props.getHexagon(o,n),f=PQ(c);if(t<0){if(t=f,!this.props.highPrecision)break}else if(t!==f){i=!0;break}if(EQ(c)){r=!0;break}}return{resolution:t,edgeLengthKM:t>=0?kQ(t,\"km\"):0,hasMultipleRes:i,hasPentagon:r}}_shouldUseHighPrecision(){if(this.props.highPrecision===\"auto\"){let{resolution:t,hasPentagon:r,hasMultipleRes:i}=this.state,{viewport:s}=this.context;return!!s?.resolution||i||r||t>=0&&t<=5}return this.props.highPrecision}_updateVertices(t){if(this._shouldUseHighPrecision())return;let{resolution:r,edgeLengthKM:i,centerHex:s}=this.state;if(r<0)return;let n=this.props.centerHexagon||IQ(t.latitude,t.longitude,r);if(s===n)return;if(s){let R=LQ(s,n);if(R>=0&&R*i{let N=t.projectFlat(R);return[(N[0]-w)/o[0],(N[1]-I)/o[1]]}),this.setState({centerHex:n,vertices:c})}renderLayers(){return this._shouldUseHighPrecision()?this._renderPolygonLayer():this._renderColumnLayer()}_getForwardProps(){let{elevationScale:t,material:r,coverage:i,extruded:s,wireframe:n,stroked:o,filled:c,lineWidthUnits:f,lineWidthScale:_,lineWidthMinPixels:w,lineWidthMaxPixels:I,getFillColor:R,getElevation:N,getLineColor:j,getLineWidth:Q,transitions:et,updateTriggers:Y}=this.props;return{elevationScale:t,extruded:s,coverage:i,wireframe:n,stroked:o,filled:c,lineWidthUnits:f,lineWidthScale:_,lineWidthMinPixels:w,lineWidthMaxPixels:I,material:r,getElevation:N,getFillColor:R,getLineColor:j,getLineWidth:Q,transitions:et,updateTriggers:{getFillColor:Y.getFillColor,getElevation:Y.getElevation,getLineColor:Y.getLineColor,getLineWidth:Y.getLineWidth}}}_renderPolygonLayer(){let{data:t,getHexagon:r,updateTriggers:i,coverage:s}=this.props,n=this.getSubLayerClass(\"hexagon-cell-hifi\",lf),o=this._getForwardProps();return o.updateTriggers.getPolygon=eyt(i.getHexagon,s),new n(o,this.getSubLayerProps({id:\"hexagon-cell-hifi\",updateTriggers:o.updateTriggers}),{data:t,_normalize:!1,_windingOrder:\"CCW\",positionFormat:\"XY\",getPolygon:(c,f)=>{let _=r(c,f);return tyt(RQ(_,s))}})}_renderColumnLayer(){let{data:t,getHexagon:r,updateTriggers:i}=this.props,s=this.getSubLayerClass(\"hexagon-cell\",af),n=this._getForwardProps();return n.updateTriggers.getPosition=i.getHexagon,new s(n,this.getSubLayerProps({id:\"hexagon-cell\",flatShading:!0,updateTriggers:n.updateTriggers}),{data:t,diskResolution:6,radius:1,vertices:this.state.vertices,getPosition:J_t.bind(null,r)})}};G(Np,\"defaultProps\",ryt);G(Np,\"layerName\",\"H3HexagonLayer\");G(Np,\"_checkH3Lib\",()=>{});var{data:Moe,getHexagon:Eoe,...iyt}=Np.defaultProps,nyt={_validate:!0},Poe={...iyt,...nyt};var OQ=[[255,255,178],[254,217,118],[254,178,76],[253,141,60],[240,59,32],[189,0,38]];function BQ(e,t=!1,r=Float32Array){let i;if(Number.isFinite(e[0]))i=new r(e);else{i=new r(e.length*4);let s=0;for(let n=0;nc[0]),r=e.map(c=>c[1]),i=Math.min.apply(null,t),s=Math.max.apply(null,t),n=Math.min.apply(null,r),o=Math.max.apply(null,r);return[i,n,s,o]}function UQ(e,t){return t[0]>=e[0]&&t[2]<=e[2]&&t[1]>=e[1]&&t[3]<=e[3]}var zQ=new Float32Array(12);function qB(e,t=2){let r=0;for(let i of e)for(let s=0;s 0.) {\n maxValue = colorDomain[1];\n minValue = colorDomain[0];\n }\n vIntensityMax = intensity / maxValue;\n vIntensityMin = intensity / minValue;\n}\n`;var HQ=`#define SHADER_NAME triangle-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D texture;\nuniform sampler2D colorTexture;\nuniform float aggregationMode;\n\nvarying vec2 vTexCoords;\nvarying float vIntensityMin;\nvarying float vIntensityMax;\n\nvec4 getLinearColor(float value) {\n float factor = clamp(value * vIntensityMax, 0., 1.);\n vec4 color = texture2D(colorTexture, vec2(factor, 0.5));\n color.a *= min(value * vIntensityMin, 1.0);\n return color;\n}\n\nvoid main(void) {\n vec4 weights = texture2D(texture, vTexCoords);\n float weight = weights.r;\n\n if (aggregationMode > 0.5) {\n weight /= max(1.0, weights.a);\n }\n if (weight <= 0.) {\n discard;\n }\n\n vec4 linearColor = getLinearColor(weight);\n linearColor.a *= opacity;\n gl_FragColor =linearColor;\n}\n`;var mx=class extends hn{getShaders(){return{vs:WQ,fs:HQ,modules:[Rs]}}initializeState({gl:t}){this.getAttributeManager().add({positions:{size:3,noAlloc:!0},texCoords:{size:2,noAlloc:!0}}),this.setState({model:this._getModel(t)})}_getModel(t){let{vertexCount:r}=this.props;return new un(t,{...this.getShaders(),id:this.props.id,geometry:new Yn({drawMode:6,vertexCount:r})})}draw({uniforms:t}){let{model:r}=this.state,{texture:i,maxTexture:s,colorTexture:n,intensity:o,threshold:c,aggregationMode:f,colorDomain:_}=this.props;r.setUniforms({...t,texture:i,maxTexture:s,colorTexture:n,intensity:o,threshold:c,aggregationMode:f,colorDomain:_}).draw()}};G(mx,\"layerName\",\"TriangleLayer\");var qQ=`attribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float weights;\nvarying vec4 weightsTexture;\nuniform float radiusPixels;\nuniform float textureWidth;\nuniform vec4 commonBounds;\nuniform float weightsScale;\nvoid main()\n{\n weightsTexture = vec4(weights * weightsScale, 0., 0., 1.);\n\n float radiusTexels = project_pixel_size(radiusPixels) * textureWidth / (commonBounds.z - commonBounds.x);\n gl_PointSize = radiusTexels * 2.;\n\n vec3 commonPosition = project_position(positions, positions64Low);\n gl_Position.xy = (commonPosition.xy - commonBounds.xy) / (commonBounds.zw - commonBounds.xy) ;\n gl_Position.xy = (gl_Position.xy * 2.) - (1.);\n}\n`;var ZQ=`varying vec4 weightsTexture;\nfloat gaussianKDE(float u){\n return pow(2.71828, -u*u/0.05555)/(1.77245385*0.166666);\n}\nvoid main()\n{\n float dist = length(gl_PointCoord - vec2(0.5, 0.5));\n if (dist > 0.5) {\n discard;\n }\n gl_FragColor = weightsTexture * gaussianKDE(2. * dist);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;var YQ=`attribute vec4 inTexture;\nvarying vec4 outTexture;\n\nvoid main()\n{\noutTexture = inTexture;\ngl_Position = vec4(0, 0, 0, 1.);\ngl_PointSize = 1.0;\n}\n`;var QQ=`varying vec4 outTexture;\nvoid main() {\n gl_FragColor = outTexture;\n gl_FragColor.g = outTexture.r / max(1.0, outTexture.a);\n}\n`;var oyt=2,ZB={mipmaps:!1,parameters:{10240:9729,10241:9729,10242:33071,10243:33071},dataFormat:6408},$Q=[0,0],ayt={SUM:0,MEAN:1},lyt={getPosition:{type:\"accessor\",value:e=>e.position},getWeight:{type:\"accessor\",value:1},intensity:{type:\"number\",min:0,value:1},radiusPixels:{type:\"number\",min:1,max:100,value:50},colorRange:OQ,threshold:{type:\"number\",min:0,max:1,value:.05},colorDomain:{type:\"array\",value:null,optional:!0},aggregation:\"SUM\",weightsTextureSize:{type:\"number\",min:128,max:2048,value:2048},debounceTimeout:{type:\"number\",min:0,max:1e3,value:500}},cyt=[Pi.BLEND_EQUATION_MINMAX,Pi.TEXTURE_FLOAT],uyt=[Pi.COLOR_ATTACHMENT_RGBA32F,Pi.FLOAT_BLEND],hyt={data:{props:[\"radiusPixels\"]}},Up=class extends Ax{constructor(...t){super(...t),G(this,\"state\",void 0)}initializeState(){let{gl:t}=this.context;if(!Dh(t,cyt)){this.setState({supported:!1}),nr.error(\"HeatmapLayer: \".concat(this.id,\" is not supported on this browser\"))();return}super.initializeAggregationLayer(hyt),this.setState({supported:!0,colorDomain:$Q}),this._setupTextureParams(),this._setupAttributes(),this._setupResources()}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState(t){this.state.supported&&(super.updateState(t),this._updateHeatmapState(t))}_updateHeatmapState(t){let{props:r,oldProps:i}=t,s=this._getChangeFlags(t);(s.dataChanged||s.viewportChanged)&&(s.boundsChanged=this._updateBounds(s.dataChanged),this._updateTextureRenderingBounds()),s.dataChanged||s.boundsChanged?(clearTimeout(this.state.updateTimer),this.setState({isWeightMapDirty:!0})):s.viewportZoomChanged&&this._debouncedUpdateWeightmap(),r.colorRange!==i.colorRange&&this._updateColorTexture(t),this.state.isWeightMapDirty&&this._updateWeightmap(),this.setState({zoom:t.context.viewport.zoom})}renderLayers(){if(!this.state.supported)return[];let{weightsTexture:t,triPositionBuffer:r,triTexCoordBuffer:i,maxWeightsTexture:s,colorTexture:n,colorDomain:o}=this.state,{updateTriggers:c,intensity:f,threshold:_,aggregation:w}=this.props,I=this.getSubLayerClass(\"triangle\",mx);return new I(this.getSubLayerProps({id:\"triangle-layer\",updateTriggers:c}),{coordinateSystem:Yr.DEFAULT,data:{attributes:{positions:r,texCoords:i}},vertexCount:4,maxTexture:s,colorTexture:n,aggregationMode:ayt[w]||0,texture:t,intensity:f,threshold:_,colorDomain:o})}finalizeState(t){super.finalizeState(t);let{weightsTransform:r,weightsTexture:i,maxWeightTransform:s,maxWeightsTexture:n,triPositionBuffer:o,triTexCoordBuffer:c,colorTexture:f,updateTimer:_}=this.state;r?.delete(),i?.delete(),s?.delete(),n?.delete(),o?.delete(),c?.delete(),f?.delete(),_&&clearTimeout(_)}_getAttributeManager(){return new $f(this.context.gl,{id:this.props.id,stats:this.context.stats})}_getChangeFlags(t){let r={},{dimensions:i}=this.state;r.dataChanged=this.isAttributeChanged()||this.isAggregationDirty(t,{compareAll:!0,dimension:i.data}),r.viewportChanged=t.changeFlags.viewportChanged;let{zoom:s}=this.state;return(!t.context.viewport||t.context.viewport.zoom!==s)&&(r.viewportZoomChanged=!0),r}_createTextures(){let{gl:t}=this.context,{textureSize:r,format:i,type:s}=this.state;this.setState({weightsTexture:new pi(t,{width:r,height:r,format:i,type:s,...ZB}),maxWeightsTexture:new pi(t,{format:i,type:s,...ZB})})}_setupAttributes(){this.getAttributeManager().add({positions:{size:3,type:5130,accessor:\"getPosition\"},weights:{size:1,accessor:\"getWeight\"}}),this.setState({positionAttributeName:\"positions\"})}_setupTextureParams(){let{gl:t}=this.context,{weightsTextureSize:r}=this.props,i=Math.min(r,my(t,3379)),s=Dh(t,uyt),{format:n,type:o}=GQ({gl:t,floatTargetSupport:s}),c=s?1:1/255;this.setState({textureSize:i,format:n,type:o,weightsScale:c}),s||nr.warn(\"HeatmapLayer: \".concat(this.id,\" rendering to float texture not supported, fallingback to low precession format\"))()}getShaders(t){return super.getShaders(t===\"max-weights-transform\"?{vs:YQ,_fs:QQ}:{vs:qQ,_fs:ZQ})}_createWeightsTransform(t={}){var r;let{gl:i}=this.context,{weightsTransform:s}=this.state,{weightsTexture:n}=this.state;(r=s)===null||r===void 0||r.delete(),s=new rc(i,{id:\"\".concat(this.id,\"-weights-transform\"),elementCount:1,_targetTexture:n,_targetTextureVarying:\"weightsTexture\",...t}),this.setState({weightsTransform:s})}_setupResources(){let{gl:t}=this.context;this._createTextures();let{textureSize:r,weightsTexture:i,maxWeightsTexture:s}=this.state,n=this.getShaders(\"weights-transform\");this._createWeightsTransform(n);let o=this.getShaders(\"max-weights-transform\"),c=new rc(t,{id:\"\".concat(this.id,\"-max-weights-transform\"),_sourceTextures:{inTexture:i},_targetTexture:s,_targetTextureVarying:\"outTexture\",...o,elementCount:r*r});this.setState({weightsTexture:i,maxWeightsTexture:s,maxWeightTransform:c,zoom:null,triPositionBuffer:new Fr(t,{byteLength:48,accessor:{size:3}}),triTexCoordBuffer:new Fr(t,{byteLength:48,accessor:{size:2}})})}updateShaders(t){this._createWeightsTransform(t)}_updateMaxWeightValue(){let{maxWeightTransform:t}=this.state;t.run({parameters:{blend:!0,depthTest:!1,blendFunc:[1,1],blendEquation:32776}})}_updateBounds(t=!1){let{viewport:r}=this.context,i=[r.unproject([0,0]),r.unproject([r.width,0]),r.unproject([r.width,r.height]),r.unproject([0,r.height])].map(c=>c.map(Math.fround)),s=NQ(i),n={visibleWorldBounds:s,viewportCorners:i},o=!1;if(t||!this.state.worldBounds||!UQ(this.state.worldBounds,s)){let c=this._worldToCommonBounds(s),f=this._commonToWorldBounds(c);this.props.coordinateSystem===Yr.LNGLAT&&(f[1]=Math.max(f[1],-85.051129),f[3]=Math.min(f[3],85.051129),f[0]=Math.max(f[0],-360),f[2]=Math.min(f[2],360));let _=this._worldToCommonBounds(f);n.worldBounds=f,n.normalizedCommonBounds=_,o=!0}return this.setState(n),o}_updateTextureRenderingBounds(){let{triPositionBuffer:t,triTexCoordBuffer:r,normalizedCommonBounds:i,viewportCorners:s}=this.state,{viewport:n}=this.context;t.subData(qB(s,3));let o=s.map(c=>jQ(n.projectPosition(c),i));r.subData(qB(o,2))}_updateColorTexture(t){let{colorRange:r}=t.props,{colorTexture:i}=this.state,s=BQ(r,!1,Uint8Array);i?i.setImageData({data:s,width:r.length}):i=new pi(this.context.gl,{data:s,width:r.length,height:1,...ZB}),this.setState({colorTexture:i})}_updateWeightmap(){let{radiusPixels:t,colorDomain:r,aggregation:i}=this.props,{weightsTransform:s,worldBounds:n,textureSize:o,weightsTexture:c,weightsScale:f}=this.state;this.state.isWeightMapDirty=!1;let _=this._worldToCommonBounds(n,{useLayerCoordinateSystem:!0});if(r&&i===\"SUM\"){let{viewport:I}=this.context,R=I.distanceScales.metersPerUnit[2]*(_[2]-_[0])/o;this.state.colorDomain=r.map(N=>N*R*f)}else this.state.colorDomain=r||$Q;let w={radiusPixels:t,commonBounds:_,textureWidth:o,weightsScale:f};s.update({elementCount:this.getNumInstances()}),Sn(this.context.gl,{clearColor:[0,0,0,0]},()=>{s.run({uniforms:w,parameters:{blend:!0,depthTest:!1,blendFunc:[1,1],blendEquation:32774},clearRenderTarget:!0,attributes:this.getAttributes(),moduleSettings:this.getModuleSettings()})}),this._updateMaxWeightValue(),c.setParameters({10240:9729,10241:9729})}_debouncedUpdateWeightmap(t=!1){let{updateTimer:r}=this.state,{debounceTimeout:i}=this.props;t?(r=null,this._updateBounds(!0),this._updateTextureRenderingBounds(),this.setState({isWeightMapDirty:!0})):(this.setState({isWeightMapDirty:!1}),clearTimeout(r),r=setTimeout(this._debouncedUpdateWeightmap.bind(this,!0),i)),this.setState({updateTimer:r})}_worldToCommonBounds(t,r={}){let{useLayerCoordinateSystem:i=!1}=r,[s,n,o,c]=t,{viewport:f}=this.context,{textureSize:_}=this.state,{coordinateSystem:w}=this.props,I=i&&(w===Yr.LNGLAT_OFFSETS||w===Yr.METER_OFFSETS),R=I?f.projectPosition(this.props.coordinateOrigin):[0,0],N=_*oyt/f.scale,j,Q;return i&&!I?(j=this.projectPosition([s,n,0]),Q=this.projectPosition([o,c,0])):(j=f.projectPosition([s,n,0]),Q=f.projectPosition([o,c,0])),VQ([j[0]-R[0],j[1]-R[1],Q[0]-R[0],Q[1]-R[1]],N,N)}_commonToWorldBounds(t){let[r,i,s,n]=t,{viewport:o}=this.context,c=o.unprojectPosition([r,i]),f=o.unprojectPosition([s,n]);return c.slice(0,2).concat(f.slice(0,2))}};G(Up,\"layerName\",\"HeatmapLayer\");G(Up,\"defaultProps\",lyt);var{data:gae,getPosition:_ae,...fyt}=Up.defaultProps,XQ={_validate:!0},dyt={...fyt,...XQ},vS=class extends qi{static defaultProps=dyt;static layerName=\"GeoArrowHeatmapLayer\";renderLayers(){let{data:t}=this.props,r=eo(t,ws.POINT);if(r!==null)return this._renderLayersPoint(r);let i=this.props.getPosition;if(i!==void 0&&ji.isPointVector(i))return this._renderLayersPoint(i);throw new Error(\"getPosition not GeoArrow point\")}_renderLayersPoint(t){let{data:r}=this.props;this.props._validate&&(yr(ji.isPointVector(t)),io(this.props,r));let[i,s]=ro(this.props,[\"getPosition\"]),n=yo(r.data),o=[];for(let c=0;cr.text()),earcutWorkerPool:null}}async initEarcutPool(){if(this.state.earcutWorkerPool)return this.state.earcutWorkerPool;let t=await this.state.earcutWorkerRequest;if(!t||window?.location?.href.startsWith(\"file://\"))return null;try{let r=cX(()=>aX(lX.fromText(t)),8);return this.state.earcutWorkerPool=r,this.state.earcutWorkerPool}catch{return null}}async finalizeState(t){await this.state?.earcutWorkerPool?.terminate(),console.log(\"terminated\")}async updateData(){let{data:t}=this.props,r=await this._updateEarcut(t),i=yo(t.data);this.setState({table:this.props.data,triangles:r,tableOffsets:i})}async _updateEarcut(t){let r=eo(t,ws.POLYGON);if(r!==null)return this._earcutPolygonVector(r);let i=eo(t,ws.MULTIPOLYGON);if(i!==null)return this._earcutMultiPolygonVector(i);let s=this.props.getPolygon;if(s!==void 0&&ji.isPolygonVector(s))return this._earcutPolygonVector(s);if(s!==void 0&&ji.isMultiPolygonVector(s))return this._earcutMultiPolygonVector(s);throw new Error(\"geometryColumn not Polygon or MultiPolygon\")}async _earcutPolygonVector(t){let r=await this.initEarcutPool();if(!r)return this._earcutPolygonVectorMainThread(t);let i=new Array(t.data.length);console.time(\"earcut\");for(let s=0;s{let _=await f(w6(o,c));i[s]=_})}return await r.completed(),console.timeEnd(\"earcut\"),i}_earcutPolygonVectorMainThread(t){let r=new Array(t.data.length);for(let i=0;i{let w=await _(w6(c,f));i[s]=w})}return await r.completed(),console.timeEnd(\"earcut\"),i}_earcutMultiPolygonVectorMainThread(t){let r=new Array(t.data.length);for(let i=0;i{this.table=M2(this.model.get(t))};this.model.on(`change:${t}`,r),this.callbacks.set(`change:${t}`,r)}},jI=class extends gd{static layerType=\"arc\";greatCircle;numSegments;widthUnits;widthScale;widthMinPixels;widthMaxPixels;getSourcePosition;getTargetPosition;getSourceColor;getTargetColor;getWidth;getHeight;getTilt;constructor(t,r){super(t,r),this.initRegularAttribute(\"great_circle\",\"greatCircle\"),this.initRegularAttribute(\"num_segments\",\"numSegments\"),this.initRegularAttribute(\"width_units\",\"widthUnits\"),this.initRegularAttribute(\"width_scale\",\"widthScale\"),this.initRegularAttribute(\"width_min_pixels\",\"widthMinPixels\"),this.initRegularAttribute(\"width_max_pixels\",\"widthMaxPixels\"),this.initVectorizedAccessor(\"get_source_position\",\"getSourcePosition\"),this.initVectorizedAccessor(\"get_target_position\",\"getTargetPosition\"),this.initVectorizedAccessor(\"get_source_color\",\"getSourceColor\"),this.initVectorizedAccessor(\"get_target_color\",\"getTargetColor\"),this.initVectorizedAccessor(\"get_width\",\"getWidth\"),this.initVectorizedAccessor(\"get_height\",\"getHeight\"),this.initVectorizedAccessor(\"get_tilt\",\"getTilt\")}layerProps(){return{data:this.table,getSourcePosition:this.getSourcePosition,getTargetPosition:this.getTargetPosition,...ne(this.greatCircle)&&{greatCircle:this.greatCircle},...ne(this.numSegments)&&{numSegments:this.numSegments},...ne(this.widthUnits)&&{widthUnits:this.widthUnits},...ne(this.widthScale)&&{widthScale:this.widthScale},...ne(this.widthMinPixels)&&{widthMinPixels:this.widthMinPixels},...ne(this.widthMaxPixels)&&{widthMaxPixels:this.widthMaxPixels},...ne(this.getSourceColor)&&{getSourceColor:this.getSourceColor},...ne(this.getTargetColor)&&{getTargetColor:this.getTargetColor},...ne(this.getWidth)&&{getWidth:this.getWidth},...ne(this.getHeight)&&{getHeight:this.getHeight},...ne(this.getTilt)&&{getTilt:this.getTilt}}}render(){return new dS({...this.baseLayerProps(),...this.layerProps()})}},GI=class extends Bg{static layerType=\"bitmap\";image;bounds;desaturate;transparentColor;tintColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"image\",\"image\"),this.initRegularAttribute(\"bounds\",\"bounds\"),this.initRegularAttribute(\"desaturate\",\"desaturate\"),this.initRegularAttribute(\"transparent_color\",\"transparentColor\"),this.initRegularAttribute(\"tint_color\",\"tintColor\")}layerProps(){return{...ne(this.image)&&{image:this.image},...ne(this.bounds)&&{bounds:this.bounds},...ne(this.desaturate)&&{desaturate:this.desaturate},...ne(this.transparentColor)&&{transparentColor:this.transparentColor},...ne(this.tintColor)&&{tintColor:this.tintColor}}}render(){return new Mp({...this.baseLayerProps(),...this.layerProps(),data:void 0,pickable:!1})}},WI=class extends Bg{static layerType=\"bitmap-tile\";data;tileSize;zoomOffset;maxZoom;minZoom;extent;maxCacheSize;maxCacheByteSize;refinementStrategy;maxRequests;desaturate;transparentColor;tintColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"data\",\"data\"),this.initRegularAttribute(\"tile_size\",\"tileSize\"),this.initRegularAttribute(\"zoom_offset\",\"zoomOffset\"),this.initRegularAttribute(\"max_zoom\",\"maxZoom\"),this.initRegularAttribute(\"min_zoom\",\"minZoom\"),this.initRegularAttribute(\"extent\",\"extent\"),this.initRegularAttribute(\"max_cache_size\",\"maxCacheSize\"),this.initRegularAttribute(\"max_cache_byte_size\",\"maxCacheByteSize\"),this.initRegularAttribute(\"refinement_strategy\",\"refinementStrategy\"),this.initRegularAttribute(\"max_requests\",\"maxRequests\"),this.initRegularAttribute(\"desaturate\",\"desaturate\"),this.initRegularAttribute(\"transparent_color\",\"transparentColor\"),this.initRegularAttribute(\"tint_color\",\"tintColor\")}bitmapLayerProps(){return{...ne(this.desaturate)&&{desaturate:this.desaturate},...ne(this.transparentColor)&&{transparentColor:this.transparentColor},...ne(this.tintColor)&&{tintColor:this.tintColor}}}layerProps(){return{data:this.data,...ne(this.tileSize)&&{tileSize:this.tileSize},...ne(this.zoomOffset)&&{zoomOffset:this.zoomOffset},...ne(this.maxZoom)&&{maxZoom:this.maxZoom},...ne(this.minZoom)&&{minZoom:this.minZoom},...ne(this.extent)&&{extent:this.extent},...ne(this.maxCacheSize)&&{maxCacheSize:this.maxCacheSize},...ne(this.maxCacheByteSize)&&{maxCacheByteSize:this.maxCacheByteSize},...ne(this.refinementStrategy)&&{refinementStrategy:this.refinementStrategy},...ne(this.maxRequests)&&{maxRequests:this.maxRequests}}}render(){return new Im({...this.baseLayerProps(),...this.layerProps(),renderSubLayers:t=>{let[r,i]=t.tile.boundingBox;return new Mp(t,{...this.bitmapLayerProps(),data:void 0,image:t.data,bounds:[r[0],r[1],i[0],i[1]]})}})}},HI=class extends gd{static layerType=\"column\";diskResolution;radius;angle;vertices;offset;coverage;elevationScale;filled;stroked;extruded;wireframe;flatShading;radiusUnits;lineWidthUnits;lineWidthScale;lineWidthMinPixels;lineWidthMaxPixels;material;getPosition;getFillColor;getLineColor;getElevation;getLineWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"disk_resolution\",\"diskResolution\"),this.initRegularAttribute(\"radius\",\"radius\"),this.initRegularAttribute(\"angle\",\"angle\"),this.initRegularAttribute(\"vertices\",\"vertices\"),this.initRegularAttribute(\"offset\",\"offset\"),this.initRegularAttribute(\"coverage\",\"coverage\"),this.initRegularAttribute(\"elevation_scale\",\"elevationScale\"),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"stroked\",\"stroked\"),this.initRegularAttribute(\"extruded\",\"extruded\"),this.initRegularAttribute(\"wireframe\",\"wireframe\"),this.initRegularAttribute(\"flat_shading\",\"flatShading\"),this.initRegularAttribute(\"radius_units\",\"radiusUnits\"),this.initRegularAttribute(\"line_width_units\",\"lineWidthUnits\"),this.initRegularAttribute(\"line_width_scale\",\"lineWidthScale\"),this.initRegularAttribute(\"line_width_min_pixels\",\"lineWidthMinPixels\"),this.initRegularAttribute(\"line_width_max_pixels\",\"lineWidthMaxPixels\"),this.initRegularAttribute(\"material\",\"material\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\"),this.initVectorizedAccessor(\"get_elevation\",\"getElevation\"),this.initVectorizedAccessor(\"get_line_width\",\"getLineWidth\")}layerProps(){return{data:this.table,...ne(this.diskResolution)&&{diskResolution:this.diskResolution},...ne(this.radius)&&{radius:this.radius},...ne(this.angle)&&{angle:this.angle},...ne(this.vertices)&&this.vertices!==void 0&&{vertices:this.vertices},...ne(this.offset)&&{offset:this.offset},...ne(this.coverage)&&{coverage:this.coverage},...ne(this.elevationScale)&&{elevationScale:this.elevationScale},...ne(this.filled)&&{filled:this.filled},...ne(this.stroked)&&{stroked:this.stroked},...ne(this.extruded)&&{extruded:this.extruded},...ne(this.wireframe)&&{wireframe:this.wireframe},...ne(this.flatShading)&&{flatShading:this.flatShading},...ne(this.radiusUnits)&&{radiusUnits:this.radiusUnits},...ne(this.lineWidthUnits)&&{lineWidthUnits:this.lineWidthUnits},...ne(this.lineWidthScale)&&{lineWidthScale:this.lineWidthScale},...ne(this.lineWidthMinPixels)&&{lineWidthMinPixels:this.lineWidthMinPixels},...ne(this.lineWidthMaxPixels)&&{lineWidthMaxPixels:this.lineWidthMaxPixels},...ne(this.material)&&{material:this.material},...ne(this.getPosition)&&{getPosition:this.getPosition},...ne(this.getFillColor)&&{getFillColor:this.getFillColor},...ne(this.getLineColor)&&{getLineColor:this.getLineColor},...ne(this.getElevation)&&{getElevation:this.getElevation},...ne(this.getLineWidth)&&{getLineWidth:this.getLineWidth}}}render(){return new pS({...this.baseLayerProps(),...this.layerProps()})}},qI=class extends gd{static layerType=\"heatmap\";radiusPixels;colorRange;intensity;threshold;colorDomain;aggregation;weightsTextureSize;debounceTimeout;getPosition;getWeight;constructor(t,r){super(t,r),this.initRegularAttribute(\"radius_pixels\",\"radiusPixels\"),this.initRegularAttribute(\"color_range\",\"colorRange\"),this.initRegularAttribute(\"intensity\",\"intensity\"),this.initRegularAttribute(\"threshold\",\"threshold\"),this.initRegularAttribute(\"color_domain\",\"colorDomain\"),this.initRegularAttribute(\"aggregation\",\"aggregation\"),this.initRegularAttribute(\"weights_texture_size\",\"weightsTextureSize\"),this.initRegularAttribute(\"debounce_timeout\",\"debounceTimeout\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_weight\",\"getWeight\")}layerProps(){return{data:this.table,...ne(this.radiusPixels)&&{radiusPixels:this.radiusPixels},...ne(this.colorRange)&&{colorRange:this.colorRange},...ne(this.intensity)&&{intensity:this.intensity},...ne(this.threshold)&&{threshold:this.threshold},...ne(this.colorDomain)&&{colorDomain:this.colorDomain},...ne(this.aggregation)&&{aggregation:this.aggregation},...ne(this.weightsTextureSize)&&{weightsTextureSize:this.weightsTextureSize},...ne(this.debounceTimeout)&&{debounceTimeout:this.debounceTimeout},...ne(this.getPosition)&&{getPosition:this.getPosition},...ne(this.getWeight)&&{getWeight:this.getWeight}}}render(){return new vS({...this.baseLayerProps(),...this.layerProps()})}},zS=class extends gd{static layerType=\"path\";widthUnits;widthScale;widthMinPixels;widthMaxPixels;jointRounded;capRounded;miterLimit;billboard;getColor;getWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"width_units\",\"widthUnits\"),this.initRegularAttribute(\"width_scale\",\"widthScale\"),this.initRegularAttribute(\"width_min_pixels\",\"widthMinPixels\"),this.initRegularAttribute(\"width_max_pixels\",\"widthMaxPixels\"),this.initRegularAttribute(\"joint_rounded\",\"jointRounded\"),this.initRegularAttribute(\"cap_rounded\",\"capRounded\"),this.initRegularAttribute(\"miter_limit\",\"miterLimit\"),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_width\",\"getWidth\")}layerProps(){return{data:this.table,...ne(this.widthUnits)&&{widthUnits:this.widthUnits},...ne(this.widthScale)&&{widthScale:this.widthScale},...ne(this.widthMinPixels)&&{widthMinPixels:this.widthMinPixels},...ne(this.widthMaxPixels)&&{widthMaxPixels:this.widthMaxPixels},...ne(this.jointRounded)&&{jointRounded:this.jointRounded},...ne(this.capRounded)&&{capRounded:this.capRounded},...ne(this.miterLimit)&&{miterLimit:this.miterLimit},...ne(this.billboard)&&{billboard:this.billboard},...ne(this.getColor)&&{getColor:this.getColor},...ne(this.getWidth)&&{getWidth:this.getWidth}}}render(){return new gx({...this.baseLayerProps(),...this.layerProps()})}},ZI=class extends gd{static layerType=\"point-cloud\";sizeUnits;pointSize;getColor;getNormal;constructor(t,r){super(t,r),this.initRegularAttribute(\"size_units\",\"sizeUnits\"),this.initRegularAttribute(\"point_size\",\"pointSize\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_normal\",\"getNormal\")}layerProps(){return{data:this.table,...ne(this.sizeUnits)&&{sizeUnits:this.sizeUnits},...ne(this.pointSize)&&{pointSize:this.pointSize},...ne(this.getColor)&&{getColor:this.getColor},...ne(this.getNormal)&&{getNormal:this.getNormal}}}render(){return new xS({...this.baseLayerProps(),...this.layerProps()})}},NS=class extends gd{static layerType=\"scatterplot\";radiusUnits;radiusScale;radiusMinPixels;radiusMaxPixels;lineWidthUnits;lineWidthScale;lineWidthMinPixels;lineWidthMaxPixels;stroked;filled;billboard;antialiasing;getRadius;getFillColor;getLineColor;getLineWidth;constructor(t,r){super(t,r),this.initRegularAttribute(\"radius_units\",\"radiusUnits\"),this.initRegularAttribute(\"radius_scale\",\"radiusScale\"),this.initRegularAttribute(\"radius_min_pixels\",\"radiusMinPixels\"),this.initRegularAttribute(\"radius_max_pixels\",\"radiusMaxPixels\"),this.initRegularAttribute(\"line_width_units\",\"lineWidthUnits\"),this.initRegularAttribute(\"line_width_scale\",\"lineWidthScale\"),this.initRegularAttribute(\"line_width_min_pixels\",\"lineWidthMinPixels\"),this.initRegularAttribute(\"line_width_max_pixels\",\"lineWidthMaxPixels\"),this.initRegularAttribute(\"stroked\",\"stroked\"),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initRegularAttribute(\"antialiasing\",\"antialiasing\"),this.initVectorizedAccessor(\"get_radius\",\"getRadius\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\"),this.initVectorizedAccessor(\"get_line_width\",\"getLineWidth\")}layerProps(){return{data:this.table,...ne(this.radiusUnits)&&{radiusUnits:this.radiusUnits},...ne(this.radiusScale)&&{radiusScale:this.radiusScale},...ne(this.radiusMinPixels)&&{radiusMinPixels:this.radiusMinPixels},...ne(this.radiusMaxPixels)&&{radiusMaxPixels:this.radiusMaxPixels},...ne(this.lineWidthUnits)&&{lineWidthUnits:this.lineWidthUnits},...ne(this.lineWidthScale)&&{lineWidthScale:this.lineWidthScale},...ne(this.lineWidthMinPixels)&&{lineWidthMinPixels:this.lineWidthMinPixels},...ne(this.lineWidthMaxPixels)&&{lineWidthMaxPixels:this.lineWidthMaxPixels},...ne(this.stroked)&&{stroked:this.stroked},...ne(this.filled)&&{filled:this.filled},...ne(this.billboard)&&{billboard:this.billboard},...ne(this.antialiasing)&&{antialiasing:this.antialiasing},...ne(this.getRadius)&&{getRadius:this.getRadius},...ne(this.getFillColor)&&{getFillColor:this.getFillColor},...ne(this.getLineColor)&&{getLineColor:this.getLineColor},...ne(this.getLineWidth)&&{getLineWidth:this.getLineWidth}}}render(){return new BS({...this.baseLayerProps(),...this.layerProps()})}},US=class extends gd{static layerType=\"solid-polygon\";filled;extruded;wireframe;elevationScale;getElevation;getFillColor;getLineColor;constructor(t,r){super(t,r),this.initRegularAttribute(\"filled\",\"filled\"),this.initRegularAttribute(\"extruded\",\"extruded\"),this.initRegularAttribute(\"wireframe\",\"wireframe\"),this.initRegularAttribute(\"elevation_scale\",\"elevationScale\"),this.initVectorizedAccessor(\"get_elevation\",\"getElevation\"),this.initVectorizedAccessor(\"get_fill_color\",\"getFillColor\"),this.initVectorizedAccessor(\"get_line_color\",\"getLineColor\")}layerProps(){return{data:this.table,...ne(this.filled)&&{filled:this.filled},...ne(this.extruded)&&{extruded:this.extruded},...ne(this.wireframe)&&{wireframe:this.wireframe},...ne(this.elevationScale)&&{elevationScale:this.elevationScale},...ne(this.getElevation)&&{getElevation:this.getElevation},...ne(this.getFillColor)&&{getFillColor:this.getFillColor},...ne(this.getLineColor)&&{getLineColor:this.getLineColor}}}render(){return new Px({...this.baseLayerProps(),...this.layerProps()})}},YI=class extends gd{static layerType=\"text\";billboard;sizeScale;sizeUnits;sizeMinPixels;sizeMaxPixels;getBackgroundColor;getBorderColor;getBorderWidth;backgroundPadding;characterSet;fontFamily;fontWeight;lineHeight;outlineWidth;outlineColor;fontSettings;wordBreak;maxWidth;getText;getPosition;getColor;getSize;getAngle;getTextAnchor;getAlignmentBaseline;getPixelOffset;constructor(t,r){super(t,r),this.initRegularAttribute(\"billboard\",\"billboard\"),this.initRegularAttribute(\"size_scale\",\"sizeScale\"),this.initRegularAttribute(\"size_units\",\"sizeUnits\"),this.initRegularAttribute(\"size_min_pixels\",\"sizeMinPixels\"),this.initRegularAttribute(\"size_max_pixels\",\"sizeMaxPixels\"),this.initRegularAttribute(\"background_padding\",\"backgroundPadding\"),this.initRegularAttribute(\"character_set\",\"characterSet\"),this.initRegularAttribute(\"font_family\",\"fontFamily\"),this.initRegularAttribute(\"font_weight\",\"fontWeight\"),this.initRegularAttribute(\"line_height\",\"lineHeight\"),this.initRegularAttribute(\"outline_width\",\"outlineWidth\"),this.initRegularAttribute(\"outline_color\",\"outlineColor\"),this.initRegularAttribute(\"font_settings\",\"fontSettings\"),this.initRegularAttribute(\"word_break\",\"wordBreak\"),this.initRegularAttribute(\"max_width\",\"maxWidth\"),this.initVectorizedAccessor(\"get_background_color\",\"getBackgroundColor\"),this.initVectorizedAccessor(\"get_border_color\",\"getBorderColor\"),this.initVectorizedAccessor(\"get_border_width\",\"getBorderWidth\"),this.initVectorizedAccessor(\"get_text\",\"getText\"),this.initVectorizedAccessor(\"get_position\",\"getPosition\"),this.initVectorizedAccessor(\"get_color\",\"getColor\"),this.initVectorizedAccessor(\"get_size\",\"getSize\"),this.initVectorizedAccessor(\"get_angle\",\"getAngle\"),this.initVectorizedAccessor(\"get_text_anchor\",\"getTextAnchor\"),this.initVectorizedAccessor(\"get_alignment_baseline\",\"getAlignmentBaseline\"),this.initVectorizedAccessor(\"get_pixel_offset\",\"getPixelOffset\")}layerProps(){return{data:this.table,getText:this.getText,...ne(this.billboard)&&{billboard:this.billboard},...ne(this.sizeScale)&&{sizeScale:this.sizeScale},...ne(this.sizeUnits)&&{sizeUnits:this.sizeUnits},...ne(this.sizeMinPixels)&&{sizeMinPixels:this.sizeMinPixels},...ne(this.sizeMaxPixels)&&{sizeMaxPixels:this.sizeMaxPixels},...ne(this.backgroundPadding)&&{backgroundPadding:this.backgroundPadding},...ne(this.characterSet)&&{characterSet:this.characterSet},...ne(this.fontFamily)&&{fontFamily:this.fontFamily},...ne(this.fontWeight)&&{fontWeight:this.fontWeight},...ne(this.lineHeight)&&{lineHeight:this.lineHeight},...ne(this.outlineWidth)&&{outlineWidth:this.outlineWidth},...ne(this.outlineColor)&&{outlineColor:this.outlineColor},...ne(this.fontSettings)&&{fontSettings:this.fontSettings},...ne(this.wordBreak)&&{wordBreak:this.wordBreak},...ne(this.maxWidth)&&{maxWidth:this.maxWidth},...ne(this.getBackgroundColor)&&{getBackgroundColor:this.getBackgroundColor},...ne(this.getBorderColor)&&{getBorderColor:this.getBorderColor},...ne(this.getBorderWidth)&&{getBorderWidth:this.getBorderWidth},...ne(this.getPosition)&&{getPosition:this.getPosition},...ne(this.getColor)&&{getColor:this.getColor},...ne(this.getSize)&&{getSize:this.getSize},...ne(this.getAngle)&&{getAngle:this.getAngle},...ne(this.getTextAnchor)&&{getTextAnchor:this.getTextAnchor},...ne(this.getAlignmentBaseline)&&{getAlignmentBaseline:this.getAlignmentBaseline},...ne(this.getPixelOffset)&&{getPixelOffset:this.getPixelOffset}}}render(){return new FS({...this.baseLayerProps(),...this.layerProps()})}};async function M6(e,t){let r=e.get(\"_layer_type\"),i;switch(r){case jI.layerType:i=new jI(e,t);break;case GI.layerType:i=new GI(e,t);break;case WI.layerType:i=new WI(e,t);break;case HI.layerType:i=new HI(e,t);break;case qI.layerType:i=new qI(e,t);break;case zS.layerType:i=new zS(e,t);break;case ZI.layerType:i=new ZI(e,t);break;case NS.layerType:i=new NS(e,t);break;case US.layerType:i=new US(e,t);break;case YI.layerType:i=new YI(e,t);break;default:throw new Error(`no layer supported for ${r}`)}return await i.loadSubModels(),i}var QI=Symbol.for(\"rowIndex\");function u1t(e){return`\n \n ${Object.keys(e).map(t=>{let r=e[t];return`\n \n \n `}).join(\"\")}\n \n
${t}${r}
`}function hX({object:e}){if(e){if(e[QI]===null||e[QI]===void 0||e[QI]&&e[QI]<0)return null;let t=e.toJSON();return!t||(delete t.geometry,Object.keys(t).length===0)?null:{className:\"lonboard-tooltip\",html:u1t(t),style:{backgroundColor:\"#fff\",boxShadow:\"0 0 15px rgba(0, 0, 0, 0.1)\",color:\"#000\",padding:\"6px\"}}}return null}var $I,h1t=new Uint8Array(16);function E6(){if(!$I&&($I=typeof crypto<\"u\"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$I))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return $I(h1t)}var Ea=[];for(let e=0;e<256;++e)Ea.push((e+256).toString(16).slice(1));function fX(e,t=0){return Ea[e[t+0]]+Ea[e[t+1]]+Ea[e[t+2]]+Ea[e[t+3]]+\"-\"+Ea[e[t+4]]+Ea[e[t+5]]+\"-\"+Ea[e[t+6]]+Ea[e[t+7]]+\"-\"+Ea[e[t+8]]+Ea[e[t+9]]+\"-\"+Ea[e[t+10]]+Ea[e[t+11]]+Ea[e[t+12]]+Ea[e[t+13]]+Ea[e[t+14]]+Ea[e[t+15]]}var f1t=typeof crypto<\"u\"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),P6={randomUUID:f1t};function d1t(e,t,r){if(P6.randomUUID&&!t&&!e)return P6.randomUUID();e=e||{};let i=e.random||(e.rng||E6)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t){r=r||0;for(let s=0;s<16;++s)t[r+s]=i[s];return t}return fX(i)}var I6=d1t;function dX(e,t){let{longitude:r,latitude:i,zoom:s,pitch:n,bearing:o,transitionDuration:c,curve:f,speed:_,screenSpeed:w}=e,I=new $y({...ne(f)&&{curve:f},...ne(_)&&{speed:_},...ne(w)&&{screenSpeed:w}});t({longitude:r,latitude:i,zoom:s,pitch:n,bearing:o,transitionDuration:c,transitionInterpolator:I})}await hH();var p1t={latitude:10,longitude:0,zoom:.5,bearing:0,pitch:0},A1t=\"https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json\";async function m1t(e,t,r,i){let s={},n=()=>i(new Date);for(let o=0;o{switch(Y.type){case\"fly-to\":dX(Y,_);break;default:break}});let[w]=(0,zm.useState)(I6()),[I,R]=(0,zm.useState)({}),[N]=Jd(\"layers\"),[j,Q]=(0,zm.useState)(new Date);(0,zm.useEffect)(()=>{(async()=>{let K=await y3(e.widget_manager,N),J=await m1t(K,N,I,Q);R(J)})().catch(console.error)},[N]);let et=[];for(let Y of Object.values(I))et.push(Y.render());return(0,zm.useEffect)(()=>{if(i)return;let K=document.getElementById(`map-${w}`)?.parentElement;if(K){let J=window.getComputedStyle(K);(!J.height||J.height===\"0px\")&&(K.style.height=\"100%\",K.style.minHeight=\"500px\")}},[]),XI.createElement(\"div\",{id:`map-${w}`,style:{height:i||\"100%\"}},XI.createElement(kD,{initialViewState:[\"longitude\",\"latitude\",\"zoom\"].every(Y=>Object.keys(f).includes(Y))?f:p1t,controller:!0,layers:et,getTooltip:s&&hX,pickingRadius:n,useDevicePixels:ne(o)?o:!0,_typedArrayManagerProps:{overAlloc:1,poolSize:0},parameters:c||{}},XI.createElement($8,{mapStyle:r||A1t})))}var _1t={render:O8(g1t)},Fue=_1t;export{Fue as default};\n/*! Bundled license information:\n\nreact/cjs/react.production.min.js:\n (**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nscheduler/cjs/scheduler.production.min.js:\n (**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nreact-dom/cjs/react-dom.production.min.js:\n (**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *)\n\nhammerjs/hammer.js:\n (*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license *)\n*/\n", "_height": null, "_initial_view_state": { "latitude": 30.27504616188673, "longitude": 21.17458729027878, "zoom": 1 }, "_model_module": "anywidget", "_model_module_version": "0.9.3", "_model_name": "AnyModel", "_view_module": "anywidget", "_view_module_version": "0.9.3", "_view_name": "AnyView", "basemap_style": "https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json", "layers": [ "IPY_MODEL_b056cf22732b4812b4c1e36eb383de40" ], "layout": "IPY_MODEL_bc790cc666834064aa77ec2e042dbd37", "parameters": null, "picking_radius": 5, "show_tooltip": true, "use_device_pixels": null } }, "a85708f3c39b4473b4a807ad0f437056": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "ac0ded776d0c4f74b3fade64c534d77b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatRangeSliderModel", "state": { "_model_name": "FloatRangeSliderModel", "_view_name": "FloatRangeSliderView", "behavior": "drag-tap", "description": "Download: ", "layout": "IPY_MODEL_ccb2e71baa974a16920122a580bb9fc4", "max": 70000, "step": 0.1, "style": "IPY_MODEL_e3bb094541f34a8fb4b93b8a18b503a4", "value": [ 16742.8, 25939.4 ] } }, "b056cf22732b4812b4c1e36eb383de40": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "WidgetModel", "state": { "_layer_type": "scatterplot", "_view_module": null, "_view_module_version": "", "antialiasing": null, "auto_highlight": false, "billboard": null, "extensions": [ "IPY_MODEL_b569b2730e364036bc31ec6c4eacb45a" ], "filled": null, "filter_range": [ [ 16742.8, 25939.4 ], [ 1000, 10000 ], [ 0, 100 ] ], "get_fill_color": [ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} ], "get_filter_value": [ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} ], "get_line_color": null, "get_line_width": null, "get_radius": [ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} ], "line_width_max_pixels": null, "line_width_min_pixels": null, "line_width_scale": null, "line_width_units": null, "opacity": 1, "pickable": true, "radius_max_pixels": null, "radius_min_pixels": 0.1, "radius_scale": null, "radius_units": "meters", "selected_index": null, "stroked": null, "table": [ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} ], "visible": true } }, "b1b59b8ab73b48808c6255f4b63c75b2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "b569b2730e364036bc31ec6c4eacb45a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "WidgetModel", "state": { "_extension_type": "data-filter", "_view_module": null, "_view_module_version": "", "filter_size": 3 } }, "b7e99d0d9e0c46389e6a96d2ac459d2f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DirectionalLinkModel", "state": { "source": [ "IPY_MODEL_351fc3f741564cf983d41de16d75d5a3", "value" ], "target": [ "IPY_MODEL_b056cf22732b4812b4c1e36eb383de40", "filter_range" ] } }, "b9c22a8ce63e40ec9df9f90f35ee9b05": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "bc790cc666834064aa77ec2e042dbd37": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "c30cb2de57fc4f438a2e6450a3eae199": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "ccb2e71baa974a16920122a580bb9fc4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "e3bb094541f34a8fb4b93b8a18b503a4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }