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) 2020 Paul Ramsey * * 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. * **********************************************************************/ #pragma once #include #include #include #include using geos::geom::Location; using geos::geom::Position; namespace geos { // geos. namespace operation { // geos.operation namespace overlayng { // geos.operation.overlayng /** * A label for a pair of {@link OverlayEdge}s which records * the topological information for the edge * in the {@link OverlayGraph} containing it. * The label is shared between both OverlayEdges * of a symmetric pair. * Accessors for orientation-sensitive information * require the orientation of the containing OverlayEdge. * * A label contains the topological {@link geom::Location}s for * the two overlay input geometries. * A labelled input geometry may be either a Line or an Area. * In both cases, the label locations are populated * with the locations for the edge {@link geom::Position}s * once they are computed by topological evaluation. * The label also records the dimension of each geometry, * and in the case of area boundary edges, the role * of the originating ring (which allows * determination of the edge role in collapse cases). * * For each input geometry, the label indicates that an edge * is in one of the following states (identified by the "dim" field). * Each state has some additional information about the edge. * * * A Boundary edge of an input Area (polygon) * * * dim = DIM_BOUNDARY * * locLeft, locRight : the locations of the edge sides for the input Area * * isHole : whether the edge was in a shell or a hole * * * A Collapsed edge of an input Area * (which had two or more parent edges) * * * dim = DIM_COLLAPSE * * locLine : the location of the * edge relative to the input Area * * isHole : whether some * contributing edge was in a shell (false), * or otherwise that all were in holes (true) * * * An edge from an input Line * * * dim = DIM_LINE * * locLine : initialized to LOC_UNKNOWN, to simplify logic. * * * An edge which is Not Part of an input geometry * (and thus must be part of the other geometry). * * * dim = NOT_PART * * Note that: * * * an edge cannot be both a Collapse edge and a Line edge in the same input geometry, * because each input geometry must be homogeneous. * * an edge may be an Boundary edge in one input geometry * and a Line or Collapse edge in the other input. * * @author Martin Davis */ class GEOS_DLL OverlayLabel { private: // Members int aDim = DIM_NOT_PART; bool aIsHole = false; Location aLocLeft = LOC_UNKNOWN; Location aLocRight = LOC_UNKNOWN; Location aLocLine = LOC_UNKNOWN; int bDim = DIM_NOT_PART; bool bIsHole = false; Location bLocLeft = LOC_UNKNOWN; Location bLocRight = LOC_UNKNOWN; Location bLocLine = LOC_UNKNOWN; std::string dimensionSymbol(int dim) const; void locationString(uint8_t index, bool isForward, std::ostream& os) const; public: static constexpr Location LOC_UNKNOWN = Location::NONE; enum { DIM_UNKNOWN = -1, DIM_NOT_PART = -1, DIM_LINE = 1, DIM_BOUNDARY = 2, DIM_COLLAPSE = 3 }; OverlayLabel() : aDim(DIM_NOT_PART) , aIsHole(false) , aLocLeft(LOC_UNKNOWN) , aLocRight(LOC_UNKNOWN) , aLocLine(LOC_UNKNOWN) , bDim(DIM_NOT_PART) , bIsHole(false) , bLocLeft(LOC_UNKNOWN) , bLocRight(LOC_UNKNOWN) , bLocLine(LOC_UNKNOWN) {}; explicit OverlayLabel(uint8_t p_index) : OverlayLabel() { initLine(p_index); }; OverlayLabel(uint8_t p_index, Location p_locLeft, Location p_locRight, bool p_isHole) : OverlayLabel() { initBoundary(p_index, p_locLeft, p_locRight, p_isHole); }; int dimension(uint8_t index) const { return index == 0 ? aDim : bDim; }; void initBoundary(uint8_t index, Location locLeft, Location locRight, bool p_isHole); void initCollapse(uint8_t index, bool p_isHole); void initLine(uint8_t index); void initNotPart(uint8_t index); /** * Sets the line location. * * This is used to set the locations for linear edges * encountered during area label propagation. * * @param index source to update * @param loc location to set */ void setLocationLine(uint8_t index, Location loc); void setLocationAll(uint8_t index, Location loc); void setLocationCollapse(uint8_t index); /* * Tests whether at least one of the sources is a Line. * * @return true if at least one source is a line */ bool isLine() const { return aDim == DIM_LINE || bDim == DIM_LINE; }; bool isLine(uint8_t index) const { return index == 0 ? aDim == DIM_LINE : bDim == DIM_LINE; }; bool isLinear(uint8_t index) const { if (index == 0) { return aDim == DIM_LINE || aDim == DIM_COLLAPSE; } return bDim == DIM_LINE || bDim == DIM_COLLAPSE; }; bool isKnown(uint8_t index) const { if (index == 0) { return aDim != DIM_UNKNOWN; } return bDim != DIM_UNKNOWN; }; bool isNotPart(uint8_t index) const { if (index == 0) { return aDim == DIM_NOT_PART; } return bDim == DIM_NOT_PART; }; bool isBoundaryEither() const { return aDim == DIM_BOUNDARY || bDim == DIM_BOUNDARY; }; bool isBoundaryBoth() const { return aDim == DIM_BOUNDARY && bDim == DIM_BOUNDARY; }; /** * Tests if the label is for a collapsed * edge of an area * which is coincident with the boundary of the other area. * * @return true if the label is for a collapse coincident with a boundary */ bool isBoundaryCollapse() const { if (isLine()) return false; return ! isBoundaryBoth(); }; /** * Tests if a label is for an edge where two * area touch along their boundary. */ bool isBoundaryTouch() const { return isBoundaryBoth() && getLocation(0, Position::RIGHT, true) != getLocation(1, Position::RIGHT, true); }; bool isBoundary(uint8_t index) const { if (index == 0) { return aDim == DIM_BOUNDARY; } return bDim == DIM_BOUNDARY; }; bool isLineLocationUnknown(int index) const { if (index == 0) { return aLocLine == LOC_UNKNOWN; } else { return bLocLine == LOC_UNKNOWN; } }; /** * Tests whether a label is for an edge which is a boundary of one geometry * and not part of the other. */ bool isBoundarySingleton() const { if (aDim == DIM_BOUNDARY && bDim == DIM_NOT_PART) { return true; } if (bDim == DIM_BOUNDARY && aDim == DIM_NOT_PART) { return true; } return false; }; /** * Tests if a line edge is inside * @param index * @return */ bool isLineInArea(int8_t index) const { if (index == 0) { return aLocLine == Location::INTERIOR; } return bLocLine == Location::INTERIOR; }; bool isHole(uint8_t index) const { if (index == 0) { return aIsHole; } else { return bIsHole; } }; bool isCollapse(uint8_t index) const { return dimension(index) == DIM_COLLAPSE; }; Location getLineLocation(uint8_t index) const { if (index == 0) { return aLocLine; } else { return bLocLine; } }; /** * Tests if a label is a Collapse has location INTERIOR, * to at least one source geometry. */ bool isInteriorCollapse() const { if (aDim == DIM_COLLAPSE && aLocLine == Location::INTERIOR) return true; if (bDim == DIM_COLLAPSE && bLocLine == Location::INTERIOR) return true; return false; }; /** * Tests if a label is a Collapse * and NotPart with location INTERIOR for the other geometry. */ bool isCollapseAndNotPartInterior() const; /** * Tests if a line is in the interior of a source geometry. * * @param index source geometry * @return true if the label is a line and is interior */ bool isLineInterior(uint8_t index) const { if (index == 0) { return aLocLine == Location::INTERIOR; } return bLocLine == Location::INTERIOR; }; /** * Gets the location for this label for either * a Boundary or a Line edge. * This supports a simple determination of * whether the edge should be included as a result edge. * * @param index the source index * @param position the position for a boundary label * @param isForward the direction for a boundary label * @return the location for the specified position */ Location getLocationBoundaryOrLine( uint8_t index, int position, bool isForward) const { if (isBoundary(index)) { return getLocation(index, position, isForward); } return getLineLocation(index); }; /** * Gets the linear location for the given source. * * @param index the source index * @return the linear location for the source */ Location getLocation(uint8_t index) const { if (index == 0) { return aLocLine; } return bLocLine; }; Location getLocation(uint8_t index, int position, bool isForward) const; bool hasSides(uint8_t index) const { if (index == 0) { return aLocLeft != LOC_UNKNOWN || aLocRight != LOC_UNKNOWN; } return bLocLeft != LOC_UNKNOWN || bLocRight != LOC_UNKNOWN; }; OverlayLabel copy() const { OverlayLabel lbl = *this; return lbl; }; friend std::ostream& operator<<(std::ostream& os, const OverlayLabel& ol); void toString(bool isForward, std::ostream& os) const; }; } // namespace geos.operation.overlayng } // namespace geos.operation } // namespace geos