Ë
    £èhNp  ã                  óL  — U d dl mZ d dlmZmZmZmZmZ d dlZddl	m
Z
mZmZmZ ddlmZ ddlmZmZmZ ddlmZ d d	lmZmZmZ eegd
f   Zi Zded<    ed«      ZdGd„Zej>                  f	 	 	 	 	 dHd„Z ejB                  f	 	 	 	 	 dId„Z"dJd„Z#d„ Z$ G d„ d«      Z% e%«       Z&ded<    G d„ d
e%«      Z'	 	 	 	 	 	 	 	 dKd„Z(e$ G d„ de'«      «       Z)e$ G d„ de'«      «       Z* G d„ de'«      Z+e$ G d„ d e+«      «       Z,e$ G d!„ d"e+«      «       Z-e$ G d#„ d$e'«      «       Z.e$ G d%„ d&e+«      «       Z/e$ G d'„ d(e+«      «       Z0e$ G d)„ d*e+«      «       Z1e$ G d+„ d,e+«      «       Z2e$ G d-„ d.e+«      «       Z3e$ G d/„ d0e3«      «       Z4e$ G d1„ d2e+«      «       Z5e$ G d3„ d4e+«      «       Z6e$ G d5„ d6e+«      «       Z7e$ G d7„ d8e+«      «       Z8e$ G d9„ d:e+«      «       Z9e$ G d;„ d<e+«      «       Z:e$ G d=„ d>e:«      «       Z;e$ G d?„ d@e+«      «       Z< G dA„ dBejz                  «      Z> G dC„ dDe>«      Z? G dE„ dFe>«      Z@y)Lé    )Úannotations)ÚCallableÚTypeÚAnyÚSequenceÚIteratorNé   )ÚsabÚsatÚconstÚhdr)ÚFeatures)Ú
DataLoaderÚAbstractEntityÚDataExporter)ÚEncodedData)ÚMatrix44ÚVec3ÚNULLVECÚ
AcisEntityzdict[str, Type[AcisEntity]]ÚENTITY_TYPESÚinfc                ó‚   — t        | t        t        f«      rt        j	                  | «      S t
        j	                  | «      S )zÍReturns a list of :class:`Body` entities from :term:`SAT` or :term:`SAB`
    data. Accepts :term:`SAT` data as a single string or a sequence of strings
    and :term:`SAB` data as bytes or bytearray.

    )Ú
isinstanceÚbytesÚ	bytearrayÚ	SabLoaderÚloadÚ	SatLoader)Údatas    ú3lib/python3.12/site-packages/ezdxf/acis/entities.pyr   r      s1   € ô �$œ¤	Ð*Ô+Ü�~‰~˜dÓ#Ð#Ü�>‰>˜$ÓÐó    c                ó  — |t         j                  k  rt        j                  d|› �«      ‚t        j                  t        |«      «      }d|j                  _        | D ]  }|j                  |«       Œ |j                  «       S )aX  Export one or more :class:`Body` entities as text based :term:`SAT` data.

    ACIS version 700 is sufficient for DXF versions R2000, R2004, R2007 and
    R2010, later DXF versions require :term:`SAB` data.

    Raises:
        ExportError: ACIS structures contain unsupported entities
        InvalidLinkStructure: corrupt link structure

    úinvalid ACIS version: F)
r   ÚMIN_EXPORT_VERSIONÚExportErrorr   ÚSatExporterÚ_setup_export_headerÚheaderÚasm_end_markerÚexportÚdump_sat©ÚbodiesÚversionÚexporterÚbodys       r!   Ú
export_satr2      sp   € ð ”×)Ñ)Ò)Ü×ÑÐ"8¸¸	Ð BÓCÐCÜ�‰Ô3°GÓ<Ó=€HØ%*€H‡O�OÔ"ÛˆØ�‰˜Õð à×ÑÓÐr"   c                ó  — |t         j                  k  rt        j                  d|› �«      ‚t        j                  t        |«      «      }d|j                  _        | D ]  }|j                  |«       Œ |j                  «       S )aV  Export one or more :class:`Body` entities as binary encoded :term:`SAB`
    data.

    ACIS version 21800 is sufficient for DXF versions R2013 and R2018, earlier
    DXF versions require :term:`SAT` data.

    Raises:
        ExportError: ACIS structures contain unsupported entities
        InvalidLinkStructure: corrupt link structure

    r$   T)
r   r%   r&   r
   ÚSabExporterr(   r)   r*   r+   Údump_sabr-   s       r!   Ú
