§
    ‚Štj”w  ã            	       ó`  — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	  e¦   «         r
ddl
Z
ddlmZ  e¦   «         rddlmZ ddlmZmZ  e¦   «         rdd	lmZ  e	j        e¦  «        Zdd
„Zdededdfd„Zddedededefd„Z G d„ de
j        j        ¦  «        Zddee         dz  fd„Zdd„Z dS ) zZHIGGS through FLUTE (Flexible Lookup Table Engine for LUT-quantized LLMs) integration fileé    )Úsqrté   )Úshould_convert_module)Úis_flute_availableÚis_hadamard_availableÚis_torch_availableÚloggingN)Úprepare_data_transposed)ÚTuneMetaDataÚqgemm_v2)Úhadamard_transformc                 ó  — d„ t          dt          | j        ¦  «        z  ¦  «        D ¦   «         }|D ]-}| j        |         }|dz
  |z  dz   |z  }||z
  }||d|z  dz
  <   Œ.t          j                             | |d|¦  «        S )Nc                 ó   — g | ]}d ‘ŒS ©r   © )Ú.0Ú_s     ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/integrations/higgs.pyú
<listcomp>z pad_to_block.<locals>.<listcomp>%   s   € Ð8Ð8Ð8�a�Ð8Ð8Ð8ó    r   é   éþÿÿÿÚconstant)ÚrangeÚlenÚshapeÚnnÚ
functionalÚpad)	ÚtensorÚdimsÚhad_block_sizeÚvalueÚpad_dimsÚdimÚsizeÚnext_multiple_of_1024Údeltas	            r   Úpad_to_blockr)   $   s›   € Ø8Ð8�5 ¥S¨¬Ñ%6Ô%6Ñ!6Ñ7Ô7Ð8Ñ8Ô8€HØð 'ð 'ˆØŒ|˜CÔ ˆØ"&¨¡(¨~Ñ!=ÀÑ!AÀ^Ñ SÐØ%¨Ñ,ˆØ!&ˆ��c‘˜A‘ÑÐåŒ=×Ò˜V X¨z¸5ÑAÔAÐAr   ÚpÚnÚreturnztorch.Tensorc                 óÚ  — | |fdk    �rt          j        g ddg‘ddg‘ddg‘dd	g‘d
dg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘d d!g‘d"d#g‘d$d%g‘d&d'g‘d(d)g‘d*d+g‘d,d-g‘d.d/g‘d0d1g‘d2d3g‘d4d5g‘d6d7g‘d8d9g‘d:d;g‘d<d=g‘d>d?g‘d@dAg‘dBdCg‘dDdEg‘dFdGg‘dHdIg‘dJdKg‘dLdMg‘dNdOg‘dPdQg‘dRdSg‘dTdUg‘dVdWg‘dXdYg‘dZd[g‘d\d]g‘d^d_g‘d`dag‘dbdcg‘dddeg‘dfdgg‘dhdig‘djdkg‘dldmg‘dndog‘dpdqg‘drdsg‘dtdug‘dvdwg‘dxdyg‘dzd{g‘d|d}g‘d~dg‘d€d�g‘d‚dƒg‘d„d…g‘d†d‡g‘dˆd‰g‘dŠd‹g‘dŒd�g‘dŽd�g‘d�d‘g‘d’d“g‘d”d•g‘d–d—g‘d˜d™g‘dšd›g‘dœd�g‘dždŸg‘d d¡g‘d¢d£g‘d¤d¥g‘d¦d§g‘d¨d©g‘dªd«g‘d¬d­g‘d®d¯g‘d°d±g‘d²d³g‘d´dµg‘d¶d·g‘d¸d¹g‘dºd»g‘d¼d½g‘d¾d¿g‘dÀdÁg‘dÂdÃg‘dÄdÅg‘dÆdÇg‘dÈdÉg‘dÊdËg‘dÌdÍg‘dÎdÏg‘dÐdÑg‘dÒdÓg‘dÔdÕg‘dÖd×g‘dØdÙg‘dÚdÛg‘dÜdÝg‘dÞdßg‘dàdág‘dâdãg‘dädåg‘dædçg‘dèdég‘dêdëg‘dìdíg‘dîdïg‘dðdñg‘dòdóg‘dôdõg‘död÷g‘dødùg‘dúdûg‘düdýg‘dþdÿg‘�d �dg‘�d�dg‘�d�dg‘�d�dg‘�d�d	g‘�d
�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d �d!g‘�d"�d#g‘�d$�d%g‘�d&�d'g‘�d(�d)g‘�d*�d+g‘�d,�d-g‘�d.�d/g‘�d0�d1g‘�d2�d3g‘�d4�d5g‘�d6�d7g‘�d8�d9g‘�d:�d;g‘�d<�d=g‘�d>�d?g‘�d@�dAg‘�dB�dCg‘�dD�dEg‘�dF�dGg‘�dH�dIg‘�dJ�dKg‘�dL�dMg‘�dN�dOg‘�dP�dQg‘�dR�dSg‘�dT�dUg‘�dV�dWg‘�dX�dYg‘�dZ�d[g‘�d\�d]g‘�d^�d_g‘�d`�dag‘�db�dcg‘�dd�deg‘�df�dgg‘�dh�dig‘�dj�dkg‘�dl�dmg‘�dn�dog‘�dp�dqg‘�dr�dsg‘�dt�dug‘�dv�dwg‘�dx�dyg‘�dz�d{g‘�d|�d}g‘�d~�dg‘�d€�d�g‘�d‚�dƒg‘�d„�d…g‘�d†�d‡g‘�dˆ�d‰g‘�dŠ�d‹g‘�dŒ�d�g‘�dŽ�d�g‘�d��d‘g‘�d’�d“g‘�d”�d•g‘�d–�d—g‘�d˜�d™g‘�dš�d›g‘�dœ�d�g‘�dž�dŸg‘�d �d¡g‘�d¢�d£g‘�d¤�d¥g‘�d¦�d§g‘�d¨�d©g‘�dª�d«g‘�d¬�d­g‘�d®�d¯g‘�d°�d±g‘�d²�d³g‘�d´�dµg‘�d¶�d·g‘�d¸�d¹g‘�dº�d»g‘�d¼�d½g‘�d¾�d¿g‘�dÀ�dÁg‘�dÂ�dÃg‘�dÄ�dÅg‘�dÆ�dÇg‘�dÈ�dÉg‘�dÊ�dËg‘�dÌ�dÍg‘�dÎ�dÏg‘�dÐ�dÑg‘�dÒ�dÓg‘�dÔ�dÕg‘�dÖ�d×g‘�dØ�dÙg‘�dÚ�dÛg‘�dÜ�dÝg‘�dÞ�dßg‘�dà�dág‘�dâ�dãg‘�dä�dåg‘�dæ�dçg‘�dè�dég‘�dê�dëg‘�dì�díg‘�dî�dïg‘�dð�dñg‘�dò�dóg‘�dô�dõg‘�dö�d÷g‘�dø�dùg‘�dú�dûg‘�dü�dýg‘�dþ�dÿg‘�d �dg‘¦  «        S | |f�dk    �r”t          j        g �d�dg‘�d�dg‘�d�dg‘�d	�d
g‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�dg‘�d�d g‘�d!�d"g‘�d#�d$g‘�d%�d&g‘�d'�d(g‘�d)�d*g‘�d+�d,g‘�d-�d.g‘�d/�d0g‘�d1�d2g‘�d3�d4g‘�d5�d6g‘�d7�d8g‘�d9�d:g‘�d;�d<g‘�d=�d>g‘�d?�d@g‘�dA�dBg‘�dC�dDg‘�dE�dFg‘�dG�dHg‘�dI�dJg‘�dK�dLg‘�dM�dNg‘�dO�dPg‘�dQ�dRg‘�dS�dTg‘�dU�dVg‘�dW�dXg‘�dY�dZg‘�d[�d\g‘�d]�d^g‘�d_�d`g‘�da�dbg‘�dc�ddg‘�de�dfg‘�dg�dhg‘�di�djg‘�dk�dlg‘�dm�dng‘�do�dpg‘�dq�drg‘�ds�dtg‘�du�dvg‘�dw�dxg‘�dy�dzg‘�d{�d|g‘�d}�d~g‘�d�d€g‘�d��d‚g‘¦  «        S | |f�dƒk    rdt          j        �d„�d…g�d†�d‡g�dˆ�d‰g�dŠ�d‹g�dŒ�d�g�dŽ�d�g�d��d‘g�d’�d“g�d”�d•g�d–�d—g�d˜�d™g�dš�d›g�dœ�d�g�dž�dŸg�d �d¡g�d¢�d£gg¦  «        S | |f�d¤k    rDt          j        �d¥g�d¦g�d§g�d¨g�d©g�dªg�d«g�d¬g�d­g�d®g�d¯g�d°g�d±g�d²g�d³g�d´gg¦  «        S | |f�dµk    r,t          j        �d¶g�d·g�d¸g�d¹g�dºg�d»g�d¼g�d½gg¦  «        S | |f�d¾k    r t          j        �d¿g�dÀg�dÁg�dÂgg¦  «        S t          �dÃ| › �dÄ|› �¦  «        ‚(Å  N)r   é   g   €Àg    fûÆ?g    B£å¿g   à¤]ô?g   à_×ü¿g   à²\è?g   €§9á¿g   @£ÒÀg    —íê?g   Àë…ë¿g    @yæ?g   ÀÐ‚
@g   @¯<â?g    4 @g   @ÒV
@g   €i@ã¿g    Ìá?g    ¬[ü¿g   àUÏ Àg    v•?g   `¯~Ý?g    Ëøê?g    àF÷?g    ³ã¿g   à#®	@g   À?³Ö?g    àuì?g    úã¿g   À�”ë?g   à!¦	Àg   àv-ò?g    õ‡Î¿g    W¢ú?g   àD¦í¿g   @á ÷?g   À-öó?g   `¬Ñð¿g   `áÿ?g   €Óù¿g    äÔ¿g   ÀõiÇ¿g   À5´Ò?g   `X¤ì¿g    #8ö¿g    ƒµ¿g    ÅEõ¿g   àï1ß¿g   `cµ÷?g   €äÔú¿g   €¥�Àg     ø¿g    â?þ?g    *Vý?g    üÒð?g   @ôÔ?g     Éð?g   €^
Àg   @xæ¿g    n|ý¿g   @‰´ó¿g   `©pë¿g    £5û¿g   `Aîñ¿g   €•²ä?g   @UVÄ¿g    yÝü¿g   à­Së¿g    dâ?g    µö¿g    •Âã¿g   `KGñ?g   `˜ü?g   €±½ò?g    ƒ	è?g   ÀïK@g   @ì½é?g   àßYö?g   €sæó¿g   `ò|Î¿g   @¡ž«?g     o@g    ©Dô¿g   @’Âö?g    2â?g   €Ø?g    ·Ôæ¿g   ÀÕR @g   `Ç(Ú?g    Erè?g   @N0ò¿g   `'/×?g    ‡¹÷¿g   €¨>Ú?g    ×?g   `Qcù¿g    2äù¿g    :7Àg   àdió¿g    �cí?g   `¯Ö¿g   `�ùØ¿g   à–âË?g    +÷@g   à¼ìô?g   `(fù?g   @8iú¿g   À=€û¿g    ò©£¿g   Àû
æ¿g   à+ãê¿g   €fŠé¿g    ­Éñ¿g    ¯LÀg   à·xõ?g   `*(å¿g    ÁÎï?g    ª/Õ¿g   @/aÅ¿g    êEÀg   €g�Àg    €“ú?g   €GÀg   àÔ{Ž?g   €háØ?g    _až?g    îþ?g   àÃâò?g    3˜@g   €ý#ý?g   Àyã¿g   ÀÑ±Ü¿g    —ž
@g   à¬Å×¿g    d,Àg   ÀûÃñ¿g   À&¡Àg   àåÙ¿g   `{Xå?g    YbÞ?g   @²"ó¿g    ¹ÙŠ¿g    —3Àg    T« Àg   @¬@û¿g   Àk¹ñ¿g   ÀªÀ¿g   `Ó{Ú¿g    ¸ðò?g   à>¤ÿ¿g   À	û?g   ÀŽ�ú¿g   `5Àg   àš ?g    Žâä?g   à�5í?g    µ„ã?g   €I Ø¿g    A¾Û?g   à’Ñ?g   Àœ½Ñ¿g   €9˜º?g   €@@g   À°z�¿g    Çj	Àg    ˜ô¿g   @�­ì¿g   @“Nâ?g    »}í¿g   ÀþÚñ?g    Zè¿g   `µ�@g   ÀcÀg    ÕÑÒ¿g   @=Dï¿g   €Šåí¿g    ¥¸ñ?g   `Êø¿g    b¹@g   À{Ü@g    ðh @g   à ¡í¿g   àïƒö?g   Àº]Æ¿g   À®Ká?g   €¯ì¿g   À±wê?g   `“¼ä?g    Í4ð?g    •bï?g    …¯¿g    `œÅ¿g   €pöð?g   @°â?g   @Q=s?g   @ýçÕ¿g   €Üàó¿g   @°@g   À1u×?g   €Í”Æ¿g   @´¥õ?g    ä‰«?g   `±‰@g   €_Óó¿g    ªÕ@g    …,ä?g   `¦då¿g   `Tü?g   àL�å?g   à®bÜ?g    •3ã?g    Èƒ¶¿g   €x½¿g    ìvú?g   `¾ÁÕ?g   €ì„¥¿g   ÀK3á¿g   À�/Û¿g   `ºEé¿g   @£#±?g   À€3ó?g    Ñ
Àg    êcÒ?g    1Òù¿g    „¤ß?g   `%Âõ?g    %·Ð?g   @‘w@g   àIŠõ?g   à�kó¿g    ”Îþ¿g   @ÌJß¿g    œý?g    ·ðÇ¿g   À£FÖ¿g   €é9ñ?g   `Ú ñ¿g   à8ÄÝ?g   `Ò@g    x¸À¿g   @wÿè¿g    x°?g    £ø¿g   @†Ò¿g    Í†â¿g    vã¿g    �ß?g   €n•@g   `9³Ç¿g   €ªYÀ?g    Ìç¿g   @©×ë?g    [mÖ?g    FÌ?g   @²ß?g   `Ð¬Àg   `Gšé¿g    c‹å?g   @Åúö¿g    Puø¿g   @ðªð?g   à½ôñ¿g   @Hä¿g    Þ4ï¿g   @… ì¿g   àwÀg    §#æ?g    dˆÂ?g   €M¥¿g    Öù¿g    ºýö?g   €øíØ?g   @vPÀg   €èœÅ¿g   àr†é?g   €LþÀg    ¦ô?g   @ßåå?g    :æÚ¿g    Óóþ?g   €Žõþ?g   `
ôˆ?g   @_Ý Àg   à$Rä¿g    ZŒç?g   À3Ëê¿g   `åâã¿g    Äµ?g   @çOî¿g   Àew@g    Lî÷¿g    Vö?g   €ß©Ò¿g    ÙV±?g   €å¶í?g   àæó¿g    ÂŠù?g   `¥;ú?g    ¥©Ô¿g   `í@ö¿g   Àâ-µ¿g    ±ý?g   `ãô¿g    ZYé?g   àœè Àg    	žâ?g    8;ô?g    ›Þþ?g   Àa‹Î¿g   @Rhì?g   `F
ó?g   àA’÷?g   @’—ì?g    ˜ÐÀg   `Äø¿g    þ8Ï?g   `ã>è?g   ÀÊà?g   @pÚÀg   Àýiò?g    ¤„ö?g   `ŸêÐ¿g   @ä� @g   €Bãø?g    íb¿g   @ª @g    ‰�û¿g   `\á¿g   À‰ñ¿g    )Wí?g   à`¨ì?g   `³üé¿g   `ì’@g    0$Ó¿g    >ø¿g    i¶ó?g    cæø¿g   À²Çý?g    ºH¶?g    °TÌ?g    ]òü¿g   àò.Ü¿g   €y¯Ø¿g   €“*þ¿g   `Fó?g   €áê@g   `ÁIs?g   À_;ò?g   ÀEÝ?g   À¿ ø¿g   `‹<É?g   `BÞ?g   @Þ¬ø?g   `5ô¿g   €µ×¿g   `SÝû¿g   à+Dã¿g   @4ñ?g    TÈ?g    Wï@g   ÀÜ¨Ý¿g   €1×?g    	›³¿g    xúô¿g   `¦Û?g    â¹ã?g    ÃhÏ?g   `“Óþ¿g    âÖÔ¿g   àúÈâ¿g    È¿g   à-Ãð¿g   `”‰×?g    Ö­ó¿g    åäó?g   `›¾Ç?g   €ìÍ?g   `$Z’¿g   €G)À?g    »§ò?g    3à¿g    ›%ã¿g   `axö¿g    •è?g   @ƒ×Ä¿g    ¿ï?g    ²„õ¿g   €ˆîé¿g   €ÚœÓ?g   @&Cæ?g   `"ý?g   @¯CÀg    ¤nÍ¿g   €92Ö¿g   À›é@g   àÍ÷¿g   `ë‹ó¿g   À‘Àg   à=�ì?g   `Lû?g    –ÀÀg    XÊñ?g    SðÀg   @�©Àg   `TÇ @g   @�‰©?g    ÔùÒ¿g   €­‚ Àg   `é¿g    X
Ú¿g     <í?g   `ìgï¿g   à¹ÌØ¿g    yÃö¿g   €µzç?g   àÄ�Ó?g   À+ õ?g   à$uó?g   àåmÿ¿g   €Pvó¿g   àü²Â?g   €°lÀg   À…	Ø¿g   À§‹í?g   À›y@g   @xÉ¿g    ümú?g    (Üæ¿g   €¹1Ù¿g   @qúè¿g   àŽÌ Àg   ÀµÙì?g   À2Iû¿g    ¢tº?g     iø?g    €	þ¿g    è—@g   `sÃþ?g   `
ô@g    M.ã¿g    ³Î?g   À ˜õ?g   `4í¿g   €‰ì¿g   @j€	Àg   @™Có¿g    oEø¿g   À¡Ñö?g    œ3@g   àžk÷?g   À”¦ú?g    éÊ?g   @Ÿìß¿g   àÞŸà?g   À�ÎÎ¿g   €oÉñ¿g   à7�ò¿g    «+ë¿g    €„Å¿g    pjÔ?g   à…Úî¿g   €� â¿g   @«ã¿g   À(ú¿g    “=í¿g   àÖ0Ü?g   `ü>Þ¿g    –.Àg   @ú\Þ?g   `[ý?g    ²#÷?g    Øò?g   àñ?g    êžî¿g    ­N¸?g   À�jý¿g   À=âÒ?g   €R¹Þ¿g   €è€Ž?g   `ïÀà¿g   àÜLü¿g   À‡– @g    «=ì¿g   àš@g   @äë?g    RÚ@g   €ré¿g   Àãó¿g   à�Ûí?g   `v_Ø?g   @TÁ?g   €Õéå?g   @¡ç?g    Â8ô?g    {ð}¿g   àþiÇ?g   €S”ó¿g   @kê?g   àsö÷?g    ©å?g    ¾ôÞ?g    …_æ¿g   @—3@g   €õìé?g   @î º?g   `Xr¶¿g    Ò[ñ¿g   €Þç¿g   €Žº¢?g   `£�Ô?g   @çÛü?g    5é¿g   €–ýú?)r   é@   g   €ûÅÀg   ÀÞxÂ?g    �Šè¿g   Àk‚û?g    „Àg   àlöó?g   ày½ó?g   à6ÙÀg   €¦Øë?g   à²ôÐ¿g   `Ö5÷?g   ÀÌk@g   À”$°¿g    Èzþ?g    1J@g   €±â?g   €ÐoÝ?g    .þý¿g   À„hþ¿g    Š¦Ó¿g   À_¸?g   àÁì?g   ÀÝ$ÿ?g   €î“å¿g   À6@g   @”T÷?g   à-î?g    ¹é¿g   €æŽ @g   À�Öù¿g   àÃ¹è?g   àÌ.Ì?g    �ñ?g   à”fø¿g   €´Íå?g   à,'ò?g    Þ?g   à^Ú@g   @L´ô¿g    >ûÛ¿g   €4b·¿g   Àµ�Ý?g    Né¿g   €óûÞ¿g    ô®?g   €nZí¿g   €t¼â¿g   Ài~@g    Jf½?g   €^GÀg   `åmù¿g   `6‚@g    /Íú?g    °æ?g    O†Ü¿g    Ùç?g    õ©ý¿g    šgý¿g    ^Dù¿g    ÍFð¿g    ™|ð¿g   €¶1ù¿g   `8ÿ¿g   @*÷Û?g   ÀàÖ¿g   €<Sþ¿g    ^Àö¿g   @^�è?g    Wií¿g    —à?g    Î1Ê?g   à6åõ?g   @Já?g   @(på?g   @?þ?g   àÆ ¢?g    D:Þ?g   ÀÀäã¿g   `÷uÚ¿g   ànÍ¿g    ü±@g    ¨[à¿g    jñ?g   À°=æ?g    ¬ Ú?g    îZÂ¿g   À�ô?g    æÅ?g    ÚG’?g   à˜Ü¿g   `9ó«?g   ÀÈÂö¿g   à±Ó?g   €¥Ó?g    :eî¿g    z¥î¿g    k¶Àg    ×éî¿g   Àmñõ?g    [rÙ¿g   àîß¿g   à�Î?g    þyô?g    ®ôô?g   €á á?g   `/Øò¿g   à(&ö¿g    CÃÂ?g   @äËÝ¿g   €Šèó¿g   `Ù¿g   @8lç¿g    §hö¿g   ÀÀ9ö?g   €ß«ë¿g   Àüüð?g   àz|ì¿g    yå�¿g   `Ý¨ï¿g   @õºÀg   `è ÷?g    Êð¿g    ;S¥¿g   `¢Š?g   €œ"Õ¿g   `á1ô?g   À"1æ?g   ÀÊWü?)r   é   g    
Êì¿g   @:-ú¿g   àÂî¿g    l™ù?g   €Çþ¿g   `�¸å?g    …;×?g   @õwÿ¿g    Îå¿g   @Luâ¿g    ˜Cç?g   €FÌã?g   @€Õ?g   @×dý?g   `FÂý?g    :Æ¢?g   €ÌÆ?g   €äî¿g   `Ö(ü¿g   àEûã¿g   €ºÇì¿g    Â¦Ô?g   `Ýê?g    OÓ¿g   @�ø?g   Àµô?g   À©LS¿g   À&í,?g    ØÖö?g    ƒSó¿g   @{£Ä¿g   Àºì?)r   r0   g   àWÜÀg   àX� Àg    „ãù¿g   à…ô¿g    §'î¿g   À+å¿g   €ÈÕØ¿g    ?oÀ¿g    ?oÀ?g   €ÈÕØ?g   À+å?g    §'î?g   à…ô?g    „ãù?g   àX� @g   àWÜ@)r   é   g   @/7Àg    §€õ¿g    21è¿g    ?_Ï¿g    ?_Ï?g    21è?g    §€õ?g   @/7@)r   é   g    «*ø¿g    YúÜ¿g    YúÜ?g    «*ø?zUnsupported p=z, n=)Útorchr    ÚNotImplementedError)r*   r+   s     r   Úget_higgs_gridr5   /   s‘  € Ø	ˆ1€v�ÒÑÝŒ|ðAØ#Ð%8Ð9ðAà$Ð&8Ð9ðAð %Ð&8Ð9ðAð $Ð%8Ð9ð	Að
 $Ð%8Ð9ðAð $Ð%7Ð8ðAð $Ð%7Ð8ðAð #Ð$7Ð8ðAð $Ð%8Ð9ðAð %Ð&:Ð;ðAð %Ð&8Ð9ðAð $Ð%8Ð9ðAð #Ð$6Ð7ðAð $Ð%8Ð9ðAð $Ð%8Ð9ðAð  $Ð%9Ð:ð!Að" $Ð%8Ð9ð#Að$ $Ð%7Ð8ð%Að& %Ð&6Ð7ð'Að( #Ð$7Ð8ð)Að* %Ð&8Ð9ð+Að, %Ð&9Ð:ð-Að. &Ð'9Ð:ð/Að0 $Ð%7Ð8ð1Að2 %Ð&9Ð:ð3Að4 %Ð&8Ð9ð5Að6 $Ð%7Ð8ð7Að8 $Ð%7Ð8ð9Að: $Ð%8Ð9ð;Að< %Ð&9Ð:ð=Að> %Ð&9Ð:ð?Að@ $Ð%7Ð8ðAAðB %Ð&8Ð9ðCAðD %Ð&8Ð9ðEAðF %Ð&9Ð:ðGAðH $Ð%7Ð8ðIAðJ #Ð$6Ð7ðKAðL #Ð$6Ð7ðMAðN $Ð%7Ð8ðOAðP &Ð';Ð<ðQAðR #Ð$7Ð8ðSAðT $Ð%6Ð7ðUAðV #Ð$7Ð8ðWAðX $Ð%7Ð8ðYAðZ $Ð%8Ð9ð[Að\ $Ð%8Ð9ð]Að^ $Ð%8Ð9ð_Að` %Ð&8Ð9ðaAðb %Ð&9Ð:ðcAðd $Ð%9Ð:ðeAðf %Ð&9Ð:ðgAðh #Ð$6Ð7ðiAðj #Ð$7Ð8ðkAðl $Ð%:Ð;ðmAðn %Ð&9Ð:ðoAðp %Ð&9Ð:ðqAðr %Ð&8Ð9ðsAðt %Ð&8Ð9ðuAðv &Ð';Ð<ðwAðx %Ð&8Ð9ðyAðz $Ð%7Ð8ð{Að| &Ð'9Ð:ð}Að~ &Ð'9Ð:ðAð@ #Ð$5Ð6ðAAðB #Ð$7Ð8ðCAðD &Ð'8Ð9ðEAðF %Ð&9Ð:ðGAðH %Ð&9Ð:ðIAðJ &Ð'9Ð:ðKAðL #Ð$7Ð8ðMAðN 'Ð(9Ð:ðOAðP %Ð&8Ð9ðQAðR %Ð&9Ð:ðSAðT %Ð&8Ð9ðUAðV $Ð%6Ð7ðWAðX $Ð%8Ð9ðYAðZ %Ð&8Ð9ð[Að\ $Ð%7Ð8ð]Að^ &Ð'8Ð9ð_Að` %Ð&:Ð;ðaAðb %Ð&8Ð9ðcAðd 'Ð(:Ð;ðeAðf %Ð&9Ð:ðgAðh $Ð%7Ð8ðiAðj $Ð%8Ð9ðkAðl $Ð%8Ð9ðmAðn $Ð%8Ð9ðoAðp %Ð&7Ð8ðqAðr $Ð%6Ð7ðsAðt $Ð%6Ð7ðuAðv %Ð&7Ð8ðwAðx %Ð&7Ð8ðyAðz %Ð&8Ð9ð{Að| $Ð%7Ð8ð}Að~ #Ð$8Ð9ðAð@ &Ð'9Ð:ðAAðB $Ð%9Ð:ðCAðD &Ð':Ð;ðEAðF #Ð$6Ð7ðGAðH &Ð'9Ð:ðIAðJ %Ð&7Ð8ðKAðL %Ð&7Ð8ðMAðN #Ð$6Ð7ðOAðP $Ð%7Ð8ðQAðR $Ð%7Ð8ðSAðT &Ð';Ð<ðUAðV $Ð%8Ð9ðWAðX &Ð':Ð;ðYAðZ %Ð&9Ð:ð[Að\ %Ð&8Ð9ð]Að^ %Ð&9Ð:ð_Að` $Ð%7Ð8ðaAðb $Ð%8Ð9ðcAðd #Ð$6Ð7ðeAðf %Ð&9Ð:ðgAðh %Ð&8Ð9ðiAðj %Ð&9Ð:ðkAðl $Ð%8Ð9ðmAðn $Ð%6Ð7ðoAðp %Ð&9Ð:ðqAðr %Ð&9Ð:ðsAðt %Ð&9Ð:ðuAðv %Ð&8Ð9ðwAðx #Ð$8Ð9ðyAðz $Ð%8Ð9ð{Að| $Ð%8Ð9ð}Að~ %Ð&7Ð8ðAñ@ %Ñ&9Ð:ðAAñB $Ñ%8Ð9ðCAñD %Ñ&8Ð9ðEAñF %Ñ&9Ð:ðGAñH %Ñ&9Ð:ðIAñJ %Ñ&8Ð9ðKAñL %Ñ&;Ð<ðMAñN %Ñ&8Ð9ðOAñP %Ñ&7Ð8ðQAñR &Ñ'9Ð:ðSAñT #Ñ$5Ð6ðUAñV $Ñ%8Ð9ðWAñX $Ñ%6Ð7ðYAñZ &Ñ':Ð;ð[Añ\ %Ñ&8Ð9ð]Añ^ $Ñ%8Ð9ð_Añ` %Ñ&9Ð:ðaAñb $Ñ%8Ð9ðcAñd $Ñ%8Ð9ðeAñf %Ñ&8Ð9ðgAñh %Ñ&8Ð9ðiAñj $Ñ%9Ð:ðkAñl $Ñ%9Ð:ðmAñn #Ñ$7Ð8ðoAñp $Ñ%8Ð9ðqAñr $Ñ%7Ð8ðsAñt #Ñ$7Ð8ðuAñv $Ñ%6Ð7ðwAñx $Ñ%7Ð8ðyAñz %Ñ&9Ð:ð{Añ| $Ñ%7Ð8ð}Añ~ $Ñ%7Ð8ðAñ@ #Ñ$6Ð7ðAAñB %Ñ&8Ð9ðCAñD #Ñ$:Ð;ðEAñF $Ñ%8Ð9ðGAñH %Ñ&8Ð9ðIAñJ $Ñ%7Ð8ðKAñL %Ñ&7Ð8ðMAñN &Ñ':Ð;ðOAñP $Ñ%7Ð8ðQAñR $Ñ%8Ð9ðSAñT %Ñ&9Ð:ðUAñV %Ñ&:Ð;ðWAñX #Ñ$5Ð6ðYAñZ #Ñ$8Ð9ð[Añ\ #Ñ$7Ð8ð]Añ^ $Ñ%8Ð9ð_Añ` %Ñ&8Ð9ðaAñb %Ñ&:Ð;ðcAñd %Ñ&9Ð:ðeAñf $Ñ%8Ð9ðgAñh "Ñ#7Ð8ðiAñj $Ñ%9Ð:ðkAñl %Ñ&7Ð8ðmAñn $Ñ%8Ð9ðoAñp %Ñ&9Ð:ðqAñr %Ñ&9Ð:ðsAñt %Ñ&8Ð9ðuAñv $Ñ%7Ð8ðwAñx %Ñ&9Ð:ðyAñz 'Ñ(;Ð<ð{Añ| $Ñ%8Ð9ð}Añ~ %Ñ&7Ð8ðAñ@ $Ñ%9Ð:ðAAñB $Ñ%7Ð8ðCAñD %Ñ&8Ð9ðEAñF $Ñ%7Ð8ðGAñH %Ñ&9Ð:ðIAñJ &Ñ'9Ð:ðKAñL %Ñ&9Ð:ðMAñN %Ñ&8Ð9ðOAñP #Ñ$7Ð8ðQAñR $Ñ%8Ð9ðSAñT $Ñ%7Ð8ðUAñV %Ñ&9Ð:ðWAñX $Ñ%8Ð9ðYAñZ %Ñ&8Ð9ð[Añ\ %Ñ&9Ð:ð]Añ^ %Ñ&8Ð9ð_Añ` $Ñ%7Ð8ðaAñb $Ñ%8Ð9ðcAñd %Ñ&9Ð:ðeAñf %Ñ&:Ð;ðgAñh $Ñ%7Ð8ðiAñj %Ñ&7Ð8ðkAñl $Ñ%9Ð:ðmAñn %Ñ&8Ð9ðoAñp $Ñ%8Ð9ðqAñr $Ñ%7Ð8ðsAñt %Ñ&7Ð8ðuAñv $Ñ%7Ð8ðwAñx %Ñ&9Ð:ðyAñz $Ñ%8Ð9ð{Añ| %Ñ&9Ð:ð}Añ~ %Ñ&9Ð:ðAñ@ $Ñ%6Ð7ðAAñB #Ñ$6Ð7ðCAñD %Ñ&9Ð:ðEAñF $Ñ%9Ð:ðGAñH %Ñ&9Ð:ðIAñJ %Ñ&9Ð:ðKAñL $Ñ%8Ð9ðMAñN %Ñ&9Ð:ðOAñP %Ñ&9Ð:ðQAñR %Ñ&:Ð;ðSAñT $Ñ%8Ð9ðUAñV #Ñ$6Ð7ðWAñX $Ñ%7Ð8ðYAñZ %Ñ&9Ð:ð[Añ\ $Ñ%7Ð8ð]Añ^ %Ñ&:Ð;ð_Añ` %Ñ&9Ð:ðaAñb $Ñ%8Ð9ðcAñd #Ñ$6Ð7ðeAñf #Ñ$7Ð8ðgAñh %Ñ&8Ð9ðiAñj %Ñ&9Ð:ðkAñl $Ñ%7Ð8ðmAñn $Ñ%:Ð;ðoAñp %Ñ&7Ð8ðqAñr $Ñ%7Ð8ðsAñt $Ñ%8Ð9ðuAñv %Ñ&7Ð8ðwAñx $Ñ%8Ð9ðyAñz &Ñ'9Ð:ð{Añ| %Ñ&9Ð:ð}Añ~ $Ñ%6Ð7ðAñ@ %Ñ&8Ð9ðAAñC
ô C
ð C	
ðH 	
ˆ1€v‘ÒÑÝŒ|ðAÙ$Ñ&9Ð:ðAá#Ñ%7Ð8ðAñ %Ñ&8Ð9ðAñ #Ñ$7Ð8ð	Añ
 $Ñ%8Ð9ðAñ $Ñ%7Ð8ðAñ &Ñ'9Ð:ðAñ #Ñ$5Ð6ðAñ $Ñ%8Ð9ðAñ $Ñ%9Ð:ðAñ %Ñ&8Ð9ðAñ #Ñ$7Ð8ðAñ $Ñ%7Ð8ðAñ $Ñ%8Ð9ðAñ $Ñ%7Ð8ðAñ  #Ñ$7Ð8ð!Añ" $Ñ%7Ð8ð#Añ$ $Ñ%7Ð8ð%Añ& $Ñ%6Ð7ð'Añ( $Ñ%8Ð9ð)Añ* &Ñ'9Ð:ð+Añ, %Ñ&:Ð;ð-Añ. &Ñ':Ð;ð/Añ0 %Ñ&6Ð7ð1Añ2 %Ñ&8Ð9ð3Añ4 %Ñ&7Ð8ð5Añ6 $Ñ%7Ð8ð7Añ8 $Ñ%7Ð8ð9Añ: %Ñ&9Ð:ð;Añ< %Ñ&8Ð9ð=Añ> $Ñ%8Ð9ð?Añ@ %Ñ&9Ð:ðAAñB %Ñ&9Ð:ðCAñD %Ñ&8Ð9ðEAñF %Ñ&8Ð9ðGAñH %Ñ&8Ð9ðIAñJ $Ñ%7Ð8ðKAñL $Ñ%8Ð9ðMAñN $Ñ%8Ð9ðOAñP &Ñ';Ð<ðQAñR $Ñ%8Ð9ðSAñT #Ñ$6Ð7ðUAñV %Ñ&:Ð;ðWAñX $Ñ%8Ð9ðYAñZ %Ñ&:Ð;ð[Añ\ &Ñ':Ð;ð]Añ^ $Ñ%8Ð9ð_Añ` %Ñ&9Ð:ðaAñb %Ñ&9Ð:ðcAñd $Ñ%9Ð:ðeAñf %Ñ&8Ð9ðgAñh $Ñ%7Ð8ðiAñj $Ñ%8Ð9ðkAñl $Ñ%7Ð8ðmAñn &Ñ':Ð;ðoAñp %Ñ&9Ð:ðqAñr %Ñ&8Ð9ðsAñt %Ñ&8Ð9ðuAñv %Ñ&:Ð;ðwAñx %Ñ&9Ð:ðyAñz #Ñ$6Ð7ð{Añ| 'Ñ(<Ð=ð}Añ~ %Ñ&6Ð7ðAñ@ $Ñ%7Ð8ðAAñC
ô C
ð C	
ðH ˆQˆ‘7Ò	Ð	ÝŒ|á$Ñ&9Ð:Ù#Ñ%7Ð8Ù#Ñ%6Ð7Ù$Ñ&9Ð:Ù$Ñ&8Ð9Ù#Ñ%7Ð8Ù#Ñ%7Ð8Ù"Ñ$8Ð9Ù$Ñ&9Ð:Ù$Ñ&9Ð:Ù$Ñ&9Ð:Ù"Ñ$7Ð8Ù#Ñ%7Ð8Ù'Ñ)?Ð@Ù#Ñ%7Ð8Ù%Ñ'9Ð:ð!ñ
ô 
ð 	
ð( ˆQˆ‘7Ò	Ð	ÝŒ|á$Ð%Ù#Ð$Ù$Ð%Ù$Ð%Ù$Ð%Ù$Ð%Ù%Ð&Ù%Ð&Ù$Ð%Ù$Ð%Ù#Ð$Ù#Ð$Ù#Ð$Ù#Ð$Ù"Ð#Ù#Ð$ð!ñ
ô 
ð 	
ð( ˆQˆ‘6Ò	Ð	ÝŒ|á$Ð%Ù$Ð%Ù$Ð%Ù$Ð%Ù#Ð$Ù#Ð$Ù#Ð$Ù#Ð$ð	ñ
ô 
ð 	
ð ˆQˆ‘6Ò	Ð	ÝŒ|Ñ1Ð2Ñ5HÐ4IÑL^ÐK_ÑbtÐauÐvÑwÔwÐwå!Ñ"=°1Ð"=Ñ"=¸!Ð"=Ð"=Ñ>Ô>Ð>r   r2   r.   é   ÚbitsÚ
group_sizeÚhadamard_sizec                 óP  — t          | j        ¦  «        dk    s
J d¦   «         ‚t          |d||z  z  ¦  «                             | j        ¦  «        }t
          j                             |d¬¦  «        dz  }| j        }| j        }|                      dt
          j	        ¬¦  «        } t          | dg|¦  «        } | j        d         |z  }	|                      d|	|¦  «        } t
          j                             | d¬¦  «        }
t          | d¦  «        |
d d …d d …d f         z  } t          | dg|¦  «                             | j        d         |	d|¦  «        } t          j        | j        d d…         |t
          j        ¬	¦  «        }t          d| j        d         d
¦  «        D ]V}t          j        d| ||d
z   …         z  |j        z  |z
  d¬¦  «                             t
          j        ¦  «        |||d
z   …<   ŒW~ |                     |j        d         d¦  «        }|
t%          |¦  «        z  }
t'          |t          j        |
                     |¦  «        ||z  d¬¦  «        |                     |¦  «        |||||d¬¦	  «	        \  } }
}}}| |
||                     t
          j        ¬¦  «        |dœS )Nr   z%Only 2D weights are supported for nowéÿÿÿÿ)ÚaxisT)ÚcopyÚdtyper   r   ©Údevicer>   r0   )r%   F)Únum_bitsr8   Úvector_sizer>   r@   Úcheck_correctness©r>   )ÚweightÚscalesÚtablesÚtables2Útune_metadata)r   r   r5   Útor@   r3   ÚlinalgÚnormr>   Úfloat32r)   Úreshaper   ÚemptyÚuint8r   ÚargmaxÚTr   r
   Úrepeat_interleaveÚviewÚfloat16)rE   r7   r*   r8   r9   ÚgridÚgrid_norm_2r@   r>   ÚmultrF   ÚcodesÚirG   rH   rI   s                   r   Úquantize_with_higgsr[   ·  sž  € ÝˆvŒ|ÑÔ Ò!Ð!Ð!Ð#JÑ!Ô!Ð!å˜!˜Q 1 t¡8™_Ñ-Ô-×0Ò0°´Ñ?Ô?€DÝ”,×#Ò# D¨rÐ#Ñ2Ô2°aÑ7€KàŒ]€FØŒL€EØ�YŠY˜D­¬ˆYÑ6Ô6€Få˜& 1 # }Ñ5Ô5€Fð Œ<˜Œ?˜mÑ+€DØ�^Š^˜B  mÑ4Ô4€FÝŒ\×Ò˜v¨BÐÑ/Ô/€FÝ ¨Ñ*Ô*¨V°A°A°A°q°q°q¸$°JÔ-?Ñ?€Fõ ˜& 1 # qÑ)Ô)×1Ò1°&´,¸q´/À4ÈÈQÑOÔO€Fõ ŒK˜œ S b SÔ)°&ÅÄÐLÑLÔL€EÝ�1�f”l 1”o rÑ*Ô*ð pð pˆÝ!œL¨¨V°A¸¸B¹°JÔ-?Ñ)?À$Ä&Ñ)HÈ;Ñ)VÐ\^Ð_Ñ_Ô_×bÒbÕchÔcnÑoÔoˆˆa�!�b‘&ˆjÑÐØà�MŠM˜%œ+ aœ.¨"Ñ-Ô-€EØ•d˜=Ñ)Ô)Ñ)€Få5LØÝÔ §	¢	¨%Ñ 0Ô 0°-À:Ñ2MÐSTÐUÑUÔUØ�Š�‰ŒØØØØØØð
6ñ 
6ô 
6Ñ2€FˆF�F˜G ]ð ØØØ—<’<¥e¤m�<Ñ4Ô4Ø&ðð ð r   c                   ón   ‡ — e Zd Z	 	 	 	 	 ddedededej        dz  d	ej        dz  d
edefˆ fd„Zd„ Zˆ xZ	S )ÚHiggsLinearTNr.   r6   Úin_featuresÚout_featuresrA   r>   r@   r8   r9   c	                 ó&  •— t          ¦   «                              ¦   «          || _        || _        || _        || _        || _        ||z  dk    sJ ‚|dv sJ ‚t          j        t          j
        ||z  dz  |ft          j        |¬¦  «        d¬¦  «        | _        t          j        t          j
        |||z  f||¬¦  «        d¬¦  «        | _        t          j        t          j
        d|z  f||¬¦  «        d¬¦  «        | _        t          j        t          j
        d|z  d|z  df||¬¦  «        d¬¦  «        | _        |r1t          j        t          j
        |||¬¦  «        d¬¦  «        | _        n|                      d	d ¦  «         d | _        d | _        d S )
Nr   )r   é   r2   r0   )r>   r@   F)Úrequires_gradr   r?   Úbias)ÚsuperÚ__init__r^   r_   rA   r8   r9   r   Ú	Parameterr3   rO   Úint16rE   rF   rG   rH   rc   Úregister_parameterÚ	workspacerI   )
Úselfr^   r_   rA   rc   r>   r@   r8   r9   Ú	__class__s
            €r   re   zHiggsLinear.__init__ë  s´  ø€ õ 	‰Œ×ÒÑÔÐØ&ˆÔØ(ˆÔØ ˆŒØ$ˆŒØ*ˆÔà˜ZÑ'¨1Ò,Ð,Ð,Ð,Ø˜9Ð$Ð$Ð$Ð$å”lÝŒK˜¨Ñ0°BÑ6¸ÐDÍEÌKÐ`fÐgÑgÔgØð
ñ 
ô 
ˆŒõ ”lÝŒK˜ {°jÑ'@ÐAÈÐW]Ð^Ñ^Ô^Ðnsð
ñ 
ô 
ˆŒõ ”l¥5¤;°°8±¨~ÀUÐSYÐ#ZÑ#ZÔ#ZÐjoÐpÑpÔpˆŒÝ”|ÝŒK˜˜H™ a¨¡k°1Ð5¸UÈ6ÐRÑRÔRÐbgð
ñ 
ô 
ˆŒð ð 	2Ýœ¥U¤[°ÀfÐTYÐ%ZÑ%ZÔ%ZÐjoÐpÑpÔpˆDŒIˆIà×#Ò# F¨DÑ1Ô1Ð1àˆŒØ+/ˆÔÐÐr   c           
      ó  — t          |dg| j        ¦  «        }| j        €t          d¦  «        ‚t	          || j        | j        | j        | j         	                    t          j        ¬¦  «        | j        | j        | j        ¬¦  «        S )Nr;   z,Workspace must be set before calling forwardrD   )r9   )r)   r9   ri   Ú	Exceptionr   rE   rF   rG   rH   rT   r3   rM   rI   )rj   Úxs     r   ÚforwardzHiggsLinear.forward  s�   € Ý˜˜R˜D $Ô"4Ñ5Ô5ˆàŒ>Ð!ÝÐJÑKÔKÐKåØØŒKØŒKØŒKØŒL×Ò¥E¤MÐÑ2Ô2ØŒNØÔØÔ,ð	
