§
    kŠtj„O  ã                   ó¤   — d dl mZ d dlmZ d dlmZmZ d dlmZ  ee	¦  «        Z
 G d„ de¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        ZdS )é    )Ú	getLogger)ÚFusion)ÚTensorProtoÚhelper)Ú	OnnxModelc                   ó>   ‡ — e Zd Zd
dededefˆ fd„Zdedefd	„Zˆ xZS )ÚFusionLayerNormalizationTFÚmodelÚcheck_constant_and_dimensionÚforcec                 ój   •— t          ¦   «                              |dd¦  «         || _        || _        d S ©NÚLayerNormalizationÚ
ReduceMean)ÚsuperÚ__init__r   r   )Úselfr
   r   r   Ú	__class__s       €úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/fusion_layernorm.pyr   z!FusionLayerNormalization.__init__   s3   ø€ Ý‰Œ×Ò˜Ð 4°lÑCÔCÐCØ,HˆÔ)ØˆŒ
ˆ
ˆ
ó    Úinput_name_to_nodesÚoutput_name_to_nodec           
      óŠ	  — g }| j                              ||¦  «        }t          |¦  «        dk    st          |¦  «        dk    rdS |j        d         }|d         j        dk    s|d         j        d         |k    rdS t          |¦  «        dk    r*|d         j        dk    s|d         j        d         |k    rdS d}|D ]O}| j                              |d|d¬¦  «        }	|	�|	} n*| j                              |d	dg¦  «        }
|
�
|
d
         } nŒP|€dS | j                              |g d¢g d¢fg d¢g d¢fg|¦  «        \  }}}|€dS |d
         }||vrdS |d         }| j                              |¦  «        \  }}|�|dk    s|dk    rt           
                    d|› �¦  «         dS |d         }| j                              |d¦  «        dk    rdS |j        d         |vrdS ||j        d                  }|D �]Î}|j        d	k    r?|                     |¦  «         |j        d         |vrŒ3||j        d                  d         }n|}|j        dk    rŒ[|j        d         |vrŒk||j        d                  d         }|j        dk    rŒ�|                     |¦  «         |                     |¦  «         |                     |dd
…         ¦  «         |                     |||g¦  «         |j        d	k    r|n|}|j        d| j                              |j        d         |¦  «        z
           }| j        r| j                              |dd¦  «        s�ŒW|j        d| j                              |j        d         |¦  «        z
           }| j        r| j                              |dd¦  «        s�Œ°|j        d         }| j                              ||j        ||¦  «        s+| j        rd| _        n6t           
                    d¦  «         �Œ
| j                             |¦  «         t-          j        d|j        d         ||g|g| j                              dd¬¦  «        ¬¦  «        }|j                             t-          j        dt7          |¦  «        ¦  «        g¦  «         | j                             |¦  «         | j        | j        |j        <   �ŒÐdS )aÕ  
        Fuse Layer Normalization subgraph into one node LayerNormalization:
              +----------------------+
              |                      |
              |                      v
          [Root] --> ReduceMean -->  Sub  --> Pow --> ReduceMean --> Add --> Sqrt --> Div --> Mul --> Add
                     (axis=2 or -1)  |      (Y=2)   (axis=2 or -1)  (B=E-6 or E-12)    ^
                                     |                                                 |
                                     +-------------------------------------------------+

         It also handles cases of duplicated sub nodes exported from older version of PyTorch:
              +----------------------+
              |                      v
              |           +-------> Sub-----------------------------------------------+
              |           |                                                           |
              |           |                                                           v
          [Root] --> ReduceMean -->  Sub  --> Pow --> ReduceMean --> Add --> Sqrt --> Div  --> Mul --> Add
              |                      ^
              |                      |
              +----------------------+
        r   é   NÚSubé   ÚDivF©Ú	recursiveÚCastéÿÿÿÿ©ÚSqrtÚAddr   ÚPowr   ©r   r   r   r   r   )r#   r$   r   r%   r    r   )r   r   r   r   r   r   ç-Cëâ6?úHskip SkipLayerNormalization fusion since epsilon value is not expected: é   ç       @ÚMulr$   úlayernorm weightúlayernorm biasTú4It is not safe to fuse LayerNormalization node. Skipr   Ú	LayerNorm©Úname_prefix©ÚinputsÚoutputsÚnameÚepsilon) r
   Úget_childrenÚlenÚinputÚop_typeÚfind_first_child_by_typeÚmatch_child_pathÚmatch_parent_pathsÚget_constant_inputÚloggerÚdebugÚfind_constant_inputÚoutputÚappendÚextendÚinput_indexr   Ú$is_constant_with_specified_dimensionÚis_safe_to_fuse_nodesr   Úprune_graphÚnodes_to_remover   Ú	make_nodeÚcreate_node_nameÚ	attributeÚmake_attributeÚfloatÚnodes_to_addÚthis_graph_nameÚnode_name_to_graph_namer5   )r   Únoder   r   Úsubgraph_nodesÚchildrenÚ