export_sabr6   4   sp   € ð ”×)Ñ)Ò)Ü×ÑÐ"8¸¸	Ð BÓCÐCÜ�‰Ô3°GÓ<Ó=€HØ%)€H‡O�OÔ"ÛˆØ�‰˜Õð à×ÑÓÐr"   c                óª   — t        j                  | «      st        j                  d| › �«      ‚t        j                  «       }|j                  | «       |S )Nzinvalid export version: )r   Úis_valid_export_versionr&   r   Ú
AcisHeaderÚset_version)r/   r)   s     r!   r(   r(   K   sH   € Ü×(Ñ(¨Ô1Ü×ÑÐ":¸7¸)Ð DÓEÐEÜ�^‰^Ó€FØ
×Ñ�wÔØ€Mr"   c                ó,   — | t         | j                  <   | S ©N)r   Útype)Úclss    r!   Úregisterr?   S   s   € Ø „L�—‘ÑØ€Jr"   c                  óB   — e Zd ZU ej                  Zded<   edd„«       Zy)Ú
NoneEntityÚstrr=   c                ó<   — | j                   t        j                  k(  S r<   )r=   r   ÚNONE_ENTITY_NAME©Úselfs    r!   Úis_nonezNoneEntity.is_none[   s   € à�y‰yœE×2Ñ2Ñ2Ð2r"   N)ÚreturnÚbool)	Ú__name__Ú
__module__Ú__qualname__r   rD   r=   Ú__annotations__ÚpropertyrG   © r"   r!   rA   rA   X   s$   … Ø×&Ñ&€Dˆ#Ó&àò3ó ñ3r"   rA   r   ÚNONE_REFc                  ó|   — e Zd ZU dZdZded<   dZded<   eZd ed<   dd	„Z	dd
„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zy)r   au  Base ACIS entity which also represents unsupported entities.

    Unsupported entities are entities whose internal structure are not fully
    known or user defined entity types.

    The content of these unsupported entities is not loaded and lost by
    exporting such entities, therefore exporting unsupported entities raises
    an :class:`ExportError` exception.

    zunsupported-entityrB   r=   éÿÿÿÿÚintÚidÚ
attributesc                ó:   — | j                   › d| j                  › d�S )NÚ(Ú))r=   rT   rE   s    r!   Ú__str__zAcisEntity.__str__s   s   € Ø—)‘)�˜A˜dŸg™g˜Y aÐ(Ð(r"   c                óJ   — | j                  ||«       | j                  |«       y)z+Load the ACIS entity content from `loader`.N)Úrestore_commonÚrestore_data©rF   ÚloaderÚentity_factorys      r!   r   zAcisEntity.loadv   s    € à×Ñ˜F NÔ3Ø×Ñ˜&Õ!r"   c                 ó   — y)z'Load the common part of an ACIS entity.NrO   r]   s      r!   r[   zAcisEntity.restore_common{   ó   € àr"   c                 ó   — y)z%Load the data part of an ACIS entity.NrO   ©rF   r^   s     r!   r\   zAcisEntity.restore_data   ra   r"   c                óH   — | j                  |«       | j                  |«       y)z,Write the ACIS entity content to `exporter`.N)Úwrite_commonÚ
write_data©rF   r0   s     r!   r+   zAcisEntity.exportƒ   s   € à×Ñ˜(Ô#Ø�‰˜Õ!r"   c                óF   — t        j                  d| j                  › �«      ‚)zÙWrite the common part of the ACIS entity.

        It is not possible to export :class:`Body` entities including
        unsupported entities, doing so would cause data loss or worse data
        corruption!

        zunsupported entity type: )r   r&   r=   rg   s     r!   re   zAcisEntity.write_commonˆ   s!   € ô ×ÑÐ";¸D¿I¹I¸;Ð GÓHÐHr"   c                 ó   — y)z'Write the data part of the ACIS entity.NrO   rg   s     r!   rf   zAcisEntity.write_data’   ra   r"   c              #  ór   K  — t        | «      j                  «       D ]  }t        |t        «      sŒ|–— Œ y­w)z7Yield all attributes of this entity of type AcisEntity.N)ÚvarsÚvaluesr   r   ©rF   Úes     r!   ÚentitieszAcisEntity.entities–   s,   è ø€ ä�d“×"Ñ"Ö$ˆAÜ˜!œZÕ(Ø“ñ %ùs   ‚-7°7N)rH   rB   ©r^   r   r_   ÚFactoryrH   ÚNone©r^   r   rH   rr   ©r0   r   rH   rr   )rH   zIterator[AcisEntity])rJ   rK   rL   Ú__doc__r=   rM   rT   rP   rU   rY   r   r[   r\   r+   re   rf   ro   rO   r"   r!   r   r   c   sO   … ñ	ð %€Dˆ#Ó$Ø€BˆƒLØ%€J�
Ó%ó)ó"ó
óó"ó
Ióôr"   c                óØ   — |j                  «       }|j                  rt        S |j                  j	                  | «      r ||«      S t        j                  d| › d|j                  › d�«      ‚)Nzexpected entity type 'z', got 'Ú')Úread_ptrÚis_null_ptrrP   ÚnameÚendswithr   ÚParsingError)Úexpected_typer^   r_   Ú
raw_entitys       r!   Úrestore_entityr   �   se   € ð —‘Ó"€JØ×ÒÜˆØ‡�×Ñ Ô.Ù˜jÓ)Ð)ä× Ñ Ø$ ] O°8¸J¿O¹OÐ;LÈAÐNó
ð 	
r"   c                  ó:   — e Zd ZU dZded<    e«       Zdd„Zdd„Zy)	Ú	TransformÚ	transformrB   r=   c                óÒ   — |j                  «       }|j                  dd«       |j                  dd«       |j                  dd«       |j                  d«       t        |«      | _        y )Né   ç        é   é   g      ð?)Úread_transformÚinsertÚappendr   Úmatrix)rF   r^   r    s      r!   r\   zTransform.restore_data°   sQ   € Ø×$Ñ$Ó&ˆà�‰�A�sÔØ�‰�A�sÔØ�‰�B˜ÔØ�‰�CÔÜ˜t“nˆ�r"   c                óî  ‡— d
ˆfd„}g Š| j                   j                  «       D ]#  } ||d   «        ||d   «        ||d   «       Œ% t        ddd«      }| j                   j                  |«      } |t	        |j
                  d«      «       |j                  «       j                  |«       }‰j                  |rdnd«       ‰j                  d«       ‰j                  d	«       |j                  ‰«       y )Nc                ó,   •— ‰j                  | d›«       y )NÚg)rŠ   )Úvaluer    s    €r!   Úwrite_doublez,Transform.write_common.<locals>.write_doubleº   s   ø€ Ø�K‰K˜5 ˜)Õ%r"   r   r	   é   é   ÚrotateÚ	no_rotateÚ
