Ë
    ¼Ó^júK  ã                   óX  — d dl Z 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 e j                  dk\  rd dlmZ nd dlmZ  ededef   ¬	«      Zd
eee
j&                  ef   e
j&                  f   deee
j&                  ef   e
j&                  f   fd„Zd
eee
j&                  ef   e
j&                  f   deee
j&                  ef   e
j&                  f   fd„Zed   Zed   Zdeedf   dededefd„Zde
j&                  dee
j&                  eedf   f   fd„Zde
j&                  dee
j&                  eedf   f   fd„Zde
j&                  dee
j&                  eedf   f   fd„Zde
j&                  dee
j&                  eedf   f   fd„Zde
j&                  dee
j&                  eedf   f   fd„Z de
j&                  deedf   de
j&                  fd„Z!de
j&                  deedf   de
j&                  fd„Z"de
j&                  deedf   de
j&                  fd„Z#de
j&                  deedf   de
j&                  fd„Z$de
j&                  deedf   de
j&                  fd„Z%de
j&                  dee
j&                  eedf   f   fd „Z&de
j&                  dee
j&                  eedf   f   fd!„Z'de
j&                  dee
j&                  eedf   f   fd"„Z(de
j&                  deedf   de
j&                  fd#„Z)de
j&                  deedf   de
j&                  fd$„Z*de
j&                  deedf   de
j&                  fd%„Z+e&e&e'e'e(e(dœZ,e)e)e*e*e+e+dœZ-	 d-de
j&                  deded&edee
j&                  eedf   f   f
d'„Z.	 d-de
j&                  deedf   deded&ede
j&                  fd(„Z/eeeeeedœZ0e!e!e"e"e#e#dœZ1	 d-de
j&                  deded&edee
j&                  eedf   f   f
d)„Z2	 d-de
j&                  deedf   deded&ede
j&                  fd*„Z3	 	 	 d.d+ededed&edeegef   f
d,„Z4y)/é    N)Úwraps)ÚAnyÚCallableÚLiteralÚTypeVarÚcast)ÚMONO_CHANNEL_DIMENSIONSÚNUM_MULTI_CHANNEL_DIMENSIONSÚP)é   é
   )ÚConcatenateÚF.)ÚboundÚfuncÚreturnc           	      ó°   ‡ — t        ‰ «      dt        j                  dt        j                  dt        j
                  dt        j                  fˆ fd„«       }|S )zLEnsure that input img is contiguous and the output array is also contiguous.ÚimgÚargsÚkwargsr   c                 ó|   •— t        j                  | dg¬«      }  ‰| g|¢­i |¤Ž}t        j                  |dg¬«      S )NÚC_CONTIGUOUS©Úrequirements)ÚnpÚrequire)r   r   r   Úresultr   s       €ú^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/albucore/decorators.pyÚwrapped_functionz$contiguous.<locals>.wrapped_function   s@   ø€ ô �j‰j˜¨NÐ+;Ô<ˆá�cÐ+˜DÒ+ FÑ+ˆä�z‰z˜&°Ð/?Ô@Ð@ó    ©r   r   Úndarrayr   r   r   ©r   r   s   ` r   Ú
contiguousr$      sX   ø€ ô
 ˆ4ƒ[ðAœbŸj™jð A´·±ð AÄ1Ç8Á8ð AÔPR×PZÑPZô Aó ðAð Ðr    c           	      ó°   ‡ — t        ‰ «      dt        j                  dt        j                  dt        j
                  dt        j                  fˆ fd„«       }|S )zPreserve dummy channel dim.r   r   r   r   c                 ó"  •— | j                   } ‰| g|¢­i |¤Ž}t        |«      t        k(  r2|d   dk(  r*|j                  t        k(  rt        j                  |d¬«      S t        |«      t        k(  r|j                  t        k(  r|d d …d d …df   S |S )Néÿÿÿÿé   )Úaxisr   )ÚshapeÚlenr
   Úndimr	   r   Úexpand_dims)r   r   r   r*   r   r   s        €r   r   z.preserve_channel_dim.<locals>.wrapped_function'   s‚   ø€ à—	‘	ˆÙ�cÐ+˜DÒ+ FÑ+ˆÜˆu‹:Ô5Ò5¸%À¹)Àqº.ÈVÏ[É[Ô\sÒMsÜ—>‘> &¨rÔ2Ð2äˆu‹:Ô0Ò0°V·[±[ÔD`Ò5`Øš!šQ ˜'‘?Ð"Øˆr    r!   r#   s   ` r   Úpreserve_channel_dimr.   "   sR   ø€ ô
 ˆ4ƒ[ðœbŸj™jð ´·±ð Ä1Ç8Á8ð ÔPR×PZÑPZô ó ðð Ðr    )ÚspatialÚchannelÚfull)ÚDHWÚDHWCÚNHWÚNHWCÚNDHWÚNDHWCr*   Úhas_batch_dimÚhas_depth_dimc                 ót   — t        | «      }|r|r	|dk(  rdS dS |r	|dk(  rdS dS |r	|dk(  rdS dS t        d	«      ‚)
z7Determine the shape type based on dimensions and flags.é   r7   r6   é   r5   r4   r3   r2   z,Either batch or depth dimension must be True)r+   Ú
ValueError)r*   r8   r9   r,   s       r   Úget_shape_typer>   A   sW   € ô ˆu‹:€Dá™Ø !š)ˆwÐ/¨Ð/ÙØ šˆvÐ-¨Ð-ÙØ šˆvÐ-¨Ð-Ü
ÐCÓ
DÐDr    Údatac                 óÈ  — | j                   dk(  rK| j                  \  }}}t        j                  t        j                  | dd«      dg¬«      }|| j                  fS | j                   dk(  r_| j                  \  }}}}t        j                  | dd«      }t        j                  |j                  ||d«      dg¬«      }|| j                  fS | j                   dk(  rt| j                  \  }}}}}| j                  d|||«      }t        j                  |dd«      }t        j                  |j                  ||d«      dg¬«      }|| j                  fS t        d	| j                   › �«      ‚)
z4Reshape (D,H,W) or (D,H,W,C) for spatial transforms.r   r   r'   r   r   r<   éþÿÿÿr;   ú"Unsupported number of dimensions: ©r,   r*   r   r   ÚmoveaxisÚreshaper=   ©r?   Ú_ÚheightÚwidthÚreshapedÚchannelsÚfinalÚflats           r   Ú
reshape_3drN   R   ó9  € à‡y�y�A‚~ØŸ:™:Ñˆˆ6�5Ü—:‘:œbŸk™k¨$°°2Ó6ÀnÐEUÔVˆØ˜Ÿ™Ð#Ð#Ø‡y�y�A‚~Ø%)§Z¡ZÑ"ˆˆ6�5˜(Ü—;‘;˜t Q¨Ó+ˆÜ—
‘
˜8×+Ñ+¨F°E¸2Ó>ÈnÐM]Ô^ˆØ�d—j‘jÐ Ð Ø‡y�y�A‚~Ø(,¯
©
Ñ%ˆˆ1ˆf�e˜XØ�|‰|˜B ¨¨xÓ8ˆÜ—;‘;˜t Q¨Ó+ˆÜ—
‘
˜8×+Ñ+¨F°E¸2Ó>ÈnÐM]Ô^ˆØ�d—j‘jÐ Ð Ü
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    c                 óÈ  — | j                   dk(  rK| j                  \  }}}t        j                  t        j                  | dd«      dg¬«      }|| j                  fS | j                   dk(  r_| j                  \  }}}}t        j                  | dd«      }t        j                  |j                  ||d«      dg¬«      }|| j                  fS | j                   dk(  rt| j                  \  }}}}}| j                  d|||«      }t        j                  |dd«      }t        j                  |j                  ||d«      dg¬«      }|| j                  fS t        d	| j                   › �«      ‚)
z4Reshape (N,H,W) or (N,H,W,C) for spatial transforms.r   r   r'   r   r   r<   rA   r;   rB   rC   rF   s           r   Úreshape_batchrQ   f   rO   r    c                 ó@  — | j                   dk(  r_| j                  \  }}}}| j                  d||«      }t        j                  t        j
                  |dd«      dg¬«      }|| j                  fS | j                   dk(  rŠ| j                  \  }}}}}| j                  d|||«      }t        j                  t        j
                  |dd«      dg¬«      }t        j                  |j                  ||d«      dg¬«      }|| j                  fS t        d| j                   › �«      ‚)	z8Reshape (N,D,H,W) or (N,D,H,W,C) for spatial transforms.r<   r'   r   r   r   r;   rA   rB   )r,   r*   rE   r   r   rD   r=   )r?   rG   rH   rI   rM   rJ   rK   rL   s           r   Úreshape_batch_3drS   z   sû   € à‡y�y�A‚~Ø"Ÿj™jÑˆˆ1ˆf�eØ�|‰|˜B ¨Ó.ˆÜ—:‘:œbŸk™k¨$°°2Ó6ÀnÐEUÔVˆØ˜Ÿ™Ð#Ð#Ø‡y�y�A‚~Ø(,¯