root_inputÚdiv_nodeÚchildÚ
div_node_1Ú
div_node_2Ú_path_idÚparent_nodesÚ_Úsub_nodeÚadd_eps_nodeÚir6   Úpow_nodeÚdiv_childrenÚ	temp_nodeÚmul_nodeÚlast_add_nodeÚnode_before_weightÚweight_inputÚ
bias_inputÚlayer_norm_outputÚnormalize_nodes                               r   ÚfusezFusionLayerNormalization.fuse   sŒ  € ð, ˆØ”:×*Ò*¨4Ð1DÑEÔEˆÝˆx‰=Œ=˜AÒÐ¥ X¡¤°Ò!2Ð!2ØˆFà”Z ”]ˆ
à�AŒ;Ô %Ò'Ð'¨8°A¬;Ô+<¸QÔ+?À:Ò+MÐ+MØˆFåˆx‰=Œ=˜AÒÐØ˜Œ{Ô" eÒ+Ð+¨x¸¬{Ô/@ÀÔ/CÀzÒ/QÐ/QØ�àˆØð 	ð 	ˆEàœ×<Ò<¸UÀEÐK^ÐjoÐ<ÑpÔpˆJØÐ%Ø%�Ø�ð "œZ×8Ò8¸ÀÈÀÑPÔP�
ØÐ)Ø)¨"œ~�HØ�Eð *ð ÐØˆFà$(¤J×$AÒ$AØà<Ð<Ð<¸o¸o¸oÐNØDÐDÐDÐFXÐFXÐFXÐYðð  ñ%
ô %
Ñ!ˆ�, ð ÐØˆFà Ô#ˆØ˜8Ð#Ð#ØˆFà# A”ˆØ”Z×2Ò2°<Ñ@Ô@‰
ˆˆ7Øˆ?˜g¨šl˜l¨g¸Ò.>Ð.>Ý�LŠLÐmÐdkÐmÐmÑnÔnÐnØˆFà ”?ˆØŒ:×)Ò)¨(°CÑ8Ô8¸AÒ=Ð=ØˆFàŒ?˜1ÔÐ%8Ð8Ð8ØˆFð +¨8¬?¸1Ô+=Ô>ˆØ%ð @	Uñ @	UˆIØÔ  FÒ*Ð*à×%Ò% iÑ0Ô0Ð0ØÔ# AÔ&Ð.AÐAÐAØØ.¨yÔ/?ÀÔ/BÔCÀAÔF��ð %�ØÔ 5Ò(Ð(ØàŒ˜qÔ!Ð)<Ð<Ð<ØØ/°´ÀÔ0BÔCÀAÔFˆMØÔ$¨Ò-Ð-Øà×!Ò! $Ñ'Ô'Ð'Ø×!Ò! (Ñ+Ô+Ð+Ø×!Ò! ,¨s°¨sÔ"3Ñ4Ô4Ð4à×!Ò! =°(¸HÐ"EÑFÔFÐFà-6Ô->À&Ò-HÐ-H  ÈiÐØ#œ>¨!¨d¬j×.DÒ.DÐEWÔE^Ð_`ÔEaÐckÑ.lÔ.lÑ*lÔmˆLØÔ0ð ¸¼×9hÒ9hØ˜aÐ!3ñ:ô :ð ñ à&Ô,¨Q°´×1GÒ1GÈÌÐXYÔHZÐ\iÑ1jÔ1jÑ-jÔkˆJØÔ0ð ¸¼×9hÒ9hØ˜AÐ/ñ:ô :ð ñ à -Ô 4°QÔ 7ÐØ”:×3Ò3ØØÔ$Ø#Ø#ñ	ô ð <ð ”:ð Ø'+�DÔ$Ð$å—L’LÐ!WÑXÔXÐXÙàÔ$×+Ò+¨NÑ;Ô;Ð;å#Ô-Ø$Øœ
 1œ |°ZÐ@Ø*Ð+Ø”Z×0Ò0Ð1EÐS^Ð0Ñ_Ô_ð	ñ ô ˆNð Ô$×+Ò+­VÔ-BÀ9ÍeÐT[ÉnÌnÑ-]Ô-]Ð,^Ñ_Ô_Ð_ØÔ×$Ò$ ^Ñ4Ô4Ð4Ø@DÔ@TˆDÔ(¨Ô)<Ñ=Ñ=ðA@	Uð @	Ur   )TF)	Ú__name__Ú
