1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
/********************************************************************** * * GEOS - Geometry Engine Open Source * http://geos.osgeo.org * * Copyright (C) 2011 Sandro Santilli * Copyright (C) 2006 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation. * See the COPYING file for more information. * ********************************************************************** * * Last port: operation/union/CascadedPolygonUnion.java r487 (JTS-1.12+) * Includes custom code to deal with https://trac.osgeo.org/geos/ticket/837 * **********************************************************************/ #pragma once #include #include // Forward declarations namespace geos { namespace geom { class GeometryFactory; class Geometry; class Polygon; class MultiPolygon; class Envelope; } } namespace geos { namespace operation { // geos::operation namespace geounion { // geos::operation::geounion /** * \brief * Implementation of UnionStrategy that provides overlay using * the first generation overlay routines. */ class GEOS_DLL ClassicUnionStrategy : public UnionStrategy { public: ClassicUnionStrategy() {}; /** * Computes the union of two geometries. * This method may throw a {@link util::TopologyException} * if one is encountered */ std::unique_ptr Union(const geom::Geometry*, const geom::Geometry*) override; /** * Indicates whether the union function operates using * a floating (full) precision model. * If this is the case, then the unary union code * can make use of the {@link OverlapUnion} performance optimization, * and perhaps other optimizations as well. * Otherwise, the union result extent may not be the same as the extent of the inputs, * which prevents using some optimizations. */ bool isFloatingPrecision() const override; private: /** * An alternative way of unioning polygonal geometries * by using buffer(0). * Only worth using if regular overlay union fails. */ std::unique_ptr unionPolygonsByBuffer(const geom::Geometry* g0, const geom::Geometry* g1); }; /** * \brief * Provides an efficient method of unioning a collection of polygonal geometries. * * This algorithm is faster and likely more robust than the simple iterated * approach of repeatedly unioning each polygon to a result geometry. * * The `buffer(0)` trick is sometimes faster, but can be less robust and * can sometimes take an exceptionally long time to complete. * This is particularly the case where there is a high degree of overlap * between the polygons. In this case, `buffer(0)` is forced to compute * with *all* line segments from the outset, whereas cascading can eliminate * many segments at each stage of processing. * The best case for buffer(0) is the trivial case where there is `no` overlap * between the input geometries. However, this case is likely rare in practice. */ class GEOS_DLL CascadedPolygonUnion { private: std::vector* inputPolys; geom::GeometryFactory const* geomFactory; /** * The effectiveness of the index is somewhat sensitive * to the node capacity. * Testing indicates that a smaller capacity is better. * For an STRtree, 4 is probably a good number (since * this produces 2x2 "squares"). */ static int const STRTREE_NODE_CAPACITY = 4; /** \brief * Computes a [Geometry](@ref geom::Geometry) containing only polygonal components. * * Extracts the [Polygons](@ref geom::Polygon) from the input * and returns them as an appropriate polygonal geometry. * * If the input is already `Polygonal`, it is returned unchanged. * * A particular use case is to filter out non-polygonal components * returned from an overlay operation. * * @param g the geometry to filter * @return a Polygonal geometry */ static std::unique_ptr restrictToPolygons(std::unique_ptr g); public: CascadedPolygonUnion(); /** \brief * Computes the union of a collection of polygonal [Geometrys](@ref geom::Geometry). * * @param polys a collection of polygonal [Geometrys](@ref geom::Geometry). * ownership of elements *and* vector are left to caller. */ static std::unique_ptr Union(std::vector* polys); static std::unique_ptr Union(std::vector* polys, UnionStrategy* unionFun); /** \brief * Computes the union of a set of polygonal [Geometrys](@ref geom::Geometry). * * @tparam T an iterator yielding something castable to const Polygon * * @param start start iterator * @param end end iterator * @param unionStrategy strategy to apply */ template static std::unique_ptr Union(T start, T end, UnionStrategy *unionStrategy) { std::vector polys; for(T i = start; i != end; ++i) { const geom::Polygon* p = dynamic_cast(*i); polys.push_back(const_cast(p)); } return Union(&polys, unionStrategy); } /** \brief * Computes the union of a collection of polygonal [Geometrys](@ref geom::Geometry). * * @param polys a collection of polygonal [Geometrys](@ref geom::Geometry). * Ownership of elements *and* vector are left to caller. */ static std::unique_ptr Union(const geom::MultiPolygon* polys); /** \brief * Creates a new instance to union the given collection of * [Geometrys](@ref geom::Geometry). * * @param polys a collection of polygonal [Geometrys](@ref geom::Geometry). * Ownership of elements *and* vector are left to caller. */ CascadedPolygonUnion(std::vector* polys) : inputPolys(polys) , geomFactory(nullptr) , unionFunction(&defaultUnionFunction) {} CascadedPolygonUnion(std::vector* polys, UnionStrategy* unionFun) : inputPolys(polys) , geomFactory(nullptr) , unionFunction(unionFun) {} /** \brief * Computes the union of the input geometries. * * @return the union of the input geometries * @return `null` if no input geometries were provided */ std::unique_ptr Union(); private: UnionStrategy* unionFunction; ClassicUnionStrategy defaultUnionFunction; /** * Unions a section of a list using a recursive binary union on each half * of the section. * * @param geoms the list of geometries containing the section to union * @param start the start index of the section * @param end the index after the end of the section * @return the union of the list section */ std::unique_ptr binaryUnion(const std::vector & geoms, std::size_t start, std::size_t end); /** * Computes the union of two geometries, * either of both of which may be null. * * @param g0 a Geometry * @param g1 a Geometry * @return the union of the input(s) * @return null if both inputs are null */ std::unique_ptr unionSafe(const geom::Geometry* g0, const geom::Geometry* g1) const; std::unique_ptr unionSafe(std::unique_ptr &&, std::unique_ptr &&); /** * Encapsulates the actual unioning of two polygonal geometries. * * @param g0 * @param g1 * @return */ std::unique_ptr unionActual(const geom::Geometry* g0, const geom::Geometry* g1) const; std::unique_ptr unionActual(std::unique_ptr &&, std::unique_ptr &&) const; }; } // namespace geos::operation::union } // namespace geos::operation } // namespace geos