©
Ñ%ˆˆ1ˆf�e˜XØ�|‰|˜B ¨¨xÓ8ˆÜ—:‘:œbŸk™k¨$°°2Ó6ÀnÐEUÔVˆÜ—
‘
˜8×+Ñ+¨F°E¸2Ó>ÈnÐM]Ô^ˆØ�d—j‘jÐ Ð Ü
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    c                 óÈ  — | j                   dk(  rL| j                  \  }}}}t        j                  | dd«      }t        j                  |dg¬«      | j                  fS | j                   dk(  ra| j                  \  }}}}}t        j                  | dd«      }t        j                  |j                  |||d«      dg¬«      }|| j                  fS t        d| j                   › �«      ‚)	z<Reshape (N,D,H,W) or (N,D,H,W,C) preserving depth dimension.r<   r   r'   r   r   r;   rA   rB   )r,   r*   r   rD   r   rE   r=   )r?   rG   ÚdepthrH   rI   rJ   rL   s          r   Úreshape_batch_3d_keep_depthrV   Š   sÊ   € à‡y�y�A‚~Ø"&§*¡*Ñˆˆ5�&˜%Ü—;‘;˜t Q¨Ó+ˆÜ�z‰z˜(°.Ð1AÔBÀDÇJÁJÐNÐNØ‡y�y�A‚~Ø%)§Z¡ZÑ"ˆˆ5�&˜% Ü—;‘;˜t Q¨Ó+ˆÜ—
‘
˜8×+Ñ+¨E°6¸5À"ÓEÐUcÐTdÔeˆØ�d—j‘jÐ Ð Ü
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    c                 ój   — | j                   dv r| | j                  fS t        d| j                   › �«      ‚)z8Reshape (D,H,W) or (D,H,W,C) preserving depth dimension.>   r   r<   rB   )r,   r*   r=   )r?   s    r   Úreshape_3d_keep_depthrX   ˜   s4   € à‡y�y�FÑØ�T—Z‘ZÐÐÜ
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    Úoriginal_shapec                 óP  — | j                   dd \  }}t        |«      dk(  rB|d   }| j                  |||«      }t        j                  t        j
                  |dd«      «      S |\  }}}}| j                  ||||«      }t        j                  t        j
                  |dd«      «      S )z:Restore (H,W,D) or (H,W,D*C) back to (D,H,W) or (D,H,W,C).Né   r   r   r'   rA   )r*   r+   rE   r   ÚascontiguousarrayrD   )r?   rY   rH   rI   rU   rJ   rG   rK   s           r   Ú