__module__Ú__qualname__r   Úboolr   Údictrj   Ú__classcell__©r   s   @r   r	   r	      sŽ   ø€ € € € € ðð ˜ið Àtð Ð[_ð ð ð ð ð ð ð
SU¨dð SUÈð SUð SUð SUð SUð SUð SUð SUð SUr   r	   c                   óX   ‡ — e Zd Zdefˆ fd„Zd„ Zddedee         fd„Z	de
d	e
fd
„Zˆ xZS )ÚFusionLayerNormalizationNCHWr
   c                 óN   •— t          ¦   «                              |dd¦  «         d S r   ©r   r   ©r   r
   r   s     €r   r   z%FusionLayerNormalizationNCHW.__init__«   s&   ø€ Ý‰Œ×Ò˜Ð 4°lÑCÔCÐCÐCÐCr   c                 ó†  — | j                              |¦  «        }|€"t                               |› d|› d�¦  «         d S t	          |j        ¦  «        dk    s"|j        d         dk    s|j        d         dk    r)t                               |› d|› d|j        › �¦  «         d S |                     |j        d         g¦  «        S )Nú z is not initializer.r)   r   r   z* shall have 3 dimensions Cx1x1. Got shape r   )r
   Úget_constant_valuer?   r@   r8   ÚshapeÚreshape)r   Úoutput_nameÚdescriptionÚvalues       r   Úget_weight_or_biasz/FusionLayerNormalizationNCHW.get_weight_or_bias®   sÅ   € Ø”
×-Ò-¨kÑ:Ô:ˆØˆ=Ý�LŠL˜KÐKÐK¨+ÐKÐKÐKÑLÔLÐLØ�4åˆuŒ{ÑÔ˜qÒ Ð  E¤K°¤N°aÒ$7Ð$7¸5¼;Àq¼>ÈQÒ;NÐ;NÝ�LŠL˜KÐnÐn¨+ÐnÐnÐafÔalÐnÐnÑoÔoÐoØ�4à�}Š}˜eœk¨!œnÐ-Ñ.Ô.Ð.r   NÚ
input_nameÚpermc                 óä   — | j                              d¦  «        }|€|dz   dz   |z   }t          j        d|g|g|¬¦  «        }|j                             t          j        d|¦  «        g¦  «         |S )z&Append a Transpose node after an inputÚ	TransposeNÚ_outú-r2   r�   )r
   rK   r   rJ   rL   rD   rM   )r   r€   r�   r|   Ú	node_nameÚtranspose_nodes         r   Úcreate_transpose_nodez2FusionLayerNormalizationNCHW.create_transpose_nodeº   s~   € à”J×/Ò/°Ñ<Ô<ˆ	àÐØ# fÑ,¨sÑ2°ZÑ?ˆKåÔ)¨+¸z¸lÐU`ÐTaÐhqÐrÑrÔrˆØÔ ×'Ò'­Ô)>¸vÀtÑ)LÔ)LÐ(MÑNÔNÐNàÐr   r   r   c                 ój
  — t          j        |d¦  «        }t          |t          ¦  «        r|dgk    rdS g }| j                             ||¦  «        }t          |¦  «        dk    rdS |j        d         }|d         j        dk    s|d         j        d         |k    rdS |d         }| j         	                    |d|d¬¦  «        }	|	€dS | j         
                    |	g d	¢g d
