Ë
    ÝÍ:j!  ã                   óV   — d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
  G d„ de«      Zy)	é    Né   )ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeÚattribute_to_kwargÚ	ms_domainé   )ÚQuantOperatorBase)ÚQDQOperatorBasec                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚQLinearConcatc                 ó&   •— t         ‰| �  ||«       y )N)ÚsuperÚ__init__)ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €ú~/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/concat.pyr   zQLinearConcat.__init__   s   ø€ Ü‰Ñ˜¨Õ3ó    c           	      ó  •— | j                   }| j                  j                  |j                  d   «      \  }}}}}| j                  j	                  |g t        t        |j                  «      «      ¢«      \  }}}}	|r|€t        ‰| �%  «       S | j                  j                  |j                  d      }
t        |j                  d   |j                  d   t        z   |||
j                  «      }|| j                  j                  |j                  d   <   i }|j                  D ]  }|j                  t!        |«      «       Œ t"        |d<   |j$                  r|j$                  dz   nd}||g}t        t        |«      «      D ]  }|j'                  ||   ||   ||   g«       Œ! t)        j*                  j,                  d||j.                  g|fi |¤Ž}| j                  xj0                  |	z  c_        | j                  xj0                  |gz  c_        y )Nr   ÚdomainÚ_quantÚ r   )ÚnodeÚ	quantizerÚ_get_quantization_paramsÚoutputÚquantize_activationÚrangeÚlenÚinputr   ÚquantizeÚquantized_value_mapr   r   Ú
value_typeÚ	attributeÚupdater   r   ÚnameÚextendÚonnxÚhelperÚ	make_nodeÚq_nameÚ	new_nodes)r   r   Ú
data_foundÚoutput_scale_nameÚoutput_zp_nameÚ_Úq_input_namesÚzero_point_namesÚscale_namesÚnodesÚquantized_input_valueÚquantized_output_valueÚkwargsr&   Ú
qnode_nameÚqlconcat_inputsÚiÚqlconcat_noder   s                     €r   r#   zQLinearConcat.quantize   sñ  ø€ Ø�y‰yˆð �N‰N×3Ñ3°D·K±KÀ±NÓCñ	
ØØØØØð �N‰N×.Ñ.¨tÐ5N´u¼SÀÇÁ»_Ó7MÐ5NÓOñ	
ØØØØá˜]Ð2Ü‘7Ñ#Ó%Ð%ð !%§¡× BÑ BÀ4Ç:Á:ÈaÁ=Ñ QÐÜ!/Ø�K‰K˜‰NØ�K‰K˜‰NÔ5Ñ5ØØØ!×,Ñ,ó"
Ðð >Tˆ�‰×*Ñ*¨4¯;©;°q©>Ñ:àˆØŸ™ò 	9ˆIØ�M‰MÔ,¨YÓ7Õ8ð	9ä$ˆˆxÑØ-1¯YªY�T—Y‘Y Ò)¸Bˆ
à,¨nÐ=ˆÜ”s˜=Ó)Ó*ò 	\ˆAØ×"Ñ" M°!Ñ$4°kÀ!±nÐFVÐWXÑFYÐ#ZÕ[ð	\äŸ™×-Ñ-Ø˜_Ð/E×/LÑ/LÐ.MÈzñ
Ø]cñ
ˆð 	�‰× Ò  EÑ)Õ Ø�‰× Ò  ] OÑ3Ö r   )Ú__name__Ú
__module__Ú__qualname__r   r#   Ú__classcell__)r   s   @r   r   r      s   ø„ ô4÷,4ð ,4r   r   )r*   Úquant_utilsr   r   r   r   r   Úbase_operatorr
   Úqdq_base_operatorr   r   © r   r   ú<module>rF      s'   ðÛ ÷õ õ -Ý .ô04Ð%õ 04r   