no_reflectÚno_shear)r�   Úfloat)
r‹   Úrowsr   Útransform_directionÚroundÚ	magnitudeÚ	normalizeÚiscloserŠ   Úwrite_transform)rF   r0   r�   ÚrowÚtest_vectorÚresultÚ
is_rotatedr    s          @r!   re   zTransform.write_common¹   sÔ   ø€ õ	&ð ˆØ—;‘;×#Ñ#Ö%ˆCÙ˜˜Q™Ô Ù˜˜Q™Ô Ù˜˜Q™Õ ð &ô ˜1˜a “mˆØ—‘×0Ñ0°Ó=ˆá”U˜6×+Ñ+¨QÓ/Ô0Ø×)Ñ)Ó+×3Ñ3°KÓ@Ð@ˆ
Ø�‰¡
‘H°Ô<Ø�‰�LÔ!Ø�‰�JÔØ× Ñ  Õ&r"   Nrs   rt   )	rJ   rK   rL   r=   rM   r   r‹   r\   re   rO   r"   r!   r�   r�   «   s   … à€Dˆ#ÓÙ‹Z€Fó%ô'r"   r�   c                  ó6   — e Zd ZU dZded<   dd	d„Zd
d„Zdd„Zy)Ú	AsmHeaderÚ	asmheaderrB   r=   c                ó   — || _         y r<   )r/   ©rF   r/   s     r!   Ú__init__zAsmHeader.__init__Ñ   s	   € Øˆ�r"   c                ó.   — |j                  «       | _        y r<   )Úread_strr/   r]   s      r!   r[   zAsmHeader.restore_commonÔ   s   € Ø—‘Ó(ˆ�r"   c                ó:   — |j                  | j                  «       y r<   )Ú	write_strr/   rg   s     r!   re   zAsmHeader.write_common×   ó   € Ø×Ñ˜4Ÿ<™<Õ(r"   N)Ú )r/   rB   rp   rt   )rJ   rK   rL   r=   rM   r¨   r[   re   rO   r"   r!   r¤   r¤   Í   s   … à€Dˆ#Óôó)ô)r"   r¤   c                  ó,   — e Zd ZU eZded<   dd„Zdd„Zy)ÚSupportsPatternÚPatternÚpatternc                ód   — |j                   t        j                  k\  rt        d||«      | _        y y )Nr²   )r/   r   ÚPATTERNr   r²   r]   s      r!   r[   zSupportsPattern.restore_commonÞ   s)   € Ø�>‰>œX×-Ñ-Ò-Ü)¨)°V¸^ÓLˆD�Lð .r"   c                ó:   — |j                  | j                  «       y r<   )Ú	write_ptrr²   rg   s     r!   re   zSupportsPattern.write_commonâ   r­   r"   Nrp   rt   )rJ   rK   rL   rP   r²   rM   r[   re   rO   r"   r!   r°   r°   Û   s   … Ø€GˆWÓóMô)r"   r°   c                  ó„   ‡ — e Zd ZU dZded<   eZded<   eZded<   eZded	<   eZ	d
ed<   dˆ fd„Z
dˆ fd„Zdd„Zdd„Zˆ xZS )ÚBodyr1   rB   r=   r±   r²   ÚLumpÚlumpÚWireÚwirer�   r‚   c                ó’   •— t         ‰| �  ||«       t        d||«      | _        t        d||«      | _        t        d||«      | _        y )Nrº   r¼   r‚   )Úsuperr[   r   rº   r¼   r‚   ©rF   r^   r_   Ú	__class__s      €r!   r[   zBody.restore_commonî   sB   ø€ Ü‰Ñ˜v ~Ô6Ü" 6¨6°>ÓBˆŒ	Ü" 6¨6°>ÓBˆŒ	Ü'¨°V¸^ÓLˆ�r"   c                óÆ   •— t         ‰| �  |«       |j                  | j                  «       |j                  | j                  «       |j                  | j
                  «       y r<   )r¾   re   r¶   rº   r¼   r‚   ©rF   r0   rÀ   s     €r!   re   zBody.write_commonô   sF   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ>™>Õ*r"   c                óæ   — | |_         | j                  j                  r|| _        y| j                  }|j                  j                  s#|j                  }|j                  j                  sŒ#||_        y)z+Append a :class:`Lump` entity as last lump.N)r1   rº   rG   Ú	next_lump)rF   rº   Úcurrent_lumps      r!   Úappend_lumpzBody.append_lumpú   óY   € àˆŒ	Ø�9‰9×ÒØˆD�IàŸ9™9ˆLØ"×,Ñ,×4Ò4Ø+×5Ñ5�ð #×,Ñ,×4Ó4à%)ˆLÕ"r"   c                óŽ   — g }| j                   }|j                  s*|j                  |«       |j                  }|j                  sŒ*|S )z4Returns all linked :class:`Lump` entities as a list.)rº   rG   rŠ   rÄ   )rF   ÚlumpsrÅ   s      r!   rÉ   z
Body.lumps  óB   € àˆØ—y‘yˆØ×&Ò&Ø�L‰L˜Ô&Ø'×1Ñ1ˆLð ×&Ó&ð ˆr"   rp   rt   )rº   r¹   rH   rr   )rH   z
list[Lump])rJ   rK   rL   r=   rM   rP   r²   rº   r¼   r‚   r[   re   rÆ   rÉ   Ú__classcell__©rÀ   s   @r!   r¸   r¸   æ   sJ   ø… à€Dˆ#ÓØ€GˆWÓØ€Dˆ$ÓØ€Dˆ$ÓØ#€IˆyÓ#õMõ+ó	*÷r"   r¸   c                  ó   — e Zd ZU dZded<   y)r»   r¼   rB   r=   N©rJ   rK   rL   r=   rM   rO   r"   r!   r»   r»     s   … à€Dˆ#Ôr"   r»   c                  ó   — e Zd ZU dZded<   y)r±   r²   rB   r=   NrÎ   rO   r"   r!   r±   r±     s   … à€Dˆ#Ôr"   r±   c                  óv   ‡ — e Zd ZU dZded<   eZd ed<   eZded<   eZded<   dˆ fd	„Z	dˆ fd
„Z
dd„Zdd„Zˆ xZS )r¹   rº   rB   r=   rÄ   ÚShellÚshellr¸   r1   c                ó’   •— t         ‰| �  ||«       t        d||«      | _        t        d||«      | _        t        d||«      | _        y )Nrº   rÒ   r1   )r¾   r[   r   rÄ   rÒ   r1   r¿   s      €r!   r[   zLump.restore_common   sB   ø€ Ü‰Ñ˜v ~Ô6Ü'¨°¸ÓGˆŒÜ# G¨V°^ÓDˆŒ
Ü" 6¨6°>ÓBˆ�	r"   c                óÆ   •— t         ‰| �  |«       |j                  | j                  «       |j                  | j                  «       |j                  | j
                  «       y r<   )r¾   re   r¶   rÄ   rÒ   r1   rÂ   s     €r!   re   zLump.write_common&  sF   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4Ÿ>™>Ô*Ø×Ñ˜4Ÿ:™:Ô&Ø×Ñ˜4Ÿ9™9Õ%r"   c                óæ   — | |_         | j                  j                  r|| _        y| j                  }|j                  j                  s#|j                  }|j                  j                  sŒ#||_        y)z-Append a :class:`Shell` entity as last shell.N)rº   rÒ   rG   Ú
next_shell)rF   rÒ   Úcurrent_shells      r!   Úappend_shellzLump.append_shell,  sY   € àˆŒ
Ø�:‰:×ÒØˆD�Jà ŸJ™JˆMØ#×.Ñ.×6Ò6Ø -× 8Ñ 8�ð $×.Ñ.×6Ó6à',ˆMÕ$r"   c                óŽ   — g }| j                   }|j                  s*|j                  |«       |j                  }|j                  sŒ*|S )z5Returns all linked :class:`Shell` entities as a list.)rÒ   rG   rŠ   rÖ   )rF   Úshellsr×   s      r!   rÚ   zLump.shells7  sB   € àˆØŸ
™
ˆØ×'Ò'Ø�M‰M˜-Ô(Ø)×4Ñ4ˆMð  ×'Ó'ð ˆr"   rp   rt   )rÒ   rÑ   rH   rr   )rH   zlist[Shell])rJ   rK   rL   r=   rM   rP   rÄ   rÒ   r1   r[   re   rØ   rÚ   rË   rÌ   s   @r!   r¹   r¹     s@   ø… à€Dˆ#ÓØ€IˆtÓØ€Eˆ5ÓØ€Dˆ$ÓõCõ&ó	-÷r"   r¹   c                  ó’   ‡ — e Zd ZU dZded<   eZd ed<   eZded<   eZded<   eZ	d	ed
<   eZ
ded<   dˆ fd„Zdˆ fd„Zdd„Zdd„Zˆ xZS )rÑ   rÒ   rB   r=   rÖ   ÚSubshellÚsubshellÚFaceÚfacer»   r¼   r¹   rº   c                óÚ   •— t         ‰| �  ||«       t        d||«      | _        t        d||«      | _        t        d||«      | _        t        d||«      | _        t        d||«      | _        y )NrÖ   rÝ   rß   r¼   rº   )r¾   r[   r   rÖ   rÝ   rß   r¼   rº   r¿   s      €r!   r[   zShell.restore_commonJ  sb   ø€ Ü‰Ñ˜v ~Ô6Ü(¨°v¸~ÓNˆŒÜ& z°6¸>ÓJˆŒÜ" 6¨6°>ÓBˆŒ	Ü" 6¨6°>ÓBˆŒ	Ü" 6¨6°>ÓBˆ�	r"   c                ó2  •— t         ‰| �  |«       |j                  | j                  «       |j                  | j                  «       |j                  | j
                  «       |j                  | j                  «       |j                  | j                  «       y r<   )r¾   re   r¶   rÖ   rÝ   rß   r¼   rº   rÂ   s     €r!   re   zShell.write_commonR  sj   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4Ÿ?™?Ô+Ø×Ñ˜4Ÿ=™=Ô)Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ9™9Õ%r"   c                óæ   — | |_         | j                  j                  r|| _        y| j                  }|j                  j                  s#|j                  }|j                  j                  sŒ#||_        y)z+Append a :class:`Face` entity as last face.N)rÒ   rß   rG   Ú	next_face)rF   rß   Úcurrent_faces      r!   Úappend_facezShell.append_faceZ  sY   € àˆŒ
Ø�9‰9×ÒØˆD�IàŸ9™9ˆLØ"×,Ñ,×4Ò4Ø+×5Ñ5�ð #×,Ñ,×4Ó4à%)ˆLÕ"r"   c                óŽ   — g }| j                   }|j                  s*|j                  |«       |j                  }|j                  sŒ*|S )z4Returns all linked :class:`Face` entities as a list.)rß   rG   rŠ   rã   )rF   Úfacesrä   s      r!   rç   zShell.facese  rÊ   r"   rp   rt   )rß   rÞ   rH   rr   )rH   z
list[Face])rJ   rK   rL   r=   rM   rP   rÖ   rÝ   rß   r¼   rº   r[   re   rå   rç   rË   rÌ   s   @r!   rÑ   rÑ   A  sT   ø… à€Dˆ#ÓØ €J�Ó Ø!€HˆhÓ!Ø€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$ÓõCõ&ó	*÷r"   rÑ   c                  ó   — e Zd ZU dZded<   y)rÜ   rÝ   rB   r=   NrÎ   rO   r"   r!   rÜ   rÜ   o  s   … à€Dˆ#Ôr"   rÜ   c                  óž   ‡ — e Zd ZU dZded<   eZded<   eZded<   eZded	<   eZ	d
ed<   eZ
ded<   dZdZdZdˆ fd„Zdˆ fd„Zdd„Zdd„Zˆ xZS )rÞ   rß   rB   r=   z'Face'rã   ÚLoopÚlooprÑ   rÒ   rÜ   rÝ   ÚSurfaceÚsurfaceFc                ó~  •— t         ‰| �  ||«       t        d||«      | _        t        d||«      | _        t        d||«      | _        t        d||«      | _        t        d||«      | _        |j                  dd«      | _	        |j                  dd	«      | _
        | j                  r|j                  d