¢|¦  «        }
|
€dS |
\  }}}}}||k    rdS | j                             |¦  «        \  }}|�|dk    s|dk    rt                               d|› �¦  «         dS t          j        |d¦  «        }t          |t          ¦  «        sJ ‚|dgk    rdS | j                             |d¦  «        dk    rdS ||	j        d                  d         }|}|j        dk    rdS ||j        d                  d         }|j        dk    rdS |                     |¦  «         |                     |
¦  «         |                     |||	g¦  «         | j                             ||j        ||¦  «        st                               d¦  «         dS |j        dk    r|	n|}|j        d| j                             |j        d         |¦  «        z
           }|                      |d¦  «        }|€dS |j        d| j                             |j        d         |¦  «        z
           }|                      |d¦  «        }|€dS t+          j        |dz   t.          j        |j        |¦  «        }t+          j        |dz   t.          j        |j        |¦  «        }| j                             || j        ¦  «         | j                             || j        ¦  «         | j                             |¦  «         |                      |j        d         g d¢¦  «        }| j                             dd¬¦  «        }|                      |dz   g d¢|j        d         ¦  «        }t+          j        d|j        d         |dz   |dz   g|dz   g|¬¦  «        }|j                              t+          j!        dtE          |¦  «        ¦  «        g¦  «         | j#                             |¦  «         | j#                             |¦  «         | j#                             |¦  «         | j        | j$        |j%        <   | j        | j$        |j%        <   | j        | j$        |j%        <   d} |  &                    | ¦  «         dS )a*  
        Fuse Layer Normalization subgraph into one node LayerNormalization:
              +----------------------+
              | NxCxHxW              |
              |                      v                                                     (Cx1x1)  (Cx1x1)
          [Root] --> ReduceMean -->  Sub --> Pow --> ReduceMean --> Add --> Sqrt --> Div --> Mul --> Add -->
                     (axes=1)        |      (Y=2)     (axes=1)     (E-6)             ^
                                     |                                               |
                                     +-----------------------------------------------+

        Fused subgraph:
                       (0,2,3,1)                            (0,3,1,2)
            [Root] --> Transpose --> LayerNormalization --> Transpose -->
        Úaxesr   Nr   r   r   Fr   r"   r&   r'   r(   r*   r+   r$   r.   r    r,   r-   Ú_NHWC)r   r   r)   r   r   r/   r0   Ú	_out_nhwc)r   r)   r   r   r2   r6   zLayerNormalization(NHWC))'r   Úget_node_attributeÚ