restore_3dr]   Ÿ   sœ   € à—J‘J˜r �N�M€FˆEä
ˆ>Ó˜aÒØ˜qÑ!ˆà—<‘< ¨¨uÓ5ˆÜ×#Ñ#¤B§K¡K°¸"¸aÓ$@ÓAÐAà*Ñ€Eˆ1ˆa�à�|‰|˜F E¨5°(Ó;€HÜ×Ñ¤§¡¨H°b¸!Ó <Ó=Ð=r    c                 ó\  — | j                   dd \  }}t        |«      dk(  rE|d   }| j                  |||«      }t        j                  t        j
                  |dd«      dg¬«      S |\  }}}}| j                  ||||«      }t        j                  t        j
                  |dd«      dg¬«      S )	z:Restore (H,W,N) or (H,W,N*C) back to (N,H,W) or (N,H,W,C).Nr[   r   r   r'   r   r   rA   )r*   r+   rE   r   r   rD   )r?   rY   rH   rI   Ú
num_imagesrJ   rG   rK   s           r   Úrestore_batchr`   ¯   s¢   € à—J‘J˜r �N�M€FˆEä
ˆ>Ó˜aÒØ# AÑ&ˆ
Ø—<‘< ¨¨zÓ:ˆÜ�z‰zœ"Ÿ+™+ h°°AÓ6ÀnÐEUÔVÐVà!/Ñ€J��1�hØ�|‰|˜F E¨:°xÓ@€HÜ�:‰:”b—k‘k (¨B°Ó2À.ÐAQÔRÐRr    c           	      ó�  — | j                   dd \  }}t        |«      dk(  rI|dd \  }}t        j                  | dd«      }t        j                  |j                  ||||«      dg¬«      S |\  }}}}}| j                  ||d|«      }t        j                  |dd«      }	t        j                  |	j                  |||||«      dg¬«      S )	zBRestore (H,W,N*D) or (H,W,N*D*C) back to (N,D,H,W) or (N,D,H,W,C).Nr[   r<   r'   r   r   r   rA   )r*   r+   r   rD   r   rE   )
r?   rY   rH   rI   r_   rU   rJ   rG   rK   Úmoveds
             r   Úrestore_batch_3drc   ½   sÇ   € à—J‘J˜r �N�M€FˆEä
ˆ>Ó˜aÒØ*¨2¨AÐ.Ñˆ
�EÜ—;‘;˜t R¨Ó+ˆÜ�z‰z˜(×*Ñ*¨:°u¸fÀeÓLÐ\jÐ[kÔlÐlà(6Ñ%€J��q˜!˜XØ�|‰|˜F E¨2¨xÓ8€HÜ�K‰K˜ " aÓ(€EÜ�:‰:�e—m‘m J°°v¸uÀhÓOÐ_mÐ^nÔoÐor    c                 óÞ   — | j                   dd \  }}}t        |«      dk(  rt        j                  | dd«      S |d   }|d   }| j	                  |||||«      }t        j                  |dd«      S )a  Restore data that kept its depth dimension.

    For data that was reshaped with keep_depth_dim=True:
    - (D',H',W',N) => (N,D',H',W')
    - (D',H',W',N*C) => (N,D',H',W',C)

    Note: D',H',W' can be different from original D,H,W after transforms like RandomCrop3D
    Nr   r<   r'   r   rA   )r*   r+   r   rD   rE   )r?   rY   Ú	new_depthÚ
new_heightÚ	new_widthr_   rK   rJ   s           r   Úrestore_batch_3d_keep_depthrh   Ì   sw   € ð (,§z¡z°"°1 ~Ñ$€Iˆz˜9ä
ˆ>Ó˜aÒÜ�{‰{˜4  QÓ'Ð'à Ñ"€JØ˜bÑ!€Hà�|‰|˜I z°9¸jÈ(ÓS€HÜ�;‰;�x  QÓ'Ð'r    c                 ó   — | S )z Restore data that kept its depth dimension.

    For data that was reshaped with keep_depth_dim=True:
    - (D,H,W) => (D,H,W)
    - (D,H,W,C) => (D,H,W,C)
    © )r?   rY   s     r   Úrestore_3d_keep_depthrk   â   s	   € ð €Kr    c                 ó–  — | j                   dk(  rI| j                  \  }}}t        j                  | j	                  ||z  |«      dg¬«      }|| j                  fS | j                   dk(  rK| j                  \  }}}}t        j                  | j	                  ||z  ||«      dg¬«      }|| j                  fS t        d| j                   › �«      ‚)z4Reshape (D,H,W) or (D,H,W,C) for channel transforms.r   r   r   r<   rB   ©r,   r*   r   r   rE   r=   )r?   rU   rH   rI   rJ   rK   s         r   Úreshape_3d_channelrn   í   s·   € à‡y�y�A‚~Ø#Ÿz™zÑˆˆv�uÜ—:‘:˜dŸl™l¨5°6©>¸5ÓAÐQ_ÐP`ÔaˆØ˜Ÿ™Ð#Ð#Ø‡y�y�A‚~Ø)-¯©Ñ&ˆˆv�u˜hÜ—:‘:˜dŸl™l¨5°6©>¸5À(ÓKÐ[iÐZjÔkˆØ˜Ÿ™Ð#Ð#Ü
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    c                 ó–  — | j                   dk(  rI| j                  \  }}}t        j                  | j	                  ||z  |«      dg¬«      }|| j                  fS | j                   dk(  rK| j                  \  }}}}t        j                  | j	                  ||z  ||«      dg¬«      }|| j                  fS t        d| j                   › �«      ‚)z4Reshape (N,H,W) or (N,H,W,C) for channel transforms.r   r   r   r<   rB   rm   )r?   r_   rH   rI   rJ   rK   s         r   Úreshape_batch_channelrp   ú   s¹   € à‡y�y�A‚~Ø$(§J¡JÑ!ˆ
�F˜EÜ—:‘:˜dŸl™l¨:¸Ñ+>ÀÓFÐVdÐUeÔfˆØ˜Ÿ™Ð#Ð#Ø‡y�y�A‚~Ø.2¯j©jÑ+ˆ
�F˜E 8Ü—:‘:˜dŸl™l¨:¸Ñ+>ÀÀxÓPÐ`nÐ_oÔpˆØ˜Ÿ™Ð#Ð#Ü
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    c                 óŽ  — | j                   dk(  rG| j                  \  }}}}t        j                  | j	                  d|«      dg¬«      }|| j                  fS | j                   dk(  rI| j                  \  }}}}}t        j                  | j	                  d||«      dg¬«      }|| j                  fS t        d| j                   › �«      ‚)z8Reshape (N,D,H,W) or (N,D,H,W,C) for channel transforms.r<   r'   r   r   r;   rB   rm   )r?   rG   rI   rJ   rK   s        r   Úreshape_batch_3d_channelrr     s°   € à‡y�y�A‚~ØŸ™‰ˆˆ1ˆa�ä—:‘:˜dŸl™l¨2¨uÓ5À^ÐDTÔUˆØ˜Ÿ™Ð#Ð#Ø‡y�y�A‚~Ø#'§:¡:Ñ ˆˆ1ˆa�˜ä—:‘:˜dŸl™l¨2¨u°hÓ?È~ÐN^Ô_ˆØ˜Ÿ™Ð#Ð#Ü
Ð9¸$¿)¹)¸ÐEÓ
FÐFr    c                 óº   — t        |«      dk(  r&|\  }}}| j                  ||| j                  d   «      S |\  }}}}| j                  ||| j                  d   |«      S )zºRestore (D*H,W) or (D*H,W,C) back to (D,H,W) or (D,H,W,C).

    Args:
        data: Array of shape (D*H,W') or (D*H,W',C)
        original_shape: Original shape (D,H,W) or (D,H,W,C)
    r   r(   ©r+   rE   r*   )r?   rY   rU   rH   rG   rK   s         r   Úrestore_3d_channelru     sc   € ô ˆ>Ó˜aÒØ)Ñˆˆv�qØ�|‰|˜E 6¨4¯:©:°a©=Ó9Ð9à!/Ñ€Eˆ6�1�hØ�<‰<˜˜v t§z¡z°!¡}°hÓ?Ð?r    c                 óº   — t        |«      dk(  r&|\  }}}| j                  ||| j                  d   «      S |\  }}}}| j                  ||| j                  d   |«      S )zºRestore (N*H,W) or (N*H,W,C) back to (N,H,W) or (N,H,W,C).

    Args:
        data: Array of shape (N*H,W') or (N*H,W',C)
        original_shape: Original shape (N,H,W) or (N,H,W,C)
    r   r(   rt   )r?   rY   r_   rH   rG   rK   s         r   Úrestore_batch_channelrw   %  sc   € ô ˆ>Ó˜aÒØ .Ñˆ
�F˜AØ�|‰|˜J¨°·
±
¸1±Ó>Ð>à&4Ñ#€J�˜˜8Ø�<‰<˜
 F¨D¯J©J°q©M¸8ÓDÐDr    c                 óÊ   — t        |«      dk(  r*|\  }}}}| j                  d   }| j                  ||||«      S |\  }}}}}| j                  d   }| j                  |||||«      S )z~Restore (N*D*H,W') or (N*D*H,W',C) back to (N,D,H,W',C).

    Note: W' can be different from original W after transforms.
    r<   r(   )r+   r*   rE   )r?   rY   r_   rU   rH   rG   rg   rK   s           r   Úrestore_batch_3d_channelry   4  sw   € ô
 ˆ>Ó˜aÒØ'5Ñ$ˆ
�E˜6 1Ø—J‘J˜q‘Mˆ	Ø�|‰|˜J¨¨v°yÓAÐAð .<Ñ*€J��v˜q (Ø—
‘
˜1‘€IØ�<‰<˜
 E¨6°9¸hÓGÐGr    Úkeep_depth_dimc                 ó†   — | j                   dk(  rt        d«      ‚t        | j                  ||«      }t        |   } || «      S )ú=Choose appropriate reshape function based on data dimensions.r   úEmpty arrays are not supported)Úsizer=   r>   r*   ÚCHANNEL_RESHAPE_FUNCS©r?   r8   r9   rz   Ú
shape_typeÚreshape_funcs         r   Úreshape_for_channelrƒ   Y  sB   € ð ‡y�y�A‚~ÜÐ9Ó:Ð:ä §
¡
¨M¸=ÓI€JÜ(¨Ñ4€LÙ˜ÓÐr    c                 óp   — t        |||«      }t        |   } || |«      }t        j                  |dg¬«      S )ú=Choose appropriate restore function based on data dimensions.r   r   )r>   ÚCHANNEL_RESTORE_FUNCSr   r   )r?   rY   r8   r9   rz   r�   Úrestore_funcr   s           r   Úrestore_from_channelrˆ   h  s<   € ô   °¸}ÓM€JÜ(¨Ñ4€LÙ˜$ Ó/€FÜ�:‰:�f¨NÐ+;Ô<Ð<r    c                 óÆ   — | j                   dk(  rt        d«      ‚t        | j                  ||«      }|r|dv rt	        | «      S |dv rt        | «      S t        |   } || «      S )r|   r   r}   ¾   r6   r7   ¾   r2   r3   )r~   r=   r>   r*   rV   rX   ÚSPATIAL_RESHAPE_FUNCSr€   s         r   Úreshape_for_spatialr�   ‹  sl   € ð ‡y�y�A‚~ÜÐ9Ó:Ð:ä §
¡
¨M¸=ÓI€JáØÐ*Ñ*Ü.¨tÓ4Ð4Ø˜Ñ(Ü(¨Ó.Ð.ä(¨Ñ4€LÙ˜ÓÐr    c                 ó¸   — t        |||«      }|r"|dv rt        | |«      }n#|dv rt        | |«      }nt        |   } || |«      }t	        j
                  dg¬«      S )r…   rŠ   r‹   r   r   )r>   rh   rk   ÚSPATIAL_RESTORE_FUNCSr   r   )r?   rY   r8   r9   rz   r�   r   r‡   s           r   Úrestore_from_spatialr�   ¡  sh   € ô   °¸}ÓM€JáØÐ*Ñ*Ü0°°~ÓF‰FØ˜?Ñ*Ü*¨4°Ó@‰Fä,¨ZÑ8ˆÙ˜d NÓ3ˆä�:‰:�f¨NÐ+;Ô<Ð<r    Útransform_typec                 ó8   ‡ ‡‡‡— dt         dt         fˆˆˆˆ fd„}|S )z*Decorator to handle batch transformations.r   r   c                 óº   •‡ — t        ‰ «      dt        dt        j                  dt        dt        dt        j                  f
ˆ ˆˆˆˆfd„«       }t	        t
        |«      S )NÚselfr?   r   Úparamsr   c                 óî   •— t        j                  |dg¬«      }‰dk(  r ‰| |g|¢­i |¤ŽS t        t        dœ}t        t
        dœ}|‰   }|‰   } ||‰‰‰«      \  }}	 ‰| |g|¢­i |¤Ž}
 ||
|	‰‰‰«      S )Nr   r   r1   )r/   r0   )r   r   r�   rƒ   r�   rˆ   )r”   r?   r   r•   Úreshape_funcsÚrestore_funcsr‚   r‡   rJ   rY   Útransformedr   r8   r9   rz   r‘   s              €€€€€r   Úwrapperz3batch_transform.<locals>.decorator.<locals>.wrapperÀ  sº   ø€ ä—:‘:˜d°.Ð1AÔBˆDà Ò'Ù˜D $Ð8¨Ò8°Ñ8Ð8ô /Ü.ñ[ˆMô 0Ü/ñCˆMð
 )¨Ñ8ˆLØ(¨Ñ8ˆLá'3ØØØØó	(Ñ$ˆH�nñ ˜t XÐ?°Ò?¸Ñ?ˆKÙØØØØØóð r    )r   r   r   r"   r   r   )r   rš   r8   r9   rz   r‘   s   ` €€€€r   Ú	decoratorz"batch_transform.<locals>.decorator¿  sY   ù€ Ü	ˆt‹ð!	œ#ð !	¤R§Z¡Zð !	¼ð !	Äsð !	ÌrÏzÉz÷ !	ð !	ó 
ð!	ôF ”A�wÓÐr    )r   )r‘   r8   r9   rz   r›   s   ```` r   Úbatch_transformrœ   ·  s$   û€ ð% œð % œa÷ % ð % ðN Ðr    )F)TFF)5ÚsysÚ	functoolsr   Útypingr   r   r   r   r   Únumpyr   Úalbucore.utilsr	   r
   r   Úversion_infor   Útyping_extensionsr   r"   r$   r.   ÚBatchTransformTypeÚ	ShapeTypeÚtupleÚintÚboolr>   rN   rQ   rS   rV   rX   r]   r`   rc   rh   rk   rn   rp   rr   ru   rw   ry   r   r†   rƒ   rˆ   rŒ   r�   r�   r�   rœ   rj   r    r   ú<module>r©      s  ðÛ 
