Ë
    ¹ûàg6  ã                   óJ   — d dl mZ d dlmZ d dlmZ d dlmZ  G d„ de«      Z	y)é    )Ú
prototypes)ÚGEOSGeometry)ÚGEOM_PTR)Ú
LinearRingc                   óì   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zed„ «       Zd„ Z	d„ Z
	 dd„Zd	„ Zd
„ Zd„ Zej                   Zej$                  Zed„ «       Zd„ Zd„ Z eee«      ZeZed„ «       ZeZed„ «       Zˆ xZS )ÚPolygoné   c                 óV  •— |s!t        ‰| �  | j                  dd«      fi |¤Ž y|^}}t        |«      }|dk(  rIt	        |d   t
        t        f«      r0|d   sd}d}n&t	        |d   d   t        «      r|d   }t        |«      }| j                  |dz   |g|¢«      }t        ‰| �  |fi |¤Ž y)aÓ  
        Initialize on an exterior ring and a sequence of holes (both
        instances may be either LinearRing instances, or a tuple/list
        that may be constructed into a LinearRing).

        Examples of initialization, where shell, hole1, and hole2 are
        valid LinearRing geometries:
        >>> from django.contrib.gis.geos import LinearRing, Polygon
        >>> shell = hole1 = hole2 = LinearRing()
        >>> poly = Polygon(shell, hole1, hole2)
        >>> poly = Polygon(shell, (hole1, hole2))

        >>> # Example where a tuple parameters are used:
        >>> poly = Polygon(((0, 0), (0, 10), (10, 10), (10, 0), (0, 0)),
        ...                ((4, 4), (4, 6), (6, 6), (6, 4), (4, 4)))
        r   Nr	   © )ÚsuperÚ__init__Ú_create_polygonÚlenÚ
isinstanceÚtupleÚlistr   )ÚselfÚargsÚkwargsÚext_ringÚ
init_holesÚn_holesÚpolygonÚ	__class__s          €ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/contrib/gis/geos/polygon.pyr   zPolygon.__init__
   s¿   ø€ ñ" Ü‰GÑ˜T×1Ñ1°!°TÓ:ÑE¸fÒEØð !%Ðˆ�:Ü�j“/ˆð �aŠ<œJ z°!¡}´u¼d°mÔDØ˜a’=Ø�
Ø‘Ü˜J q™M¨!Ñ,¬jÔ9Ø'¨™]�
Ü˜j›/�à×&Ñ& w°¡{°XÐ4KÀ
Ð4KÓLˆÜ‰Ñ˜Ñ+ FÓ+ó    c              #   óL   K  — t        t        | «      «      D ]	  }| |   –— Œ y­w)z&Iterate over each ring in the polygon.N)Úranger   )r   Úis     r   Ú__iter__zPolygon.__iter__0   s'   è ø€ ä”s˜4“yÓ!ò 	ˆAØ�q‘'‹Mñ	ùs   ‚"$c                 ó    — | j                   dz   S )z+Return the number of rings in this Polygon.r	   )Únum_interior_rings©r   s    r   Ú__len__zPolygon.__len__5   s   € à×&Ñ&¨Ñ*Ð*r   c                 óÖ   — |\  }}}}|D ]D  }t        |t        t        f«      rŒt        d|›d|›d|›d|›d|›d|›d|›d|›d|›d|›d�«      c S  t	        ||f||f||f||f||ff«      S )z2Construct a Polygon from a bounding box (4-tuple).z	POLYGON((ú z, z)))r   ÚfloatÚintr   r   )ÚclsÚbboxÚx0Úy0Úx1Úy1Úzs          r   Ú	from_bboxzPolygon.from_bbox9   s�   € ð ‰ˆˆB��BØò 	ˆAÜ˜a¤%¬ Õ.Ý#âš2šr¢2¢rª2ªr²2²rº2ð?óò ð	ô ˜˜R˜ 2 r (¨R°¨H°r¸2°hÀÀRÀÐIÓJÐJr   c                 ó   — |st        j                  «       S g }|D ]D  }t        |t        «      r|j	                  |«       Œ%|j	                  | j                  |«      «       ŒF | j                  |j                  d«      «      }|dz
  }|r)t        |z  |D �cg c]  }| j                  |«      ‘Œ c}Ž }nd }t        j                  |||«      S c c}w )Nr   r	   )	ÚcapiÚcreate_empty_polygonr   r   ÚappendÚ_construct_ringÚ_cloneÚpopÚcreate_polygon)r   ÚlengthÚitemsÚringsÚrÚshellr   Úholes_params           r   r   zPolygon._create_polygonF   s¼   € ñ
 Ü×,Ñ,Ó.Ð.àˆØò 	6ˆAÜ˜!œXÔ&Ø—‘˜Q•à—‘˜T×1Ñ1°!Ó4Õ5ð		6ð —‘˜EŸI™I a›LÓ)ˆà˜1‘*ˆÙÜ# gÑ-ÈÖ0OÀA°·±¸QµÒ0OÐP‰KàˆKä×"Ñ" 5¨+°wÓ?Ð?ùò	 1Ps   ÂCc                 óŠ   — t        |t        «      rt        j                  |«      S t        j                  |j                  «      S ©N)r   r   r2   Ú