isinstanceÚlistr
   r7   r8   r9   r:   r;   Úmatch_parent_pathr>   r?   r@   rA   rB   rC   rD   rG   rE   r   r   Úmake_tensorr   ÚFLOATrz   Úadd_initializerrP   rI   rˆ   rK   rJ   rL   rM   rN   rO   rQ   r5   Úincrease_counter)!r   rR   r   r   rŠ   rS   rT   rU   ÚsubrV   r[   Ú
_sqrt_nodeÚsecond_add_nodeÚreduce_mean_noder`   r]   r_   r6   rb   rc   rd   re   rf   Úweightrg   ÚbiasÚweight_nhwcÚ	bias_nhwcÚtranspose_inputÚlayernorm_node_nameÚtranspose_outputri   Úcounter_names!                                    r   rj   z!FusionLayerNormalizationNCHW.fuseÆ   s~  € õ Ô+¨D°&Ñ9Ô9ˆÝ˜4¥Ñ&Ô&ð 	¨4°A°3ª;¨;ØˆFàˆØ”:×*Ò*¨4Ð1DÑEÔEˆÝˆx‰=Œ=˜AÒÐØˆFà”Z ”]ˆ
à�AŒ;Ô %Ò'Ð'¨8°A¬;Ô+<¸QÔ+?À:Ò+MÐ+MØˆFØ�qŒkˆà”:×6Ò6°s¸EÐCVÐbgÐ6ÑhÔhˆØÐØˆFà”z×3Ò3ØØ7Ð7Ð7ØˆOˆOØñ	
ô 
ˆð ÐØˆFàLXÑIˆ
�OÐ%5°xÀØ�(Š?ˆ?ØˆFà”Z×2Ò2°?ÑCÔC‰
ˆˆ7Øˆ?˜g¨šl˜l¨g¸Ò.>Ð.>Ý�LŠLÐmÐdkÐmÐmÑnÔnÐnØˆFåÔ+Ð,<¸fÑEÔEˆÝ˜$¥Ñ%Ô%Ð%Ð%Ð%Ø�A�3Š;ˆ;ØˆFàŒ:×)Ò)¨(°CÑ8Ô8¸AÒ=Ð=ØˆFà'¨¬¸Ô(:Ô;¸AÔ>ˆ	ØˆØÔ˜uÒ$Ð$ØˆFà+¨H¬O¸AÔ,>Ô?ÀÔBˆØÔ  EÒ)Ð)ØˆFà×Ò˜dÑ#Ô#Ð#Ø×Ò˜lÑ+Ô+Ð+Ø×Ò˜}¨h¸ÐAÑBÔBÐBàŒz×/Ò/ØØÔ ØØñ	
ô 
ð 	õ �LŠLÐOÑPÔPÐPØˆFà)2Ô):¸fÒ)DÐ)D˜X˜XÈ)ÐØ”~ a¨$¬*×*@Ò*@ÐASÔAZÐ[\ÔA]Ð_gÑ*hÔ*hÑ&hÔiˆØ×(Ò(¨Ð7IÑJÔJˆØˆ>ØˆFà"Ô(¨¨T¬Z×-CÒ-CÀHÄOÐTUÔDVÐXeÑ-fÔ-fÑ)fÔgˆ
Ø×&Ò& zÐ3CÑDÔDˆØˆ<ØˆFåÔ(¨¸Ñ)?ÅÔARÐTZÔT`ÐbhÑiÔiˆåÔ& z°GÑ';½[Ô=NÐPVÔP\Ð^dÑeÔeˆ	ØŒ
×"Ò" ;°Ô0DÑEÔEÐEØŒ
×"Ò" 9¨dÔ.BÑCÔCÐCàÔ×#Ò# NÑ3Ô3Ð3à×4Ò4°T´ZÀ´]ÀLÀLÀLÑQÔQˆà"œj×9Ò9Ð:NÐ\gÐ9ÑhÔhÐà×5Ò5Ø +Ñ-¨|¨|¨|¸]Ô=QÐRSÔ=Tñ
ô 
Ðõ  Ô)Ø Ø#Ô*¨1Ô-¨|¸gÑ/EÀzÐT[ÑG[Ð\Ø(¨;Ñ6Ð7Ø$ð	
ñ 
ô 
ˆð 	Ô ×'Ò'­Ô)>¸yÍ%ÐPWÉ.Ì.Ñ)YÔ)YÐ(ZÑ[Ô[Ð[àÔ× Ò  Ñ1Ô1Ð1ØÔ× Ò  Ñ0Ô0Ð0ØÔ× Ò Ð!1Ñ2Ô2Ð2Ø=AÔ=QˆÔ$ _Ô%9Ñ:Ø<@Ô<PˆÔ$ ^Ô%8Ñ9Ø>BÔ>RˆÔ$Ð%5Ô%:Ñ;à1ˆØ×Ò˜lÑ+Ô+Ð+Ð+Ð+r   )N)rk   rl   rm   r   r   r   Ústrr�   Úintrˆ   ro   rj   rp   rq   s   @r   rs   rs   ª   s±   ø€ € € € € ðD˜ið Dð Dð Dð Dð Dð Dð
/ð 
/ð 
/ð
ð 
°ð 
¸4À¼9ð 
ð 
ð 
ð 
ð},¨dð },Èð },ð },ð },ð },ð },ð },ð },ð },r   rs   c                   ó4   ‡ — e Zd Zdefˆ fd„Zdedefd„Zˆ xZS )ÚFusionLayerNormalizationTFr
   c                 óP   •— t          ¦   «                              |ddd¦  «         d S )Nr   r$   ÚTFru   rv   s     €r   r   z#FusionLayerNormalizationTF.__init__G  s(   ø€ Ý‰Œ×Ò˜Ð 4°e¸TÑBÔBÐBÐBÐBr   r   r   c                 óT  — g }| j                              |g d¢g d¢fg d¢g d¢fg|¦  «        \  }}}|€dS t          |¦  «        dk    sJ ‚|d         dv r|d	         dv r