ñ 	
ô 	
ð 		
r   )TNNr.   r6   )
Ú__name__Ú
__module__Ú__qualname__Úintr3   r>   r@   re   ro   Ú__classcell__)rk   s   @r   r]   r]   ê  sµ   ø€ € € € € ð Ø$(Ø&*ØØ!ð'0ð '0àð'0ð ð'0ð ð	'0ð Œ{˜TÑ!ð'0ð ”˜tÑ#ð'0ð ð'0ð ð'0ð '0ð '0ð '0ð '0ð '0ðR
ð 
ð 
ð 
ð 
ð 
ð 
r   r]   Úmodules_to_not_convertc           
      ó  — d}|                       ¦   «         D ]Ò\  }}t          ||¦  «        sŒt          j        d¦  «        5  t	          |t
          j        ¦  «        rvt          |j        |j	        |j
        du|j        |j        |j        ¬¦  «        }t          |¦  «        |_        |                     d¦  «         |                      ||¦  «         d}ddd¦  «         n# 1 swxY w Y   ŒÓ|st$                               d¦  «         | S )a_  
    Public method that replaces the Linear layers of the given model with HIGGS quantized layers.

    Args:
        model (`torch.nn.Module`):
            The model to convert, can be any `torch.nn.Module` instance.
        modules_to_not_convert (`list[str]`, *optional*, defaults to `None`):
            A list of nn.Linear weights to not convert. If a parameter path is in the list (e.g. `lm_head.weight`), the corresponding module will not be
            converted.
        quantization_config (`HiggsConfig`):
            The quantization config object that contains the quantization parameters.
    FÚmetaN)rc   rA   r9   r8   Tz»You are loading your model using eetq but no linear modules were found in your model. Please double check your model architecture, or submit an issue on github if you think this is a bug.)Únamed_modulesr   r3   r@   Ú