geom_cloneÚptr)r   Úgs     r   r6   zPolygon._clone_   s.   € Ü�aœÔ"Ü—?‘? 1Ó%Ð%ä—?‘? 1§5¡5Ó)Ð)r   c                 ón   — t        |t        «      r|S 	 t        |«      S # t        $ r t        |«      ‚w xY w)z1Try to construct a ring from the given parameter.)r   r   Ú	TypeError)r   ÚparamÚmsgs      r   r5   zPolygon._construct_ringe   s<   € ô �eœZÔ(ØˆLð	!Ü˜eÓ$Ð$øÜò 	!Ü˜C“.Ð ð	!ús   ”
 Ÿ4c                 óž   — | j                   }| j                  }| j                  ||«      | _         |r|| _        t        j                  |«       y r@   )rB   Úsridr   r2   Údestroy_geom)r   r9   r:   Úprev_ptrrI   s        r   Ú	_set_listzPolygon._set_listu   sB   € ð —8‘8ˆØ�y‰yˆØ×'Ñ'¨°Ó6ˆŒÙØˆDŒIÜ×Ñ˜(Õ#r   c                 ó�   — |dk(  rt        j                  | j                  «      S t        j                  | j                  |dz
  «      S )a7  
        Return the ring at the specified index. The first index, 0, will
        always return the exterior ring.  Indices > 0 will return the
        interior ring at the given index (e.g., poly[1] and poly[2] would
        return the first and second interior ring, respectively).

        CAREFUL: Internal/External are not the same as Interior/Exterior!
        Return a pointer from the existing geometries for use internally by the
        object's methods. _get_single_external() returns a clone of the same
        geometry for use by external code.
        r   r	   )r2   Úget_extringrB   Úget_intring©r   Úindexs     r   Ú_get_single_internalzPolygon._get_single_internal   s=   € ð �AŠ:Ü×#Ñ# D§H¡HÓ-Ð-ô ×#Ñ# D§H¡H¨e°a©iÓ8Ð8r   c                 ót   — t        t        j                  | j                  |«      «      | j                  ¬«      S )N)rI   )r   r2   rA   rR   rI   rP   s     r   Ú_get_single_externalzPolygon._get_single_external‘   s,   € ÜÜ�O‰O˜D×5Ñ5°eÓ<Ó=ÀDÇIÁIô
ð 	
r   c                 ó@   — t        j                  | j                  «      S )z$Return the number of interior rings.)r2   Ú
get_nringsrB   r#   s    r   r"   zPolygon.num_interior_ringsš   s   € ô �‰˜tŸx™xÓ(Ð(r   c                 ó   — | d   S )z%Get the exterior ring of the Polygon.r   r   r#   s    r   Ú_get_ext_ringzPolygon._get_ext_ring    s   € à�A‰wˆr   c                 ó   — || d<   y)z%Set the exterior ring of the Polygon.r   Nr   )r   Úrings     r   Ú_set_ext_ringzPolygon._set_ext_ring¤   s   € àˆˆQŠr   c                 óP   ‡ — t        ˆ fd„t        t        ‰ «      «      D «       «      S )z,Get the tuple for each ring in this Polygon.c              3   ó<   •K  — | ]  }‰|   j                   –— Œ y ­wr@   )r   ©Ú.0r   r   s     €r   ú	<genexpr>z Polygon.tuple.<locals>.<genexpr>¯   s   øè ø€ Ò= q�T˜!‘W—]•]Ñ=ùs   ƒ)r   r   r   r#   s   `r   r   zPolygon.tuple¬   s   ø€ ô Ó=¬E´#°d³)Ó,<Ô=Ó=Ð=r   c                 óŠ   ‡ — dj                  ˆ fd„t        ‰ j                  «      D «       «      }d‰ d   j                  ›d|›d�S )z.Return the KML representation of this Polygon.Ú c              3   óH   •K  — | ]  }d ‰|dz      j                   z  –— Œ y­w)z%<innerBoundaryIs>%s</innerBoundaryIs>r	   N)Úkmlr^   s     €r   r`   zPolygon.kml.<locals>.<genexpr>¶   s*   øè ø€ ò 
àð 4°d¸1¸q¹5±k·o±oÕEñ
ùs   ƒ"z<Polygon><outerBoundaryIs>r   z</outerBoundaryIs>z
</Polygon>)Újoinr   r"   rd   )r   Ú	inner_kmls   ` r   rd   zPolygon.kml³   sE   ø€ ð —G‘Gó 
ä˜4×2Ñ2Ó3ô
ó 
‰	ð
 �‰G�K‹KÚð
ð 	
r   )zYParameter must be a sequence of LinearRings or objects that can initialize to LinearRings)Ú__name__Ú
__module__Ú__qualname__Ú
_minlengthr   r    r$   Úclassmethodr0   r   r6   r5   rL   rR   rT   r   Ú_set_single_rebuildÚ_set_singleÚ_assign_extended_slice_rebuildÚ_assign_extended_sliceÚpropertyr"   rX   r[   Úexterior_ringr=   r   Úcoordsrd   Ú__classcell__)r   s   @r   r   r      sÇ   ø„ Ø€Jô$,òLò
+ð ñ	Kó ð	Kò@ò2*ð(ó	!ò $ò9ò$
ð
 ×2Ñ2€KØ)×HÑHÐð ñ)ó ð)ò
òñ
 ˜]¨MÓ:€MØ€Eàñ>ó ð>ð €Fàñ	
ó ô	
r   r   N)
Údjango.contrib.gis.geosr   r2   Ú django.contrib.gis.geos.geometryr   Údjango.contrib.gis.geos.libgeosr   Ú"django.contrib.gis.geos.linestringr   r   r   r   r   ú<module>rx      s   ðÝ 6Ý 9Ý 4Ý 9ôv
ˆlõ v
r   