|d
         dv st                               d¦  «         dS |dd…         \  }}}	}
}}|dd…         \  }}}}d}t          |¦  «        dk    r|d         }|j        dk    sJ ‚| j                              |dd|¦  «        }|€t                               d¦  «         dS | j                              |d|¦  «        }|€|n| j                              |d|¦  «        }|€t                               d¦  «         dS | j                              |¦  «        \  }}|�|dk    s|dk    r|€t                               d¦  «         dS |€D|j	        d         |j	        vs|j	        d         |j	        vrt                               d¦  «         dS |�D|j	        d         |j	        vs|j	        d         |j	        vrt                               d¦  «         dS |j	        d         |j	        d	         k    rt                               d¦  «         dS ||||	|
|||||||g}|�S| j                              |dd|¦  «        }|€t                               d¦  «         dS | 
                    |||g¦  «         | j                              ||j        | j                              ¦   «         | j                              ¦   «         ¦  «        st                               d¦  «         dS | j         
                    |¦  «         |	j	        d	         }|j	        d         }t!          j        d|j	        d         ||g|j        d         g| j                              dd¬¦  «        ¬¦  «        }|j         
                    t!          j        dt+          |¦  «        ¦  «        g¦  «         | j                             |¦  «         | j        | j        |j        <   dS )aU  
         Layer Norm from Tensorflow model(using keras2onnx or tf2onnx):
          +------------------------------------+
          |                                    |
          |                                    |
        (Cast_1)                               |
          |                                    |
          |                                    v                                           (B)                             (B)             (A)
         Add --> (Cast_1) --> ReduceMean -->  Sub  --> Mul --> ReduceMean --> (Cast_3) --> Add --> Sqrt --> Reciprocol --> Mul --> Mul --> Sub --> Add
          |                       |                                                                                         |       ^              ^
          |                       |                                                                                         |       |              |
          |                       +--------------------------------------------------(Cast_2)-------------------------------|-------+              |
          |                                                                                                                 v                      |
          +---------------------------------------------------------------------------------------------------------------> Mul--------------------+
        )
r   r+   r+   Ú
Reciprocalr#   r$   r   r+   r   r   )
r   r   Nr   r   r   Nr   r   N)r   r+   r+   r¨   r#   r$   r    r   r+   r   r   )r   r   Nr   r   r   r   Nr   r   NNr)   r   )r   r   r   r   z=return indice is exepected in [0, 1], but got {return_indice}é   éüÿÿÿé   r    r+   zmul_node_3 not foundzroot node is nonegñhãˆµøä>zepsilon is not matchedz;reduce_mean_node_1 and mul_node_3 shall link from root nodez%mul_node_2 shall have two same inputszcast_node_2 not foundz$not safe to fuse layer normalizationr   r/   r0   r2   r6   )r
   r=   r8   r?   r@   r:   Úmatch_parentÚ
