Ë
    7^(h  ã                   ó\   — d dl mZ d dlmZ d dlmZ d dlmZ d„ Z G d„ de«      Z	d„ Z
d	„ Zy
)é    )Ú
MatrixExpr)ÚBasic)ÚTuple)Úfloorc                 ó¶  — t        | t        «      r#| j                  | j                  | j                  f} t        | t
        t        t        f«      s| dk  dk(  r| |z  } | | dz   df} t        | «      } t        | «      dk(  r| j                  d«       | \  }}}|xs d}|€|}|dk  dk(  r||z  }|dk  dk(  r||z  }|xs d}||z
  |z  dk  dk(  r
t        «       ‚|||fS )Nr   Té   é   )Ú
isinstanceÚsliceÚstartÚstopÚstepÚtupleÚlistr   ÚlenÚappendÚ
IndexError)ÚiÚ
parentsizer   r   r   s        ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/matrices/expressions/slice.pyÚ	normalizer      sö   € Ü�!”UÔØ�W‰W�a—f‘f˜aŸf™fÐ%ˆÜ�aœ%¤¤uÐ-Ô.Ø�‰E�dŠ?Ø�‰OˆAØ��!‘�QˆKˆÜˆQ‹€AÜ
ˆ1ƒv�‚{Ø	�‰�ŒØÑ€Eˆ4�ØŠJ�Q€EØ€|ØˆØ�‰	�dÒØ�ÑˆØˆq‰�TÒØ�
ÑˆØŠ9�1€Dà	�‰˜Ñ Ñ! dÒ*Ü‹lÐà�4˜ÐÐó    c                   ór   — e Zd ZdZ ed„ «      Z ed„ «      Z ed„ «      Zd„ Zed„ «       Z	d„ Z
ed„ «       Zy	)
ÚMatrixSlicea‡   A MatrixSlice of a Matrix Expression

    Examples
    ========

    >>> from sympy import MatrixSlice, ImmutableMatrix
    >>> M = ImmutableMatrix(4, 4, range(16))
    >>> M
    Matrix([
    [ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [ 8,  9, 10, 11],
    [12, 13, 14, 15]])

    >>> B = MatrixSlice(M, (0, 2), (2, 4))
    >>> ImmutableMatrix(B)
    Matrix([
    [2, 3],
    [6, 7]])
    c                 ó    — | j                   d   S )Nr   ©Úargs©Úselfs    r   ú<lambda>zMatrixSlice.<lambda>4   s   €  4§9¡9¨Q¡<€ r   c                 ó    — | j                   d   S )Nr   r   r   s    r   r    zMatrixSlice.<lambda>5   ó   €  T§Y¡Y¨q¡\€ r   c                 ó    — | j                   d   S )Nr	   r   r   s    r   r    zMatrixSlice.<lambda>6   r"   r   c                 óì  — t        ||j                  d   «      }t        ||j                  d   «      }t        |«      t        |«      cxk(  rdk(  st        «       ‚ t        «       ‚d|d   kD  dk(  s;|j                  d   |d   k  dk(  s#d|d   kD  dk(  s|j                  d   |d   k  dk(  r
t        «       ‚t	        |t
        «      rt        |||«      S t        j                  | |t        |Ž t        |Ž «      S )Nr   r   é   T)
r   Úshaper   r   r
   r   Úmat_slice_of_slicer   Ú__new__r   )ÚclsÚparentÚrowsliceÚcolslices       r   r(   zMatrixSlice.__new__8   sæ   € Ü˜X v§|¡|°A¡Ó7ˆÜ˜X v§|¡|°A¡Ó7ˆÜ�H“¤ X£Ô3°!Ò3Ü“,Ðð 4Ü“,ÐØ�˜!‘‰_ Ò%Ø�\‰\˜!‰_˜x¨™{Ñ*¨tÒ3Ø�˜!‘‰_ Ò%Ø�\‰\˜!‰_˜x¨™{Ñ*¨tÒ3Ü“,ÐÜ�fœkÔ*Ü% f¨h¸ÓAÐAÜ�}‰}˜S &¬%°Ð*:¼EÀ8Ð<LÓMÐMr   c                 óB  — | j                   d   | j                   d   z
  }| j                   d   dk(  r|nt        || j                   d   z  «      }| j                  d   | j                  d   z
  }| j                  d   dk(  r|nt        || j                  d   z  «      }||fS )Nr   r   r	   )r+   r   r,   )r   ÚrowsÚcolss      r   r&   zMatrixSlice.shapeF   s˜   € à�}‰}˜QÑ $§-¡-°Ñ"2Ñ2ˆØ—}‘} QÑ'¨1Ò,‰t´%¸¸T¿]¹]È1Ñ=MÑ8MÓ2NˆØ�}‰}˜QÑ $§-¡-°Ñ"2Ñ2ˆØ—}‘} QÑ'¨1Ò,‰t´%¸¸T¿]¹]È1Ñ=MÑ8MÓ2NˆØ�TˆzÐr   c                 ó¾   —  | j                   j                  || j                  d   z  | j                  d   z   || j                  d   z  | j                  d   z   fi |¤ŽS )Nr	   r   )r*   Ú_entryr+   r,   )r   r   ÚjÚkwargss       r   r1   zMatrixSlice._entryN   s`   € Ø!ˆt�{‰{×!Ñ! ! D§M¡M°!Ñ$4Ñ"4°t·}±}ÀQÑ7GÑ"GØ"# D§M¡M°!Ñ$4Ñ"4°t·}±}ÀQÑ7GÑ"Gñ,à$*ñ,ð 	,r   c                 ó4   — | j                   | j                  k(  S ©N)r+   r,   r   s    r   Úon_diagzMatrixSlice.on_diagS   s   € à�}‰} §¡Ñ-Ð-r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr*   r+   r,   r(   r&   r1   r6   © r   r   r   r      s]   „ ññ( Ñ/Ó0€FÙÑ1Ó2€HÙÑ1Ó2€HòNð ñó ðò,ð
 ñ.ó ñ.r   r   c                 ól   — | \  }}}|\  }}}|||z  z   }||z  }	|||z  z   }
|
|kD  r
t        «       ‚||
|	fS r5   )r   )ÚsÚtÚstart1Ústop1Ústep1Ústart2Ústop2Ústep2r   r   r   s              r   Úslice_of_slicerF   X   s[   € ØÑ€FˆE�5ØÑ€FˆE�5à�V˜E‘\Ñ!€EØ�5‰=€DØ�E˜%‘KÑ€Dàˆe‚|Ü‹lÐà�$˜ÐÐr   c                 óˆ   — t        | j                  |«      }t        | j                  |«      }t        | j                  ||«      S )zË Collapse nested matrix slices

    >>> from sympy import MatrixSymbol
    >>> X = MatrixSymbol('X', 10, 10)
    >>> X[:, 1:5][5:8, :]
    X[5:8, 1:5]
    >>> X[1:9:2, 2:6][1:3, 2]
    X[3:7:2, 4:5]
    )rF   r+   r,   r   r*   )r*   r+   r,   ÚrowÚcols        r   r'   r'   f   s7   € ô ˜Ÿ™¨(Ó
3€CÜ
˜Ÿ™¨(Ó
3€CÜ�v—}‘} c¨3Ó/Ð/r   N)Ú"sympy.matrices.expressions.matexprr   Úsympy.core.basicr   Úsympy.core.containersr   Ú#sympy.functions.elementary.integersr   r   r   rF   r'   r<   r   r   ú<module>rN      s-   ðÝ 9Ý "Ý 'Ý 5òô26.�*ô 6.òró0r   