d«      | _        y y )Nrß   rë   rÒ   rÝ   rí   ÚreversedÚforwardÚdoubleÚsingleÚinÚout)r¾   r[   r   rã   rë   rÒ   rÝ   rí   Ú	read_boolÚsenseÚdouble_sidedÚcontainmentr¿   s      €r!   r[   zFace.restore_common�  s®   ø€ Ü‰Ñ˜v ~Ô6Ü'¨°¸ÓGˆŒÜ" 6¨6°>ÓBˆŒ	Ü# G¨V°^ÓDˆŒ
Ü& z°6¸>ÓJˆŒÜ% i°¸ÓHˆŒØ×%Ñ% j°)Ó<ˆŒ
Ø"×,Ñ,¨X°xÓ@ˆÔØ×ÒØ%×/Ñ/°°eÓ<ˆDÕð r"   c                óú  •— t         ‰| �  |«       |j                  | j                  «       |j                  | j                  «       |j                  | j
                  «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  dd«       |j                  | j                  dd«       | j                  r|j                  | j                  dd«       y y )Nrï   rð   rñ   rò   ró   rô   )r¾   re   r¶   rã   rë   rÒ   rÝ   rí   Ú
write_boolrö   r÷   rø   rÂ   s     €r!   re   zFace.write_common�  s¾   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4Ÿ>™>Ô*Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ:™:Ô&Ø×Ñ˜4Ÿ=™=Ô)Ø×Ñ˜4Ÿ<™<Ô(Ø×Ñ˜DŸJ™J¨
°IÔ>Ø×Ñ˜D×-Ñ-¨x¸ÔBØ×ÒØ×Ñ × 0Ñ 0°$¸Õ>ð r"   c                óæ   — | |_         | j                  j                  r|| _        y| j                  }|j                  j                  s#|j                  }|j                  j                  sŒ#||_        y)z+Append a :class:`Loop` entity as last loop.N)rß   rë   rG   Ú	next_loop)rF   rë   Úcurrent_loops      r!   Úappend_loopzFace.append_loop™  rÇ   r"   c                óŽ   — g }| j                   }|j                  s*|j                  |«       |j                  }|j                  sŒ*|S )z4Returns all linked :class:`Loop` entities as a list.)rë   rG   rŠ   rü   )rF   Úloopsrý   s      r!   r   z
Face.loops¤  rÊ   r"   rp   rt   )rë   rê   rH   rr   )rH   z
list[Loop])rJ   rK   rL   r=   rM   rP   rã   rë   rÒ   rÝ   rí   rö   r÷   rø   r[   re   rþ   r   rË   rÌ   s   @r!   rÞ   rÞ   t  sb   ø… à€Dˆ#ÓØ €IˆvÓ Ø€Dˆ$ÓØ€Eˆ5ÓØ!€HˆhÓ!Ø€GˆWÓà€EØ€LØ€Kõ
=õ
?ó	*÷r"   rÞ   c                  ób   — e Zd ZU dZded<   eefZeefZdd„Zd	d„Z	e
j                  d
d„«       Zy)rì   rí   rB   r=   c                ó˜   — |j                  «       |j                  «       f| _        |j                  «       |j                  «       f| _        y r<   )Úread_intervalÚu_boundsÚv_boundsrc   s     r!   r\   zSurface.restore_data´  s>   € Ø×,Ñ,Ó.°×0DÑ0DÓ0FÐFˆŒØ×,Ñ,Ó.°×0DÑ0DÓ0FÐFˆ�r"   c                óô   — |j                  | j                  d   «       |j                  | j                  d   «       |j                  | j                  d   «       |j                  | j                  d   «       y ©Nr   r	   )Úwrite_intervalr  r  rg   s     r!   rf   zSurface.write_data¸  s^   € Ø×Ñ §¡¨aÑ 0Ô1Ø×Ñ §¡¨aÑ 0Ô1Ø×Ñ §¡¨aÑ 0Ô1Ø×Ñ §¡¨aÑ 0Õ1r"   c                 ó   — y)znReturns the spatial location at the parametric surface for the given
        parameters `u` and `v`.

        NrO   ©rF   ÚuÚvs      r!   ÚevaluatezSurface.evaluate¾  ó   € ð 	r"   Nrs   )r0   r   ©r  r—   r  r—   rH   r   )rJ   rK   rL   r=   rM   ÚINFr  r  r\   rf   ÚabcÚabstractmethodr  rO   r"   r!   rì   rì   ®  sC   … à€Dˆ#ÓØ�Cˆx€HØ�Cˆx€HóGó2ð 	×Ñòó ñr"   rì   c                  óž   ‡ — e Zd ZU dZded<    eddd«      Z eddd«      Z eddd«      Z eddd«      Z	dZ