get_parentr>   r9   rD   rG   rB   r   r   rI   r   rJ   rK   rL   rM   rN   rO   rC   rP   rQ   r5   )r   rR   r   r   Úreturn_indicer\   r[   Ú
sub_node_0Ú
mul_node_0Ú
mul_node_1Úreciprocol_nodeÚ	sqrt_nodeÚ
add_node_0Úreduce_mean_node_0Ú
mul_node_2Ú
sub_node_1Úreduce_mean_node_1Úcast_node_3Ú
mul_node_3Únode_before_reduceÚ	root_noder_   r6   rS   Úcast_node_2rf   rg   Ú
fused_nodes                               r   rj   zFusionLayerNormalizationTF.fuseJ  sà  € ð  ˆØ)-¬×)FÒ)FØðð ð ð <Ð;Ð;ðð ð ð ð ?Ð>Ð>ðð! ðB  ñG$*
ô $*
Ñ&ˆˆ<˜ðL ÐØˆFå�=Ñ!Ô! QÒ&Ð&Ð&Ð&Ø˜aÔ  FÐ*Ð*¨}¸QÔ/?À6Ð/IÐ/IÈmÐ\]ÔN^ÐbhÐNhÐNhÝ�LŠLÐXÑYÔYÐYØˆFð ˜˜!˜Ôñ	
ØØØØØØàIUÐVXÐVYÐVYÔIZÑFÐ˜J¨
Ð4FàˆÝˆ|ÑÔ Ò"Ð"Ø& qœ/ˆKØÔ&¨&Ò0Ð0Ð0Ð0à”Z×,Ò,¨T°5¸!Ð=PÑQÔQˆ
ØÐÝ�LŠLÐ/Ñ0Ô0Ð0ØˆFà!œZ×2Ò2Ð3EÀqÐJ]Ñ^Ô^Ðð Ð"ð Ðà”×&Ò&Ð'9¸1Ð>QÑRÔRð 	ð
 ÐÝ�LŠLÐ,Ñ-Ô-Ð-ØˆFà”Z×2Ò2°:Ñ>Ô>‰
ˆˆ7Øˆ?˜g¨šl˜l¨w¸Ò/?Ð/?ÀKÐDWÝ�LŠLÐ1Ñ2Ô2Ð2ØˆFàÐØÔ$ QÔ'¨zÔ/?Ð?Ð?ÐCUÔC[Ð\]ÔC^ÐfpÔfvÐCvÐCvå�LŠLÐVÑWÔWÐWØˆFàÐ"ØÔ$ QÔ'¨zÔ/?Ð?Ð?ÐCUÔC[Ð\]ÔC^ÐfpÔfvÐCvÐCvå�LŠLÐVÑWÔWÐWØˆFàÔ˜AÔ *Ô"2°1Ô"5Ò5Ð5Ý�LŠLÐ@ÑAÔAÐAØˆFð ØØØØØØØØØØØð
ˆð Ð"Øœ*×1Ò1°*¸fÀaÐI\Ñ]Ô]ˆKØÐ"Ý—’Ð4Ñ5Ô5Ð5Ø�Ø×!Ò!Ð#5°{ÀKÐ"PÑQÔQÐQàŒz×/Ò/ØØŒKØŒJ×*Ò*Ñ,Ô,ØŒJ×*Ò*Ñ,Ô,ñ	
ô 
ð 	õ �LŠLÐ?Ñ@Ô@Ð@ØˆFàÔ×#Ò# NÑ3Ô3Ð3à!Ô'¨Ô*ˆØÔ% aÔ(ˆ
õ Ô%Ø ØÔ$ QÔ'¨°zÐBØ”[ ”^Ð$Ø”×,Ò,Ð-AÈ{Ð,Ñ[Ô[ð	
ñ 
ô 
ˆ
ð 	Ô×#Ò#¥VÔ%:¸9ÅeÈGÁnÄnÑ%UÔ%UÐ$VÑWÔWÐWØÔ× Ò  Ñ,Ô,Ð,Ø8<Ô8LˆÔ$ Z¤_Ñ5Ð5Ð5r   )rk   rl   rm   r   r   ro   rj   rp   rq   s   @r   r¤   r¤   F  s�   ø€ € € € € ðC˜ið Cð Cð Cð Cð Cð Cð_M¨dð _MÈð _Mð _Mð _Mð _Mð _Mð _Mð _Mð _Mr   r¤   N)Úloggingr   Úfusion_baser   Úonnxr   r   Ú
onnx_modelr   rk   r?   r	   rs   r¤   © r   r   ú<module>rÄ      s  ðð
 Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  à	ˆ�8Ñ	Ô	€ðYUð YUð YUð YUð YU˜vñ YUô YUð YUðxY,ð Y,ð Y,ð Y,ð Y, 6ñ Y,ô Y,ð Y,ðxcMð cMð cMð cMð cM ñ cMô cMð cMð cMð cMr   