isinstancer   ÚLinearr]   r^   r_   rc   r7   r9   r8   ÚtypeÚ
source_clsÚrequires_grad_Úset_submoduleÚloggerÚwarning)Úmodelru   Úquantization_configÚhas_been_replacedÚmodule_nameÚmoduleÚ
new_modules          r   Úreplace_with_higgs_linearr‡   &  sb  € ð Ðà$×2Ò2Ñ4Ô4ð )ð )Ñˆ�VÝ$ [Ð2HÑIÔIð 	ØÝŒ\˜&Ñ!Ô!ð 	)ð 	)Ý˜&¥"¤)Ñ,Ô,ð )Ý(ØÔ&ØÔ'Øœ¨DÐ0Ø0Ô5Ø"5Ô"CØ2Ô=ðñ ô �
õ )-¨V©¬�
Ô%Ø×)Ò)¨%Ñ0Ô0Ð0Ø×#Ò# K°Ñ<Ô<Ð<Ø$(Ð!ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)øð ð 
Ý�Šðñ	
ô 	
ð 	
ð
 €Ls   ÁBCÃC"	Ã%C"	c           	      ó  — t          j        ¦   «         5  |                      ¦   «         D �]A\  }}|€g }|                     |¦  «         t	          |t
          ¦  «        rµ|j        }|j        }t           j         	                    |||j
        du|j        j        |j        j        ¬¦  «        | j        |<    |t          j        ||j        j        |j        j        ¬¦  «        ¦  «        j                             ¦   «         | j        |         j        _        t)          t+          |                     ¦   «         ¦  «        ¦  «        dk    rt/          ||¬¦  «        }|                     d¦  «         �ŒC| cddd¦  «         S # 1 swxY w Y   dS )aÉ  
    Dequantizes the HiggsLinear layers in the given model by replacing them with standard torch.nn.Linear layers.
    Args:
        model (torch.nn.Module): The model containing HiggsLinear layers to be dequantized.
        current_key_name (list, optional): A list to keep track of the current module names during recursion. Defaults to None.
    Returns:
        torch.nn.Module: The model with HiggsLinear layers replaced by torch.nn.Linear layers.
    N)rc   r@   r>   r?   r   )Úcurrent_key_namer;   )r3   Úno_gradÚnamed_childrenÚappendry   r]   r^   r_   r   rz   rc   rF   r@   r>   Ú_modulesÚeyerR   Ú