dˆ fd„Zdˆ fd„Zd	„ Zdd
„Zˆ xZS )ÚPlanezplane-surfacerB   r=   r   r	   Fc                ó(  •— t         ‰| �  ||«       t        |j                  «       «      | _        t        |j                  «       «      | _        t        |j                  «       «      | _        |j                  dd«      | _        | j                  «        y ©NÚ	reverse_vÚ	forward_v)
r¾   r[   r   Ú	read_vec3ÚoriginÚnormalÚu_dirrõ   r  Úupdate_v_dirr¿   s      €r!   r[   zPlane.restore_commonÓ  sq   ø€ Ü‰Ñ˜v ~Ô6Ü˜6×+Ñ+Ó-Ó.ˆŒÜ˜6×+Ñ+Ó-Ó.ˆŒÜ˜&×*Ñ*Ó,Ó-ˆŒ
Ø×)Ñ)¨+°{ÓCˆŒØ×ÑÕr"   c                ó   •— t         ‰| �  |«       |j                  | j                  «       |j	                  | j
                  «       |j	                  | j                  «       |j                  | j                  dd«       y r  )	r¾   re   Úwrite_loc_vec3r  Úwrite_dir_vec3r  r  rú   r  rÂ   s     €r!   re   zPlane.write_commonÛ  s\   ø€ Ü‰Ñ˜XÔ&Ø×Ñ §¡Ô,Ø×Ñ §¡Ô,Ø×Ñ §
¡
Ô+Ø×Ñ˜DŸN™N¨K¸ÕEr"   c                óz   — | j                   j                  | j                  «      }| j                  r| }|| _        y r<   )r  Úcrossr  r  Úv_dir)rF   r#  s     r!   r  zPlane.update_v_dirã  s/   € Ø—‘×!Ñ! $§*¡*Ó-ˆØ�>Š>Ø�FˆEØˆ�
r"   c                óZ   — | j                   | j                  |z  z   | j                  |z  z   S r<   )r  r  r#  r
  s      r!   r  zPlane.evaluateé  s&   € Ø�{‰{˜dŸj™j¨1™nÑ-°·±¸a±Ñ@Ð@r"   rp   rt   r  )rJ   rK   rL   r=   rM   r   r  r  r  r#  r  r[   re   r  r  rË   rÌ   s   @r!   r  r  Ç  s^   ø… à€Dˆ#ÓÙ�!�Q˜‹]€FÙ�!�Q˜‹]€FÙ��A�q‹M€EÙ��A�q‹M€Eð €IõõFò÷Ar"   r  c                  óx   ‡ — e Zd ZU dZded<   eZd ed<   eZded<   eZded<   dˆ fd	„Z	dˆ fd
„Z
ddd„Zdd„Zˆ xZS )rê   rë   rB   r=   rü   ÚCoedgeÚcoedgerÞ   rß   c                ó’   •— t         ‰| �  ||«       t        d||«      | _        t        d||«      | _        t        d||«      | _        y )Nrë   r'  rß   )r¾   r[   r   rü   r'  rß   r¿   s      €r!   r[   zLoop.restore_commonô  sB   ø€ Ü‰Ñ˜v ~Ô6Ü'¨°¸ÓGˆŒÜ$ X¨v°~ÓFˆŒÜ" 6¨6°>ÓBˆ�	r"   c                óÆ   •— t         ‰| �  |«       |j                  | j                  «       |j                  | j                  «       |j                  | j
                  «       y r<   )r¾   re   r¶   rü   r'  rß   rÂ   s     €r!   re   zLoop.write_commonú  sF   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4Ÿ>™>Ô*Ø×Ñ˜4Ÿ;™;Ô'Ø×Ñ˜4Ÿ9™9Õ%r"   c                óP  — t        |«      dkD  sJ ‚|d   | _        |dd }|dd }|r*|j                  |d   «       |j                  d|d   «       n+|j                  t        «       |j                  dt        «       t        |||«      D ]  \  }}}| |_        ||_        ||_        Œ y)z"Set all coedges of a loop at once.r   r	   NrR   )	Úlenr'  rŠ   r‰   rP   Úziprë   Úprev_coedgeÚnext_coedge)rF   ÚcoedgesÚcloseÚnext_coedgesÚprev_coedgesr'  ÚnextÚprevs           r!   Úset_coedgeszLoop.set_coedges   s®   € ä�7‹|˜aÒÐÐØ˜a‘jˆŒØ˜q˜r�{ˆØ˜s �|ˆÙØ×Ñ ¨¡
Ô+Ø×Ñ  7¨2¡;Õ/à×Ñ¤Ô)Ø×Ñ ¤8Ô,ä"% g¨|¸\Ö"JÑˆF�D˜$ØˆFŒKØ!%ˆFÔØ!%ˆFÕñ #Kr"   c                ó°   — g }| j                   }|j                  s;|j                  |«       |j                  }|| j                   u r	 |S |j                  sŒ;|S )z6Returns all linked :class:`Coedge` entities as a list.)r'  rG   rŠ   r.  )rF   r/  Úcurrent_coedges      r!   r/  zLoop.coedges  sV   € àˆàŸ™ˆØ ×(Ò(Ø�N‰N˜>Ô*Ø+×7Ñ7ˆNØ §¡Ñ,ØØˆð !×(Ó(ð
 ˆr"   rp   rt   )T)r/  úlist[Coedge]rH   rr   ©rH   r8  )rJ   rK   rL   r=   rM   rP   rü   r'  rß   r[   re   r5  r/  rË   rÌ   s   @r!   rê   rê   í  s@   ø… à€Dˆ#ÓØ€IˆtÓØ€FˆFÓØ€Dˆ$ÓõCõ&ô&÷$