Ý ß 8Õ 8ã ç SÑ Sà×Ñ�wÒÞ"å-áˆC�x  S Ñ)Ô*€ðØ
�;˜rŸz™z¨1˜}Ñ-¨r¯z©zÐ9Ñ
:ðàˆk˜"Ÿ*™* a˜-Ñ(¨"¯*©*Ð4Ñ5óð"Ø
�;˜rŸz™z¨1˜}Ñ-¨r¯z©zÐ9Ñ
:ðàˆk˜"Ÿ*™* a˜-Ñ(¨"¯*©*Ð4Ñ5óð& Ð9Ñ:Ð àðñ€	ðEØ��c�‰?ðEàðEð ðEð ó	Eð"G�R—Z‘Zð G E¨"¯*©*°e¸CÀ¸H±oÐ*EÑ$Fó Gð(G˜Ÿ
™
ð G u¨R¯Z©Z¸¸sÀC¸x¹Ð-HÑ'Ió Gð(G˜2Ÿ:™:ð G¨%°·
±
¸EÀ#ÀsÀ(¹OÐ0KÑ*Ló Gð G b§j¡jð G°U¸2¿:¹:ÀuÈSÐRUÈXÁÐ;VÑ5Wó GðG §
¡
ð G¨u°R·Z±ZÀÀsÈCÀxÁÐ5PÑ/Qó Gð>�R—Z‘Zð >°°s¸C°x±ð >ÀRÇZÁZó >ð S˜Ÿ
™
ð S°E¸#¸s¸(±Oð SÈÏ
É
ó Sðp˜2Ÿ:™:ð p°u¸SÀ#¸X±ð pÈ2Ï:É:ó pð( b§j¡jð (À%ÈÈSÈÁ/ð (ÐVX×V`ÑV`ó (ð, §
¡
ð ¸EÀ#ÀsÀ(¹Oð ÐPR×PZÑPZó ð
G˜RŸZ™Zð 
G¨E°"·*±*¸eÀCÈÀH¹oÐ2MÑ,Nó 
Gð
G §
¡
ð 
G¨u°R·Z±ZÀÀsÈCÀxÁÐ5PÑ/Qó 
GðG 2§:¡:ð G°%¸¿
¹
ÀEÈ#ÈsÈ(ÁOÐ8SÑ2Tó Gð@˜RŸZ™Zð @¸¸sÀC¸x¹ð @ÈRÏZÉZó @ðE §
¡
ð E¸EÀ#ÀsÀ(¹Oð EÐPR×PZÑPZó EðH 2§:¡:ð H¸uÀSÈ#ÀX¹ð HÐSU×S]ÑS]ó Hð$ ØØ Ø!Ø$Ø%ñÐ ð ØØ Ø!Ø$Ø%ñÐ ð !ñ	Ø
�*‰*ðàðð ðð ð	ð
 ˆ2�:‰:�u˜S #˜X‘Ð&Ñ'óð( !ñ=Ø
�*‰*ð=à˜#˜s˜(‘Oð=ð ð=ð ð	=ð
 ð=ð ‡Z�Zó=ð  ØØØØØñÐ ð ØØØØØñÐ ð !ñ	Ø
�*‰*ðàðð ðð ð	ð
 ˆ2�:‰:�u˜S #˜X‘Ð&Ñ'óð6 !ñ=Ø
�*‰*ð=à˜#˜s˜(‘Oð=ð ð=ð ð	=ð
 ð=ð ‡Z�Zó=ð0 ØØ ñ	/Ø&ð/àð/ð ð/ð ð	/ð
 ˆqˆc�1ˆfÑô/r    