contiguousrE   Údatar   ÚlistÚchildrenÚdequantize_higgsÚpop)r�   r‰   Únamer…   r^   r_   r   s          r   r“   r“   Q  s¿  € õ 
Œ‰Œð ð Ø!×0Ò0Ñ2Ô2ð 	%ñ 	%‰LˆD�&ØÐ'Ø#%Ð Ø×#Ò# DÑ)Ô)Ð)å˜&¥+Ñ.Ô.ð !Ø$Ô0�Ø%Ô2�å',¤x§¢ØØ Øœ¨DÐ0Ø!œ=Ô/Ø œ-Ô-ð (7ñ (ô (�”˜tÑ$ð 4:°6Ý”I˜k°&´-Ô2FÈfÌmÔNaÐbÑbÔbñ4ô 4ä—J’J‘L”Lð ”˜tÔ$Ô+Ô0õ •4˜ŸšÑ)Ô)Ñ*Ô*Ñ+Ô+¨aÒ/Ð/Ý$ØØ%5ðñ ô �ð
 × Ò  Ñ$Ô$Ð$Ñ$Øð;ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ”EE:Å:E>ÆE>r   )r2   r   r.   r6   )NN)N)!Ú__doc__Úmathr   Úquantizers.quantizers_utilsr   Úutilsr   r   r   r	   r3   Útorch.nnr   Úflute.integrations.higgsr
   Ú
flute.tuner   r   Úfast_hadamard_transformr   Ú
get_loggerrp   r   r)   rs   r5   r[   ÚModuler]   r‘   Ústrr‡   r“   r   r   r   ú<module>r¡      së  ðð ]Ð \à Ð Ð Ð Ð Ð à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ Zð ÐÑÔð Ø€L€L€LØÐÐÐÐÐàÐÑÔð 2Ø@Ð@Ð@Ð@Ð@Ð@Ø1Ð1Ð1Ð1Ð1Ð1Ð1Ð1àÐÑÔð ;Ø:Ð:Ð:Ð:Ð:Ð:à	ˆÔ	˜HÑ	%Ô	%€ðBð Bð Bð BðE?�cð E?˜cð E? nð E?ð E?ð E?ð E?ðP0ð 0 cð 0°#ð 0Àsð 0Ðadð 0ð 0ð 0ð 0ðf9
ð 9
ð 9
ð 9
ð 9
�%”(”/ñ 9
ô 9
ð 9
ðx(ð (¸TÀ#¼YÈÑ=Mð (ð (ð (ð (ðV'ð 'ð 'ð 'ð 'ð 'r   