r"   rê   c                  óÄ   ‡ — e Zd ZU dZded<   eZd ed<   eZd ed<   eZd ed<   eZ	ded<   d	Z
d
ed<   eZded<   dZded<   eZded<   dˆ fd„Zdˆ fd„Zdd„Zdd„Zdd„Zˆ xZS )r&  r'  rB   r=   r.  r-  Úpartner_coedgeÚEdgeÚedgeTrI   rö   rê   rë   r   rS   ÚunknownÚPCurveÚpcurvec                óZ  •— t         ‰| �  ||«       t        d||«      | _        t        d||«      | _        t        d||«      | _        t        d||«      | _        |j                  dd«      | _        t        d||«      | _	        |j                  d¬«      | _        t        d||«      | _        y )	Nr'  r=  rï   rð   rë   r   ©Úskip_satr@  )r¾   r[   r   r.  r-  r;  r=  rõ   rö   rë   Úread_intr>  r@  r¿   s      €r!   r[   zCoedge.restore_common1  s›   ø€ Ü‰Ñ˜v ~Ô6Ü)¨(°F¸NÓKˆÔÜ)¨(°F¸NÓKˆÔÜ,¨X°v¸~ÓNˆÔÜ" 6¨6°>ÓBˆŒ	Ø×%Ñ% j°)Ó<ˆŒ
Ü" 6¨6°>ÓBˆŒ	Ø—‘°�Ó2ˆŒÜ$ X¨v°~ÓFˆ�r"   c                óÈ  •— t         ‰| �  |«       |j                  | j                  «       |j                  | j                  «       |j                  | j
                  «       |j                  | j                  «       |j                  | j                  dd«       |j                  | j                  «       |j                  dd¬«       |j                  | j                  «       y )Nrï   rð   r   TrB  )r¾   re   r¶   r.  r-  r;  r=  rú   rö   rë   Ú	write_intr@  rÂ   s     €r!   re   zCoedge.write_common<  s«   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4×+Ñ+Ô,Ø×Ñ˜4×+Ñ+Ô,Ø×Ñ˜4×.Ñ.Ô/Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜DŸJ™J¨
°IÔ>Ø×Ñ˜4Ÿ9™9Ô%à×Ñ˜1 tÐÔ,Ø×Ñ˜4Ÿ;™;Õ'r"   c                ó¤   — |j                   j                  sJ ‚| j                   }|j                  r| }|| _         ||_         | j                  «        y r<   )r;  rG   Úorder_partner_coedges)rF   r'  r;  s      r!   Úadd_partner_coedgezCoedge.add_partner_coedgeH  sL   € Ø×$Ñ$×,Ò,Ð,Ð,Ø×,Ñ,ˆØ×!Ò!Ø!ˆNà$ˆÔØ .ˆÔØ×"Ñ"Õ$r"   c                 ó   — y r<   rO   rE   s    r!   rH  zCoedge.order_partner_coedgesR  s   € ð 	r"   c                óž   — g }| j                   }|j                  r|S 	 |j                  |«       |j                   }|j                  s|| u r	 |S Œ1)z:Returns all partner coedges of this coedge without `self`.)r;  rG   rŠ   )rF   r/  r;  s      r!   Úpartner_coedgeszCoedge.partner_coedgesW  sW   € à "ˆØ×,Ñ,ˆØ×!Ò!ØˆNØØ�N‰N˜>Ô*Ø+×:Ñ:ˆNØ×%Ò%¨¸4Ñ)?ØØˆð r"   rp   rt   )r'  r&  rH   rr   )rH   rr   r9  )rJ   rK   rL   r=   rM   rP   r.  r-  r;  r=  rö   rë   r>  r@  r[   re   rI  rH  rL  rË   rÌ   s   @r!   r&  r&    s{   ø… à€Dˆ#ÓØ"€K�Ó"Ø"€K�Ó"ð
 &€N�FÓ%Ø€Dˆ$Óð €Eˆ4ÓØ€Dˆ$ÓØ€GˆSÓØ€FˆFÓõ	Gõ
(ó%ó÷
r"   r&  c                  ó¬   ‡ — e Zd ZU dZded<   eZded<   dZded<   eZded	<   dZ	ded
<   eZ
ded<   eZded<   dZded<   dZded<   dˆ fd„Zdˆ fd„Zˆ xZS )r<  r=  rB   r=   ÚVertexÚstart_vertexr…   r—   Ústart_paramÚ
end_vertexÚ	end_paramr&  r'  ÚCurveÚcurveFrI   rö   r>  Ú	convexityc                ó  •— t         ‰| �  ||«       t        d||«      | _        |j                  t
        j                  k\  r|j                  «       | _        t        d||«      | _	        |j                  t
        j                  k\  r|j                  «       | _
        t        d||«      | _        t        d||«      | _        |j                  dd«      | _        |j                  t
        j                  k\  r|j                  «       | _        y y )NÚvertexr'  rT  rï   rð   )r¾   r[   r   rO  r/   r   ÚTOL_MODELINGÚread_doublerP  rQ  rR  r'  rT  rõ   rö   rª   rU  r¿   s      €r!   r[   zEdge.restore_commonw  sÑ   ø€ Ü‰Ñ˜v ~Ô6Ü*¨8°V¸^ÓLˆÔØ�>‰>œX×2Ñ2Ò2Ø%×1Ñ1Ó3ˆDÔÜ(¨°6¸>ÓJˆŒØ�>‰>œX×2Ñ2Ò2Ø#×/Ñ/Ó1ˆDŒNÜ$ X¨v°~ÓFˆŒÜ# G¨V°^ÓDˆŒ
Ø×%Ñ% j°)Ó<ˆŒ
Ø�>‰>œX×2Ñ2Ò2Ø#Ÿ_™_Ó.ˆD�Nð 3r"   c                óØ  •— t         ‰| �  |«       |j                  | j                  «       |j	                  | j
                  «       |j                  | j                  «       |j	                  | j                  «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  dd«       |j                  | j                  «       y )Nrï   rð   )r¾   re   r¶   rO  r�   rP  rQ  rR  r'  rT  rú   rö   r¬   rU  rÂ   s     €r!   re   zEdge.write_common…  s¨   ø€ ä‰Ñ˜XÔ&Ø×Ñ˜4×,Ñ,Ô-Ø×Ñ˜d×.Ñ.Ô/Ø×Ñ˜4Ÿ?™?Ô+Ø×Ñ˜dŸn™nÔ-Ø×Ñ˜4Ÿ;™;Ô'Ø×Ñ˜4Ÿ:™:Ô&Ø×Ñ˜DŸJ™J¨
°IÔ>Ø×Ñ˜4Ÿ>™>Õ*r"   rp   rt   )rJ   rK   rL   r=   rM   rP   rO  rP  rQ  rR  r'  rT  rö   rU  r[   re   rË   rÌ   s   @r!   r<  r<  e  sr   ø… à€Dˆ#Óð $€L�&Ó#Ø€K�Óð "€J�Ó!Ø€IˆuÓØ€FˆFÓØ€Eˆ5Óð €Eˆ4ÓØ€IˆsÓõ/÷
+ñ 
+r"   r<  c                  ó   — e Zd ZU dZded<   y)r?  r@  rB   r=   NrÎ   rO   r"   r!   r?  r?  ’  s   … à€Dˆ#Ôr"   r?  c                  óf   ‡ — e Zd ZU dZded<   eZded<   dZded<   eZd	ed
<   dˆ fd„Z	dˆ fd„Z
ˆ xZS )rN  rW  rB   r=   r<  r=  r   rS   Ú	ref_countÚPointÚpointc                óœ   •— t         ‰| �  ||«       t        d||«      | _        |j	                  d¬«      | _        t        d||«      | _        y )Nr=  r   rB  r_  )r¾   r[   r   r=  rD  r]  r_  r¿   s      €r!   r[   zVertex.restore_commonž  sD   ø€ Ü‰Ñ˜v ~Ô6Ü" 6¨6°>ÓBˆŒ	ØŸ™°!˜Ó4ˆŒÜ# G¨V°^ÓDˆ�
r"   c                óÊ   •— t         ‰| �  |«       |j                  | j                  «       |j	                  | j
                  d¬«       |j                  | j                  «       y )NTrB  )r¾   re   r¶   r=  rF  r]  r_  rÂ   s     €r!   re   zVertex.write_common¤  sK   ø€ Ü‰Ñ˜XÔ&Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ>™>°DÐÔ9Ø×Ñ˜4Ÿ:™:Õ&r"   rp   rt   )rJ   rK   rL   r=   rM   rP   r=  r]  r_  r[   re   rË   rÌ   s   @r!   rN  rN  —  s;   ø… à€Dˆ#ÓØ€Dˆ$ÓØ€IˆsÓØ€Eˆ5ÓõE÷'ñ 'r"   rN  c                  óZ   — e Zd ZU dZded<   eefZdd„Zd	d„Ze	j                  d
d„«       Zy)rS  rT  rB   r=   c                óN   — |j                  «       |j                  «       f| _        y r<   )r  Úboundsrc   s     r!   r\   zCurve.restore_data°  s    € Ø×*Ñ*Ó,¨f×.BÑ.BÓ.DÐDˆ�r"   c                ó|   — |j                  | j                  d   «       |j                  | j                  d   «       y r  )r  rd  rg   s     r!   rf   zCurve.write_data³  s.   € Ø×Ñ §¡¨A¡Ô/Ø×Ñ §¡¨A¡Õ/r"   c                 ó   — y)z_Returns the spatial location at the parametric curve for the given
        parameter.

        NrO   ©rF   Úparams     r!   r  zCurve.evaluate·  r  r"   Nrs   rt   ©rh  r—   rH   r   )rJ   rK   rL   r=   rM   r  rd  r\   rf   r  r  r  rO   r"   r!   rS  rS  «  s:   … à€Dˆ#ÓØ�#ˆX€FóEó0ð 	×Ñòó ñr"   rS  c                  ól   ‡ — e Zd ZU dZded<    eddd«      Z eddd«      Zd	ˆ fd„Zd
ˆ fd„Z	dd„Z
ˆ xZS )ÚStraightCurvezstraight-curverB   r=   r   r	   c                óœ   •— t        |j                  «       «      | _        t        |j                  «       «      | _        t        ‰| �  |«       y r<   )r   r  r  Ú	directionr¾   r\   )rF   r^   rÀ   s     €r!   r\   zStraightCurve.restore_dataÆ  s:   ø€ Ü˜6×+Ñ+Ó-Ó.ˆŒÜ˜f×.Ñ.Ó0Ó1ˆŒÜ‰Ñ˜VÕ$r"   c                ó�   •— |j                  | j                  «       |j                  | j                  «       t        ‰| �  |«       y r<   )r  r  r   rm  r¾   rf   rÂ   s     €r!   rf   zStraightCurve.write_dataË  s4   ø€ Ø×Ñ §¡Ô,Ø×Ñ §¡Ô/Ü‰Ñ˜8Õ$r"   c                ó:   — | j                   | j                  |z  z   S r<   )r  rm  rg  s     r!   r  zStraightCurve.evaluateÐ  s   € Ø�{‰{˜dŸn™n¨uÑ4Ñ5Ð5r"   rs   rt   ri  )rJ   rK   rL   r=   rM   r   r  rm  r\   rf   r  rË   rÌ   s   @r!   rk  rk  À  s6   ø… à €Dˆ#Ó Ù�!�Q˜‹]€FÙ�Q˜˜1“€Iõ%õ
%÷
6r"   rk  c                  ó:   — e Zd ZU dZded<   eZded<   d	d„Zd
d„Zy)r^  r_  rB   r=   r   Úlocationc                ó@   — t        |j                  «       «      | _        y r<   )r   r  rq  rc   s     r!   r\   zPoint.restore_dataÙ  s   € Ü˜V×-Ñ-Ó/Ó0ˆ�r"   c                ó:   — |j                  | j                  «       y r<   )r  rq  rg   s     r!   rf   zPoint.write_dataÜ  s   € Ø×Ñ §¡Õ.r"   Nrs   rt   )	rJ   rK   rL   r=   rM   r   rq  r\   rf   rO   r"   r!   r^  r^  Ô  s    … à€Dˆ#ÓØ€HˆdÓó1ô/r"   r^  c                  ó\   — e Zd ZU ded<   d	d„Zd
d„Zdd„Zd„ Zej                  dd„«       Z
y)Ú
FileLoaderz'Sequence[sat.SatEntity | sab.SabEntity]Úrecordsc                ó    — i | _         || _        y r<   )ro   r/   r§   s     r!   r¨   zFileLoader.__init__ã  s   € Ø/1ˆŒØ#ˆ�r"   c                óÈ   — t        |«      }	 | j                  |   S # t        $ r< t        j	                  |j
                  t        «      «       }|| j                  |<   |cY S w xY wr<   )rT   ro   ÚKeyErrorr   Úgetrz   r   )rF   r~   ÚuidÚentitys       r!   r_   zFileLoader.entity_factoryç  sZ   € Ü�‹nˆð	Ø—=‘= Ñ%Ð%øÜò 	Ü!×%Ñ% j§o¡o´zÓBÓDˆFØ!'ˆD�M‰M˜#ÑØŠMð	ús   � œAA!Á A!c                ó~   — | j                   j                  «       D �cg c]  }t        |t        «      sŒ|‘Œ c}S c c}w r<   )ro   rl   r   r¸   rm   s     r!   r.   zFileLoader.bodiesð  s2   € àŸ=™=×/Ñ/Ô1ÓIÑ1�a´ZÀÄ4Õ5H’Ð1ÑIÐIùÒIs   �:³:c                ó  — | j                   }| j                  D ]m  } ||«      }|j                  |_        |j                  }|j                  s ||«      |_        | j                  |j                  «      }|j                  ||«       Œo y r<   )r_   rv  rT   rU   ry   Úmake_data_loaderr    r   )rF   r_   r~   r|  rU   Údata_loaders         r!   Úload_entitieszFileLoader.load_entitiesô  ss   € Ø×,Ñ,ˆàŸ,œ,ˆJÙ# JÓ/ˆFØ"Ÿ™ˆFŒIØ#×.Ñ.ˆJØ×)Ò)Ù$2°:Ó$>�Ô!Ø×/Ñ/°
·±Ó@ˆKØ�K‰K˜ ^Õ4ñ 'r"   c                 ó   — y r<   rO   ©rF   r    s     r!   r  zFileLoader.make_data_loader   ra   r"   N)r/   rS   )r~   r   rH   r   )rH   ú
list[Body]©r    z	list[Any]rH   r   )rJ   rK   rL   rM   r¨   r_   r.   r�  r  r  r  rO   r"   r!   ru  ru  à  s7   … Ø4Ó4ó$óóJò
5ð 	×Ñòó ñr"   ru  c                  ó:   ‡ — e Zd Zdˆ fd„Zdd„Zedd„«       Zˆ xZS )r   c                ó˜   •— t        j                  |«      }t        ‰| �  |j                  j
                  «       |j                  | _        y r<   )r
   Ú	parse_sabr¾   r¨   r)   r/   ro   rv  ©rF   r    ÚbuilderrÀ   s      €r!   r¨   zSabLoader.__init__  ó5   ø€ Ü—-‘- Ó%ˆÜ‰Ñ˜Ÿ™×/Ñ/Ô0Ø×'Ñ'ˆ�r"   c                óB   — t        j                  || j                  «      S r<   )r
   ÚSabDataLoaderr/   rƒ  s     r!   r  zSabLoader.make_data_loader  ó   € Ü× Ñ   t§|¡|Ó4Ð4r"   c                óR   —  | |«      }|j                  «        |j                  «       S r<   ©r�  r.   ©r>   r    r^   s      r!   r   zSabLoader.load  ó#   € á�T“ˆØ×ÑÔØ�}‰}‹Ðr"   )r    úbytes | bytearrayr…  )r    r“  rH   r„  ©rJ   rK   rL   r¨   r  Úclassmethodr   rË   rÌ   s   @r!   r   r     ó!   ø„ õ(ó
5ð òó ôr"   r   c                  ó:   ‡ — e Zd Zdˆ fd„Zdd„Zedd„«       Zˆ xZS )r   c                ó˜   •— t        j                  |«      }t        ‰| �  |j                  j
                  «       |j                  | _        y r<   )r   Ú	parse_satr¾   r¨   r)   r/   ro   rv  r‰  s      €r!   r¨   zSatLoader.__init__  r‹  r"   c                óB   — t        j                  || j                  «      S r<   )r   ÚSatDataLoaderr/   rƒ  s     r!   r  zSatLoader.make_data_loader  rŽ  r"   c                óR   —  | |«      }|j                  «        |j                  «       S r<   r�  r‘  s      r!   r   zSatLoader.load  r’  r"   )r    ústr | Sequence[str]r…  )r    r�  rH   r„  r”  rÌ   s   @r!   r   r     r–  r"   r   )r    r   rH   r„  )r.   úSequence[Body]r/   rS   rH   z	list[str])r.   rž  r/   rS   rH   r   )rH   zhdr.AcisHeader)r}   rB   r^   r   r_   rq   rH   r   )AÚ
__future__r   Útypingr   r   r   r   r   r  r®   r
   r   r   r   r   Úabstractr   r   r   Ú
type_hintsr   Ú
ezdxf.mathr   r   r   rq   r   rM   r—   r  r   ÚDEFAULT_SAT_VERSIONr2   ÚDEFAULT_SAB_VERSIONr6   r(   r?   rA   rP   r   r   r�   r¤   r°   r¸   r»   r±   r¹   rÑ   rÜ   rÞ   rì   r  rê   r&  r<  r?  rN  rS  rk  r^  ÚABCru  r   r   rO   r"   r!   Ú<module>r§     s?  ðö #ß :Õ :Û 
ç "Ó "Ý ß >Ñ >Ý #ß .Ñ .à
�NÐ# \Ð1Ñ
2€à,.€Ð)Ó .ÙˆEƒl€ó ð ,1×+DÑ+DðØðØ%(ðàóð. ,1×+DÑ+DðØðØ%(ðà
óó.ò÷
3ñ 3ñ “€ˆ#Ó ô7�ô 7ðt
Øð
Ø *ð
Ø<Cð
àó
ð 
ô'�
ó 'ó 
ð'ðB 
ô
)�
ó 
)ó 
ð
)ô)�jô )ð 
ô%ˆ?ó %ó 
ð%ðP 
ôˆ?ó ó 
ðð 
ôˆjó ó 
ðð 
ô$ˆ?ó $ó 
ð$ðN 
ô*ˆOó *ó 
ð*ðZ 
ôˆó ó 
ðð 
ô6ˆ?ó 6ó 
ð6ðr 
ôˆoó ó 
ðð0 
ô"AˆGó "Aó 
ð"AðJ 
ô.ˆ?ó .ó 
ð.ðb 
ôBˆ_ó Bó 
ðBðJ 
ô)+ˆ?ó )+ó 
ð)+ðX 
ôˆ_ó ó 
ðð 
ô'ˆ_ó 'ó 
ð'ð& 
ôˆOó ó 
ðð( 
ô6�Eó 6ó 
ð6ð& 
ô/ˆOó /ó 
ð/ô"�—‘ô "ôJ�
ô ô �
õ r"   